Hello, I thought I'd try and see if the latest Guix release might help with the problems I described a few days ago, but it looks like there are a few additional dependencies, and I am struggling to install them. I'm using Debian Jessie, but have also been trying with Debian Stretch.
Guile-Git seems to want scheme-bytestructures, but this seems to be something published on GitHub. I can seemingly compile and install it starting out as follows: git clone https://github.com/TaylanUB/scheme-bytestructures.git cd scheme-bytestructures At this point, it seems that a modification to SOURCES in Makefile.am is required: bytestructures/r6/bytevectors.scm needs to be added. Otherwise, later attempts by Guile-Git to use the code will fail. Then... autoreconf ./configure make sudo make install This puts the library in /usr/local/lib/guile/2.0/site-ccache. I also found that the packaged version of libgit2 on Debian Jessie doesn't export the git_libgit2_init symbol for some reason: ice-9/boot-9.scm:106:20: In procedure dynamic-pointer: Symbol not found: git_libgit2_init So, libgit2 needs to be installed from source as well (having removed the packaged version): git clone https://github.com/libgit2/libgit2.git cd libgit2 git checkout v0.26.0 mkdir build cd build cmake .. cmake --build . cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local sudo cmake --build . --target install This also puts the library in /usr/local/lib/guile/2.0/site-ccache. Trying to build Guile-Git is more awkward. Here is what I did: git clone https://gitlab.com/guile-git/guile-git.git cd guile-git ./bootstrap ./configure GUILE_LOAD_COMPILED_PATH=/usr/local/lib/guile/2.0/site-ccache It is worth noting that without this extra setting, configure cannot find the other libraries. I did wonder whether there might be explicit --with-... options for configure, but there doesn't appear to be, at least from the help text. I also found that git/config.scm had some apparently malformed code, possibly generated incorrectly, yielding this error when running make: git/config.scm:23:0: source expression failed to match any pattern in form (define %libgit2 "" /usr/local "/lib/libgit2") So, I edited that file to have the following instead: (define %libgit2 "/usr/local/lib/libgit2") Running make also seemed to need the additional setting: make GUILE_LOAD_COMPILED_PATH=/usr/local/lib/guile/2.0/site-ccache At this point, Guile-Git, scheme-bytestructures and libgit2 should be available and an attempt to compile the Guix tools should be possible. Here is what I try and do: tar zxf guix-0.14.0.tar.gz cd guix-0.14.0 ./bootstrap ./configure GUILE_LOAD_COMPILED_PATH=/usr/local/lib/guile/2.0/site-ccache Again, without the setting, configure fails to find things. Also, for my purposes, I add to gnu/packages/bootstrap.scm a definition for the mipsel dynamic linker name: ((string=? system "mipsel-linux") "/lib/ld.so.1") Then I try and make everything, but the library search path is still a problem, so I first have to change the Makefile and remove the following from the make-go rule: unset GUILE_LOAD_COMPILED_PATH ; Then I actually try and make everything: make GUILE_LOAD_COMPILED_PATH=/usr/local/lib/guile/2.0/site-ccache This seems promising until I get an error like this: LOAD guix/scripts/pack.scm Backtrace: In ice-9/r4rs.scm: 90: 19 [dynamic-wind #<procedure 8684db0 at ice-9/eval.scm:416:20 ()> ...] 90: 18 [dynamic-wind #<procedure 8684d68 at ice-9/eval.scm:416:20 ()> ...] In ice-9/eval.scm: 432: 17 [eval # #] 432: 16 [eval # #] 481: 15 [lp (#<fluid 16>) (#<output: void 80d2d20>)] In ice-9/boot-9.scm: 2864: 14 [resolve-interface (guix scripts pack) #:select ...] 2789: 13 [#<procedure 8191660 at ice-9/boot-9.scm:2777:4 (name #:optional autoload version #:key ensure)> # ...] 3065: 12 [try-module-autoload (guix scripts pack) #f] 2401: 11 [save-module-excursion #<procedure 9e9e4e0 at ice-9/boot-9.scm:3066:17 ()>] 3085: 10 [#<procedure 9e9e4e0 at ice-9/boot-9.scm:3066:17 ()>] In unknown file: ?: 9 [primitive-load-path "guix/scripts/pack" ...] In ice-9/eval.scm: 453: 8 [eval # ()] 387: 7 [eval # ()] 387: 6 [eval # ()] 387: 5 [eval # ()] 387: 4 [eval # ()] 387: 3 [eval # ()] 387: 2 [eval # ()] 393: 1 [eval #<memoized gzip> ()] In unknown file: ?: 0 [memoize-variable-access! #<memoized gzip> #<directory # 9f23f78>] ERROR: In procedure memoize-variable-access!: ERROR: gzip: unbound variable Makefile:5295: recipe for target 'make-go' failed I'm clearly doing something wrong or at least inconvenient with the library search path, but I don't really know how to troubleshoot this error, either. It appears to be the result of running the build-aux/compile-all.scm script on the different script files, but I don't see any variable called gzip in the guix/scripts/pack.scm script, although it must be said that I don't know Scheme that well, so maybe the variable is in another file and I misunderstood the backtrace. Here's hoping that I've done something obviously wrong and that someone might be able to tell me what that is! Paul
