Hi, Le Mon, 27 Jul 2020 06:52:52 -0500, mbcladw...@stihie.net a écrit :
> Hi, > I would like to upgrade guile-json in my local store. > I start with > $guix pull > $guix package -u (didn't do anything) If guile-json is not installed in your default profile, that's expected. Otherwise, maybe it was your first guix pull? Make sure you have ~/.config/guix/current/bin *first* in your $PATH and run "hash guix" to invalidate your shell's cache for the guix binary location. Make sure "type guix" returns ~/.config/guix/current/bin/guix. > > Modifying the template at > https://guix.gnu.org/blog/2018/a-packaging-tutorial-for-guix/ > I create the file guile-json.scm: > > [...] > > Looking at the log file, the final lines are: > > checking for pkg-config... no > configure: checking for guile 3.0 > configure: checking for guile 2.2 > configure: checking for guile 2.0 > configure: error: > No Guile development packages were found. > > Please verify that you have Guile installed. If you installed Guile > from a binary distribution, please verify that you have also installed > the development packages. If you installed it yourself, you might > need to adjust your PKG_CONFIG_PATH; see the pkg-config man page for > more. > > command > "/gnu/store/29jhbbg1hf557x8j53f9sxd9imlmf02a-bash-minimal-5.0.7/bin/bash" > "./configure" "CONFIG_SHELL=/gnu/store/29jhbbg1hf55$ > > > I am on Debian 9 working with guile v 2.2.7, dev files are installed: > > apt-get install guile-2.0-dev > Reading package lists... Done > Building dependency tree > Reading state information... Done > guile-2.0-dev is already the newest version (2.0.13+1-4). Guix does not interact with your system, and ensures that it does not use anything from it when building. Otherwise, the resulting package's content might depend on the content of the system that built it, and we wouldn't be able to ensure reproducibility across all the linux distributions. Instead, Guix builds packages in its own container system, completely isolated from the system, your environment variables, etc... In order to ensure guile is present in this container, you must declare it as a dependency (we call that an "input"). You'll also need pkg-config, so the package definition would look like this: (package (name "guile-json") ... (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("guile" guile-3.0))) ... (license gpl3+)) With the necessary imports at the beginning of the file. You can have a look at the actual definition we use in Guix with: guix edit guile-json Another possibility, as guile-json is available in Guix (we have 1.2.0, 3.5.0 and 4.0.1 currently) is to use the available recipe for guile-json but with a different source, like this: guix install guile-json@3.5.0 --with-source=https://... Not tested and if something changed in the build instructions, it might break, but it's certainly easier than creating your own definition from scratch. I specify the version since it's the closest to the version you want (in fact the recipe has not changed for guile-json 4, which would be the one used if you don't specify a version). Note that you'll need guile itself in your profile too in order for guile-json to be useful. > > In my .bashrc I set the variable such that at the terminal prompt: > > echo $PKG_CONFIG_PATH > /home/mbc/.guix-profile/lib/pkgconfig > > Where did I go wrong? As said above, guix just doesn't care about your environment :) > Thanks > Mortimer >