Fixes <http://bugs.gnu.org/19278>.
Reported by Tomáš Čech <tcech@suse.cz>.
This allows 'guix --version' to return something that better represents
what version is being used.
* build-aux/build-self.scm (date-version-string): New procedure.
(build): Add #:version.
[builder]: Pass it to 'build-guix' as #:package-version.
* build-aux/hydra/gnu-system.scm (%guixsd-supported-systems): New
variable.
(qemu-jobs): Use it.
(system-test-jobs): New procedure.
(hydra-jobs): Use it.
* gnu/tests.scm (<system-test>): New record type.
(write-system-test, test-modules, fold-system-tests)
(all-system-tests): New procedures.
* gnu/tests/base.scm (%test-basic-os): Turn into a <system-test>.
* gnu/tests/install.scm (%test-installed-os): Likewise.
* build-aux/run-system-tests.scm (%system-tests): Remove.
(run-system-tests): Use 'all-system-tests'.
Fixes a regression introduced in
a9edb211e7 where the .log files of the .sh
tests would not contain stderr.
* build-aux/test-env.in: Redirect stderr only when --quiet-stderr is
passed.
* Makefile.am (SCM_LOG_DRIVER): Add --quiet-stderr.
* pre-inst-env.in: Move to ...
* build-aux/pre-inst-env.in: ... here.
* test-env.in: Move to ...
* build-aux/test-env.in: ... here.
* configure.ac (AC_CONFIG_FILES): Adapt to this. Keep the generated
scripts in their current location which is $(top_builddir).
This is a followup to 49c4fd2a.
* build-aux/hydra/gnu-system.scm (package->alist): Parameterize %graft?.
(qemu-jobs)[->job]: Likewise.
(tarball-jobs)[->job]: Likewise.
Before that '.log' files for scheme tests were fragmented and not
included in test-suite.log. This unifies the semantics of SRFI-64 API
with Automake test suite.
* build-aux/test-driver.scm: New file.
* Makefile.am (SCM_LOG_DRIVER, AM_SCM_LOG_DRIVER_FLAGS): New variables.
(SCM_LOG_COMPILER, AM_SCM_LOG_FLAGS): Delete variables.
(AM_TESTS_ENVIRONMENT): Set GUILE_AUTO_COMPILE to 0.
* test-env.in: Silence guix-daemon.
* doc/guix.texi (Running the Test Suite): Describe how to display the
detailed results. Bug reports require only 'test-suite.log' file.
* tests/base32.scm, tests/build-utils.scm, tests/builders.scm,
tests/challenge.scm, tests/cpan.scm, tests/cpio.scm, tests/cran.scm,
tests/cve.scm, tests/derivations.scm, tests/elpa.scm,
tests/file-systems.scm, tests/gem.scm, tests/gexp.scm,
tests/gnu-maintenance.scm, tests/grafts.scm, tests/graph.scm,
tests/gremlin.scm, tests/hackage.scm, tests/hash.scm,
tests/import-utils.scm, tests/lint.scm, tests/monads.scm, tests/nar.scm,
tests/packages.scm, tests/pk-crypto.scm, tests/pki.scm,
tests/profiles.scm, tests/publish.scm, tests/pypi.scm,
tests/records.scm, tests/scripts-build.scm, tests/scripts.scm,
tests/services.scm, tests/sets.scm, tests/size.scm, tests/snix.scm,
tests/store.scm, tests/substitute.scm, tests/syscalls.scm,
tests/system.scm, tests/ui.scm, tests/union.scm, tests/upstream.scm,
tests/utils.scm: Don't exit at the end of test groups.
* tests/containers.scm: Likewise. Use 'test-skip' instead of exiting
with error code 77.
This is a followup to 7adf9b8.
* build-aux/check-final-inputs-self-contained.scm: Use (guix grafts).
* build-aux/check-available-binaries.scm: Likewise.
* Makefile.am (AM_V_DL, AM_V_DL_, AM_V_DL_0): New variables.
* gnu-system.am (gnu/packages/bootstrap/x86_64-linux/guile-2.0.9.tar.xz)
(gnu/packages/bootstrap/i686-linux/guile-2.0.9.tar.xz)
(gnu/packages/bootstrap/armhf-linux/guile-2.0.11.tar.xz)
(gnu/packages/bootstrap/mips64el-linux/guile-2.0.9.tar.xz): Use $(AM_V_DL).
* build-aux/download.scm: Print a line break between target and origin.
* build-aux/check-available-binaries.scm: Rewrite to use 'substitutable-paths'
instead of 'substitution-oracle'. The latter does more than we need, and it
no longer check the substitutability of valid items, which is not what we
want. Use 'lset-difference' instead of iterating over the items.
This reflects the new version numbering scheme for GCC 5 and up.
See <https://gcc.gnu.org/develop.html>.
* gnu/packages/gcc.scm (gcc-5.1): Rename to ...
(gcc-5): ... this.
(libstdc++-doc-5.1): Rename to ...
(libstdc++-doc-5): ... this, and use gcc-5.
* gnu/packages/commencement.scm (gcc-toolchain-5.1): Rename to ...
(gcc-toolchain-5): ... this, and use gcc-5.
* build-aux/hydra/gnu-system.scm (%core-packages): Use gcc-5.
* build-aux/hydra/demo-os.scm: Don't try to import (gnu services dbus), which
no longer exists. Use 'use-service-modules' and 'use-package-modules'. Use
"en_US.UTF-8" as system locale.
In order to integrate the package list in the GuixSD website, the listing of
packages has been moved into the website implementation.
* build-aux/list-packages.scm: Remove file.
* Makefile.am (EXTRA_DIST): Adapt to it.
* guix/packages.scm (supported-package?): New procedure.
* tests/packages.scm ("supported-package?"): New test.
* build-aux/hydra/gnu-system.scm (package->job): Use it instead of
'package-transitive-supported-systems'.
* build-aux/check-available-binaries.scm: Wrap body in 'parameterize'
form that clears '%graft?'.
* build-aux/check-final-inputs-self-contained.scm: Likewise.
* gnu/packages/bootstrap/armhf-linux/bash,
gnu/packages/bootstrap/armhf-linux/mkdir,
gnu/packages/bootstrap/armhf-linux/tar,
gnu/packages/bootstrap/armhf-linux/xz: New files.
* gnu-system.am (bootstrap_armhf_linuxdir, dist_bootstrap_armhf_linux_DATA)
(nodist_bootstrap_armhf_linux_DATA): New variables.
(DISTCLEANFILES): Add $(nodist_bootstrap_armhf_linux_DATA).
(gnu/packages/bootstrap/armhf-linux/guile-2.0.11.tar.xz): New target.
* build-aux/download.scm (file-name->uri): Use newer date in URI for
armhf-linux.
* gnu/packages/bootstrap.scm (raw-build): Use "guile-2.0.11.tar.xz" on
armhf-linux.
(glibc-dynamic-linker, %bootstrap-coreutils&co, %bootstrap-binutils)
(%bootstrap-glibc, %bootstrap-gcc): Add armhf-linux cases.
* m4/guix.m4 (GUIX_SYSTEM_TYPE): Add armhf case.
(GUIX_ASSERT_SUPPORTED_SYSTEM): Add armhf-linux to list of
supported systems.
* doc/guix.texi (GNU Distribution): Add armhf-linux to the list of
supported systems.
* build-aux/hydra/gnu-system.scm (package->alist): Pass #:graft? #f.
(package-cross-job): Adjust last argument of 'package->alist' to
accept #:graft?. This fixes the problem reported in commit a480307.
Fixes <http://bugs.gnu.org/18534>.
* guix/scripts/pull.scm (with-environment-variable, with-PATH): New
macros.
(temporary-directory, first-directory, interned-then-deleted): New
procedures.
(unpack): Rewrite to do the unpacking in the current process rather
than as a separate derivation.
(%self-build-file): New variable.
(build-from-source): New procedure.
(build-and-install): Use it.
* guix/build/pull.scm (build-guix): Rename 'tarball' argument to
'source'. Remove #:tar and #:gzip parameters, as well as 'tar'
invocation. Remove 'scandir' invocation. Wrap body in
'with-directory-excursion'.
* build-aux/build-self.scm: New file.
* Makefile.am (EXTRA_DIST): Add it.
* guix/packages.scm (package-transitive-supported-systems): New procedure.
* tests/packages.scm ("package-transitive-supported-systems"): New test.
* build-aux/hydra/gnu-system.scm (package->job): Use it.
* gnu/services/networking.scm (tor-service): New procedure.
* doc/guix.texi (Networking Services): Document it.
* build-aux/hydra/demo-os.scm: Use it. Add TOR and TORSOCKS to
'packages'.
Thanks to Jason Self <jself@gnu.org> for the kernel configs.
* gnu/packages/linux.scm (kernel-config): New procedure.
(linux-libre)[build-phase]: Copy it to .config. Reduce the list of
things appended to .config.
[native-inputs]: Add "kconfig" input.
* gnu/packages/linux-libre-i686.conf,
gnu/packages/linux-libre-x86_64.conf: New files, from
<http://jxself.org/x86-32.txt> and <http://jxself.org/x86-64.txt>.
* Makefile.am (KCONFIGS): New variable.
(nobase_dist_guilemodule_DATA): Add it.
* build-aux/check-final-inputs-self-contained.scm: New file.
* Makefile.am (EXTRA_DIST): Add it.
(assert-final-inputs-self-contained): New target.
(distcheck-hook): Depend on it.
* gnu/system.scm (<operating-system>)[packages]: Change default value to
%BASE-PACKAGES.
(%base-packages): New variable.
* gnu/system/install.scm (installation-os): Use it when defining the
'packages' field.
* doc/guix.texi (Using the Configuration System): Use %BASE-PACKAGES in
example. Remove now unneeded module imports. Explain this.
* build-aux/hydra/gnu-system.scm (demo-os): New procedure.
(qemu-jobs): Build for both x86_64-linux and i686-linux. Add
'usb-image' job that builds INSTALLATION-OS.
* gnu.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
* build-aux/hydra/demo-os.scm: Use (gnu) and strip import list
accordingly.
* doc/guix.texi (Using the Configuration System): Adjust example
accordingly.
This fixes a circular dependency between (gnu system) and (gnu system
linux-initrd), where the latter could end up being compiled before
'file-system-type' was defined as a macro.
* gnu/system.scm (<file-system>, %fuse-control-file-system,
%binary-format-file-system): Move to...
* gnu/system/file-systems.scm: ... here. New file.
* build-aux/hydra/demo-os.scm, gnu/system/linux-initrd.scm,
gnu/system/vm.scm: Use it.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
* gnu/system/grub.scm (<grub-configuration>): New record type.
(grub-configuration-file): Add 'config' parameter; remove
#:default-entry and #:timeout. Honor CONFIG.
* gnu/system.scm (<operating-system>): Remove 'bootloader-entries'
field; remove default value for 'bootloader' field.
(operating-system-grub.cfg): Pass the 'bootloader' field to
'grub-configuration-file'.
* build-aux/hydra/demo-os.scm (bootloader): New field.
* gnu/system.scm (<operating-system>)[groups]: Change default to just
the 'root' group.
[sudoers]: New field.
(etc-directory): Add #:sudoers parameter. Add 'sudoers' to the
file union.
(operating-system-etc-directory): Pass #:sudoers to 'etc-directory'.
(%setuid-programs): Add 'sudo'.
(%sudoers-specification): New variable.
* gnu/system/linux.scm (base-pam-services): Add 'sudo'.
* build-aux/hydra/demo-os.scm: Add 'groups' field; add 'guest' to the
'wheel' group.