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
|
/* 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.
|
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 */
|
chdir ("/"); /* avoid EBUSY */
|
||||||
rm_rf (new_root);
|
rm_rf (new_root);
|
||||||
free (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
|
# 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.
|
# 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
|
# 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.
|
# 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"'
|
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
|
else
|
||||||
# Run the relocatable 'sed' in the current namespaces. This is a weak
|
# 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.
|
# test because we're going to access store items from the host store.
|
||||||
|
|
Loading…
Reference in a new issue