Thanks for the debugging help, Daniel. I'll take a look and see if I can spot why this function is crashing on my packages.
~Gary Daniel Littlewood <[email protected]> writes: > Hi Gary, > > At first I was surprised to see gnu-build-system in the traceback, but > it turns out copy-build-system is implemented in terms of > gnu-build-system (I did not know this, maybe you did). Looking at the > procedure install-license-files in gnu-build-system, there are a > couple of calls to match which could be failing. If I'm reading the > traceback correctly, it points to line 881, which is the call to match > in find-source-directory, quoted below. > > (define (find-source-directory package) > ;; For an out-of-source build, guess the source directory location > ;; relative to the current directory. Return #f on failure. > (match (scandir ".." > (lambda (file) > (and (not (member file '("." ".." "build"))) > (file-is-directory? > (string-append "../" file))))) > (() ;hmm, no source > #f) > ((source) ;only one other file > (string-append "../" source)) > ((directories ...) ;pick the most likely one > ;; This happens for example with libstdc++, which lives within > the GCC > ;; source tree. > (any (lambda (directory) > (and (string-prefix? package directory) > (string-append "../" directory))) > directories)))) > > This procedure is apparently only called when out-of-source? is true, > and I am not sure what that means. Regardless, if (match (scandir > ...)) does not match the given patterns, it must not be returning a > list (and the traceback confirms this; it is in fact returning #f). I > suppose this indicates that scandir failed for some reason, for > instance that .. is not readable. Indeed my copy of the guile manual > (page 743) confirms this (it cannot be the case that .. is some other > type of file, so it must be an unreadable directory). > >> Return #f when name is unreadable or is not a directory. > > This explains the error at least - the match call does not handle #f. > This does however leave open some questions I do not have an answer > for. I am not sure what .. is in this context. Perhaps /gnu/store? I > think that can't be it, because searching the entire store for a > license file in one package would be terribly wasteful. I guess .. > must be the checked out source tree. But then how can it not be > readable? > > I hope this debugging is helpful, although I am still confused. > > Best wishes, > > Dan > > On 28/01/2026 14:10, Gary Johnson wrote: >> Hi Guix, >> >> I recently installed Guix onto a new Ubuntu VM using the standard >> guix-install.sh script. Now on this VM, I cannot successfully build packages >> that do build correctly on my own machine. >> >> While one might expect that I am just running different versions of Guix on >> each machine, this shouldn't be the case because I am using the same >> channels.scm file on both computers via the `guix time-machine` command. >> I've never seen different behavior between two machines running the same >> Guix version and building the same packages before, so I am utterly >> mystified. >> >> Here's the error I get on my new VM when building a package: >> >> =========================================================================== >> >> starting phase `install-license-files' >> error: in phase 'install-license-files': uncaught exception: >> match-error "match" "no matching pattern" #f >> phase `install-license-files' failed after 0.0 seconds >> Backtrace: >> 9 (primitive-load "/gnu/store/mbyp0pi1lbcqzw22mv0bjpabqis…") >> In guix/build/gnu-build-system.scm: >> 972:2 8 (gnu-build #:source _ #:outputs _ #:inputs _ #:phases . #) >> In ice-9/boot-9.scm: >> 1752:10 7 (with-exception-handler _ _ #:unwind? _ # _) >> In srfi/srfi-1.scm: >> 634:9 6 (for-each #<procedure 71ac5e089d40 at guix/build/gnu-b…> …) >> In ice-9/boot-9.scm: >> 1752:10 5 (with-exception-handler _ _ #:unwind? _ # _) >> In guix/build/gnu-build-system.scm: >> 993:23 4 (_) >> 889:7 3 (install-license-files #:outputs _ #:license-file-regexp …) >> 881:4 2 (_) >> In ice-9/boot-9.scm: >> 1685:16 1 (raise-exception _ #:continuable? _) >> 1685:16 0 (raise-exception _ #:continuable? _) >> >> ice-9/boot-9.scm:1685:16: In procedure raise-exception: >> Throw to key `match-error' with args `("match" "no matching pattern" #f)'. >> build process 11 exited with status 256 >> >> =========================================================================== >> >> Here is one of the many offending files that are all failing for me like >> this: >> >> (define geoserver-css-plugin >> (package >> (name "geoserver-css-plugin") >> (version "2.19.6") >> (source (origin >> (method url-fetch) >> (uri (string-append >> "https://sourceforge.net/projects/geoserver/files/GeoServer/" version >> "/extensions/geoserver-" version >> "-css-plugin.zip")) >> (sha256 (base32 >> "06h2avzqps4dv9lwpck14v4cpk511z1mh13d3w5ii1153rcqdihb")))) >> (build-system copy-build-system) >> (arguments '(#:install-plan '(("." "./" #:exclude >> ("environment-variables"))))) >> (native-inputs (list unzip)) >> (home-page >> "https://docs.geoserver.org/latest/en/user/styling/css/install.html") >> (synopsis "GeoServer CSS Plugin") >> (description "The GeoServer CSS Plugin enables you to write layer styles >> using CSS instead of SLD.") >> (license gpl2))) >> >> In order to get them to build I have to modify their build phases like so: >> >> (define geoserver-css-plugin >> (package >> (name "geoserver-css-plugin") >> (version "2.19.6") >> (source (origin >> (method url-fetch) >> (uri (string-append >> "https://sourceforge.net/projects/geoserver/files/GeoServer/" version >> "/extensions/geoserver-" version >> "-css-plugin.zip")) >> (sha256 (base32 >> "06h2avzqps4dv9lwpck14v4cpk511z1mh13d3w5ii1153rcqdihb")))) >> (build-system copy-build-system) >> (arguments '(#:phases (modify-phases %standard-phases >> (delete 'install-license-files)) >> #:install-plan '(("." "./" #:exclude >> ("environment-variables"))))) >> (native-inputs (list unzip)) >> (home-page >> "https://docs.geoserver.org/latest/en/user/styling/css/install.html") >> (synopsis "GeoServer CSS Plugin") >> (description "The GeoServer CSS Plugin enables you to write layer styles >> using CSS instead of SLD.") >> (license gpl2))) >> >> Does anybody have any idea what could be going on here? >> >> Thanks, >> Gary >> -- GPG Key ID: C4FBEDBD Use `gpg --search-keys [email protected]' to find me Protect yourself from surveillance: https://emailselfdefense.fsf.org ======================================================================= () ascii ribbon campaign - against html e-mail /\ www.asciiribbon.org - against proprietary attachments Why is HTML email a security nightmare? See https://useplaintext.email/ Please avoid sending me MS-Office attachments. See http://www.gnu.org/philosophy/no-word-attachments.html
