[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Guile-Git, bytestructures, libgit2 and Guix 0.14.0
From: |
Paul Boddie |
Subject: |
Guile-Git, bytestructures, libgit2 and Guix 0.14.0 |
Date: |
Fri, 8 Dec 2017 23:48:28 +0100 |
User-agent: |
KMail/1.13.7 (Linux/3.2.0-4-486; KDE/4.8.4; i686; ; ) |
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
- Guile-Git, bytestructures, libgit2 and Guix 0.14.0,
Paul Boddie <=