<nckx>The point here is that magic compiler flags aren't going to bring down binary sizes by a factor of 5. It's the fact that we ship a ppc64, mips, m68k (!), alpha (!), s390x (!!!), and many other machine emulators as one 'monolithic' package (even if the binaries aren't monolithic, I don't know, but that's upstream's design choice, not ours).
<nckx>I'm only looking at the Arch package right now, but they seem to build *everything*, then split it into packages at install time. Guix can't really do that, not really. qemu already takes long to build.
<nckx>If the build system allows building only the guest agent, for example, it would be much more realistic to split off. Something to investigate.
<nckx><You can do so much with 500MB of machine code>: QEMU *does* do so much. Keep in mind that it emulates 31 different systems alone, in a mere 333 MiB of machine code (that's 10 MiB per system). That's *nothing*. They just need to be split up into parts.
<Marlin[m]>How can i set up my desktop to serve as a build farm for my laptop?
<lispmacs>hi, educational question: when a binary is install by guix, what is it exactly that ensures that the dynamically loaded library dependencies are the ones from gnu/store rather than somewhere else? is the full path to the libary coded into the binary itself?
***MinceR_ is now known as MinceR
<efraim>lispmacs: I always thought of it as "it's dynamically linked to a static location", ie to /gnu/store/foo... and not /usr/lib or /gnu/store/bar...
<lispmacs>efraim: I'm rather curious because I was playing around with compiling some of my own source code where some the libraries were guix libraries and some were Debian libraries and this was creating a bit of havok when trying to run the compiled executable, getting the right libraries from the right places to load
<rekado_>it also operates at a level where that sort of information is no longer available.
<rekado_>“guix publish” doesn’t know about packages. It knows about derivations and store file names.
<davexunit>rekado_: speaking of 'guix publish', dustyweb, Jakob, and I were having a discussion about 'guix deploy' yesterday and the idea of being able to do an on-demand push to a substitute server came up. for example, you'd build an OS derivation locally, upload the closure to the substitute server, and then the 100 servers you manage would all pull down a pre-built version.
<davexunit>it was an interesting idea because it's easier than setting up a whole CI system for this purpose.
<efraim>Is the first part that different from 'guix copy'?
<davexunit>I guess it is just 'guix copy'. you'd just target a machine running 'guix publish'
<nothingmuch>i've written a few packages for BlockSci and i'm wondering if slightly obscure stuff like that should be contributed or not - the packaging guidelines in contributing section of manual doesn't have much to say about that
<rekado_>nothingmuch: don’t worry about obscure software or else I’d have to start worrying. Most of the stuff in bioinformatics is obscure.
<bandali>hi guix, this might be of interest to some of you:
<apteryx>could anyone advise how to combine program-file or gexp->script and a mcron job definition, for use with the guix mcron service?
<efraim>I got a rust package locally, had to put together ~300 dependencies before I was sure it'd work, but I don't think it's enough to submit since all the cargo inputs are basically source, some of them I think are missing dependencies
<nothingmuch>is it considered bad form to make assumptions about the package being inherited? for example if i know something has no arguments, to just set them instead of substituting keywords?
<davexunit>nothingmuch: it's more brittle than doing the substitution, but honestly I don't substitute when I know there are no arguments in the parent package.
<nothingmuch>relatedly, i noticed most (all?) packages that change the source seem to duplicate all the logic for it instead of a transformation based approach, is there some reason for this that i'm missing?
<keno>I'm trying to create a python package with guix import, but it tells me that the variable "python-numpy" is unbound, even though it exists in the python module and I've used "(use-modules (gnu packages python)"
<nothingmuch>also is there any guideline for ordering package definitions in the various modules? i couldn't discern any pattern
<nothingmuch>keno: which package? fwiw i just used pypi import a few times (w/ other deps) and specifying inputs worked for me
<roptat>(which I implemented as version 5 for some reason...)
<xavierm02>What's the expected way of letting some package use another one if it's there? So for example, LyX would want to see all installed texlive packages. The way I am currently doing it is having a separate lyx package which sucks. My understanding is that I could build a smart-lyx package with sustitutes disabled that just requires lyx and all currently installed texlive packages it can find. How bad of an idea would is be for a package
<roptat>xavierm02, it's not bad, but it will create an unstable package (in the sense that the definition depends on an external state)
<roptat>I should have at least added the link to the documentation I was using in that unrar.scm file...
<nckx>roptat: It's 5261 7221 1a07 00, so that's good news. I find that The Unarchiver (which I seem to remember is a quirky GNUstep thing) and GNA unrar (which links to a dead home page) can open them freely.
<nckx>I like rabbit holes but not when I'm shoved head-first into one on a workday.
<nckx>roptat: Feel like adding your unrar.scm to Guix? 🙂
<roptat>I'm thinking about using guix deploy, but I'm a bit worried by what could happen if I try to manage an arm server from an x86_64 host?
<nckx>roptat: As *I* understand it, the right (remote) Guix is used (which would explain why old 0.1x installations must be 'manually' updated before you can deploy to them), but of course don't take my word for anything. Maybe mail Jakob to confirm?
*nckx gives up on rar, and just slightly on life, by sending 121 gigs to New York to be born.
<rekado_>xavierm02: doesn’t LyX detect a TeX Live installation at runtime?
<rekado_>xavierm02: in that case all you’d need to do is install the TeX Live packages that you need.
<rekado_>in my very short tests LyX just did the right thing when I installed needed packages into my profile.
<xavierm02>rekado_: Well it's supposed to. But it doesn't find them for some reason.
<xavierm02>rekado_: The current lyx package doesn't work very well. To get it working properly, I had to move some inputs to propagated inputs, and also add texlive and the fonts I wanted to the propagated inputs.
<xavierm02>rekado_: The only thing that was really missing in LyX itself were the icons (which appeared once I moved the svg lib to propagated inputs), the rest failed one it tried to compile with latex.
<xavierm02>So maybe LyX sees them but latex doesn't. But then why does adding texlive to propagated inputs fix it?
<xavierm02>I tried insteall lyx with the config.scm instead of guix install and the error changes..
<xavierm02>Now it says xelatex error, while before it was that it couldn't find my font and amssymb
<minall>I'm trying to follow this tutorial, using awesome WM, and in one part it says: the icons for Vertex (the one i'm trying to install) uses FontAwesome, I'm not sure if it refers to the icons, or the font: but when
<minall>Guix, would you recommend wayland instead of xorg?, since debian and some distros are making default wayland, there may be a reason for it, and since debian put it default, a distro that tends to be OMG so stable, means that wayland is now something, and not a project like before...
<nckx>The Guix description for unclutter is the most upside-down thing I've ever read.
<minall>I found a way to use wayland in guix when I was reading the manual, but should I do it? is the question, be or not to be
<minall>nckx: Mhh a little, actually that's all unclutter does, so is not so bad as a descripotion
<atw>I do not understand enough X11 terminology to understand what unclutter does from its description
<minall>Then nckx is right, the description is bad, since all it does it literaly hide your mouse when you don't use it
<nckx>'Audacity utilises the widget and graphics primitives exported by the Qt toolkit library to render pixels and larger units to an Xorg or Wayland bitmap display. It also decodes raster images ('icons') using the j2big image library API for use in its user interface, and depends on MariaDB for no good reason. It can be used to edit audio.'
<nckx>The constructive thing would be to say 'unclutter's could use some editing' (and probably end up doing so myself) but this was way more fun.
<lispmacs>hi, I'm trying to understand better, on the level of compiling/linking, how guix ensures that the correct dynamically loaded library dependencies are loaded; rather then a similarly named library in /usr/lib, e.g.. Last night somebody said they thought the library search paths were somehow hardcoded into the binaries. Can anybody give me more insight into this?
<nckx>lispmacs: I'm not a low-level ELF guru, but this is correct. It's done by setting the RUNPATH (rpath) in all executables. Maybe some other ways as well.
<lispmacs>nckx: RUNPATH, I'll have to look that up
<davexunit>there's data inside the binaries about what shared libraries are required. guix stores absolute file names there to ensure that an exact version of the library is used.
<nckx>There's also stuff like the location of the dynamic linker loader (ld-linux-….so.x), which I'm not sure is technically a RUNPATH. It might be its own thing. 🤷
<lispmacs>ok, I'm looking into RUNPATH. Looks like ther eis an -rpath option in ld(1)
<nckx>That's the reason for the mysterious and unhelpful './foo → foo: no such file or directory' error when foo clearly exists. foo came from a different system where that loader is in a different hard-coded spot. On FHS distributions, that's /lib, but on Guix it's a store path like everything else.
<nckx>Guix build systems take care of this in the vast majority of cases. When manual intervention is needed, it's more likely to be something else than PATH.
<minall>I mean, I'm trying to understand whats the downside of not having a /usr/ directory, since all the apps, libraries, dependencies and all are installed on /gnu/store
<minall>For example, I want to install a .tar.gz, should I just, build it? or it wont install since the directories are different, that's what I'm trying to figure out
<nckx>minall: The easiest approach on a Guix System is always to write a package. It saves you so much time in the long run. I've never even bothered './configure && make && …'-ing a package on Guix System (although I have on NixOS and it was a mistake).
<minall>Since, in a point, I want to contribute adding any package to guix, then I want to understand what should I do to install a package, if the directories are difference or something
<minall>So there's no problem thought?, building normally or using a package won't be a problem even though the differences of directories?
<roptat>if your goal is to contribute to guix, make a package from the start :)
<nckx>The biggest downside that isn't FUD would be: "/gnu/store" is not the same string as "/usr", this is something that seems incomprehensible to some upstreams, then things break. It's almost that simple.
<minall>roptat: I don't think I have that ability, YET, so all I can do to understand is to add packages to guix
<tchrzcz>Hello everyone. My Guix box stopped accepting ssh connections since I reserved an DHCP address for it. The ssh client says "Connection refused", even though I specified the address and port right. Ping works normally.
<roptat>there's nothing that prevents you to install stuff outside of guix to /usr and such, but it's not recommended, since you won't benefit from guix' properties
<nckx>tchrzcz: Can you log into the box without ssh?
<minall>nckx: That's what I mean, for example, the package installs, but inside the program it says: oh, to run, search for, anylibrarie, which is in the path /usr/share/anylibrarie.librarie, then the program won't work since it tries to load a librarie that it is installed, but on /gnu/store, under a hash, not on /usr/share as most other linux distributions use
<tchrzcz>I ran 'guix pull' and then 'sudo guix system reconfigure /etc/config.scm' as per manual and...
<tchrzcz>1. It displays the following warnings: guix system: warning: /root/.config/guix/current not found: 'guix pull' was never runguix system: warning: Consider running 'guix pull' before 'reconfigure'.guix system: warning: Failing to do that may downgrade your system!
<nckx>gnutec: No, it was considered as a P2P substitute distribution method (which we still don't have) but I don't think any code to that effect was ever committed. Focus seems to have shifted to IPFS now.
<bavier>nothingmuch: for the libsecp256k1 input, when using inheritence, it's better to use 'substitute-keyword-arguments'
*nckx glances over and can only offer nitpicks like 'the libsecp256k1 variant should probably be (define libsecp256k1/blocksci), not in-line', and 'try to keep lines <= 80 characters', but that's about it from just skimming the Web diff 🙂
*nckx stops reviewing a HTML page since that's actually quite unpleasant, this is good enough for a first review on the ML and means that we won't have to say 'that place where you foo on line 211…'. Go for it. Or fine-tune it some more. But we don't review on GitHub.
<nckx>nothingmuch: There's no need to (list license:a-single-licence).
<nothingmuch>thanks so much everyone, i'll implement these suggestions right away
<nothingmuch>maybe i'll even have the courage to finally try emacs for email, i've never actually used git's email support and i'm ashamed to admit i use gmail ;-)
<nothingmuch>ah, in attempting to replace BlockSci's rocksdb with guix's one, i ran into a linker error i couldn't figure out - apparently rocksdb wanted pthread_create from glib 2.2.5 and i couldn't figure out why (this is all on top of core-updates because blocksci wants gcc 7.2, and i failed to get it to work on master with gcc-7 native input)
<nckx>nothingmuch: I heartily invite you to try a less monopolistic e-mail provider (Guix System even provides everything you need to build your own, minus Web mail, if you feel like a challenge) but no need to be ashamed.
<nothingmuch>nckx: the limiting factor is actually my family unfortunately, for years i've been asking them to review different UIs to see what might be acceptable, but they won't budge, and we all share a domain ;_;
<nckx>s/out/doc/ obviously. Would that fit into your use?
<nckx>nothingmuch: Maybe you can enlighten me: as someone who used GMail (not by choice, but I wasn't determined to dislike it at first), I never understood what people like about it. It's clunky. It's slow. It breaks off-line. It's not even purdy. Whyy?
<nothingmuch>nckx: in 2007 i needed to travel for 2 months, used to have squirrelmail+postfix on a machine in my parents' living room, to avoid outages when i was offline i moved the domain to gmail because it was the simplest hosted option
<nothingmuch>that's i think the closest to a rational justification i can offer
<nothingmuch>i also really like labels as opposed to folders and no free IMAP server provides that unfortunately... since family's constraints force me to use gmail for imap building on top of that with offlineimap/notmuch/whatever always seemed excessive
<nckx>nothingmuch: I didn't mean that you had to justify yourself, at all. I just wondered why your relatives genuinely prefer GMail.
<nckx>nothingmuch: Ah, labels could be such a feature, I guess.
<nckx>(Warning: question may be nonsense since I don't own any mobiles.)
<nckx>Or is the notion of IMAP itself too techy already.
<nothingmuch>yeah if it were me it'd be a .maildir in git-annex ;-)
<bricewge>nckx: It doesn't works for me when creating a `simple-service`
<nothingmuch>i *think* mailpile-per-user with maildir shared by a custom IMAP server that fakes gmail style labels (there's a go imap-server-as-library impl i've been meaning to poke) might not be completely insane
<kori>does anyone have a working firefox-bin package?
<nckx>bricewge: I've never created a simple service so I can't help you with the implementation, sorry. But gexp-ungexp seems to be the key here. The :out isn't handled by file-append.
<bricewge>nckx: Thanks, now I'm on the right direction at least
<nckx>nothingmuch: I've heard of Mailpile but haven't tried it yet. Thanks for indulging me!
<nothingmuch>nckx: as far as webmail options, it seems like the most promising. at this point in my life though i'm pretty convinced email software is basically just a distributed denial of service attack on humanity
*nckx adores e-mail ☹ …but agrees about the general quality of user agents.
<nothingmuch>nckx: i used to love it, but increasingly i find it unreasonable complexity for the benefit, the federation aspect is built on a bad foundation (IMO ICANN/IANA is basically a protectionist racket) and proprietary vendors seem to have managed to force bad formats on everyone as de-facto not-quite-standards
<nothingmuch>since the decentralized aspects of it being a federated network effectively externalize the costs of such vendors' whims to humanity as a whole, but doesn't actually ensure permissionless access to all, in hindsight it's a bit of a disappointing tradeoff
<nckx>nothingmuch: That's one the sanest things I've heard in a while.
<nckx>Sorry, I mean: your ideas are intriguing to me and I wish to subscribe to your ARC-sealed newsletter.
<nckx>Ironinc detachment keeps the despair about the state of our Internet at bay \o/
<nothingmuch>nckx: ARC? and yes, i concur in theory, in practice i spend too much time obsessing and find comfort in projects like guix ^_^