IRC channel logs

2024-08-04.log

back to list of logs

<weary-traveler>what's the protocol when packaging rust applications when submitting to guix. for each of the direct dependencies that aren't in guix, make a single commit for that dependency and other transitive dependencies of it?
<weary-traveler>jeez. i suppose the short path to becoming a guix committer is to package a few rust applications
<wizard>is there any way to skip a channel update when running guix pull?
<wizard>i have other stuff i want to update on my machine but one channel on sr.ht is holding the whole thing up
<wizard>oop i figured it out
<wizard>edited my channels.scm to lock it to specific commit
<wizard>err, to the one i'm currently on
<jfred>interesting, I think I've tracked down some of my aarch64 issues to tests failing on the gtk+@2.24.33 build
<jfred>haven't tracked down why though...
<bdju> https://github.com/upa/mscp this looks neat, would be cool to see it packaged
<dckc>well... I punted on `guix system build` on one machine and then move the disk to the other. just used the graphical installer instead
<dckc>curl failed?!?!?
<dckc>main: line 571: ldd: command not found
<dckc>System glibc version (`') is too old; using musl
<dckc>ERROR: there isn't a package for x86_64-unknown-linux-musl-static
<dckc>oops... no... something else
<dckc>where do I get ldd?
<dckc>`gcc-toolchain` suffices... looks like it's more than necessary... glibc seems to be necessary
<dckc>weird! I did `guix shell gcc-toolchain` and it downloaded a bunch of stuff. I would have thought `guix shell glibc` would use the same stuff, but nope.
<dckc>openssl-3.0.7 includes libssl.so.3 ... but how is stuff supposed to find it? `guix shell openssl` doesn't seem to set up LD_LIBRARY_PATH or whatever
<robin>pkg-config usually
<dckc>that would make sense if I were building something; I'm trying to run a released binary
<dckc>wasn't there something about FHS? ah... https://guix.gnu.org/en/blog/2023/the-filesystem-hierarchy-standard-comes-to-guix-containers/
<robin>ah...well there is an FHS emulation option for shell/environment, i haven't used it though
<dckc>is there a "what package contains a file named XYZ" tool?
<dckc>`ls /gnu/store/*/lib/libstdc*` says gcc. I have to install the whole compiler to get a runtime library?!
<robin>yeah there's no "apt-file"-like tool afaik (seems like it'd be easy for substitute servers to collect such info...)
<robin>well, it's in a separate "lib" output at least...but the gcc packages are "hidden", that seems to make it difficult to reference from the command line, a manifest file might work?
<robin>yes, (specifications->manifest '("gcc:lib")) doesn't work, (packages->manifest (list `(,gcc "lib"))) does
<robin>(with appropriate packages imported: (guix packages), (guix profiles), (gnu packages gcc))
<robin>and concatenate-manifests would let one use the simple specifications->manifest form alongside packages->manifest
<dckc>aha... gcc:lib seems to work (as suggested in the part of the blog article about vs-codium)
<dckc>blargh! so close! ldd says all the shared libs are there, but: version `GLIBC_2.34' not found (required by ./pcli)
<robin>huh, i get "package 'gcc' has been superseded by 'gcc-toolchain'" with or without --development
<dckc>`strings /lib/libc.so.6 | grep GLIBC_` shows up to GLIBC_2.33 . argh!
<robin>yeah, it seems to just *skip* 2.34 in base.scm
<dckc>presumably glibc 2.35 would define the GLIBC_2.34 symbol
<dckc>yes, /gnu/store/ln6hxqjvz6m9gdd9s97pivlqck7hzs99-glibc-2.35/lib/libc.so.6 defines GLIBC_2.34
<dckc>darn. the FHS stuff hasn't caught up: /usr/lib/libc.so.6 -> /gnu/store/dhd4a04vxs6nzz0kqnhp0f2sm1q1xbkq-glibc-for-fhs-2.33/lib/libc.so.6
<anton700>hi guix!
<robin>i think that should be the default glibc package? and the semi-magical glibc-for-fhs is based on glibc (2.35) too...
<robin>2.35 is the default, i mean
<anton700>Do any one know, how to setup pure wayland without xwsykabd and xorg-server?
<dckc>yeah... I don't see why glibc-for-fhs doesn't get glibc 2.35
<robin>but it should! (define-public glibc ... (version "2.35")] , (define-public glibc-for-fhs ... (package/inherit glibc] (interlisp superparentheses ;))
<anton700>Do any one know, how to setup pure wayland without xwayland and xorg-server?
<robin>very strange
<robin>ACTION checks in their guix-shell
<robin>downloading some glibc-for-fhs-2.35-* substitutes...
<robin>dckc, hmm, strings /lib/libc.so.6 | grep '^GLIBC_' *does* include GLIBC_2.34 (and GLIBC_2.35 and older versions) for me
<robin>(and a bunch of @@GLIBC_2.34 symbols)
<altomcat>Hey there, I've just finished a definition package for raylib-guile. Should I rename it more conventionally to guile-raylib instead ?
<jakef>getting a different output from guix shell when i specify the packages via the command line and via a manifest :/
<jakef>saw someone bring it up on the ML a while ago too
<decfed>altomcat: I would love to try raylib-guile out. Any repo link for the package spec? As to whether giix naming conventions should overwrite project names: no clue. Perhaps you can look for precedents?
<Deltafire>anton700: remove it from %desktop-services i guess
<GuixOr>I did a small search on the history log and I couldn't find any answer and given that the messages referring to this topic were quite old (2022) I do imagine that maybe some progress has been made since them, so it worth the shot. I'm trying to configure a development environment for a python application on Guix, I do have a similar configuration
<GuixOr>for Nixos using Flakes, where I can set some of the dependencies of my python project (zlib, rocm, etc...) meanwhile the python dependencies (numpy, pandas, keras, transformers) are set as poetry dependencies and installed using poetry. The caveat on why not pack everything with Guix is the amount of work and how these dependencies are updated,
<GuixOr>since the code is shared with developers that use Nix or Mac, so breaking the natural flow of a python poetry project is not an acceptable solution for them and these dependencies are quite sensible in terms of versioning in a way that all of them match, so I prefer to let poetry handle it.
<GuixOr>I tried using guix shell emulating FHS, but I had no success with numpy (missing zlib -> libz.so.1), and my short understanding of Guix makes me wonder that maybe I'm doing something obviously wrong. My final expectation is to have an environment which can be activated by direnv and have its dependencies managed by poetry. If someone knows about
<GuixOr>any reference material, repositories, blog posts or manuals please let me know.
<kks>I've got xdmcp and xinetd installed; i just installed x11vnc but it tells me the command's not found
<kks>me being an idiot and using sudo with guix package
<kks>as usual
<Rutherther>GuixOr: this same problem would arise in Nix as well, with libz.so.1, and workaround to fix it is to set LD_LIBRARY_PATH, or use nix-ld. So I can imagine on guix it could be the same - you could set ld lib path to libz.so.1 in guix store. Or am I missing something?
<GuixOr>Rutherther I tried what you mentioned without success, manipulating PYTHON_PATH and LD_LIBRARY_PATH directly, I'm not aware how to simulate with guix shell an environment where I can overwrite some of these pointing directly to packages. As for example with Nix + Flakes I can add `LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath packages;`, I imagine
<GuixOr>that something similar is possible with guix shell, but I lack knowledge on how to do it. I'm exploring `guix import pypi <package>` for each package, the downside is that I won't be able to run poetry update which resolves most of the problems with dependencies and conflicts, but doesn't seem a feasible technical solution just an ugly hack. This
<GuixOr>would make sense in a later stage to package the application within Guix, apparently generating a set of guix import commands from a poetry.lock file seems doable
<Altadil>Hello, would someone be willing to take a look at https://debbugs.gnu.org/cgi/bugreport.cgi?bug=71502 ?
<Altadil>It should be very simple, but it’s my very first time patching the documentation. :)
<Rutherther>GuixOr: use "(setenv "name" "value")" in your scm file to set environment variable. If you've already set up the fhs env, then it would suffice to put /usr/lib or /lib to ld lib path. If you wanted to get the path directly, then "#~(setenv "LD_LIBRARY_PATH" (string-append $#zlib "/lib"))" may be used to get /lib out of zlib
<tschilp>Hi guix! I'm trying to compile a rust package (kanidm client tools -- https://github.com/kanidm/kanidm/releases/tag/v1.2.3), but run into some trouble with dependencies. I start a shell with `guix shell rust rust-cargo gcc-toolchain openssl pkg-config` and then start the process with the command `cargo build -p kanidm_tools --bin kanidm --release`. It however fails with the backtrace: http://paste.debian.net/1325434. Any ideas what
<tschilp>might be going wrong here?
<Rutherther>judging from the cargo build system you will need to set OPENSSL_DIR to openssl output path. It does the same to build packages that need openssl
<Rutherther>alternatively maybe it will work to set it to "$GUIX_ENVIRONMENT" when you have openssl in your shell. I am not sure though
<nikolar>any guix maintainers here
<nikolar>llvm on aarch64 fails to build due to a timeout
<tschilp>Rutherther: thanks for your feedback. Turns out I needed to add 'eudev' to my shell environment and set both OPENSSL_DIR and HOST_CC to finish the build. The binary actually seems to work!
<Rutherther>is it possible to use inferiors with guix system to make the system reproducible without having to git pull to specific channel version? or is there something else that achieves that apart from inferiors?
<lilyp>You can also use `guix time-machine` with a channels file
<Rutherther>hm, yeah, that also seems like a viable option
<Rutherther>where is the channel source that is used for building stored? with nix, you have channel sources residing in places such as ~/.nix-channels, /nix/var/nix/profiles/per-user/root/channels. You can then import channel you want in your nix source (usually substituted from something like <channel-name>, where this means to search for <channel-name> in NIX_PATH variable, and get its path), and pick stuff such as packages out of it. Is there an equivalent...
<Rutherther>... for guix?
<Gooberpatrol66>Rutherther are you looking for ~/.config/guix/channels.scm
<Rutherther>hm, I don't have that
<Rutherther>I have only "current" in "~/.config/guix"
<Rutherther>from what I see in the manual, you can specify additional channels with that. But althoguh I haven't mentioned it explicitly, I am more interested in how the guix channel works
<tschilp>Rutherther: not sure if this is what you're searching for, but you could do 'guix describe -f channels' to get the information about the current guix you are using.
<Rutherther>thanks, I know that, I am interested in knowing where guix actually obtains that information from. I did guix pull and it did update it somehow, but I don't understand at all how
<tschilp>there is some quite weird linking magic going on, that I don't claim to understand. But inspecting ~.config/guix/current~ shows it's a symlink to ~/var/guix/profiles/per-user/$USER/current-guix~, which itself is a link to ~/var/guix/profiles/per-user/$USER/current-guix-$GENERATION-guix~, which finally is a link to ~/gnu/store/$STRING-profile~. It seems to me that it all roots down into the store somehow and everything above is just
<tschilp>genius-like linked for access.
<lfam>Howdy
<nikolar>ello
<lfam>Anyone have any ideas about this CLISP test failure on aarch64-linux? <https://bugs.gnu.org/72429>
<nikolar>lfam btw ffmpeg depdendencies on aarch64 seem to be progressing
<lfam>If not, I'm inclined to push it to master in order to motivate a fix
<lfam>That's great nikolar
<nikolar>i mean still a bunch of big things missing, bug but at least the list is getting greener heh
<nikolar>s/bug //
<nikolar>also, fun fact, inkspace is a dependency of pulseaudio
<nikolar>inkscape
<lfam>I think that inkscape is pretty deep in the package graph, because it's used to convert some files
<lfam>I don't remember the details but that sounds about right
<lfam>It's a bit silly but that's how it is for now
<Rutherther>tschilp: hmm, upon inspecting "~/.config/guix/current/bin/guix" I see that it contains, among other things, a path to /gnu/store/...guix-union-modules... that does contain the modules. So I suppose the guix channel is "built-in" inside of this "guix" command
<nikolar>it's very silly lool
<nikolar>and i think it's for documentation stuff but i haven't checked
<dckc>interesting, robin . here's hoping for time to figure out the difference in our environments. but I'm over my time budget for this, for now
<Rutherther>and related to channels, can I use modules out of two channels that would expose the same modules, such as two different revisins of guix channel? if I understand correctly, inferiors are only for derivations
<Rutherther>if I understand correctly, I can use guix time-machine with --channels and --commit to specify different set of channels for an operation. But what about using multiple revisions of same channel for single operation?
<lfam>I haven't tried it, but it seems a bit strange. How would you specify what parts of which revision would be used?
<Rutherther>I have no clue. It's just something that came to mind as I am used to nix and nixpkgs. There not everything is a module, but if I understand correctly, guix is built just around modules, even packages come out of modules. With nixpkgs I am able to make a call to evaluate modules (it's lib.evalModules), and those modules can be functions (usually stored in separate files) that I specify when calling lib.evalModules (and those modules can import other...
<Rutherther>... modules as well when they put them to "imports" list). Since the calls to lib.evalModules are done inside of Nix language, I can do multiple calls to evalModules, and obtain stuff from all of them, and use it somehow. But with guix, I don't really see a way to do this, if everything comes out of modules
<dariqq>lfam: i did a 'guix time-machine --branch=kernel-updates -- weather clisp -s aarch64-linux' and it shows a clisp substitute is available . Not sure why the builders were trying to rebuild clisp/gnulib/patch . Maybe a connection issue?
<lfam>Huh, how strange!
<lfam>Thanks for the info
<lfam>Well, I think that "--system / -s" is a different thing from native builds or cross-compiling, although I'm not totally sure
<lfam>Can you do `guix time-machine --branch=kernel-updates -- build clisp -s aarch64-linux --derivations` and tell me the derivation filename?
<lfam>I'm curious if it is the same derivation as the failed build on CI
<dariqq>sadly i dont have an aarch64 machine so this would be be from an x86-64 machine trying to build the aarch64-linux version (via binfmt)
<lfam>Okay, I can try it here
<dariqq>"/gnu/store/z5q8gl3n756kn0iv801q4r1smwxs4mwb-clisp-2.49-92.drv"
<lfam>Thanks!
<lfam>Yeah, it's a different derivation
<dariqq>wait "/gnu/store/gf5xf69vhx6rhl12fcjizwskmrfqchrp-clisp-2.49-92.drv" is the --no-grafts variant
<lfam>Ah
<lfam>Okay great, with -s I get the same derivation on my x86_64 machine
<lfam>I didn't think that would work
<dariqq>but why would the builder attempt a rebuild then (and fail doing so)?
<lfam>Who knows
<lfam>The substitute could have gotten deleted, and then the build fails due to reasons
<lfam>There have been build failures on our aarch64 machines that appear to be compiler bugs, but could be CPU bugs
<lfam>It's the nitty gritty of running a distro :)
<nikolar>lfam: which ones in partiuclar
<lfam>I don't remember the details of the problems but the Honeycomb LX2 machines were really hard to get working
<nikolar>interesting
<lfam>Of course they are running now so that's great
<nikolar>yeah cool
<redacted>Anyone here have a package or a channel with the latest version of River, the Wayland compositor?