pack: Add relocation via ld.so and fakechroot.
authorLudovic Courtès <ludovic.courtes@inria.fr>
Thu, 7 May 2020 20:49:20 +0000 (22:49 +0200)
committerLudovic Courtès <ludo@gnu.org>
Thu, 14 May 2020 15:21:27 +0000 (17:21 +0200)
commit6456232164890dbf5aa20394ee24637feb4b7b9e
tree8fbdad7a851dd1762756c7178864d6919a62c00f
parent4449e7c5e4c8b746c786fc9a5ea82eab60f6c846
pack: Add relocation via ld.so and fakechroot.

* gnu/packages/aux-files/run-in-namespace.c (HAVE_EXEC_WITH_LOADER): New
macro.
(bind_mount): Rename to...
(mirror_directory): ... this.  Add 'firmlink' argument and use it
instead of calling mkdir/open/close/mount directly.
(bind_mount, make_symlink): New functions.
(exec_in_user_namespace): Adjust accordingly.
(exec_with_loader) [HAVE_EXEC_WITH_LOADER]: New function.
(exec_performance): New function.
(engines): Add them.
* guix/scripts/pack.scm (wrapped-package)[fakechroot-library]
[audit-module]: New procedures.
[audit-source]: New variable.
[build](elf-interpreter, elf-loader-compile-flags): New procedures.
(build-wrapper): Use them.
* tests/guix-pack-relocatable.sh: Test with
'GUIX_EXECUTION_ENGINE=fakechroot'.
* doc/guix.texi (Invoking guix pack): Document the 'performance' and
'fakechroot' engines.
* gnu/packages/aux-files/pack-audit.c: New file.
* Makefile.am (AUX_FILES): Add it.
Makefile.am
doc/guix.texi
gnu/packages/aux-files/pack-audit.c [new file with mode: 0644]
gnu/packages/aux-files/run-in-namespace.c
guix/scripts/pack.scm
tests/guix-pack-relocatable.sh