4180 Commits

Author SHA1 Message Date
Ludovic Courtès
d831b19079
guix build: '--with-branch' strips slashes from the version string.
This fixes things like:

  guix build glibc \
    --with-git-url=glibc=git://sourceware.org/git/glibc.git \
    --with-branch=glibc=release/2.25/master

whereby slashes would before go straight to the 'version' field, leading
to an invalid store file name.

* guix/scripts/build.scm (transform-package-source-branch)[replace]:
Replace slashes with hyphens in BRANCH when building the version
string.
2019-03-17 22:55:01 +01:00
Ludovic Courtès
845c44012c
guix build: '--with-commit' makes recursive checkouts.
This was an omission from commit
024a6bfba906742c136a47b4099f06880f1d3f15.

* guix/scripts/build.scm (transform-package-source-commit): Add
'recursive?' field to SOURCE.
* tests/scripts-build.scm ("options->transformation, with-branch")
("options->transformation, with-commit"): New tests.
2019-03-17 22:55:01 +01:00
Ludovic Courtès
14328b81a2
guix build: Transformation options match packages by spec.
This allows us to combine several transformations on a given package, in
particular '--with-git-url' and '--with-branch'.

Previously transformations would ignore each other since they would all
take (specification->package SOURCE) as their replacement source,
compare it by identity, which doesn't work if a previous transformation
has already changed SOURCE.

* guix/scripts/build.scm (evaluate-replacement-specs): Adjust to produce
an alist as expected by 'package-input-rewriting/spec', with a package
spec as the first element of each pair.
(evaluate-git-replacement-specs): Likewise.
(transform-package-inputs):  Adjust accordingly and use
'package-input-rewriting/spec'.
(transform-package-inputs/graft): Likewise.
(transform-package-source-branch, transform-package-source-commit): Use
'package-input-rewriting/spec'.
(transform-package-source-git-url): Likewise, and adjust the
REPLACEMENTS alist accordingly.
(options->transformation): Iterate over OPTS instead of over
%TRANSFORMATIONS.  Invoke transformations one by one.
* tests/scripts-build.scm ("options->transformation, with-input"):
Adjust test to compare packages by name rather than by identity.
("options->transformation, with-git-url + with-branch"): New test.
2019-03-17 22:55:01 +01:00
Ludovic Courtès
0c0ff42a24
guix build: Factorize 'package-git-url'.
* guix/scripts/build.scm (package-git-url): New procedure.
(evaluate-git-replacement-specs): Use it.
2019-03-17 22:55:01 +01:00
Ludovic Courtès
f258d88628
packages: Add 'package-input-rewriting/spec'.
* guix/packages.scm (package-input-rewriting/spec): New procedure.
* tests/packages.scm ("package-input-rewriting/spec")
("package-input-rewriting/spec, partial match"): New tests.
* doc/guix.texi (Defining Packages): Document it.
2019-03-17 22:55:01 +01:00
Ludovic Courtès
880916ac52
guix build: Add '--with-git-url'.
* guix/scripts/build.scm (%not-equal): New variable.
(evaluate-git-replacement-specs): Use it instead of local variable
'not-equal'.
(transform-package-source-git-url): New procedure.
(%transformations): Add 'with-git-url'.
(%transformation-options, show-transformation-options-help): Add
'--with-git-url'.
* tests/scripts-build.scm ("options->transformation, with-git-url"):
New test.
2019-03-17 22:55:01 +01:00
Ludovic Courtès
55da450a1f
scripts: 'warn-about-old-distro' looks at the age of the running Guix.
This fixes a discrepancy that could be seen when running:

  sudo guix system …

where 'guix' would warn about the age of root's Guix, even though the
running Guix is the user's, not root's.

* guix/scripts.scm (warn-about-old-distro)[false-if-not-found]: Remove.
Obtain the profile date by calling 'current-profile-date' instead of
stat'ing "current-guix".
2019-03-17 22:55:01 +01:00
Ludovic Courtès
cd2e4b2a8d
describe: Add 'current-profile-date'.
* guix/describe.scm (current-profile-date): New procedure.
2019-03-17 22:55:01 +01:00
Ludovic Courtès
8ffab257dd
guix system: Fix success report of the bootloader installation.
Fixes <https://bugs.gnu.org/34890>.
Reported by Jack Hill <jackhill@jackhill.us>.

Regression introduced in 21fcfe1ee969cc477dc41486ae4074e655d44274.

* guix/scripts/system.scm (bootloader-installer-script): Ungexp DEVICE.
2019-03-17 16:30:00 +01:00
Tobias Geerinckx-Rice
b56d160944
guix: Match package names case-insensitively.
* guix/scripts/package.scm (options->upgrade-predicate, process-query):
Use REGEXP/ICASE when matching package names.
2019-03-16 23:32:41 +01:00
Ludovic Courtès
21fcfe1ee9
bootloader: Use 'invoke/quiet' when running 'grub-install' and co.
This hides potentially confusing GRUB messages from the user, such as
"Installing for i386-pc platform."

* gnu/bootloader/extlinux.scm (install-extlinux): Use 'invoke/quiet'
instead of 'system*' and 'error'.
* gnu/bootloader/grub.scm (install-grub, install-grub-efi): Likewise.
* guix/scripts/system.scm (bootloader-installer-script): Guard against
'message-condition?' and handle them properly.
2019-03-16 18:15:13 +01:00
Ludovic Courtès
22f95e028f
tests: Add 'with-environment-variable'.
* tests/scripts.scm (with-environment-variable): Move to...
* guix/tests.scm (with-environment-variable): ... here.
* tests/build-utils.scm ("wrap-program, one input, multiple calls"):
Use it instead of 'setenv'.
2019-03-16 18:15:09 +01:00
P.C. Shyamshankar
41dfe40f5d
pack: Construct inferior package names correctly.
* guix/scripts/pack.scm (wrapped-package): now correctly constructs full
names of inferior packages.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2019-03-15 23:27:59 +01:00
Ludovic Courtès
99aec37a78
pack: "-RR" produces PRoot-enabled relocatable binaries.
* 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.
2019-03-15 23:27:59 +01:00
Ludovic Courtès
ee71d44e60
build-system/glib-or-gtk: Support #:disallowed-references.
* guix/build-system/glib-or-gtk.scm (glib-or-gtk-build): Add
 #:disallowed-references and honor it.
2019-03-15 23:27:58 +01:00
Guy Fleury Iteriteka
bc4cea6f0e
download: Add MATE mirrors.
* guix/download.scm (%mirrors): Add mirrors for the MATE Desktop.
2019-03-15 13:05:08 -04:00
Leo Famulari
e3900a4d64
build-system/go: Build with a filesystem union of Go dependencies.
This basically changes (guix build-system go) so that instead of looking
up its dependencies in a list of directories in $GOPATH, all the
Go dependencies are symlinked into a single directory.

Fixes <https://bugs.gnu.org/33620>.

* guix/build/go-build-system.scm (setup-go-environment): New variable.
(setup-environment, install-source): Remove variables.
(unpack): Unpack the source relative to $GOPATH.
(install): Do not install the compiled objects in the 'pkg' directory.
Install the source code in this phase, and only install the source of
the package named by IMPORT-PATH.
* doc/guix.texi (Build Systems): Adjust accordingly.
* gnu/packages/docker.scm (docker): Import (guix build union) on the build side
and adjust to build phase name changes in (guix build-system go).
* gnu/packages/shellutils.scm (direnv): Likewise.
* gnu/packages/databases.scm (mongo-tools)[arguments]:
Set '#:install-source #f'.
* gnu/packages/music.scm (demlo)[arguments]: Move the 'install-scripts'
phase after the 'install' phase.
2019-03-14 15:34:26 -04:00
Marius Bakke
ebfe259f66
Merge branch 'master' into staging 2019-03-14 15:06:06 +01:00
Ludovic Courtès
59e8044588
Remove traces of "GuixSD".
* gnu/bootloader/extlinux.scm (extlinux-configuration-file): Remove
mentions of "GuixSD".
* gnu/bootloader/grub.scm (install-grub-efi): Likewise.
* gnu/build/vm.scm (make-iso9660-image): Change default #:volume-id to
"Guix_image".
(initialize-hard-disk): Search for the "Guix_image" label.
* gnu/ci.scm (system-test-jobs, tarball-jobs): Remove "GuixSD".
* gnu/installer/newt/welcome.scm (run-welcome-page): Likewise.
* gnu/packages/audio.scm (supercollider)[description]: Likewise.
* gnu/packages/curl.scm (curl): Likewise.
* gnu/packages/emacs.scm (emacs): Likewise.
* gnu/packages/gnome.scm (network-manager): Likewise.
* gnu/packages/julia.scm (julia): Likewise.
* gnu/packages/linux.scm (alsa-plugins): Likewise.
(powertop, wireless-regdb): Likewise.
* gnu/packages/package-management.scm (guix): Likewise.
* gnu/packages/polkit.scm (polkit): Likewise.
* gnu/packages/tex.scm (texlive-bin): Likewise.
* gnu/services/base.scm (file-systems->fstab): Likewise.
* gnu/services/cups.scm (%cups-activation): Likewise.
* gnu/services/mail.scm (%dovecot-activation): Likewise.
* gnu/services/messaging.scm (prosody-configuration)[log]: Likewise.
* gnu/system/examples/vm-image.tmpl (vm-image-motd): Likewise.
* gnu/system/install.scm (installation-os)[file-systems]: Change root
file system label to "Guix_image".
* gnu/system/mapped-devices.scm (check-device-initrd-modules):
Remove "GuixSD".
* gnu/system/vm.scm (system-docker-image): Likewise.
(system-disk-image)[root-label]: Change to "Guix_image".
* gnu/tests/install.scm (run-install): Remove "GuixSD".
* guix/modules.scm (guix-module-name?): Likewise.
* nix/libstore/optimise-store.cc: Likewise.
2019-03-13 23:12:43 +01:00
Ludovic Courtès
3f4f2ee404
describe: 'package-path-entries' no longer includes the "guix" entry.
Fixes <https://bugs.gnu.org/34833>
Reported by mikadoZero <mikadozero@yandex.com>.

By returning the "guix" entry, we were then adding it to
%PACKAGE-MODULE-PATH, causing the discovery code to scan the whole tree,
including gnu/installer modules, which would in turn lead to warnings.
Regression introduced in bfc9c339301ffe6dd15d156894dc27e05f6f081f.

* guix/describe.scm (package-path-entries): Use
'current-channel-entries', not 'current-profile-entries'.
2019-03-12 23:51:32 +01:00
Ludovic Courtès
c9c51ac39a
Revert "packages: 'package-input-rewriting' can take a promise."
This reverts commit 7d2be1277b44de9d0528d9d3015443b40cb3b104, which
turned out to be unhelpful for the problem at hand:

  https://lists.gnu.org/archive/html/guix-devel/2019-01/msg00486.html
2019-03-12 23:51:32 +01:00
Ludovic Courtès
bfc9c33930
packages: Add the channel .go files to the search path.
Until now %LOAD-COMPILED-PATH would wrongfully contain:

  CHANNEL/share/guile/site/X.Y

for each channel, thereby ignoring all the .go files of channels.  This
fixes it so that %LOAD-COMPILED-PATH instead contains:

  CHANNEL/lib/guile/X.Y/site-ccache

* guix/describe.scm (current-channel-entries): New procedure.
(package-path-entries): Change to return the %LOAD-COMPILED-PATH entries
as a second value.
* gnu/packages.scm (%package-module-path): Expect two values from
'package-path-entries' and augment %LOAD-COMPILED-PATH accordingly.
2019-03-11 23:12:26 +01:00
Marius Bakke
8c5533b582
Merge branch 'master' into staging 2019-03-10 18:38:25 +01:00
Ludovic Courtès
0bd1498fc4
upstream: Correctly report failure to update Git checkouts.
Fixes <https://bugs.gnu.org/34778>.
Reported by Gábor Boskovits <boskovits@gmail.com>.

* guix/upstream.scm (package-update/url-fetch): New procedure, with code
formerly in 'package-update'.
(%method-updates): New variable.
(package-update): Check the method to download PACKAGE's source, and
look up a corresponding update method in %METHOD-UPDATES, and raise an
error if none was found.
2019-03-08 23:21:59 +01:00
Ricardo Wurmus
8057c9e906
gnu: Add epl2.0.
* guix/licenses.scm (epl2.0): New variable.
2019-03-08 23:18:01 +01:00
Ludovic Courtès
4035fcba93
channels: Do not fail when the inferior lacks 'guix repl'.
Fixes <https://bugs.gnu.org/34637>.
Reported by Martin Flack <martin.flack@gmail.com>.

Previously we'd fail to build the package cache for old versions of Guix
that lack 'guix repl'.  Now we simply ignore the issue and keep going
without a cache.

* guix/inferior.scm (gexp->derivation-in-inferior): Add
 #:silent-failure? and honor it.
[drop-extra-keyword]: New procedure.
Use it.
* guix/channels.scm (package-cache-file): Pass #:silent-failure? #t.
2019-03-08 12:31:38 +01:00
Ludovic Courtès
d40ec4a0d0
pack: Add '--save-provenance'.
* guix/scripts/pack.scm (show-help, %options): Add '--save-provenance'.
(guix-pack)[manifest-from-args]: Honor it.
* doc/guix.texi (Invoking guix pack): Document it.
2019-03-07 00:00:18 +01:00
Ludovic Courtès
2cb658a9a7
describe: Add 'package-provenance'.
* guix/scripts/package.scm (package-provenance): Move to...
* guix/describe.scm (package-provenance): ... here.
2019-03-07 00:00:18 +01:00
Caleb Ristvedt
a4678c6ba1
database: Make 'register-items' transactional.
* guix/store/database.scm (SQLITE_BUSY, register-output-sql): New variables.
(add-references): Don't try finalizing after each use, only after all the
uses (otherwise a finalized statement would be used if #:cache? was #f).
(call-with-transaction): New procedure.
(register-items): Use call-with-transaction to prevent broken intermediate
states from being visible.

* .dir-locals.el (call-with-transaction): indent it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2019-03-07 00:00:18 +01:00
Marius Bakke
4f8dc1536a
Merge branch 'master' into staging 2019-03-04 22:31:59 +01:00
Ludovic Courtès
dca5821958
environment: Rename '--inherit' to '--preserve'.
Suggested by Eric Bavier and Ricardo Wurmus.

* guix/scripts/environment.scm (show-help, %options): Emit a deprecation
warning for "--inherit" and add -E/--preserve.
* tests/guix-environment.sh: Adjust accordingly.
* doc/guix.texi (Invoking guix environment): Update accordingly.
2019-03-04 15:22:59 +01:00
Ludovic Courtès
bab9cc4aff
environment: Remove deprecated -E/--exec option.
* guix/scripts/environment.scm (%options): Remove "--exec", which was
deprecated in commit 1de2fe95e017c42aacbaa34f5dab8d48249cc064 in 2015.
* tests/guix-environment.sh: Remove use of '-E'.
2019-03-04 15:22:59 +01:00
Marius Bakke
19464173ba
Merge branch 'master' into staging 2019-03-01 17:33:00 +01:00
Ivan Petkov
7d141788b1
gnu: rust: Factor out "cargo-utils" from "cargo-build-system".
* guix/build/cargo-utils.scm: New file.
* Makefile.am (MODULES): Add it.
* guix/build-system/cargo.scm (%cargo-utils-modules): New variable.
(%cargo-build-system-modules): Use it.
* guix/build/cargo-build-system.scm (file-sha256, generate-checksums): Move
from here...
* guix/build/cargo-utils.scm: ...to here.
* gnu/packages/rust.scm (rust-1.19.0)[arguments]<#:imported-modules>: Use
%cargo-utils-modules.
<#:phases>[patch-cargo-checksums]: Use (guix build cargo-utils).
* gnu/packages/gnuzilla.scm (icecat):
[arguments]<#:imported-modules>: Use %cargo-utils-modules.
<#phases>[patch-cargo-checksums]: import (guix build cargo-utils).

Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
2019-03-01 08:20:50 +01:00
Marius Bakke
2c76e19df4
Merge branch 'master' into staging 2019-02-20 17:01:39 +01:00
Ludovic Courtès
54eadc42d2
self: Generated (guix config) honors %CURRENT-SYSTEM.
Fixes <https://bugs.gnu.org/34468>.
Reported by Diego Nicola Barbato <dnbarbato@posteo.de>.

* guix/self.scm (%config-variables): Remove %SYSTEM.
(make-config.scm): Define '%system' to (%current-system).
2019-02-17 00:04:57 +01:00
Ludovic Courtès
ba48895899
self: Bundle 'glibc-utf8-locales'.
This minimizes the risk of locale-related warnings, at least for those
who use one of the bundled UTF-8 locales.

* guix/self.scm (guix-command)[glibc-utf8-locales]: New variable.
In program body, set GUIX_LOCPATH.
2019-02-16 01:00:08 +01:00
Ludovic Courtès
e6e599fa01
environment: Add '--inherit'.
* guix/scripts/environment.scm (purify-environment): Add 'white-list'
parameter and honor it.
(create-environment): Add #:white-list parameter and honor it.
(launch-environment): Likewise.
(launch-environment/fork): Likewise.
(show-help, %options): Add '--inherit'.
(guix-environment): Define 'white-list' and pass it to
'launch-environment/fork'.
* tests/guix-environment.sh: Test '--inherit'.
* doc/guix.texi (Invoking guix environment): Document it.
2019-02-16 01:00:08 +01:00
Marius Bakke
142cf42121
gnu-maintenance: Verify GPG signatures in KDE updater.
* guix/gnu-maintenance.scm (latest-kde-release): Remove #:file->signature.
2019-02-15 12:12:09 +01:00
Christopher Baines
0168473c0a
guix: ruby-build-system: Fix removal of extension related files.
This functionality was broken, possibly to do with the vendor related changes
in the ruby build system. These changes restore the file removal functionality
at the end of the install phase.

* guix/build/ruby-build-system.scm (install): Fix removal of files related to
native extensions.
2019-02-14 19:30:15 +00:00
Christopher Baines
9be39b4c67
guix: ruby-build-system: Do gem install --verbose.
This is helpful as it displays more information about what gem install is
doing, especially for packages with native extensions.

* guix/build/ruby-build-system.scm (install): Add --verbose to gem install command.
2019-02-14 19:30:14 +00:00
Christopher Baines
ab149c6ba0
gnu: ruby-build-system: Change extract-gemspec to always return #t.
* guix/build/ruby-build-system.scm (extract-gemspec): Return #t right at the
end, rather than returning #<unspecified> when not handling a gem archive.
2019-02-14 19:30:12 +00:00
Ludovic Courtès
1e9698344d
guix system: List old generations from newest to oldest.
Previously 'guix system switch-generation' or 'delete-generations' would
yield a GRUB menu where entries for old generations were in the wrong
order (i.e., oldest first.)

* guix/scripts/system.scm (reinstall-bootloader): Reverse the list
returned by 'generation-numbers'.
2019-02-13 16:19:54 +01:00
Ludovic Courtès
499b166d1c
guix system: Add 'delete-generations'.
* guix/scripts/package.scm (delete-matching-generations): Export.
* guix/scripts/system.scm (show-help): Add 'delete-generations'.
(process-command): Honor it.
(guix-system): Support it.
* doc/guix.texi (Invoking guix system): Document it.
2019-02-13 16:19:54 +01:00
Ludovic Courtès
201253674b
pull: Speed up the new/upgraded package computation.
* guix/scripts/pull.scm (new/upgraded-packages): OLD no longer stores
all the versions of each package.  Remove 'vhash-fold*' call and reduce
the number of 'version>?' calls when computing UPGRADED.
2019-02-12 23:30:16 +01:00
Ludovic Courtès
cf0eacceb4
pull: Move profile comparison to 'new/upgraded-packages'.
* guix/scripts/pull.scm (new/upgraded-packages): New procedure, with
code formerly in 'display-new/upgraded-packages'.
(display-new/upgraded-packages): Use it.
2019-02-12 23:30:16 +01:00
Ludovic Courtès
739380542d
inferior: Add 'inferior-available-packages'.
* guix/inferior.scm (inferior-available-packages): New procedure.
* tests/inferior.scm ("inferior-available-packages"): New test.
2019-02-12 23:30:16 +01:00
Ludovic Courtès
46765f82db
pull: Use 'fold-available-packages' for the current package list.
* guix/scripts/pull.scm (display-profile-news): Use
'fold-available-packages' instead of 'fold-packages' to compute OLD.
(profile-package-alist): Use 'inferior-available-packages'.
2019-02-12 23:30:16 +01:00
Ludovic Courtès
2637cfd7a4
Avoid name clash with 'build' from (guix store) and (guix status).
Since commit 976ef2d97887d16eab8d4eb9dad811786b04d690, (guix status)
exports 'build', which clashes with 'build' from (guix store).

* build-aux/run-system-tests.scm: Select 'with-status-verbosity'
from (guix status).
* guix/scripts/archive.scm: Likewise.
* guix/scripts/build.scm: Likewise.
* guix/scripts/copy.scm: Likewise.
* guix/scripts/environment.scm: Likewise.
* guix/scripts/pack.scm: Likewise.
* guix/scripts/package.scm: Likewise.
* guix/scripts/pull.scm: Likewise.
* guix/scripts/system.scm: Likewise.
2019-02-11 23:23:28 +01:00
Ludovic Courtès
910d0121a8
pack, vm: Fix incorrect use of 'package-transitive-propagated-inputs'.
In practice the error was not triggered because
'package-transitive-propagated-inputs' currently returns the empty list
for these two packages.

* guix/scripts/pack.scm (gcrypt-sqlite3&co): Remove labels from the
result.
* gnu/system/vm.scm (gcrypt-sqlite3&co): Likewise.
2019-02-11 23:23:28 +01:00