Miles Fidelman writes: > Thanks Chris, > > A couple of follow-ups: > > On 5/9/19 12:39 PM, Christopher Baines wrote: >> >> 1: http://git.savannah.gnu.org/cgit/guix/maintenance.git/tree/talks >> >> There's also two talks [2] which I've given in the past on Guix, they're >> a few years old, but I think most of the material is still correct. >> > Silly me, but how does one view these things? The ones labeled with > .pdf extensions come across as ascii files, that can't be read as pdf, > and others look like they have to be assembled. There might be a "plain" link, which you can use to download the file, and then open it once it's downloaded. Alternatively, clone the Git repository and browse the files on your computer. >> 2: https://www.cbaines.net/projects/guix/ >> >> The FOSDEM 2018 one is shorter, and higher level [3]. >> >> 3: https://www.cbaines.net/projects/guix/fosdem-2018/presentation/#/ >> >> The Freenode live! 2017 one is longer and more technical [4]. >> >> 4: https://www.cbaines.net/projects/guix/freenode-live-2017/presentation/#/ > > From the slides, it looks like GUIX keeps track of dependencies, but > there's no discussion about how dependencies are identified, included > in the package definitions, or resolved at install time. Details (or > pointer) please! I'm not sure there's a great reference for these, so dependencies are not really identified, but when you define a package you declare some "inputs". There are 3 relevant fields in the package record, inputs, native-inputs, and propagated-inputs. Generally, the runtime dependencies are a subset of the build inputs. Specifically the ones that are still referenced in the generated outputs from the build. The propagated-inputs will also be installed alongside the package if it's installed. Dependencies aren't resolved at install time, they're exactly specified when the package is built. However, Guix does have a concept of search paths, which helps some software connect things up at runtime. For example, when you install python, and python-numpy, Guix will set the PYTHONPATH environment variable in the profile, so that Python can find the relevant packages. Chris