<anadon>Blackbeard: Thanks! If all goes well enough, I hope to pass it through the Linux FS mailing list to get their take. They are probably the ones who will ultimately decide if this work lives or dies.
<anadon>Blackbeard: Yeah, it is files as a foundational concept that this paper challenges.
<anadon>So the Linux FS mailing list is _the_ place that decides the viability of this work.
<Blackbeard>anadon: when you are done please let me read it, seems interesting even if it is not implemented
<pkill9>nice, i like that package upgrades now tell you if they're only upgrading due to changed dependencies
<goldenshimmer>Is there a Guix-y way to stick incremental snapshots of the store into packed files (nars, tarballs, or similar) and be able to checksum them for validity afterwards? I think I'm looking for something like guix archive, but that seems to be for specific packages or profiles, rather than the store as a whole... Thanks!
<anadon>Blackbeard: it is available in the gwl-devel mailing list.
<anadon>When it is done done, I'll be sending it all over.
<nckx>goldenshimmer: I can't think of any. The checksums are stored outside of the store in /var/guix/db/db.sqlite.
<anadon>goldenshimmer: Can what you are seeking be accomplished with a `guix pack` with program versions specified?
<goldenshimmer>OK, thanks. On a related note, is /gnu/store/.links supposed to be quite so full of files? Can I tell it to bin the files by hash prefix? The impetus for the first question is that folder has hit the directory limit on this filesystem, and is filling up dmesg with "index full" errors... (I've been waiting to do a guix gc until I work out backups, but that will probably only be a temporary reprieve since that folder's hit
<goldenshimmer>the limit at only ~150k files, which filled up in a couple months of casual use.)
<nckx>goldenshimmer: It's ‘supposed’ to be like that in that it's how it's currently implemented, and there's no way to specifiy subdirectories.
<nckx>It seems there's no way to disable dir_index for only one directory. Shame.
<nckx>Is disabling it completely an option for you?
<goldenshimmer>anadon: Thanks; I'm hoping for a full copy of the store though, which will help my peace of mind. Will probably just make an index of checksums plus an incremental tar instead, which is a bit inelegant but should do the trick. Thanks though!
<nckx>goldenshimmer: Beware, if you're planning on actually using your /gnu/store copy in any way, back up /var/guix as well!
<nckx>An extracted /gnu/store without a DB (or a DB that doesn't exactly match the /gnu/store) is useless. Things will run, but you can't do anything to it anymore using Guix. It's dead.
<goldenshimmer>I don't think I probably need dir_index on, although I don't know what the performance effect would be like. My home folder's about 3500 files immediately within it, but that's more a sign that I need to get organized than anything else... Thanks, yes, I did grab the /var/guix too, although I wonder if it can be properly backed up while the system's running, or if that will have made it useless...
<goldenshimmer>(Not while guix was doing anything, but I assume the daemons and such were still attached.)
<nckx>goldenshimmer: I think it should be all right as long as nothing was happening daemon-wise, but good point. I've never actually tried restoring a snapshot of a running system like that.
<nckx>all right = sqlite will treat it as an unclean shutdown and clean up, but that's just a guess. My experience with sqlite corruption is not good. It managed to corrupt my Guix DB for no discernible reason twice over the years.
<goldenshimmer>Well, I guess I'll try turning off dir_index and see what that does. (The store's only 10GB, so it's not taking up an unreasonable amount of space as it is.) Thanks!
<nckx>If disabling dir_index fs-wide isn't an option, you can also pass ‘--disable-deduplication’ to the daemon. After it takes effect you can just delete /gnu/store/.links entirely.
<nckx>Your store will use more room but it will be dir_index (and rsync -H)-friendly.
<joshuaBPMan>Hey guix, I am trying to solve this weird issue I have with the mailing list. I keep getting duplicates of the guix-devel messages. When I post a message to guix-devel, I end up getting multiple messages.
<joshuaBPMan>Probably because people reply to my email via "To: <my email address>; CC: firstname.lastname@example.org", which I am subscribed to guix-devel. Does anyone know a simple way to not get duplicate messages?
<joshuaBPMan>I've got "Avoid duplicate copies" in the mailmain daemon. But I also have my email address as email@example.com.
<joshuaBPMan>Also, what's the header that gnu mailman guantees is the header that will always be present in sending emails?
<vagrantc>using "notmuch" or something similar will hide the issue :)
*guix-vits reworking neverball according to e-mail comments
<guix-vits>``Usually, we would delete it in a snippet so "guix build -S neverball" returns source without the problematic part.`` -- Can someone, please, tell me: it just mean to place things under (snippet?
<andydarcyjewell>Does url-fetch (or anything else for that matter, like patch-shebang ) mangle the downloaded file? I'm getting an error from the compiled binary when doing the "bootstrap" phase, saying that the header of the downloaded boot image is invalid...
<marmulak>I've never used scheme before, but my first time using a functional language was lisp though I hardly did anything with it at all
<marmulak>I'm actually slightly confused why anyone would ever want to use lisp or anything related to it, but I also don't know anything about macros so it must be amazing for a certain class of applications
<kmicu>marmulak: if we remove a good typing system, add homoiconicity then Haskell (its Core) is preety much a lambda calculus.
<mbakke>rekado: AFAICT issues.guix.gnu.org does not send any cache headers? so user-agents will send If-Modified-Since 'Thu, 01 Jan 1970 00:00:01 GMT', and errh, get a negative reply even if they have been modified.
<janneke>civodul: if you look at glibc (in base.scm), it has a "augment-libc.so" stage which adds machuser and hurduser; that will not work for a static libc; i had that problem when trying to use gcc-7 as bootstrap binary
<rekado>kmicu: easier than switching to another Scheme is: have more than one person profile memory usage in Guile.
<rekado>guix-vits: I don’t know what you think is slow. But generating a new source tarball after editing the contents does take time proportional to the size of the source archive.
<kmicu>That’s true but that another Scheme already has plenty of folks profiling memory. Maybe not the language is the issue but increased memory usage is the price to pay for eDSL 🤷
<kmicu>(IIRC Nix can eval order of magnitude more derivations under half gig. It’s possible that any amount of memory profiling cannot bring Guix+Guile to that level cuz Nix eval cares only about small Nix DSL and can optimize more by definition.)
<brendyyn>is guix pull the only part of guix that is a memory use issue?
<anadon>kmicu: rekado is right on this. The DSL isn't an optimization that lowers the required memory. Now, finding out what actually uses that memory is another matter, but it isn't the DSL and with development there is no reason why guix can't do similar.
<rekado>brendyyn: “guix pull” is by far the worst offender as it compiles Guile modules (in the case where it can’t simply download a pre-built Guix from ci.guix.gnu.org), and that’s very expensive since Guile 2.2.
<rekado>interpreting instead of compiling would make all Guix operations terribly slow, not just “guix pull”.
<brendyyn>civodul, it still gets my laptop fan going with 100% usage on 1 thread anyway, i mean is there some way to cheat, and maybe make some of the processing done at build time for the packages, and the profile building bit can just assemble it somehow?
<brendyyn>i read about the optimisation of grep, and it said optimising was figuring out how to not have to do something, not how to do it faster ;)
<sarg>What should I put into (operating-system) to create a file in /etc with content from string. I've tried (extra-special-file) but it doesn't accept strings.
<nckx>sarg: It does accept (plain-file "my-file" "some stringy string").
<nckx>brendyyn: It might be interesting (but not interesting enough for me to actually try) to find out how much of that burnt CPU smell is from decompressing every single man page. Granted, auto-gzipping saves you PRECIOUS MEBIBYTES and might not be significant overhead nowadays, but still.
<pkill9>specific use case is for large packages which need to be rebuilt when you're on a newer revision of guix, but you have already installed a package from an older revision of guix to a profile, and you want to just graft a different input to it
<brendyyn>nckx, what even uses this man db anyway?
<efraim>civodul: I just tried 'guix package -u' and I had no changes in my profile so nothing happened. not even with git:send-email which is a repeat offender. I think you fixed the 'propagated inputs make packages update every time' bug
<andydarcyjewell>I just had the idea to try to copy-file the known working image in from my homedir (i.e. outside of the guix microcosm) but of course it fails, which makes sense. Is there any way to do that at all, just for testing?
<alextee[m]>is there an example package that downloads multiple sources?
<alextee[m]>i need to build something that unfortunately has a horrible build system that downloads tarballs from the internet
<ngz>I noticed an odd behaviour with manifests, but I don't know if that qualifies as a bug. If your manifest.scm contains (specifications->manifest '("a" "b" "c")), then guix package -m manifest.scm installs "c", "b", "a", and "guix package -I" returns "c", "b", "a", which is slightly frustrating.
<ngz>I mean, one can add reverse in front of the specifications list, but I
<ngz>wonder if `specifications->manifest could not include it.
<alextee[m]>rekado: are you sure i can put origins in native-inputs? package `firstname.lastname@example.org' has an invalid input: (origin (method git-fetch) (uri (string-append "http://dist.libuv.org/dist/v1.9.1/" "libuv-v1.9.1.tar.gz")) (sha256 (base32 "00c44v8m63ac972a74xqybwck305lghadssj2qz61q5fcny4fzb4")))
<kondor[m]>/msg anadon btw, we need people for variety of computational tasks, you might fit in on various levels. we'll need technicians, possibly another postdoc. if you're into life sciences, environment, etc + computing it might be interested in you; as far as I am concerned (and I do hold about 1/3-1/2 power in the decision making) the fact that you're lurking on #guix already gives you a huge advantage in comparison to the usual
<kondor[m]>candidates we're getting); so have no fear, apply :)
<rekado>mbakke: there should be a button in the admin interface — but there isn’t yet.
<rekado>there’s only a button to remove and a form to add a specification.
<kondor[m]>ok, now i need to understand how to send priv messages from the cmd line in matrix
<Veera>bavier`: do i have to send it while invoking qiv
<kmicu>anadon: I hope so. Though Nix can be optimized for Nix and make more assumptions about the code. I doubt Guile can accept patches that optimize pipeline for Guix but make compiler slower for others. So DSL vs eDSL is a trade‑off but for sure we cannot tell how big today.
<Veera>do i have to send the keypress over stdin while invoking qiv
<civodul>kmicu: things like 'guix pack', Shepherd integration, hpcguix-web, Guix Data Service, Emacs Guix, 'guix refresh', etc. benefit hugely from the unified interface
<civodul>so we can tell some things about the tradeoff :-)
<Veera>lfam: They are run part of make install; And it has to be exited by pressing 'q' which will return 0; and it just prints test passed; but if it exit non-zero then also make install finishes successfully
<rekado>brendyyn, sirgazil: does the channel file above work for you?
<lfam>Veera: I looked at the qiv manual page and got some ideas. You could patch the Makefile to do `./qiv --cycle --slide --fullscreen ./intro.jpg`. This will show the picture and then exit on its own
<raghavgururajan>Veera I kinda faced same situation while packaging "gnome-color-manager". You can have look at package definition of "gnome-color-manager", which is 3rd package from the top, in gnome.scm file. You can see the code regarding x11 server for tests. :-)
<lfam>Is there a command-line tool to list the actions that a Shepherd service provides? I tried e.g. `herd list-actions ssh` but it returns `herd: service 'ssh-daemon' does not have an action 'list-actions'`
<lfam>I guess we have to set it up for each service?
<lfam>Does anyone know if that stuff is in place for any existing services?
<sneek>apteryx, raghav-gururajan says: I have finished packaging all the linphone project's packages. All of them have been sent to https://issues.guix.gnu.org/issue/40264 . There will be no more new patches and only new versions. :-)
<sneek>apteryx, raghavgururajan says: Not sure how to do the block thing in debbugs.gnu.org. Could you please block 40264 by 40285, 40291, 40307, 40348 and 40349? Thanks!
<sneek>apteryx, raghavgururajan says: Please disregard my message regarding block.
<raghavgururajan>nckx May be for just spandsp, until the upstream source is back online?
<nckx>I don't understand ‘spandsp’, but if it means ‘just this once for a few days’: no 😛 You can host the files somewhere and use that URL in your patches so people can test them & it's obvious where the source comes from.
<apteryx>I think it'd be OK to use this mirror: https://github.com/jart/spandsp. It is in source form, contains only a mini commit above what was 0.0.6pre17 (fixing a string format issue), and is in source form, so can be requested for archival through Software Heritage.
<anadon>It looks like if I go in and update Django, it will require a huge number of knock-off updates and likely break a ton of cases that users have built up. That being said, it still needs to happen. This could get messy.
<raghavgururajan>apteryx I would like to do that in future. After learning some coding.
<Kozodev>I am new to Guix and Scheme and I'm attempting to build a package for wire messenger. When I try to build it though, I am getting "guix package: error: cannot install non-package object: #<unspecified>"
<efraim>if they add a version tag to a git commit then we can pull the tag (version) and use that as the commit. If we're packaging a "random" commit then we have a version string but use (commit commit) to grab the actual commit listed
<nojr>so if this is the very first package, which does not exist yet in guix, the revision number should be 1?
<raghavgururajan>apteryx So in the 9th commit from back, I removed the old bctoolbox and ortp definitions in telephony.scm. I did `git reset -i HEAD~9`, changed `pick` to `edit` for that commit. But when I go to telephony.scm, I do not see those definitions I removed.
<lfam>bricewge: Do you know any good examples of implementing list-actions in services? Do any services besides the root service actually return anything for list-actions?
<raghavgururajan>lfam In the 9th last commit (Remove bctoolbox and ortp), I removed package definitions of two packages. What should I do to make them reappear, make "define-public" to "define-deprecated", then commit.
<lfam>raghavgururajan: Basically: `git rebase -i HEAD~10`, pick the commit to edit. Then, `git reset --hard HEAD^`. That erases the commit. Edit the files to use deprecated-package, commit in the normal way. Then `git rebase --continue`
<bricewge>I use actions to create and delete polybars
<seepel>Hi Guix! I have another (hopefully quick) question. What is the recommended way to handle bash scripts that expect to find things in /bin?
<lfam>bricewge: But what about Guix services? For example, how can I make `herd doc ssh-daemon list-actions` actually list the available actions?
<bricewge>lfam: I had thought of doing what you suggested but never went on doing it.
<raghavgururajan>apteryx Instead of removing old definitions of bctoolbox and ortp in telephony.scm, how do I mark them deprecated? Can I just change `(package bctoolbox` to `(deprecated-package "bctoolbox" email@example.com"` ??
<apteryx>raghavgururajan: I think it'd be best that the deprecated symbols point to their more up-to-date versions.
<nckx>bricewge: No tags are, you have to search for them.
<apteryx>so I'd remove them, import the (gnu packages linphone) new symbols with a #:prefix :linphone, then (deprecated-package old-name linphone:new). I think this should work.
<raghavgururajan>nckx Oh. The variable name is same. Right now there is bctoolbox (variable+package name) in both telephony.scm and linphone.scm. I want to mark the package in telephony.scm as deprecated, as it has old version and uses different build system.
<bricewge>Yup, it looks like I can't read “Valid tags are patch, ... easy”
<lfam>Guix-beginner7: It means there is no ./configure script to run. You can delete the configure phase. Search existing packages for "delete 'configure" for examples
<raghavgururajan>apteryx Ah I see! Let me know if first 4 patches of #40264 are good to be pushed. :-)
<mbakke>Guix-beginner7: does the package have a "./configure" script?
<nckx>Guix-beginner7: lfam is 100% correct, but it might be the case that your package does need to run ./configure but there just isn't a ./configure script. There's no way to tell which without more information. Are you building from a git check-out? Even better: which package is it?
<mbakke>oh, Matrix is dropping IRC messages again. Fun.
<joshuaBPMan>Hey #guix! I'm hanging out on meet.jit.si/guix Stop by if you want to chat.
<apteryx>raghavgururajan: I just pushed a modified version of spandsp, and closed that one.
<nckx>Guix-beginner7: There's a meson.build file in there, so you need to use the meson-build-system, not the gnu-build-system.
<joshuaBPMan>nckx: what do you think about the meson-build-system? I've got a parabola developer friend, that is annoyed at c-make and the like. He said that autotools does a really good job of building software everywhere.
<nckx>I agree, and I'm not wild about Meson (I think it's unnecessary, me-too-fad-driven, drags in a bloatload of dependencies for no good reason, and is only simple because it's young and inflexible), but eh. We need a build system that builds the stuff, can't really avoid it.
<joshuaBPMan>nckx: why? I will admit, then when I tried packaging something for the first time in autotools, it was a really weird sensation. Even the guix developers seem to want to replace it with a "guile based build system"