* gnu/packages/aux-files/python/sanity-check.py: Catch the less specific
EnvironmentError rather than FileNotFoundError as the latter is Python 3
only.
For more information about these configuration options, read
<https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt> or the
document 'Documentation/admin-guide/pm/cpufreq.rst' in the linux-libre
source distribution.
* gnu/packages/aux-files/linux-libre/4.14-arm.conf,
gnu/packages/aux-files/linux-libre/4.14-i686.conf,
gnu/packages/aux-files/linux-libre/4.14-x86_64.conf,
gnu/packages/aux-files/linux-libre/4.19-arm.conf,
gnu/packages/aux-files/linux-libre/4.19-arm64.conf,
gnu/packages/aux-files/linux-libre/4.19-i686.conf,
gnu/packages/aux-files/linux-libre/4.19-x86_64.conf,
gnu/packages/aux-files/linux-libre/4.9-i686.conf,
gnu/packages/aux-files/linux-libre/4.9-x86_64.conf,
gnu/packages/aux-files/linux-libre/5.10-i686.conf,
gnu/packages/aux-files/linux-libre/5.10-x86_64.conf,
gnu/packages/aux-files/linux-libre/5.12-i686.conf,
gnu/packages/aux-files/linux-libre/5.12-x86_64.conf,
gnu/packages/aux-files/linux-libre/5.13-i686.conf,
gnu/packages/aux-files/linux-libre/5.13-x86_64.conf,
gnu/packages/aux-files/linux-libre/5.4-arm.conf,
gnu/packages/aux-files/linux-libre/5.4-arm64.conf,
gnu/packages/aux-files/linux-libre/5.4-i686.conf,
gnu/packages/aux-files/linux-libre/5.4-x86_64.conf: Unset
'CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE' and set
'CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y'.
Requested by PsixisP on #guix:
“I have a laptop that requires CONFIG_VMD (Intel's software RAID) in
order for the kernel to see the internal NVMe drive. This is not
present in the default Guix kernel.”
* gnu/packages/aux-files/linux-libre/4.14-x86_64.conf,
gnu/packages/aux-files/linux-libre/4.19-x86_64.conf,
gnu/packages/aux-files/linux-libre/4.9-x86_64.conf,
gnu/packages/aux-files/linux-libre/5.10-x86_64.conf,
gnu/packages/aux-files/linux-libre/5.12-x86_64.conf,
gnu/packages/aux-files/linux-libre/5.4-x86_64.conf:
Enable modular CONFIG_VMD.
Since the switch to Guile 3.0.7 using mini-GMP, we can leave
'scm_install_gmp_memory_functions' to its default value, which is to use
custom memory allocators; there is no interference with users of GMP
such as GnuTLS/Nettle.
* gnu/packages/aux-files/guile-launcher.c (main) [!SCM_ENABLE_MINI_GMP]:
Leave 'scm_install_gmp_memory_functions' unchanged.
and arm64.
This has been the recommended default for arm and arm64 since v5.9
(upstream commit f259eab3ea0e7ed73db91f6358274dd3a9a27d79).
* gnu/packages/aux-files/linux-libre/5.12-arm.conf,
gnu/packages/aux-files/linux-libre/5.12-arm64.conf: Enable
CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL, disable
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE.
This has been the recommended default for arm and arm64 since since
v5.9 (upstream commit f259eab3ea0e7ed73db91f6358274dd3a9a27d79).
* gnu/packages/aux-files/linux-libre/5.10-arm.conf,
gnu/packages/aux-files/linux-libre/5.10-arm.conf,
gnu/packages/aux-files/linux-libre/5.11-arm.conf,
gnu/packages/aux-files/linux-libre/5.11-arm.conf: Enable
CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL, disable
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE.
This exception was thrown while running the sanity-check on the python-isort
package, which doesn't make use of a setuptools-based build system but rather
of a PEP 517 compliant one.
* gnu/packages/aux-files/python/sanity-check.py: Handle the FileNotFoundError
whe attempting to read the 'top_level.txt' metadata file of the package.
Remove extraneous 'continue' statement.
This is a followup to commit 8727870ff4.
* gnu/packages/aux-files/linux-libre/5.9-arm.conf,
gnu/packages/aux-files/linux-libre/5.9-arm64.conf,
gnu/packages/aux-files/linux-libre/5.9-i686.conf,
gnu/packages/aux-files/linux-libre/5.9-x86_64.conf: Delete files.
* Makefile.am (AUX_FILES): Remove them.
Add a new phase validating the usability of installed Python packages.
* gnu/packages/aux-files/python/sanity-check.py: New file.
* Makefile.am (AUX_FILES): Register it.
* guix/build-system/python.scm (sanity-check.py): New variable.
(lower): Add the script as an implicit input.
* guix/build/python-build-system.scm: Remove trailing #t.
(sanity-check): New phase.
(%standard-phases): Use it.
* tests/builders.scm: (make-python-dummy)
(dummy-ok, dummy-dummy-nosetuptools, dummy-fail-requirements)
(dummy-fail-import, dummy-fail-console-script): New variables.
("python-build-system: dummy-ok")
("python-build-system: dummy-dummy-nosetuptools")
("python-build-system: dummy-fail-requirements")
("python-build-system: dummy-fail-import")
("python-build-system: dummy-fail-console-script"): Add tests.
Using PYTHONPATH as a mean to discover the Python packages had the following
issues:
1. It is not versioned, so different versions of Python would clash if
installed in a shared profile.
2. It would interfere with the host Python site on foreign
distributions, sometimes preventing a a user to login their GDM
session (!).
3. It would take precedence over user installed Python packages
installed through pip.
4. It would leak into Python virtualenvs, which are supposed to create
isolated Python environments.
This changes fixes the above issues by making use of a sitecustomize.py
module. The newly introduced GUIX_PYTHONPATH environment variable is read
from the environment, filtered for the current Python version of the
interpreter, and spliced in 'sys.path' just before Python's own site location,
which provides the expected behavior.
* gnu/packages/aux-files/python/sitecustomize.py: New file.
* Makefile.am: Register it.
* gnu/packages/python.scm (customize-site)
(guix-pythonpath-search-path): New procedures.
(python-2.7)[phases]{install-sitecustomize.py}: New phase.
[native-inputs]{sitecustomize.py}: New input.
[native-search-paths]: Replace PYTHONPATH with GUIX_PYTHONPATH.
(python-3.9)[native-search-paths]: Likewise.
[phases]{install-sitecustomize}: Override with correct version.
[native-search-paths]: Replace PYTHONPATH with GUIX_PYTHONPATH.
* gnu/packages/commencement.scm (python-boot0):
[phases]{install-sitecustomize}: Likewise.
[native-inputs]{sitecustomize.py}: New input.
[native-search-paths]: Replace PYTHONPATH with GUIX_PYTHONPATH.
* guix/build/python-build-system.scm (site-packages): Do not add a trailing
'/'.
squash! gnu: python: Replace PYTHONPATH by GUIX_PYTHONPATH.
* gnu/packages/vim.scm (vim)[arguments]: Add new 'install-guix.vim phase
to install vendor specific vimrc.
* gnu/packages/aux-files/guix.vim: New file.
* Makefile.am (AUX_FILES): Register it.
When starting the 'guix' command, this ensures Guile modules are
immediately found instead of being search for in other directories.
This reduces the number of 'stat' calls during startup when
GUILE_LOAD_PATH is set to (almost) that of "env -i $(type -P guix)".
* gnu/packages/aux-files/guile-launcher.c (load_path)
(load_compiled_path): New variables.
(inner_main): Restore GUILE_LOAD_PATH and GUILE_LOAD_COMPILED_PATH and
set %load-path and %load-compiled-path accordingly.
(main): Save GUILE_LOAD_PATH and GUILE_LOAD_COMPILED_PATH and unset them.
Fixes <https://bugs.gnu.org/44261>.
Reported by Jan Nieuwenhuizen <janneke@gnu.org>.
* gnu/packages/aux-files/run-in-namespace.c (exec_in_user_namespace):
Add call to 'prctl'. Call 'mount' for NEW_ROOT and define 'is_tmpfs'.
When IS_TMPFS is true, call 'umount' and 'rmdir' after 'waitpid';
otherwise, call 'rm_rf' only when 'waitpid' returns -1 the second time.
(exec_with_loader): Call 'prctl'. Remove NEW_ROOT only when 'waitpid'
returns -1 the second time, otherwise leave it behind.
* tests/guix-pack-relocatable.sh (wait_for_file): New function.
Add test.
Fixes wrapping of non-package things, where the target store directory may
differ in length from the original.
* guix/scripts/pack.scm (wrapped-package)<build-wrapper>: Define
WRAPPER_PROGRAM macro with wrapper's file name.
* gnu/packages/aux-files/run-in-namespace.c (main): Offset index by len of
that file name.
Since commit ba48895899, selected UTF-8
locales are bundled. However, because 'guix-command' is itself a Guile
script, users would still see Guile's warning, particularly on foreign
distros:
$ LC_ALL=sdf guix foo
guile: warning: failed to install locale
hint: Consider installing the `glibc-utf8-locales' [...]
User commands would print that warning, but more importantly, each
invocation of 'guix substitute' would print it, even though
'guix-daemon.service' explicitly chooses "en_US.utf8", which is in
'glibc-utf8-locales'. This leads to confusion since users would keep
seeing this message unless/until they realize they also need to install
'glibc-utf8-locales' in root's profile.
This patch gets rid of "guile: warning: ..." for a guix-pulled 'guix'
command.
* guix/self.scm (specification->package): Add "gcc-toolchain".
(quiet-guile): New procedure.
(guix-command): Use it.
* gnu/packages/aux-files/guile-launcher.c: New file.
* Makefile.am (AUX_FILES): Add it.
Until now, when using the "fakechroot" engine, $LD_LIBRARY_PATH would
always be ignored. However, it's useful in some cases to allow users to
specify LD_LIBRARY_PATH, so honor it.
* gnu/packages/aux-files/run-in-namespace.c (concat_paths): New function.
(exec_with_loader): Concatenante $LD_LIBRARY_PATH to the relocated
AUDIT_LIBRARY_PATH.
Previously it would silently fail to create the /gnu/store symlink when
the host has a read-only /gnu as is the case in these tests.
* gnu/packages/aux-files/run-in-namespace.c (exec_with_loader): Unlink
the ancestor of ORIGINAL_STORE under NEW_ROOT. Check the return value
of 'symlink' when creating NEW_STORE.
* tests/guix-pack-relocatable.sh: Check the contents of the store as
seen by the wrapped executable, with all three engines, and with both
"/gnu" and "/gnu/store" erased.
Fixes <https://bugs.gnu.org/42558>.
Until now, loading 'pack-audit.so' in a truly non-Guix environment would
usually fail because 'pack-audit.so' depends on 'libgcc_s.so' and
'libc.so', none of which could be found.
Furthermore, the test was not working as expected: the trick
unshare -mrf sh -c 'mount -t tmpfs none /gnu ; ...'
would allow the fakechroot engine to make its store available as
/gnu/store as a result of another bug.
* gnu/packages/aux-files/run-in-namespace.c (relocated_search_path): New
function.
(exec_with_loader): Pass "--library-path" to the loader.
* guix/scripts/pack.scm (wrapped-package)[build](runpath): New procedure.
(elf-loader-compile-flags): Pass "-DLOADER_AUDIT_RUNPATH".
* tests/guix-pack-relocatable.sh: Remove 'STORE_PARENT'.
(run_without_store): New function. Erase $NIX_STORE_DIR instead of
$STORE_PARENT.
Use 'run_without_store' throughout.
* 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.
* gnu/packages/aux-files/run-in-namespace.c (original_store): New variable.
(exec_in_user_namespace, exec_with_proot, main): Use it instead of the
literal "@STORE_DIRECTORY@".
* gnu/packages/aux-files/run-in-namespace.c (struct engine): New type.
(exec_default): New function.
(engines): New variable.
(execution_engine): New function.
(main): Use it instead of calling 'exec_in_user_namespace' and
'exec_with_proot' directly.
* tests/guix-pack-relocatable.sh: Add test with 'GUIX_EXECUTION_ENGINE'.
* doc/guix.texi (Invoking guix pack): Document 'GUIX_EXECUTION_ENGINE'.
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.
* guix/build/emacs-build-system.scm (enable-autoloads-compilation)
(validate-compiled-autoloads): Add procedures.
(%standard-phases): Register the new procedures.
* gnu/packages/aux-files/emacs/guix-emacs.el (guix-emacs-find-autoloads):
Remove duplicates in the list of autoload files found.
* guix/build/emacs-utils.scm (expr->string): Add procedure.
(emacs-batch-eval, emacs-batch-edit-file): Use it.
Add the 32x16 Terminus font for ‘high-DPI’ screens, and a 6x10 font that
allows for more (debugging) information to be displayed on standard-DPI
ones, while still being pleasant to read.
* gnu/packages/aux-files/linux-libre/4.14-arm.conf,
gnu/packages/aux-files/linux-libre/4.14-i686.conf,
gnu/packages/aux-files/linux-libre/4.14-x86_64.conf,
gnu/packages/aux-files/linux-libre/4.19-arm.conf,
gnu/packages/aux-files/linux-libre/4.19-arm64.conf,
gnu/packages/aux-files/linux-libre/4.19-i686.conf,
gnu/packages/aux-files/linux-libre/4.19-x86_64.conf,
gnu/packages/aux-files/linux-libre/4.4-i686.conf,
gnu/packages/aux-files/linux-libre/4.4-x86_64.conf,
gnu/packages/aux-files/linux-libre/4.9-i686.conf,
gnu/packages/aux-files/linux-libre/4.9-x86_64.conf,
gnu/packages/aux-files/linux-libre/5.4-arm-veyron.conf,
gnu/packages/aux-files/linux-libre/5.4-arm.conf,
gnu/packages/aux-files/linux-libre/5.4-arm64.conf,
gnu/packages/aux-files/linux-libre/5.4-i686.conf,
gnu/packages/aux-files/linux-libre/5.4-x86_64.conf:
Set CONFIG_FONTS=y, CONFIG_FONT_TER16x32=y, and CONFIG_FONT_6x10=y.
This is a followup to commit 4845dee706.
* gnu/packages/aux-files/linux-libre/5.2-arm-veyron.conf,
gnu/packages/aux-files/linux-libre/5.2-arm.conf,
gnu/packages/aux-files/linux-libre/5.2-arm64.conf,
gnu/packages/aux-files/linux-libre/5.2-i686.conf,
gnu/packages/aux-files/linux-libre/5.2-x86_64.conf: Delete files.
* Makefile.am (AUX_FILES): Remove them.
This enables the use of the subdirs.el feature of Emacs, where specifying a
directory in EMACSLOADPATH translates into a `load-path' variable containing
the directory and all its sub-directories.
* gnu/packages/aux-files/emacs/guix-emacs.el (guix-emacs-autoload-packages):
Use `load-path' directly instead of parsing EMACSLOADPATH.
Reported-by: Leo Prikler <leo.prikler@student.tugraz.at>
Signed-off-by: Clément Lassieur <clement@lassieur.org>
The Elisp directories to scan for autoloads are now taken from EMACSLOADPATH
instead of from the user profile, environment profile or system profile.
Manually adding the Elisp directories to the `load-path' is no longer
necessary, as this is covered by Emacs when they are in EMACSLOADPATH. The
caching logic is also removed, as this code is not typically run often and the
gain is marginal (loading autoloads files is cheap).
* gnu/packages/aux-files/emacs/guix-emacs.el (guix-emacs-directory)
(guix-emacs-subdirs, guix-emacs-directories): Remove procedures.
(guix-emacs-find-autoloads): Filter the directory entries by passing the
regexp to `directory-files' directly, which is ten times faster. Remove
deduplication.
(guix-emacs-autoloads-regexp): Remove the group, which used to filter out the
file extension; it no longer works this way due to passing the regexp to the
`directory-files' procedure directly, which doesn't care about groups.
(guix-emacs-autoload-packages): Update doc. Search package directories from
EMACSLOADPATH. Do not populate the load-path. Remove cache.
* gnu/packages/aux-files/linux-libre/4.19-arm.conf,
gnu/packages/aux-files/linux-libre/4.19-arm64.conf,
gnu/packages/aux-files/linux-libre/4.19-i686.conf,
gnu/packages/aux-files/linux-libre/4.19-x86_64.conf,
gnu/packages/aux-files/linux-libre/5.2-arm.conf,
gnu/packages/aux-files/linux-libre/5.2-arm64.conf,
gnu/packages/aux-files/linux-libre/5.2-i686.conf,
gnu/packages/aux-files/linux-libre/5.2-x86_64.conf: Set CONFIG_NF_TABLES_INET,
CONFIG_NF_TABLES_NETDEV, CONFIG_NF_TABLES_IPV4, CONFIG_NF_TABLES_IPV6 and
CONFIG_NF_TABLES_BRIDGE to 'y', and related options to 'm'.
When running qemu-img from (gnu system vm) with an aarch64 kernel, mounting
ext4 partitions fails because no modprobe of ext4 module is made. Like for
other kernel configs, provide built-in support for ext4 partitions.
* gnu/packages/aux-files/linux-libre/5.2-arm64.conf: Enable built-in ext4,
like in intel and armhf configs.
* gnu/packages/aux-files/run-in-namespace.c (exec_with_proot): New
function.
(main): When 'clone' fails, call 'rm_rf'.
[PROOT_PROGRAM]: When 'clone' fails, call 'exec_with_proot'.
* guix/scripts/pack.scm (wrapped-package): Add #:proot?.
[proot]: New procedure.
[build]: Compile with -DPROOT_PROGRAM when PROOT? is true.
* guix/scripts/pack.scm (%options): Set the 'relocatable?' value to
'proot when "-R" is passed several times.
(guix-pack): Pass #:proot? to 'wrapped-package'.
* tests/guix-pack-relocatable.sh: Use "-RR" on Intel systems that lack
user namespace support.
* doc/guix.texi (Invoking guix pack): Document -RR.
Fixes <https://bugs.gnu.org/34162>
Reported by Vagrant Cascadian <vagrant@debian.org>
Note that CRYPTO_CRC32C was already a built-in in our default
configurations for other systems.
* gnu/packages/aux-files/linux-libre/4.20-arm64.conf,
gnu/packages/aux-files/linux-libre/4.19-arm64.conf
(CONFIG_CRYPTO_CRC32C): Change from 'm' to 'y'.
* gnu/packages/aux-files/linux-libre/4.19-x86_64.conf: Build DRM BOCHS support
as a module. It adds DRM support for BOCHS dispi vga interface used by
qemu (-vga std option). It will also be useful for QEMU 3.0 to enable the new
"bochs-display" display device.
* gnu/packages/aux-files/linux-libre/4.19-i686.conf: Ditto.
Fixes <https://bugs.gnu.org/32840>.
* gnu/packages/aux-files/linux-libre/4.18-x86_64.conf,
gnu/packages/aux-files/linux-libre/4.18-i686.conf: Add
CONFIG_HOTPLUG_PCI_SHPC=y, plus updates made by 'make oldconfig'.
* gnu/packages/aux-files/run-in-namespace.c (write_id_map)
(disallow_setgroups): New functions.
(main): Use 'clone' via 'syscall' instead of 'fork' followed by
'unshare'. Add calls to 'disallow_setgroups' and 'write_id_map' in the
parent process.
* gnu/packages/aux-files/run-in-namespace.c: New file.
* Makefile.am (AUX_FILES): Add it.
* guix/scripts/pack.scm (<c-compiler>): New record type.
(c-compiler, bootstrap-c-compiler, c-compiler-compiler): New procedures.
(self-contained-tarball): Use
'relative-file-name' for the SOURCE -> TARGET symlink.
(docker-image): Add 'defmod' to please Geiser.
(wrapped-package, map-manifest-entries): New procedures.
(%options, show-help): Add --relocatable.
(guix-pack): Honor it.
* gnu/packages/aux-files/linux-libre/4.14-i686.conf,
gnu/packages/aux-files/linux-libre/4.14-x86_64.conf,
gnu/packages/aux-files/linux-libre/4.9-i686.conf,
gnu/packages/aux-files/linux-libre/4.9-x86_64.conf,
gnu/packages/aux-files/linux-libre/4.4-i686.conf,
gnu/packages/aux-files/linux-libre/4.4-x86_64.conf,
gnu/packages/aux-files/linux-libre/4.1-i686.conf,
gnu/packages/aux-files/linux-libre/4.1-x86_64.conf: Update using
"make oldconfig" on the latest point releases.
This is a followup to commit 95b969bc9c.
* gnu/packages/aux-files/linux-libre/4.14-x86_64.conf,
gnu/packages/aux-files/linux-libre/4.14-i686.conf: Adapt to the configuration
options being renamed from CONFIG_*_UNWINDER to CONFIG_UNWINDER_* in version
4.14.9.
* gnu/packages/aux-files/linux-libre/4.14-arm.conf: GuixSD base-initrd expects
ext4 and fat filesystem to be built-in. Adapt configuration
accordingly. Also set devtmpfs_mount to yes.
The code fails to compile on armhf using our configuration.
See <https://patchwork.kernel.org/patch/9688615/> for details.
* gnu/packages/aux-files/linux-libre/4.14-arm.conf: Remove Tegra DRM support.
* Makefile.am (AUX_FILES): Add arm config file.
* gnu/packages/aux-files/linux-libre/4.13-arm.conf: New file.
* gnu/packages/linux.scm (%intel-compatible-systems): Rename to
%linux-compatible-systems and add "armhf-linux".
(linux-libre): Adapt consequently.
The config file for arm is taken from debian armmp kernel. It's a generic
firmware for ARMv7 multiplatform compatible SoCs.