guix-patches
[Top][All Lists]
Advanced

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

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


From: John Kehayias
Subject: [bug#56677] [PATCH 0/2] environment: Add --emulate-fhs option.
Date: Thu, 21 Jul 2022 04:14:19 +0000

Hello Guix,

As discussed on guix-devel here (please see for more detailed discussion and 
design aims): https://lists.gnu.org/r/guix-devel/2022-07/msg00161.html this is 
a patch to add an FHS (Filesystem Hierarchy Standard) emulation option for 
environments.

The overall goal is to mimic typical GNU/Linux distributions in following FHS 
(/bin, /etc, and /usr in particular) as well as a glibc that reads a global 
/etc/ld.so.cache and PATH with /bin, and so on. The idea is that following 
instructions for setting up a development environment, building software, 
running something, and so on in "typical" Linux environments, should "just 
work" with 'guix shell --container --emulate-fhs ...', provided the right 
inputs and other options are set.

For testers, this can be used by using pre-inst-env (outside of the pure shell 
used to build a local guix) to run guix shell with this patch. Please see the 
mailing list discussion for particular examples as well.

For review, in particular:

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.

2. Right now I used a script written to the containers /tmp/fhs.sh 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!

Thanks,
John





reply via email to

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