help-guix
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]