mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2026-05-24 01:51:51 +02:00
environment: Add '--emulate-fhs'.
* guix/scripts/environment.scm (show-environment-options-help, %options): Add '--emulate-fhs'. (setup-fhs): New procedure. Setup for the Filesystem Hierarchy Standard (FHS) container. Defines and uses FHS-SYMLINKS and LINK-CONTENTS to create FHS expected directories and creates /etc/ld.so.conf. (launch-environment): Add 'emulate-fhs?' key and implement it to set $PATH and generate /etc/ld.so.cache before calling COMMAND. (launch-environment/container): Add 'emulate-fhs?' and 'setup-hook' keys and implement them. Define and use FHS-MAPPINGS, to set up additional bind mounts in the container to follow FHS expectations. (guix-environment*): Add glibc-for-fhs to the container packages when 'emulate-fhs?' key is in OPTS. * doc/guix.texi (Invoking guix shell): Document '--emulate-fhs'. (Invoking guix environment): Document '--emulate-fhs'. * tests/guix-environment-container.sh: Add tests for '--emulate-fhs'. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
committed by
Ludovic Courtès
parent
3d1d29e440
commit
c7ba5f38b8
@@ -197,3 +197,37 @@ then false;
|
||||
else
|
||||
test $? -gt 127
|
||||
fi
|
||||
|
||||
# Test the Filesystem Hierarchy Standard (FHS) container option, --emulate-fhs (-F)
|
||||
|
||||
# As this option requires a glibc package (glibc-for-fhs), try to run these
|
||||
# tests with the user's global store to make it easier to build or download a
|
||||
# substitute.
|
||||
storedir="`guile -c '(use-modules (guix config))(display %storedir)'`"
|
||||
localstatedir="`guile -c '(use-modules (guix config))(display %localstatedir)'`"
|
||||
NIX_STORE_DIR="$storedir"
|
||||
GUIX_DAEMON_SOCKET="$localstatedir/guix/daemon-socket/socket"
|
||||
export NIX_STORE_DIR GUIX_DAEMON_SOCKET
|
||||
|
||||
if ! guile -c '(use-modules (guix)) (exit (false-if-exception (open-connection)))'
|
||||
then
|
||||
exit 77
|
||||
fi
|
||||
|
||||
# Test that the container has FHS specific files/directories. Note that /bin
|
||||
# exists in a non-FHS container as it will contain sh, a symlink to the bash
|
||||
# package, so we don't test for it.
|
||||
guix environment -C --emulate-fhs --ad-hoc --bootstrap guile-bootstrap \
|
||||
-- guile -c '(exit (and (file-exists? "/etc/ld.so.cache")
|
||||
(file-exists? "/lib")
|
||||
(file-exists? "/sbin")
|
||||
(file-exists? "/usr/bin")
|
||||
(file-exists? "/usr/include")
|
||||
(file-exists? "/usr/lib")
|
||||
(file-exists? "/usr/libexec")
|
||||
(file-exists? "/usr/sbin")
|
||||
(file-exists? "/usr/share")))'
|
||||
|
||||
# Test that the ld cache was generated and can be successfully read.
|
||||
guix environment -C --emulate-fhs --ad-hoc --bootstrap guile-bootstrap \
|
||||
-- guile -c '(execlp "ldconfig" "ldconfig" "-p")'
|
||||
|
||||
Reference in New Issue
Block a user