mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-11-07 07:26:13 -05:00
pack: 'guix pack -R' wrapper correctly reports exit code.
Fixes <https://bugs.gnu.org/40816>. Reported by Jan (janneke) Nieuwenhuizen <janneke@gnu.org>. * gnu/packages/aux-files/run-in-namespace.c (main): In the 'default' case, check 'WIFEXITED (status)' and exit with the corresponding code in that case. Exit with 255 in other cases. * tests/guix-pack-relocatable.sh: Add test.
This commit is contained in:
parent
193192ca77
commit
2520059bdb
2 changed files with 13 additions and 3 deletions
|
@ -1,5 +1,5 @@
|
|||
/* GNU Guix --- Functional package management for GNU
|
||||
Copyright (C) 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
Copyright (C) 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
|
||||
This file is part of GNU Guix.
|
||||
|
||||
|
@ -343,7 +343,13 @@ Please refer to the 'guix pack' documentation for more information.\n");
|
|||
chdir ("/"); /* avoid EBUSY */
|
||||
rm_rf (new_root);
|
||||
free (new_root);
|
||||
exit (status);
|
||||
|
||||
if (WIFEXITED (status))
|
||||
exit (WEXITSTATUS (status));
|
||||
else
|
||||
/* Abnormal termination cannot really be reproduced, so exit
|
||||
with 255. */
|
||||
exit (255);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# GNU Guix --- Functional package management for GNU
|
||||
# Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
# Copyright © 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
#
|
||||
# This file is part of GNU Guix.
|
||||
#
|
||||
|
@ -72,6 +72,10 @@ then
|
|||
# mounting an empty file system on top of it. That way, we exercise the
|
||||
# wrapper code that creates the user namespace and bind-mounts the store.
|
||||
unshare -mrf sh -c 'mount -t tmpfs none "$STORE_PARENT"; echo "$STORE_PARENT"/*; "$test_directory/Bin/sed" --version > "$test_directory/output"'
|
||||
|
||||
# Check whether the exit code is preserved.
|
||||
if unshare -mrf sh -c 'mount -t tmpfs none "$STORE_PARENT"; echo "$STORE_PARENT"/*; "$test_directory/Bin/sed" --does-not-exist';
|
||||
then false; else true; fi
|
||||
else
|
||||
# Run the relocatable 'sed' in the current namespaces. This is a weak
|
||||
# test because we're going to access store items from the host store.
|
||||
|
|
Loading…
Reference in a new issue