[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug#56677] [PATCH 0/2] environment: Add --emulate-fhs option.

From: Ludovic Courtès
Subject: [bug#56677] [PATCH 0/2] environment: Add --emulate-fhs option.
Date: Thu, 04 Aug 2022 12:36:06 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.1 (gnu/linux)


John Kehayias <> skribis:

> As discussed on guix-devel here (please see for more detailed discussion and 
> design aims): this 
> is a patch to add an FHS (Filesystem Hierarchy Standard) emulation option for 
> environments.


> 1. On the mailing list there was discussion about the necessity or not of 
> glibc-for-fhs (added in the first patch). I find this useful and a big piece 
> of making this FHS option work, but open to discussion or if it should be a 
> further option.

I would prefer to keep complexity as low as possible, and thus not have
this glibc variant.

Now, I don’t know for this use case how much it matters that libc honors
/etc/  Intuitively, like I wrote on guix-devel, I’d think doesn’t matter, but you encountered counterexamples.

So I guess that if in practice presence of /etc/ *and* having
glibc honor it is necessary often enough, we can do that.

It seems that ‘glibc-for-fhs’ is merely added to the environment though,
and not actually used?

+                                      ;; For an FHS-container, add the
+                                      ;; (hidden) package glibc-for-fhs which
+                                      ;; uses the global cache at
+                                      ;; /etc/
+                                      (if emulate-fhs?
+                                          (alist-cons 'expression
+                                                      '(ad-hoc-package
+                                                        "(@@ (gnu packages 
base) glibc-for-fhs)")
+                                                      opts)
+                                          opts)))

Or rather it’s only used when running ‘ldconfig’, right?

> 2. Right now I used a script written to the containers /tmp/ to 
> generate the ld cache, supplement $PATH (somewhat optional, but I found 
> useful for less tinkering), and finally launch the given command or shell. I 
> found that when not providing a command the prompt for /bin/sh is not the 
> same as when not using --emulate-fhs. So I'm not sure if this is the correct 
> way to launch the default /bin/sh if no command is given. Open to ideas of a 
> better way to implement these actions for a container start up as well.
> 3. This is my first time touching a guix script and the documentation, so 
> please do check the commit message and guix.texi.
> 4. I decided to link the second level FHS directories, like /usr/bin, as well 
> as optional ones like /lib64 (or /lib32), to the top level /bin, /lib, and so 
> on. These could just be bind mounted to profile/bin and so on as well, but 
> again tried to mimic an FHS distribution like Arch where the files only live 
> in one place. While perhaps making the code a little more involved, I hope 
> this makes the container look tidier.
> I may be forgetting other elements in the implementation decisions I made, 
> but I have been testing these patches along the way and have gotten good 
> usage of them. Please test further too!
At first sight, I find it pretty cool!  I would have two grievances:

  1. Can we make the implementation more orthogonal and less entangled
     in the already-long ‘launch-environment/container’?

     Maybe that can be accomplished by moving all the code conditional
     on ‘emulate-fhs?’ out of the way in a separate procedure, and
     possibly by adding a generic hook in ‘launch-environment/container’
     that would call said procedure.

  2. Please add tests.  You can probably augment
     ‘tests/’ for that.  Let us know if
     you’re not sure how to do that.

Thanks for all the work, and sorry for the delay: it seems to be summer
time for many of us.  :-)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]