aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019 David Thompson <davet@gnu.org>
;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu machine)
  #:use-module (gnu system)
  #:use-module (guix derivations)
  #:use-module (guix monads)
  #:use-module (guix records)
  #:use-module (guix store)
  #:use-module ((guix diagnostics) #:select (source-properties->location))
  #:use-module (srfi srfi-35)
  #:export (environment-type
            environment-type?
            environment-type-name
            environment-type-description
            environment-type-location

            machine
            machine?

            machine-operating-system
            machine-environment
            machine-configuration
            machine-display-name

            deploy-machine
            roll-back-machine
            machine-remote-eval

            &deploy-error
            deploy-error?
            deploy-error-should-roll-back
            deploy-error-captured-args))

;;; Commentary:
;;;
;;; This module provides the types used to declare individual machines in a
;;; heterogeneous Guix deployment. The interface allows users to specify system
;;; configurations and the means by which resources should be provisioned on a
;;; per-host basis.
;;;
;;; Code:


;;;
;;; Declarations for resources that can be provisioned.
;;;

(define-record-type* <environment-type> environment-type
  make-environment-type
  environment-type?

  ;; Interface to the environment type's deployment code. Each procedure
  ;; should take the same arguments as the top-level procedure of this file
  ;; that shares the same name. For example, 'machine-remote-eval' should be
  ;; of the form '(machine-remote-eval machine exp)'.
  (machine-remote-eval environment-type-machine-remote-eval) ; procedure
  (deploy-machine      environment-type-deploy-machine)      ; procedure
  (roll-back-machine   environment-type-roll-back-machine)   ; procedure

  ;; Metadata.
  (name        environment-type-name)       ; symbol
  (description environment-type-description ; string
               (default #f))
  (location    environment-type-location    ; <location>
               (default (and=> (current-source-location)
                               source-properties->location))
               (innate)))


;;;
;;; Declarations for machines in a deployment.
;;;

(define-record-type* <machine> machine make-machine
  machine?
  (operating-system %machine-operating-system); <operating-system>
  (environment      machine-environment)      ; symbol
  (configuration    machine-configuration     ; configuration object
                    (default #f)))            ; specific to environment

(define (machine-operating-system machine)
  "Return the operating system of MACHINE."
  (operating-system-with-provenance
   (%machine-operating-system machine)))

(define (machine-display-name machine)
  "Return the host-name identifying MACHINE."
  (operating-system-host-name (machine-operating-system machine)))

(define (machine-remote-eval machine exp)
  "Evaluate EXP, a gexp, on MACHINE. Ensure that all the elements EXP refers to
are built and deployed to MACHINE beforehand."
  (let ((environment (machine-environment machine)))
    ((environment-type-machine-remote-eval environment) machine exp)))

(define (deploy-machine machine)
  "Monadic procedure transferring the new system's OS closure to the remote
MACHINE, activating it on MACHINE and switching MACHINE to the new generation."
  (let ((environment (machine-environment machine)))
    ((environment-type-deploy-machine environment) machine)))

(define (roll-back-machine machine)
  "Monadic procedure rolling back to the previous system generation on
MACHINE. Return the number of the generation that was current before switching
and the new generation number."
  (let ((environment (machine-environment machine)))
    ((environment-type-roll-back-machine environment) machine)))


;;;
;;; Error types.
;;;

(define-condition-type &deploy-error &error
  deploy-error?
  (should-roll-back deploy-error-should-roll-back)
  (captured-args deploy-error-captured-args))
m, gnu/packages/ocaml.scm, gnu/packages/ocr.scm, gnu/packages/onc-rpc.scm, gnu/packages/opencl.scm, gnu/packages/opencog.scm, gnu/packages/pantheon.scm, gnu/packages/password-utils.scm, gnu/packages/patchutils.scm, gnu/packages/pdf.scm, gnu/packages/perl6.scm, gnu/packages/phabricator.scm, gnu/packages/popt.scm, gnu/packages/printers.scm, gnu/packages/prolog.scm, gnu/packages/protobuf.scm, gnu/packages/pulseaudio.scm, gnu/packages/python-crypto.scm, gnu/packages/python-web.scm, gnu/packages/python-xyz.scm, gnu/packages/qt.scm, gnu/packages/radio.scm, gnu/packages/rails.scm, gnu/packages/rdf.scm, gnu/packages/rednotebook.scm, gnu/packages/rpc.scm, gnu/packages/rsync.scm, gnu/packages/ruby.scm, gnu/packages/rust.scm, gnu/packages/scheme.scm, gnu/packages/screen.scm, gnu/packages/security-token.scm, gnu/packages/selinux.scm, gnu/packages/serialization.scm, gnu/packages/shells.scm, gnu/packages/shellutils.scm, gnu/packages/simh.scm, gnu/packages/sml.scm, gnu/packages/ssh.scm, gnu/packages/statistics.scm, gnu/packages/stenography.scm, gnu/packages/sync.scm, gnu/packages/syncthing.scm, gnu/packages/synergy.scm, gnu/packages/telephony.scm, gnu/packages/terminals.scm, gnu/packages/tex.scm, gnu/packages/texinfo.scm, gnu/packages/text-editors.scm, gnu/packages/textutils.scm, gnu/packages/time.scm, gnu/packages/tmux.scm, gnu/packages/tor.scm, gnu/packages/toys.scm, gnu/packages/version-control.scm, gnu/packages/video.scm, gnu/packages/vim.scm, gnu/packages/virtualization.scm, gnu/packages/vlang.scm, gnu/packages/vnc.scm, gnu/packages/vpn.scm, gnu/packages/web-browsers.scm, gnu/packages/web.scm, gnu/packages/wireservice.scm, gnu/packages/wm.scm, gnu/packages/wxwidgets.scm, gnu/packages/xdisorg.scm, gnu/packages/xml.scm, gnu/packages/xorg.scm, tests/lint.scm: Remove trailing ".git" from 'git-reference' URL. Ludovic Courtès hon-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. Maxim Cournoyer 2020-12-20gnu: vim: Automatically find vim plugins....* 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. Efraim Flashner 2020-12-19gnu: linux-libre: Update to 5.10.1....* gnu/packages/aux-files/linux-libre/5.10-arm.conf, gnu/packages/aux-files/linux-libre/5.10-arm64.conf, gnu/packages/aux-files/linux-libre/5.10-i686.conf, gnu/packages/aux-files/linux-libre/5.10-x86_64.conf: New files. * Makefile.am (AUX_FILES): Add them. * gnu/packages/linux.scm (linux-libre-5.10-version, deblob-scripts-5.10, linux-libre-5.10-pristine-source, linux-libre-5.10-source, linux-libre-headers-5.10, linux-libre-5.10): New variables. (linux-libre-version, linux-libre-pristine-source, linux-libre-source, linux-libre, linux-libre-with-bpf): Update to 5.10.1. Leo Famulari 2020-12-11guix: 'guile' executable ignores GUILE_LOAD_PATH during startup....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. Ludovic Courtès 2020-10-31pack: Relocatable wrapper leaves root available to child processes....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. Ludovic Courtès 2020-10-30gnu: linux-libre: Update to 5.9.2....* gnu/packages/linux.scm (linux-libre-5.9-version): Update to 5.9.2. (deblob-scripts-5.9, linux-libre-5.9-pristine-source): Update hashes. * 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: Update kernel configurations for 5.9.2. Leo Famulari 2020-10-30guix: pack: Fix offset calculation for store directory mount point....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. Eric Bavier 2020-10-24gnu: linux-libre: Update to 5.9.1....* gnu/packages/aux-files/linux-libre/5.8-arm.conf, gnu/packages/aux-files/linux-libre/5.8-arm64.conf, gnu/packages/aux-files/linux-libre/5.8-i686.conf, gnu/packages/aux-files/linux-libre/5.8-x86_64.conf: Delete files. * 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: New files. * Makefile.am (AUX_FILES): Adjust accordingly. * gnu/packages/linux.scm (linux-libre-5.8-version, deblob-scripts-5.8, linux-libre-5.8-pristine-source, linux-libre-5.8-source, linux-libre-headers-5.8, linux-libre-5.8): Remove variables. (linux-libre-5.9-version, deblob-scripts-5.9, linux-libre-5.9-pristine-source, linux-libre-5.9-source, linux-libre-headers-5.9, linux-libre-5.9): New variables. (linux-libre-version, linux-libre-pristine-source, linux-libre-source, linux-libre): Point to linux-libre-5.9*. (linux-libre-with-bpf): Use linux-libre-5.9. Leo Famulari 2020-10-15gnu: linux-libre: Enable XDP sockets and their monitoring....* gnu/packages/aux-files/linux-libre/4.19-arm.conf: Enable AF_XDP sockets and the associated monitor interface. * gnu/packages/aux-files/linux-libre/4.19-arm64.conf: Likewise * gnu/packages/aux-files/linux-libre/4.19-i686.conf: Likewise * gnu/packages/aux-files/linux-libre/4.19-x86_64.conf: Likewise * gnu/packages/aux-files/linux-libre/5.4-arm.conf: Likewise * gnu/packages/aux-files/linux-libre/5.4-arm64.conf: Likewise * gnu/packages/aux-files/linux-libre/5.4-i686.conf: Likewise * gnu/packages/aux-files/linux-libre/5.4-x86_64.conf: Likewise * gnu/packages/aux-files/linux-libre/5.8-arm.conf: Likewise * gnu/packages/aux-files/linux-libre/5.8-arm64.conf: Likewise * gnu/packages/aux-files/linux-libre/5.8-i686.conf: Likewise * gnu/packages/aux-files/linux-libre/5.8-x86_64.conf: Likewise Tobias Geerinckx-Rice via Guix-patches via 2020-10-05self: Use a 'guile' that doesn't complain about locales....Since commit ba48895899a117d6ace2209c3f54411a4a989133, 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. Ludovic Courtès 2020-08-30gnu: Remove linux-libre 5.7....The 5.7 kernel series is no longer supported upstream. * gnu/packages/linux.scm (deblob-scripts-5.7, linux-libre-5.7-version, linux-libre-5.7-pristine-source, linux-libre-5.7-source, linux-libre-headers-5.7, linux-libre-5.7) Remove variables. * gnu/packages/aux-files/linux-libre/5.7-arm.conf, gnu/packages/aux-files/linux-libre/5.7-arm64.conf, gnu/packages/aux-files/linux-libre/5.7-i686.conf, gnu/packages/aux-files/linux-libre/5.7-x86_64.conf: Delete files. * Makefile.am (AUX_FILES): Remove them. Leo Famulari 2020-08-27pack: fakechroot: Honor $LD_LIBRARY_PATH....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. Ludovic Courtès 2020-08-27linux-libre: Enable module compression for all versions....This is a follow-up of 5fe12be0dd03d1a316343549f8c131d931f21a9a. It enables module compression for all supported Linux versions. * gnu/packages/aux-files/linux-libre/4.14-arm.conf: Enable GZIP module compression. * gnu/packages/aux-files/linux-libre/4.14-i686.conf: Ditto. * gnu/packages/aux-files/linux-libre/4.14-x86_64.conf: Ditto. * gnu/packages/aux-files/linux-libre/4.19-arm.conf: Ditto. * gnu/packages/aux-files/linux-libre/4.19-arm64.conf: Ditto. * gnu/packages/aux-files/linux-libre/4.19-i686.conf: Ditto. * gnu/packages/aux-files/linux-libre/4.19-x86_64.conf: Ditto. * gnu/packages/aux-files/linux-libre/4.4-i686.conf: Ditto. * gnu/packages/aux-files/linux-libre/4.4-x86_64.conf: Ditto. * gnu/packages/aux-files/linux-libre/4.9-i686.conf: Ditto. * gnu/packages/aux-files/linux-libre/4.9-x86_64.conf: Ditto. * gnu/packages/aux-files/linux-libre/5.4-arm.conf: Ditto. * gnu/packages/aux-files/linux-libre/5.4-arm64.conf: Ditto. * gnu/packages/aux-files/linux-libre/5.4-i686.conf: Ditto. * gnu/packages/aux-files/linux-libre/5.4-x86_64.conf: Ditto. * gnu/packages/aux-files/linux-libre/5.7-arm.conf: Ditto. * gnu/packages/aux-files/linux-libre/5.7-arm64.conf: Ditto. * gnu/packages/aux-files/linux-libre/5.7-i686.conf: Ditto. * gnu/packages/aux-files/linux-libre/5.7-x86_64.conf: Ditto. Mathieu Othacehe 2020-08-25linux-libre: Enable module compression....This commit enables GZIP compression for linux-libre kernel modules, reducing the size of linux-libre by 63% (165MB). * gnu/packages/aux-files/linux-libre/5.8-arm.conf: Enable GZ compression. * gnu/packages/aux-files/linux-libre/5.8-arm64.conf: Ditto. * gnu/packages/aux-files/linux-libre/5.8-i686.conf: Ditto. * gnu/packages/aux-files/linux-libre/5.8-x86_64.conf: Ditto. Mathieu Othacehe 2020-08-21gnu: linux-libre: Update to 5.8.2....* gnu/packages/aux-files/linux-libre/5.8-arm.conf, gnu/packages/aux-files/linux-libre/5.8-arm64.conf, gnu/packages/aux-files/linux-libre/5.8-i686.conf, gnu/packages/aux-files/linux-libre/5.8-x86_64.conf: New files. * Makefile.am (AUX_FILES): Add them. * gnu/packages/linux.scm (linux-libre-5.8): New variable. (linux-libre-version, linux-libre-pristine-source, linux-libre-source, linux-libre): Point to linux-libre-5.8*. Leo Famulari 2020-08-10gnu: linux-libre: Fix typo in the configuration for 5.7 on x86_64....* gnu/packages/aux-files/linux-libre/5.7-x86_64.conf: Fix typo. Leo Famulari 2020-08-05gnu: linux-libre: Update to 5.7.12....* gnu/packages/aux-files/linux-libre/5.7-arm.conf, gnu/packages/aux-files/linux-libre/5.7-arm64.conf, gnu/packages/aux-files/linux-libre/5.7-i686.conf, gnu/packages/aux-files/linux-libre/5.7-x86_64.conf: New files. * Makefile.am (AUX_FILES): Update accordingly. * gnu/packages/linux.scm: (linux-libre-5.7): New variable. (linux-libre-version, linux-libre-pristine-source) (linux-libre-source, linux-libre): Point to linux-libre-5.7*. Leo Famulari 2020-07-28pack: "fakechroot" engine always creates its store....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. Ludovic Courtès 2020-07-28pack: "fakechroot" execution engine can load its audit module....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. Ludovic Courtès 2020-05-14pack: 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. Ludovic Courtès 2020-05-14pack: Factorize store references in wrapper....* 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@". Ludovic Courtès 2020-05-14pack: Wrapper honors 'GUIX_EXECUTION_ENGINE' environment variable....* 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'. Ludovic Courtès 2020-05-07pack: Factorize 'exec_in_user_namespace' wrapper....* gnu/packages/aux-files/run-in-namespace.c (exec_in_user_namespace): New function, with code taken from... (main): ... here. Call it. Ludovic Courtès 2020-05-07pack: Add 'xmalloc' in wrapper....* gnu/packages/aux-files/run-in-namespace.c (xmalloc): New function. (concat): Use it. Ludovic Courtès 2020-05-07pack: Fix off-by-one in PRoot handling in the wrapper....* gnu/packages/aux-files/run-in-namespace.c (exec_with_proot): Make 'proot_argv' one element larger to account for the terminating NULL. Ludovic Courtès 2020-04-24pack: '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. Ludovic Courtès 2020-03-22gnu: linux-libre-arm-veyron: Deprecate package....* gnu/packages/linux (linux-libre-arm-veyron): Mark as deprecated package. (kernel-config-veyron): Remove obsolete function. * gnu/system/examples/asus-c201.tmpl: Update to use linux-libre-arm-generic. * gnu/packages/aux-files/linux-libre/5.4-arm-veyron.conf: Delete file. * Makefile.am (AUX_FILES): Update accordingly. Vagrant Cascadian 2020-03-22gnu: emacs: Remove obsolete FIXME comment....* gnu/packages/aux-files/emacs/guix-emacs.el: Remove comment. Maxim Cournoyer 2020-02-27emacs-build-system: Byte compile the autoload files....* 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. Maxim Cournoyer 2020-01-15gnu: linux-libre: Include more framebuffer font sizes....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. Tobias Geerinckx-Rice 2019-12-18gnu: linux-libre: Update to 5.4.5....* gnu/packages/aux-files/linux-libre/5.3-arm-veyron.conf, gnu/packages/aux-files/linux-libre/5.3-arm.conf, gnu/packages/aux-files/linux-libre/5.3-arm64.conf, gnu/packages/aux-files/linux-libre/5.3-i686.conf, gnu/packages/aux-files/linux-libre/5.3-x86_64.conf: Delete files. * 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: New files. * Makefile.am (AUX_FILES): Update accordingly. * gnu/packages/patches/linux-libre-active-entropy.patch: Delete file. * gnu/local.mk (dist_patch_DATA): Remove it. * gnu/packages/linux.scm (deblob-scripts-5.3, linux-libre-5.3-version) (linux-libre-5.3-pristine-source, linux-libre-5.3-source) (linux-libre-headers-5.3, linux-libre-5.3): Remove variables. (deblob-scripts-5.4, linux-libre-5.4-version) (linux-libre-5.4-pristine-source, linux-libre-5.4-source) (linux-libre-headers-5.4, linux-libre-5.4): New variables. (linux-libre-version, linux-libre-pristine-source) (linux-libre-source, linux-libre): Point to linux-libre-5.4*. Mark H Weaver 2019-12-18gnu: linux-libre: Remove orphaned 5.2.x kernel configurations....This is a followup to commit 4845dee706a1aee89917e5c7f25d3bce64f7e11c. * 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. Mark H Weaver 2019-12-04gnu: emacs: Use load-path instead of EMACSLOADPATH....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> Maxim Cournoyer 2019-12-04gnu: emacs: Fix guix-emacs.el indentation....* gnu/packages/aux-files/emacs/guix-emacs.el: Fix indentation. Signed-off-by: Clément Lassieur <clement@lassieur.org> Maxim Cournoyer 2019-11-18gnu: emacs: Adapt the autoloads auxiliary code to use EMACSLOADPATH....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. Maxim Cournoyer