Commit Graph

4129 Commits

Author SHA1 Message Date
Ludovic Courtès a13c1bf4ca
Merge branch 'master' into core-updates 2018-06-01 23:41:40 +02:00
Ludovic Courtès 54be2b4d75
self: Show backtraces on more columns.
* guix/self.scm (compiled-modules): Add "COLUMNS" to #:env-vars.
2018-06-01 18:41:45 +02:00
Ludovic Courtès 6d52844cd4
self: Add dependency on guile-gdbm-ffi.
Fixes a regression introduced in
331ac4cc23 whereby "guile-gdbm-ffi" would
now be mandatory.

* guix/self.scm (specification->package): Add "guile-gdbm-ffi" and
"guile2.0-gdbm-ffi".
(compiled-guix)[guile-gdbm-ffi]: New variables.
[dependencies]: Add it.
2018-06-01 18:41:45 +02:00
Caleb Ristvedt bf5bf5778c
Add (guix store deduplication).
* guix/store/database.scm (register-path): Add #:deduplicate? and call
'deduplicate' when it's true.
(counting-wrapper-port, nar-sha256): Move to...
* guix/store/deduplication.scm: ... here.  New file.
* tests/store-deduplication.scm: New file.
* Makefile.am (STORE_MODULES): Add deduplication.scm.
(SCM_TESTS) [HAVE_GUILE_SQLITE3]: Add store-deduplication.scm.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2018-06-01 15:35:54 +02:00
Ludovic Courtès 285cc75c31
database: 'register-path' resets timestamps.
* guix/store/database.scm (reset-timestamps): New procedure.
(register-path): Use it.
2018-06-01 15:35:45 +02:00
Caleb Ristvedt 7f9d184d9b
Add (gnu store database).
* guix/config.scm.in (%store-database-directory): New variable.
* guix/store/database.scm: New file.
* tests/store-database.scm: New file.
* Makefile.am (STORE_MODULES): New variable.
(MODULES, MODULES_NOT_COMPILED): Adjust accordingly.
(SCM_TESTS) [HAVE_GUILE_SQLITE3]: Add tests/store-database.scm.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2018-06-01 15:35:32 +02:00
Ludovic Courtès d59e75f3b5
build: Check for Guile-SQLite3.
* m4/guix.m4 (GUIX_CHECK_GUILE_SQLITE3): New macro.
* configure.ac: Use it and define 'HAVE_GUILE_SQLITE3'.
* guix/self.scm (specification->package): Add "guile-sqlite3".
(compiled-guix)[guile-sqlite3]: New variable.
[dependencies]: Add it.
2018-06-01 15:35:15 +02:00
Ludovic Courtès 331ac4cc23
profiles: Use 'with-extensions'.
* guix/profiles.scm (manual-database)[build]: Use 'with-extensions'.
Remove 'add-to-load-path' call.
* guix/man-db.scm: Use (gdbm) the normal way; remove 'module-autoload!'
call.
2018-06-01 15:21:28 +02:00
Ludovic Courtès 13993c77fe
pack: Use 'with-extensions' when referring to (guix docker).
* guix/docker.scm: Use module (json) the normal way.
* guix/scripts/pack.scm (docker-image)[build]: Wrap in
'with-extensions'.
2018-06-01 15:21:28 +02:00
Ludovic Courtès 838e17d805
gexp: Add 'with-extensions'.
* guix/gexp.scm (<gexp>)[extensions]: New field.
(gexp-attribute): New procedure.
(gexp-modules): Write in terms of 'gexp-attribute'.
(gexp-extensions): New procedure.
(gexp->derivation): Add #:effective-version.
[extension-flags]: New procedure.
Honor extensions of EXP.
(current-imported-extensions): New syntax parameter.
(with-extensions): New macro.
(gexp): Honor CURRENT-IMPORTED-EXTENSIONS.
(compiled-modules): Add #:extensions and honor it.
(load-path-expression): Likewise.
(gexp->script, gexp->file): Honor extensions.
* tests/gexp.scm (%extension-package): New variable.
("gexp-extensions & ungexp")
("gexp-extensions & ungexp-splicing")
("gexp-extensions and literal Scheme object")
("gexp->derivation & with-extensions")
("program-file & with-extensions"): New tests.
* doc/guix.texi (G-Expressions): Document 'with-extensions'.
2018-06-01 15:20:54 +02:00
Ludovic Courtès 5d669883ec
gexp: 'compiled-modules' no longer overrides (guix build utils).
Until now 'compiled-modules' would override (guix build utils) with its
own.  Thus, when asked to build a different (guix build utils),
via #:module-path, it would fail badly because a (guix build utils)
module was already loaded and possibly incompatible with the new one.

This happened when running 'guix pull --branch=core-updates' from
current master: in 'core-updates', (guix build utils) exports
'ignore-error?' but in 'master' it does not.  Thus, 'guix pull' would
fail with:

  no binding `invoke-error?' in module (guix build utils)
  builder for `/gnu/store/…-module-import-compiled.drv' failed with exit code 1
  cannot build derivation `/gnu/store/…-compute-guix-derivation.drv': 1 dependencies couldn't be built

This patch fixes it.

* guix/gexp.scm (compiled-modules)[build-utils-hack?]: New variable.
[build]: Load MODULES/build/utils.scm when it exists.
2018-06-01 13:50:27 +02:00
Mathieu Othacehe 8fc3a971b0
scripts: system: Sort profile generations in reverse order.
* guix/scripts/system.scm (profile-boot-parameters): Reverse
generation-numbers list. This allows old generations to be listed from most
recent to oldest in bootloaders configuration files.
2018-06-01 09:40:07 +02:00
Ludovic Courtès 9768848af8
records: Make a couple of procedures available at expansion time.
* guix/records.scm (current-abi-identifier, abi-check): Wrap in
'eval-when'.
2018-05-31 18:13:08 +02:00
Ludovic Courtès e13240f598
self: Reduce the set of dependencies.
By mistake we were adding more dependencies than needed to the Scheme
derivations.

* guix/self.scm (compiled-guix)[dependencies]: Use
'package-transitive-propagated-inputs', not 'package-transitive-inputs'.
2018-05-31 18:13:08 +02:00
Ricardo Wurmus babeea3f9f
build-system/r: Use invoke.
* guix/build/r-build-system.scm (invoke-r): Use invoke.
(pipe-to-r): Raise invoke-error on non-zero return value.
(check): Unconditionally return #t.
2018-05-31 13:24:17 +02:00
Ricardo Wurmus b347317ae6
Merge branch 'master' into core-updates 2018-05-29 15:41:06 +02:00
Ludovic Courtès 8eff892fac
download: Remove unused procedure.
* guix/download.scm (gnutls-package): Remove.
2018-05-29 15:09:44 +02:00
Mark H Weaver 82b695b834
Merge branch 'master' into core-updates 2018-05-28 20:45:37 -04:00
Ricardo Wurmus b2817f0fa5
pack: Add support for squashfs images.
* guix/scripts/pack.scm (%formats): Add "squashfs" format.
(guix-pack): Adjust "archiver" dependent on pack-format.
(squashfs-image): New procedure.
* doc/guix.texi (Invoking guix pack): Document it.
2018-05-28 17:36:09 +02:00
Ricardo Wurmus 5ffac538aa
pack: Rename "tar" to "archiver".
* guix/scripts/pack.scm (self-contained-tarball, docker-image): Accept
"archiver" argument; remove "tar" argument.
(guix-pack): Invoke "build-image" with "archiver" argument.
2018-05-28 17:36:09 +02:00
Ludovic Courtès a5acc17a3c
file-systems: Remove 'title' field and add <file-system-label>.
The 'title' field was easily overlooked and was an endless source of
confusion.  Now, the value of the 'device' field is self-contained.

* gnu/system/file-systems.scm (<file-system>): Change constructor name
to '%file-system'.
[title]: Remove.
(<file-system-label>): New record type with printer.
(report-deprecation, device-expression)
(process-file-system-declaration, file-system): New macros.
(file-system-title): New procedure.
(file-system->spec, spec->file-system): Adjust to handle
<file-system-label>.
* gnu/system.scm (bootable-kernel-arguments): Add case for
'file-system-label?'.
(read-boot-parameters): Likewise.
(mapped-device-user): Avoid 'file-system-title'.
(fs->boot-device): Remove.
(operating-system-boot-parameters): Use 'file-system-device' instead of
'fs->boot-device'.
(device->sexp): Add case for 'file-system-label?'.
* gnu/bootloader/grub.scm (grub-root-search): Add case for
'file-system-label?'.
* gnu/system/examples/bare-bones.tmpl,
gnu/system/examples/beaglebone-black.tmpl,
gnu/system/examples/lightweight-desktop.tmpl,
gnu/system/examples/vm-image.tmpl: Remove uses of 'title'.
* gnu/system/vm.scm (virtualized-operating-system): Remove uses of
'file-system-title'.
* guix/scripts/system.scm (check-file-system-availability): Likewise,
and adjust fix-it hint.
(check-initrd-modules)[file-system-/dev]: Likewise.
* gnu/build/file-systems.scm (canonicalize-device-spec): Remove 'title'
parameter.
[canonical-title]: Remove.
Match on SPEC's type rather than on CANONICAL-TITLE.
(mount-file-system): Adjust caller.
* gnu/build/linux-boot.scm (boot-system): Interpret ROOT here.
* gnu/services/base.scm (file-system->fstab-entry): Remove use of
'file-system-title'.
* doc/guix.texi (File Systems): Remove documentation of the 'title'
field.  Rewrite documentation of 'device' and document
'file-system-label'.
2018-05-28 13:24:11 +02:00
Mark H Weaver 1640f16e78
Merge branch 'master' into core-updates 2018-05-27 01:26:09 -04:00
Marius Bakke 9572d2b482
http-client: Send redirection messages to stderr.
* guix/http-client.scm (http-fetch): Use CURRENT-ERROR-PORT instead of default
output.
2018-05-26 17:04:17 +02:00
Mark H Weaver 9d10a63402
Merge branch 'master' into core-updates 2018-05-24 02:34:08 -04:00
Ludovic Courtès 7874bbbb9f
records: Insert record type ABI checks in constructors.
* guix/records.scm (print-record-abi-mismatch-error): New procedure.
<top level>: Add 'set-exception-printer!' call.
(current-abi-identifier, abi-check): New procedures.
(make-syntactic-constructor): Add #:abi-cookie parameter.  Insert calls
to 'abi-check'.
(define-record-type*)[compute-abi-cookie]: New procedure.
Use it and emit a definition of the 'current-abi-identifier' for TYPE.
* tests/records.scm ("ABI checks"): New test.
2018-05-23 10:21:02 +02:00
Mark H Weaver 0661758e13
Merge branch 'master' into core-updates 2018-05-21 13:22:32 -04:00
Danny Milosavljevic de136f3ee7
profiles: Add hook to generate "gschemas.compiled".
* guix/profiles.scm (glib-schemas): New procedure.
(%default-profile-hooks): Add it.
2018-05-21 09:56:37 +02:00
Ludovic Courtès 827c56515e
union: Do not warn about harmless collisions.
Until now we'd get pointless messages like:

  warning: collision encountered:
    /gnu/store/…-gtk-icon-themes/share/icons/hicolor/icon-theme.cache
    /gnu/store/…-inkscape-0.92.3/share/icons/hicolor/icon-theme.cache
  warning: choosing /gnu/store/…-gtk-icon-themes/share/icons/hicolor/icon-theme.cache

* guix/build/union.scm (%harmless-collisions): New variable.
(warn-about-collision): Honor it.
2018-05-17 10:48:37 +02:00
Mark H Weaver 539bf8f2c0
Merge branch 'master' into core-updates 2018-05-17 01:00:50 -04:00
Ludovic Courtès 30d722c392
gexp: Disable deprecation warnings for 'imported-modules'.
Fixes <https://bugs.gnu.org/31450>.
Reported by Martin Castillo <castilma@uni-bremen.de>.

* guix/gexp.scm (gexp->derivation): Pass #:deprecation-warnings to
'imported-modules'.
(imported-files): Add #:deprecation-warnings and pass #:env-vars to
'gexp->derivation'.
(imported-modules): Add #:deprecation-warnings and pass it to
'imported-files'.
2018-05-15 10:34:45 +02:00
Ludovic Courtès 91e5885549
pack: Link top-level entries of wrapped packages.
Previously things like:

  guix pack -R guile guile-json

would lead to a profile without Guile-JSON, and to an 'etc/profile' that
does not define 'GUILE_LOAD_PATH'.

* guix/scripts/pack.scm (wrapped-package)[build]: Link top-level entries
of PACKAGE into OUTPUT.
2018-05-14 23:01:36 +02:00
Ludovic Courtès 437f62f02a
utils: Add 'version-prefix?'.
* guix/utils.scm (version-prefix?): New procedure.
* tests/utils.scm ("version-prefix?"): New test.
2018-05-13 13:29:27 +02:00
Ludovic Courtès 26b8cadf88
pack: 'guix pack -S xxx' no longer adds entries twice to the tarball.
* guix/scripts/pack.scm (self-contained-tarball)[build](symlink->directives):
Do not add a 'directory' directive for "/".  Previously, as soon as we
were using '-S /bin=bin' or similar, we would add every entry a second
time in the tarball; this would translate as hard links in the tarball,
which tar < 1.30 sometimes fails to extract.
Pass symlinks defined in DIRECTIVES to 'tar'.
2018-05-11 18:42:42 +02:00
Julien Lepiller 10673d150f
guix: Fix typo.
* guix/scripts/lint.scm: Fix typo.
2018-05-11 14:36:53 +02:00
Danny Milosavljevic b87fc9ab9d
gnu: android-make-stub: Update to 0.6.0.
* gnu/packages/android.scm (android-make-stub): Update to 0.6.0.
* guix/build-system/android-ndk.scm (android-ndk-build): Modify.
(lower): Modify.
2018-05-10 15:35:28 +02:00
Ludovic Courtès 47a60325ca
pack: Add '--relocatable'.
* 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.
2018-05-10 14:53:57 +02:00
Ludovic Courtès 54fd5ad0a5
search-paths: Add 'set-search-paths'.
* guix/search-paths.scm (set-search-paths): New procedure.
2018-05-10 14:53:57 +02:00
Ludovic Courtès 3636b1c7fe
profiles: Allow lowerable objects other than packages in <manifest-entry>.
* guix/profiles.scm (manifest-lookup-package)[entry-lookup-package]: Add
case where 'manifest-entry-item' returns something that's neither a
string nor a package.
2018-05-10 14:53:57 +02:00
Ludovic Courtès e00ade3fb8
profiles: Optionally use relative file names for symlink targets.
* guix/build/union.scm (symlink-relative): New procedure.
* guix/build/profiles.scm: Re-export it.
(build-profile): Add #:symlink and pass it to 'union-build'.
* guix/profiles.scm (profile-derivation): Add #:relative-symlinks?.
Pass #:symlink to 'build-profile'.
* tests/profiles.scm ("profile-derivation relative symlinks, one entry")
("profile-derivation relative symlinks, two entries"): New tests.
2018-05-10 14:53:57 +02:00
Ludovic Courtès dac1c97d13
union: Add 'relative-file-name'.
* guix/build/union.scm (%not-slash): New variable.
(relative-file-name): New procedure.
* tests/union.scm (test-relative-file-name): New macro and tests.
2018-05-10 14:53:56 +02:00
Danny Milosavljevic c6ee92c41b
gnu: Add android-googletest.
* gnu/packages/android.scm (android-googletest): New variable.
* guix/build-system/android-ndk.scm (android-ndk-build): Use it.
2018-05-10 02:12:03 +02:00
Danny Milosavljevic 3766aa921b
build-system: android-ndk: Let upstream install header files.
* guix/build/android-ndk-build-system.scm (install): Don't install header
files ourselves.
2018-05-10 01:06:22 +02:00
Danny Milosavljevic 9ed36cd3d6
build-system: android-ndk: Support unit tests.
* guix/build-system/android-ndk.scm (android-ndk-build): Add googletest.
* guix/build/android-ndk-build-system.scm (check): Check whether tests are
enabled.  Run root-level tests as well.
2018-05-10 01:06:22 +02:00
Danny Milosavljevic 436515cdb8
build: Add the Android NDK build-system.
* guix/build-system/android-ndk.scm: New file.
* guix/build/android-ndk-build-system.scm: New file.
* Makefile.am: Add them.
2018-05-09 19:16:04 +02:00
Chris Marusich 27ba9760e0
guix: Revert accidentally committed changes.
* guix/packages.go.134WZR: Remove it.  This empty file was
unintentionally included in ede121de42.
2018-05-09 00:04:27 -07:00
Chris Marusich ede121de42
guix: Separate the package name and version with "@", not "-".
* guix/packages.scm (package-full-name): By default, use "@" to separate
  the package name and package version.  Add an optional delimiter
  argument so that there is still a way to explicitly use a different
  delimiter.
* gnu/packages/commencement.scm (gcc-boot0) <unpack-gmp&co>: Adjust
  accordingly.
* tests/graph.scm: Adjust accordingly.
* tests/profiles.scm: Adjust accordingly.
* NEWS: Mention the change.

Fixes: <https://bugs.gnu.org/31088>.
Reported by Pierre Neidhardt <ambrevar@gmail.com>.
2018-05-08 21:55:46 -07:00
Mark H Weaver aedc6e9fc9
Merge branch 'master' into core-updates 2018-05-08 18:45:39 -04:00
Ludovic Courtès d26727a143
pack: Fix handling of '-e'.
Fixes a regression introduced in
aad16cc196.
Reported by Julien Lepiller.

* guix/scripts/pack.scm (guix-pack)[manifest-from-args]: In
'match-lambda', add clause for single packages.
* tests/guix-pack.sh: Add test for '-e'.
2018-05-07 14:04:19 +02:00
Ludovic Courtès 8005640201
build-system/meson: Use 'strip-runpath' instead of PatchELF.
* guix/build/meson-build-system.scm (fix-runpath): Call 'strip-runpath'
instead of invoking 'patchelf'.
2018-05-07 11:21:38 +02:00
Ludovic Courtès b178fc2369
gremlin: Add 'strip-runpath'.
* guix/build/gremlin.scm (strip-runpath): New procedure.
* tests/gremlin.scm (c-compiler): New variable.
("strip-runpath"): New test.
2018-05-07 11:21:36 +02:00
Ludovic Courtès ad4835fe01
gremlin: Preserve offset info for dynamic entries.
* guix/build/gremlin.scm (<dynamic-entry>): New record type.
(raw-dynamic-entries): Return a list of <dynamic-entry>.
(dynamic-entries): Adjust accordingly and return a list of <dynamic-entry>.
(elf-dynamic-info)[matching-entry]: New procedure.
Use it.
2018-05-07 11:21:34 +02:00
Ludovic Courtès aad16cc196
pack: Honor package transformation options.
Previously they would silently be ignored.

* guix/scripts/pack.scm (guix-pack)[manifest-from-args]: Add 'store'
parameter.  Call 'options->transformation' and use it.
Move 'with-store' and 'parameterize' around the 'let'.
* tests/guix-pack.sh: Add test using '--with-source'.
2018-05-07 10:46:07 +02:00
Ludovic Courtès 16e7afb924
pack: Do not autoload (gnu packages base).
* guix/scripts/pack.scm: Do not autoload (gnu packages base).
Previously, we could end up with 'canonical-package' as an unbound
variable because of the incorrect autoload spec.
2018-05-07 10:36:13 +02:00
Ludovic Courtès f2e66663c2
self: Add "guix-packages-base" derivation.
This introduces an intermediate derivation, thereby reducing the amount
of rebuild that needs to happen when "leaf" package modules are
modified.

* guix/self.scm (compiled-guix)[*core-package-modules*]: New variable.
[*package-modules*, *system-modules*, *cli-modules*]: Depend on it.
Add it to the directory union.
2018-05-07 00:17:34 +02:00
Danny Milosavljevic d6ac4d42ba
guix: ant-build-system: End "configure" phase with #t.
* guix/build/ant-build-system.scm (configure): End with #t.
2018-05-06 20:49:20 +02:00
Danny Milosavljevic bc65332a38
guix: ant-build-system: Create INDEX.LIST.
Fixes <https://bugs.gnu.org/31374>.

* guix/build/ant-build-system.scm (generate-jar-indices): New procedure.
(%standard-phases)[generate-jar-indices]: New phase.
2018-05-06 19:39:54 +02:00
Marius Bakke 12bd588346
Merge branch 'master' into core-updates 2018-05-06 15:56:24 +02:00
Ludovic Courtès 2d2f98efb3
guix build: Nicely report unbound variables with hints.
* guix/ui.scm (print-unbound-variable-error): Add "error:" to the
message.
(report-unbound-variable-error): New procedure, with code formerly in
'report-load-error'.
(report-load-error): Use it.
(call-with-unbound-variable-handling): New procedure.
(with-unbound-variable-handling): New macro.
* guix/scripts/build.scm (options->derivations): Wrap body in
'with-unbound-variable-handling'.
* tests/guix-build.sh (GUIX_PACKAGE_PATH): Add test.
2018-05-04 15:07:08 +02:00
Ludovic Courtès 7f2f6a2cb2
ui: Factorize 'last-frame-with-source'.
* guix/ui.scm (last-frame-with-source): New procedure.
(load*)[frame-with-source]: Remove.
Use 'last-frame-with-source'.
2018-05-04 12:13:53 +02:00
Maxim Cournoyer c1b4ad2e6e
build: emacs-utils: Fail when byte compilation fails.
Byte compilation failures were ignored prior to this change.

* guix/build/emacs-utils.scm (emacs-byte-compile-directory): Fail when there
are compilation errors.

Signed-off-by: Arun Isaac <arunisaac@systemreboot.net>
2018-05-03 21:48:59 +05:30
Clément Lassieur bb6f94c71e
guix system: search: Display all provision names as 'shepherdnames'.
* guix/scripts/system/search.scm (service-type-shepherd-names): Append
provision lists together instead of returning a list of provision cars.
2018-05-01 23:29:03 +02:00
Ludovic Courtès 27e810c3e8
compile: Exit when an exception is thrown.
Previously we could end up with only a subset of the modules built.
Fixes <https://bugs.gnu.org/31329>.

* guix/build/compile.scm (call/exit-on-exception): New procedure.
(exit-on-exception): New macro.
(compile-files): Use it.
2018-05-01 16:01:39 +02:00
Ludovic Courtès 7c8b7e35d0
weather: Fix type error when reporting CI stats.
* guix/scripts/weather.scm (report-server-coverage): Remove 'missing'
binding above 'queued-subset' call.  Before that 'queued-subset' would
be called with a number instead of a list.
2018-04-30 23:41:21 +02:00
Mark H Weaver f0ae90cbbb
Merge branch 'master' into core-updates 2018-04-30 16:48:15 -04:00
Marius Bakke a66853810e
Merge branch 'staging' 2018-04-30 19:26:03 +02:00
Ludovic Courtès 6ac8b7359a
guix system: search: Display default Shepherd service names.
Fixes <https://bugs.gnu.org/29707>.
Reported by Clément Lassieur <clement@lassieur.org>.

* guix/scripts/system/search.scm (service-type-default-shepherd-services)
(service-type-shepherd-names): New procedures.
(service-type->recutils): Use it.
* tests/guix-system.sh: Add test.
2018-04-30 14:22:43 +02:00
Mark H Weaver 3d5ad159b3
Merge branch 'master' into core-updates 2018-04-30 04:03:54 -04:00
Ludovic Courtès 6ddb59607b
guix system: Report wrong file system 'device' fields.
Previously, if you wrote (device "my-label") without (title 'label),
you'd get:

  guix system: error: stat: No such file or directory: "my-label"

Now you get a proper error and a hint.

Reported by Pierre-Antoine Rouby.

* guix/scripts/system.scm (check-file-system-availability)[literal]: New
variable.  Loop over LITERAL.
* gnu/system/file-systems.scm (%pseudo-file-system-types): New variable.
* guix/ui.scm (display-hint): Make public.
2018-04-27 18:45:02 +02:00
Marius Bakke a9fe3882b9
Merge branch 'master' into staging 2018-04-25 15:53:41 +02:00
Ludovic Courtès 5e5d6613a3
download: Use ungrafted tools in 'url-fetch/tarbomb' and 'url-fetch/zipbomb'.
Fixes <https://bugs.gnu.org/31085>.
Reported by Diego Nicola Barbato <dnbarbato@posteo.de>.

* guix/download.scm (url-fetch/tarbomb): Pass #:graft? #f to
'gexp->derivation'.
(url-fetch/zipbomb): Likewise.
2018-04-23 15:25:56 +02:00
Mark H Weaver c52872bfc4
Merge branch 'master' into core-updates 2018-04-21 05:02:52 -04:00
Maxim Cournoyer facc0a96a1
build-system: emacs: Add improved check phase.
* guix/build-system/emacs.scm (emacs-build): Add #:test-command keyword
argument. Remove #:configure-flags and #:test-target keyword arguments.
* guix/build/emacs-build-system.scm (check): New procedure.
(%standard-phases): Register check phase after the build phase.

Signed-off-by: Arun Isaac <arunisaac@systemreboot.net>
2018-04-20 00:49:53 +05:30
Maxim Cournoyer 8a8fa82e72
build-system: emacs: Replace system* with invoke.
* guix/build/emacs-utils.scm: Use (guix build utils) for invoke.
(emacs-batch-eval, emacs-batch-edit-file): Replace system* with invoke.
* guix/build/emacs-build-system.scm (make-autoloads): No need to return #t
explicitly since emacs-generate-autoloads now uses invoke.

Signed-off-by: Arun Isaac <arunisaac@systemreboot.net>
2018-04-20 00:49:53 +05:30
Maxim Cournoyer b5904fcc34
build-system: emacs: Search all inputs for Emacs Lisp directories.
* guix/build/emacs-build-system.scm (set-emacs-load-path): Include Emacs Lisp
directories from all inputs. Also, add the unpacked source directory to
EMACSLOADPATH.
(emacs-inputs, emacs-inputs-directories, emacs-input->el-directory,
emacs-inputs-el-directories): Remove.
(%standard-phases): Move set-emacs-load-path phase to after unpack phase.

Signed-off-by: Arun Isaac <arunisaac@systemreboot.net>
2018-04-20 00:49:47 +05:30
Mark H Weaver 6c293a809b
download: Fix 'url-fetch/tarbomb' and 'url-fetch/zipbomb'.
Fixes a regression introduced in 20927c9331.
Reported by Eric Bavier <ericbavier@centurylink.net>.

* guix/download.scm (url-fetch/tarbomb, url-fetch/zipbomb): Within the gexp,
import (guix build utils) for 'invoke'.
2018-04-17 02:15:06 -04:00
Marius Bakke 5d904d63f4
Merge branch 'master' into staging 2018-04-16 18:15:28 +02:00
Marius Bakke 538d6d025c
build-system/meson: Don't override LDFLAGS if already set.
* guix/build/meson-build-system.scm (configure): Test for LDFLAGS before
adding ours.

(cherry picked from commit 611c27db2a)
2018-04-15 14:45:56 +02:00
Mark H Weaver 3c0316169b
Merge branch 'master' into core-updates 2018-04-11 17:19:06 -04:00
Ludovic Courtès eb72cdf087
self: Produce a spliced (guix config) to placate Guile 2.0.
Fixes 'guix pull' with Guile 2.0.
See <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27284#153>.

* guix/self.scm (make-config.scm): Remove 'begin' in 'scheme-file'
argument and pass #:splice? #t.
2018-04-11 01:03:47 +02:00
Ludovic Courtès 4fbd1a2b7f
gexp: 'scheme-file' can splice expressions.
* guix/gexp.scm (<scheme-file>)[splice?]: New field.
(scheme-file): Add #:splice? and pass it to '%scheme-file'.
(scheme-file-compiler): Pass SPLICE? to 'gexp->file'.
(gexp->file): Add #:splice? and honor it.
* tests/gexp.scm ("gexp->file + #:splice?"): New test.
("gexp->derivation & with-imported-module & computed module"): Use
 #:splice? #t.
2018-04-11 01:03:47 +02:00
Ludovic Courtès a1639ae9de
self: 'package-for-guile' really honors GUILE-VERSION.
* guix/self.scm (package-for-guile): Pass GUILE-VERSION to
'false-if-wrong-guile'.
2018-04-11 01:03:47 +02:00
Ludovic Courtès 63cab4182d
self: Remove 'eval-when' from in generated (guix config).
* guix/self.scm (make-config.scm): Remove unneeded 'eval-when'.
2018-04-11 01:03:47 +02:00
Ludovic Courtès 43176dd605
self: Don't use deprecated package names.
* guix/self.scm (compiled-guix)[guile-json, guile-ssh]: Don't refer t
"guile2.2-json" and "guile2.2-ssh", which are deprecated.
2018-04-10 17:44:27 +02:00
Ludovic Courtès 806ff35854
self: Export '%guix-register-program' in generated (guix config).
* guix/self.scm (make-config.scm): Export '%guix-register-program'.
2018-04-10 17:44:27 +02:00
Ludovic Courtès e69dd8443a
self: Fix package names for compilation with Guile 2.0.
Reported by Ricardo Wurmus.

* guix/self.scm (specification->package): Add guile2.0-{json,git,ssh}.
(guile-for-build): Use 'module-ref' for Guile 2.0.
2018-04-10 17:44:27 +02:00
Ludovic Courtès 69447b6393
self: Display a new line at the end of module compilation.
* guix/self.scm (compiled-modules)[build]: Add a 'newline' call at the
end.
2018-04-10 17:44:27 +02:00
Ludovic Courtès 14b392a8ad
self: Don't substitute the '-source' derivations.
With substitution enabled we would end up downloading 10+ MiB of source
that's already available locally on disk.

* guix/self.scm (imported-files): Pass #:options to 'computed-file'.
2018-04-10 17:44:27 +02:00
Mark H Weaver f89aa1521a
Merge branch 'master' into core-updates 2018-04-10 00:42:22 -04:00
Ludovic Courtès 3c0128b035
discovery: Remove dependency on (guix ui).
This reduces the closure of (guix discovery) from 28 to 8 modules.

* guix/discovery.scm (scheme-files): Use 'format' instead of 'warning'.
(scheme-modules): Add #:warn parameter.  Use it instead of
'warn-about-load-error'.
(fold-modules): Add #:warn and pass it to 'scheme-modules'.
(all-modules): Likewise.
* gnu/bootloader.scm (bootloader-modules): Pass #:warn to 'all-modules'.
* gnu/packages.scm (fold-packages): Likewise.
* gnu/services.scm (all-service-modules): Likewise.
* guix/upstream.scm (importer-modules): Likewise.
2018-04-08 17:48:33 +02:00
Ludovic Courtès eaae07ec28
Add (guix self).
* guix/self.scm: New file.
* Makefile.am (MODULES): Add it.
* gnu/packages.scm (%distro-root-directory): Rewrite to try different
directories.
* guix/discovery.scm (guix): Export 'scheme-files'.
2018-04-08 17:41:08 +02:00
Ludovic Courtès b244ae25f9
gexp: 'directory-union' has a #:resolve-collision parameter.
* guix/gexp.scm (directory-union): Add #:resolve-collision and honor it.
2018-04-08 17:41:08 +02:00
Ludovic Courtès e40aa54e98
union: Allow callers to choose the collision resolution policy.
* guix/build/union.scm (warn-about-collision): New procedure.
(union-build): Add #:resolve-collision.
[resolve-collisions]: Call it.
* tests/union.scm ("union-build collision first & last"): New test.
2018-04-08 17:41:08 +02:00
Ludovic Courtès 1b92d65a40
modules: Report the search path in &missing-dependency-error.
* guix/modules.scm (&missing-dependency-error)[search-path]: New field.
(source-module-dependencies): Initialize the 'search-path' field.
2018-04-08 17:41:08 +02:00
Ludovic Courtès 9188198692
git: Increase modularity and expose 'update-cached-checkout'.
* guix/git.scm (repository->head-sha1, copy-to-store): Remove.
(switch-to-ref): Return the OID of OBJ.
(update-cached-checkout): New procedure, with code from
'latest-repository-commit'.
(latest-repository-commit): Use it.
2018-04-02 23:16:30 +02:00
Marius Bakke 611c27db2a
build-system/meson: Don't override LDFLAGS if already set.
* guix/build/meson-build-system.scm (configure): Test for LDFLAGS before
adding ours.
2018-04-02 02:22:23 +02:00
Ludovic Courtès d32922759b
gexp: 'compiled-modules' prints a line for each module.
* guix/gexp.scm (compiled-modules)[build]: Add 'processed' parameter to
'process-entry' and 'process-directory'.  Print a message before each
'compile-file' call.
2018-04-01 12:36:03 +02:00
Ludovic Courtès e640c9e6f3
gexp: compiled-modules: Factorize build code.
* guix/gexp.scm (compiled-modules)[build]: Factorize 'process-entry'.
2018-04-01 12:36:02 +02:00
Ludovic Courtès f8d1303864
union: Slightly improve messages for file collisions.
* guix/build/union.scm (union-build): Indent file names upon collision.
Remove "arbitrarily" from the message.
2018-03-31 23:30:50 +02:00
Ludovic Courtès fc95dc4c34
guix package: Add '--allow-collisions'.
Fixes <https://bugs.gnu.org/30830>.
Suggested by Ricardo Wurmus <rekado@elephly.net>.

* guix/scripts/package.scm (build-and-use-profile): Add
 #:allow-collisions? and pass it to 'profile-derivation'.
(show-help, %options): Add '--allow-collisions'.
(manifest-action, process-actions): Pass #:allow-collisions? to
'build-and-use-profile'.
* tests/guix-package.sh: Add collision test.
* doc/guix.texi (Invoking guix package): Document '--allow-collisions'.
2018-03-31 23:30:50 +02:00
Nikolai Merinov f342bb58fe
gnu: rust: Update rust to 1.24.1.
* gnu/packages/rust.scm (rust-bootstrap): Freeze bootstrap version to 1.22.1.
Reorganize bootstrap binaries to match new "rust" package structure with two
ouputs "out" with Rust compiler and "cargo" with Cargo package manager.
Replace all "system*" by "invoke".
(rust-1.23): Rename "rustc" to "rust".  Update sha256 for tarball.  Add cargo
related dependencies.  Install "cargo" as separate "rust" output.  Remove
substitutes for parts that were fixed in "rustc" source code.  Install
documentation to separate "doc" output.  Update configuration according to
changes in "rustc" source code.  Replace all "system*" by "invoke".
(rust): Create package for 1.24.1 rust release based on rust-1.23 release.
* guix/build-system/cargo.scm (default-rust): Replace "default-cargo" and
"default-rustc" functions with "default-rust" function.
(cargo-build-system): Take only one package as "rust" source.  Use "rustc" of
default output of "rust" package, use "cargo" as "cargo" output of "rust"
package.
2018-03-30 15:46:53 +02:00
Ludovic Courtès d0a2db47fb
ld-wrapper: Allow linking with non-store libraries by default.
This was suggested on several occasions, notably
<https://bugs.gnu.org/24544>.

* gnu/packages/ld-wrapper.in (%allow-impurities?): Default to #t and
parse the value of 'GUIX_LD_WRAPPER_ALLOW_IMPURITIES'.
* guix/build/gnu-build-system.scm (set-paths): Set
'GUIX_LD_WRAPPER_ALLOW_IMPURITIES'.
2018-03-29 17:58:16 +02:00
Ludovic Courtès c90fd42020
gremlin: Fix typo in export list.
* guix/build/gremlin.scm: Really export 'elf-dynamic-info-soname'.
2018-03-29 17:58:15 +02:00
Marius Bakke 5576cfabf3
Merge branch 'master' into core-updates 2018-03-29 17:34:41 +02:00
Ludovic Courtès 183445a6ed
weather: Report continuous integration stats.
* guix/scripts/weather.scm (histogram, throughput, queued-subset): New
procedures.
(report-server-coverage): Report CI information.
* doc/guix.texi (Invoking guix weather): Document it.
2018-03-28 16:17:06 +02:00
Ludovic Courtès b3517f3f9f
Add (guix ci).
* guix/ci.scm: New file.
* Makefile.am (MODULES): Add it.
2018-03-28 16:17:06 +02:00
Konrad Hinsen 6fcb90eebd
guix environment: load manifest files like "guix package" does
* guix/scripts/environment.scm (options/resolve-packages): When loading
manifest files, use the same module environment as in "guix package".

Signed-off-by: Ludovic Courtès <ludovic.courtes@inria.fr>
2018-03-27 23:26:15 +02:00
Ludovic Courtès 8980eea5ab
guix gc: Add '--derivers'.
* guix/scripts/gc.scm (show-help, %options): Add '--derivers'.
(guix-gc): Handle 'list-derivers'.
* tests/guix-gc.sh: Add test.
* doc/guix.texi (Invoking guix gc): Document it.
2018-03-27 14:51:44 +02:00
Ludovic Courtès b06a70e05d
graph: Add "module" node type.
* guix/scripts/graph.scm (module-from-package)
(source-module-dependencies*): New procedures.
(%module-node-type): New variable.
(%node-types): Add it.
* guix/modules.scm (source-module-dependencies): Export.
* tests/graph.scm ("module graph"): New test.
* doc/guix.texi (Invoking guix graph): Document it.
2018-03-27 14:51:44 +02:00
Ludovic Courtès 7d85fcde23
guix build: 'guix build --log-file' gracefully reports certificate errors.
Previously 'guix build --log-file' would print a backtrace upon X.509
certificate verification errors.

* guix/scripts/build.scm (log-url): Catch 'tls-certificate-error' in
addition to 'getaddrinfo-error'.
2018-03-26 10:07:57 +02:00
Ludovic Courtès dfca24180c
git: 'latest-repository-commit' calls 'repository-close!'.
* guix/git.scm (latest-repository-commit): Call 'repository-close!'
when it exists.
2018-03-26 00:15:52 +02:00
Chris Marusich a335f6fcc9
system: Add "guix system docker-image" command.
* gnu/system/vm.scm (system-docker-image): New procedure.
* guix/scripts/system.scm (system-derivation-for-action): Add a case for
  docker-image, and in that case, call system-docker-image.
  (show-help): Document docker-image.
  (guix-system): Parse arguments for docker-image.
* doc/guix.texi (Invoking guix system): Document "guix system
  docker-image".
* gnu/system/examples/docker-image.tmpl: New file.
2018-03-24 03:04:11 +01:00
Chris Marusich 1c2ac6b482
guix: Rewrite build-docker-image to allow more paths.
* guix/docker.scm (build-docker-image): Rename "path" argument to
  "prefix" to reflect the fact that it is used as a prefix for the
  symlink targets.  Add the "paths" argument, and remove the "closure"
  argument, since it is now redundant.  Add a "transformations"
  argument.
* guix/scripts/pack.scm (docker-image): Read the profile's reference
  graph and provide its paths to build-docker-image via the new "paths"
  argument.
2018-03-24 03:04:10 +01:00
Chris Marusich 272c070962
tests: Add tests for "guix pack".
* guix/scripts/pack.scm (bootstrap-xz): New variable.
  (%options) <--bootstrap>: New option.
  (show-help): Document the new --bootstrap option.
  (guix-pack): When --bootstrap is specified, use the bootstrap Guile,
  tar, and xz to build the pack, and do not use any profile hooks or
  locales.
* doc/guix.texi (Invoking guix pull): Document the new --bootstrap
  option.
* tests/guix-pack.sh: New file.
* Makefile.am (SH_TESTS): Add guix-pack.sh.
* gnu/packages/package-management.scm (guix) <inputs>: Add util-linux.
2018-03-24 03:04:07 +01:00
Ludovic Courtès 427ec19e88
gexp: 'program-file' has a new #:module-path parameter.
* guix/gexp.scm (<program-file>): Add 'path' field.
(program-file): Add #:module-path parameter and honor it.
(program-file-compiler): Honor the 'path' field.
* tests/gexp.scm ("program-file #:module-path"): New test.
* doc/guix.texi (G-Expressions): Update.
2018-03-23 18:41:07 +01:00
Ludovic Courtès 1ae16033f3
gexp: 'gexp->script' and 'gexp->file' have a new #:module-path parameter.
* guix/gexp.scm (load-path-expression): Add 'path' optional parameter.
(gexp->script): Add #:module-path and honor it.
(gexp->file): Likewise.
* tests/gexp.scm ("gexp->script #:module-path"): New test.
* doc/guix.texi (G-Expressions): Update accordingly.
2018-03-23 18:41:07 +01:00
Efraim Flashner 919034068e
Revert "build-system/meson: Use 'target-arm32?' for armhf-linux case."
This reverts commit 3a7597e414.
2018-03-22 20:33:08 +02:00
Efraim Flashner 3a7597e414
build-system/meson: Use 'target-arm32?' for armhf-linux case.
* guix/build-system/meson.scm (lower, meson-build): Replace armhf-linux
detection with 'target-arm32?' macro.
2018-03-22 20:19:44 +02:00
Mark H Weaver ac21be848a
Merge branch 'master' into core-updates 2018-03-20 14:22:06 -04:00
ng0 4a78fd4617
Correct name and Email for ng0.
* .mailmap: Correct name and Email for ng0.
* Makefile.am, doc/guix.texi, etc/completion/fish/guix.fish
gnu/packages/accessibility.scm, gnu/packages/admin.scm,
gnu/packages/audio.scm, gnu/packages/autotools.scm,
gnu/packages/cdrom.scm, gnu/packages/check.scm,
gnu/packages/cinnamon.scm, gnu/packages/compression.scm,
gnu/packages/crypto.scm, gnu/packages/databases.scm,
gnu/packages/django.scm, gnu/packages/dns.scm,
gnu/packages/emacs.scm, gnu/packages/enlightenment.scm,
gnu/packages/fonts.scm, gnu/packages/fontutils.scm,
gnu/packages/forth.scm, gnu/packages/fvwm.scm,
gnu/packages/games.scm, gnu/packages/gl.scm,
gnu/packages/gnome.scm, gnu/packages/gnunet.scm,
gnu/packages/gnupg.scm, gnu/packages/gnuzilla.scm,
gnu/packages/gtk.scm, gnu/packages/guile-wm.scm,
gnu/packages/guile.scm, gnu/packages/haskell-check.scm,
gnu/packages/haskell-crypto.scm, gnu/packages/haskell.scm,
gnu/packages/image-viewers.scm, gnu/packages/image.scm,
gnu/packages/irc.scm, gnu/packages/language.scm,
gnu/packages/libcanberra.scm, gnu/packages/linux.scm,
gnu/packages/lisp.scm, gnu/packages/lolcode.scm,
gnu/packages/lxde.scm, gnu/packages/lxqt.scm,
gnu/packages/mail.scm, gnu/packages/markup.scm,
gnu/packages/mate.scm, gnu/packages/maths.scm,
gnu/packages/mc.scm, gnu/packages/messaging.scm,
gnu/packages/music.scm, gnu/packages/ncurses.scm,
gnu/packages/networking.scm, gnu/packages/nickle.scm,
gnu/packages/openbox.scm, gnu/packages/pdf.scm,
gnu/packages/perl-check.scm, gnu/packages/perl.scm,
gnu/packages/python-crypto.scm, gnu/packages/python-web.scm,
gnu/packages/python.scm, gnu/packages/qt.scm,
gnu/packages/ruby.scm, gnu/packages/rust.scm,
gnu/packages/scheme.scm, gnu/packages/serialization.scm,
gnu/packages/shells.scm, gnu/packages/ssh.scm,
gnu/packages/suckless.scm, gnu/packages/tbb.scm,
gnu/packages/telephony.scm, gnu/packages/text-editors.scm,
gnu/packages/textutils.scm, gnu/packages/time.scm,
gnu/packages/tls.scm, gnu/packages/tor.scm,
gnu/packages/version-control.scm, gnu/packages/video.scm,
gnu/packages/vim.scm, gnu/packages/web.scm,
gnu/packages/wm.scm, gnu/packages/xdisorg.scm,
gnu/packages/xfce.scm, gnu/packages/xml.scm,
gnu/packages/xorg.scm, gnu/services/certbot.scm,
gnu/services/desktop.scm, gnu/services/version-control.scm,
gnu/services/web.scm, guix/import/hackage.scm,
guix/licenses.scm: Likewise.

Signed-off-by: Tobias Geerinckx-Rice <me@tobias.gr>
2018-03-20 17:17:58 +01:00
Ludovic Courtès 248871e006
build-system/gnu: Fix typo.
* guix/build/gnu-build-system.scm (dump-file-contents): Fix typo in
'string-pad' argument.
2018-03-20 17:01:41 +01:00
Ludovic Courtès 88b87c352f
build-system/gnu: Dump test suite logs upon 'check' failure.
Suggested by Mark H Weaver <mhw@netris.org>.

* guix/build/gnu-build-system.scm (dump-file-contents): New procedure.
(%test-suite-log-regexp): New variable.
(check): Add #:test-suite-log-regexp.  Catch 'invoke-error?' and call
'dump-file-contents' upon error.
2018-03-20 13:29:37 +01:00
Mark H Weaver 647888845c
Merge branch 'master' into core-updates 2018-03-20 00:49:05 -04:00
Marius Bakke 061f204dcd
Revert "build-system/meson: Use 'target-arm32?' for armhf-linux case."
This requires adding (guix utils) to the build inputs, and causes too many
rebuilds for now.

This reverts commit 24a2e9172a.
2018-03-20 00:06:50 +01:00
Efraim Flashner 24a2e9172a
build-system/meson: Use 'target-arm32?' for armhf-linux case.
* guix/build-system/meson.scm (lower, meson-build): Replace armhf-linux
detection with 'target-arm32?' macro.
2018-03-19 22:07:37 +02:00
Marius Bakke 4eade64706
Merge branch 'master' into staging 2018-03-19 03:50:39 +01:00
Eric Bavier be95bcf088
git-download: Fix recursive checkouts.
* guix/git-download.scm (git-fetch)<build>: Fix match on INPUTS, which may
contain package outputs.
2018-03-18 20:00:44 -05:00
Ludovic Courtès 71e08fde28
glob: Add an extra glob pattern compilation stage.
* guix/glob.scm (compile-glob-pattern): Rename to...
(string->sglob): ... this.
(compile-sglob, string->compiled-sglob): New procedures.
(glob-match?): Replace '?, 'range, and 'set with a single clause.
* tests/glob.scm (test-compile-glob-pattern): Rename to...
(test-string->sglob): ... this.  Adjust accordingly.
(test-glob-match): Use 'string->compiled-sglob' instead of
'compile-glob-pattern'.
* gnu/build/linux-modules.scm (read-module-aliases): Use
'string->compiled-sglob' instead of 'compile-glob-pattern'.
2018-03-18 22:57:17 +01:00
Ludovic Courtès e914b398af
glob: Support square brackets in patterns.
* guix/glob.scm (wildcard-indices): Remove.
(parse-bracket): New procedure.
(compile-glob-pattern): Rewrite.  Support square brackets for sets and
ranges.
(glob-match?): Support sets and ranges.
* tests/glob.scm (test-compile-glob-pattern)
(test-glob-match): New macros.
Use them to rewrite the existing tests, and add new tests.
2018-03-18 22:35:36 +01:00
Ludovic Courtès 9bb1838c3f
import: elpa: Return 'license:gpl3+ for ELPA only.
Fixes <https://bugs.gnu.org/30836>.
Reported by Konrad Hinsen <konrad.hinsen@fastmail.net>.

* guix/import/elpa.scm (elpa-package->sexp): Add LICENSE parameter and
honor it.
(elpa->guix-package): Pass 'license:gpl3+ only when REPO is 'gnu.
2018-03-18 22:26:34 +01:00
Mark H Weaver 171a117c61
build-system/python: Fix deletion of .egg-info dirs created by tests.
* guix/build/python-build-system.scm (check): Use 'string=?' to compare
strings, not 'eqv?'.
2018-03-18 00:49:05 -04:00
Mark H Weaver 1e62645402
build-system/python: Return #t from all phases.
* guix/build/python-build-system.scm (build, install, wrap): Return #t.
(check): Return #t and remove vestigial plumbing.
2018-03-18 00:49:03 -04:00
Marius Bakke 7ace97395f
Merge branch 'master' into staging 2018-03-18 01:09:25 +01:00
Ludovic Courtès 95bd9f65a8
git: 'switch-to-ref' accepts short commit IDs.
Fixes <https://bugs.gnu.org/30716>.
Reported by Björn Höfling <bjoern.hoefling@bjoernhoefling.de>.

* guix/git.scm (switch-to-ref): When REF is a commit, check the length
of COMMIT and use 'object-lookup-prefix' if available.
2018-03-18 00:02:06 +01:00
Konrad Hinsen 07d2fed2f6
import: elpa: Fix typos in documentation strings
* guix/import/elpa.scm: Fix typos in docstrings.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2018-03-18 00:02:05 +01:00
Konrad Hinsen 44dd3d579d
import: elpa: use https in download URLs
* guix/import/elpa.scm (elpa-url): Use HTTPS.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2018-03-18 00:02:05 +01:00
Mark H Weaver e72077c535
download: Remove TU Wien mirror.
* guix/download.scm (%mirrors): Remove gd.tuwien.ac.at, which no longer
seems to exist.
2018-03-17 04:05:22 -04:00
Mark H Weaver 9f388b1ee1
Merge branch 'master' into core-updates 2018-03-17 01:18:37 -04:00
Mark H Weaver 99aaeaa00b
build-system/gnu: Tolerate errors during the 'strip' phase.
This is a followup to commit 9a87649c86.

* guix/build/gnu-build-system.scm (strip)[strip-dir]: If an invoke error
occurs, issue a warning and continue to the next file.  This restores the
tolerance of stripping errors prior to commit 9a87649.
2018-03-16 20:02:59 -04:00
Mark H Weaver cbdfa50d9f
utils: invoke: Raise exceptions using SRFI-34 and SRFI-35.
* guix/build/utils.scm (&invoke-error): New condition type.
(invoke-error?, invoke-error-program, invoke-error-arguments)
(invoke-error-exit-status, invoke-error-term-signal)
(invoke-error-stop-signal): New exported procedures.
(invoke): Raise exceptions using SRFI-34 and SRFI-35.
* guix/ui.scm (call-with-error-handling): Add a guard clause
for &invoke-error conditions.
2018-03-16 20:02:47 -04:00
Mark H Weaver d8a3b1b9e8
gnu-build: Issue a warning unless every phase returns #t.
* guix/build/gnu-build-system.scm (gnu-build): Issue a warning if a phase
returns a value other than #t.
2018-03-16 09:08:25 -04:00
Mark H Weaver daac9c77b9
packages: Issue a warning unless the snippet returns #t.
* guix/packages.scm (patch-and-repack): Issue a warning if the snippet
returns a value other than #t.
2018-03-16 09:08:20 -04:00
Mark H Weaver e9b23fe8bd
build-system/gnu: Return a boolean from all phase procedures.
* guix/build/gnu-build-system.scm (patch-source-shebangs)
(patch-generated-file-shebangs, strip): Return #t.
(validate-runpath): Raise an exception if validation fails.  Never return #f.
2018-03-16 06:44:09 -04:00
Mark H Weaver 5732008757
packages: Update copyright notice.
This is a followup to commit 5003aeaf2560d6ddebcf980a94785fba77e00f34.

* guix/packages.scm: Update copyright notice for Mark H Weaver.
2018-03-16 05:33:21 -04:00
Mark H Weaver 00d9494d80
packages: patch-and-repack: Fix snippet handling.
This is a followup to commit 5003aeaf2560d6ddebcf980a94785fba77e00f34.

* guix/packages.scm (patch-and-repack): For the snippet, generate a single
boolean expression for 'unless', instead of the list of expressions which had
previously been spliced into an 'and' form (prior to commit 5003aea).
2018-03-16 05:28:31 -04:00
Mark H Weaver 7837450076
build: emacs-utils: Use invoke instead of system*.
* guix/build/emacs-utils.scm (emacs-batch-eval)
(emacs-batch-edit-file): Use invoke.
2018-03-16 05:02:38 -04:00
Mark H Weaver 469de8c3fa
hg-download: Use invoke instead of system*.
* guix/build/hg.scm (hg-fetch): Use invoke and remove vestigial plumbing.
2018-03-16 05:02:36 -04:00
Mark H Weaver 81d8211e1b
svn-download: Use invoke instead of system*.
* guix/build/svn.scm (svn-fetch): Use invoke and remove vestigial plumbing.
2018-03-16 05:02:34 -04:00
Mark H Weaver 54fcecdb12
cvs-download: Use invoke instead of system*.
* guix/build/cvs.scm (cvs-fetch): Use invoke and remove vestigial plumbing.
2018-03-16 05:02:32 -04:00
Mark H Weaver 20927c9331
download: Use invoke instead of system*.
* guix/download.scm (url-fetch/tarbomb, url-fetch/zipbomb): Use invoke.
2018-03-16 05:02:01 -04:00
Mark H Weaver 2eeffc0acc
build-system/scons: Use invoke instead of system*.
* guix/build/scons-build-system.scm (build, check, install): Use invoke.
2018-03-16 05:01:57 -04:00
Mark H Weaver 68ca0efa9a
build-system/texlive: Use invoke instead of system*.
* guix/build/texlive-build-system.scm (compile-with-latex): Use invoke.
2018-03-16 05:01:56 -04:00
Mark H Weaver e35b09ca71
build-system/python: Use invoke instead of system*.
* guix/build/python-build-system.scm (call-setuppy): Use invoke.
2018-03-16 05:01:54 -04:00
Mark H Weaver 9e58fd9d7b
build-system/perl: Use invoke instead of system*.
* guix/build/perl-build-system.scm (configure, build, check, install): Use
invoke.
2018-03-16 05:01:52 -04:00
Mark H Weaver 0f308fe8eb
build-system/cmake: Use invoke instead of system*.
* guix/build/cmake-build-system.scm (configure): Use invoke.
2018-03-16 05:01:50 -04:00
Mark H Weaver 09a8f68b11
build-system/glib-or-gtk: Use invoke instead of system*.
* guix/build/glib-or-gtk-build-system.scm (compile-glib-schemas): Use invoke
and remove vestigial plumbing.
2018-03-16 05:01:47 -04:00
Mark H Weaver 9a87649c86
build-system/gnu: Use invoke instead of system*.
* guix/build/gnu-build-system.scm (unpack, configure, build, check, install)
(strip, compress-documentation): Use invoke and remove vestigial plumbing.
2018-03-16 05:01:45 -04:00
Mark H Weaver 6d084076b4
gnu-dist: Use invoke instead of system*.
* guix/build/gnu-dist.scm (autoreconf, build): Use invoke and remove vestigial
plumbing.
2018-03-16 05:01:43 -04:00
Mark H Weaver 7ac1b4084f
packages: patch-and-repack: Use invoke instead of system*.
* guix/packages.scm (patch-and-repack): Use invoke and remove vestigial
plumbing.
2018-03-16 05:01:41 -04:00
Ludovic Courtès 61b1dbbdcd
guix system: Add '--skip-checks'.
Fixes <https://bugs.gnu.org/30760>.
Reported by Tomáš Čech <sleep_walker@gnu.org>.

* guix/scripts/system.scm (perform-action): Add #:skip-safety-checks?
and honor it.
(show-help, %options): Add --skip-checks.
(process-action): Pass #:skip-safety-checks? to 'perform-action'.
* doc/guix.texi (Invoking guix system): Document --skip-checks.
2018-03-15 10:28:22 +01:00
Ricardo Wurmus d57888a819
guix: python-build-system: Make bytecode compilation deterministic.
* guix/build/python-build-system.scm (enable-bytecode-determinism): New
procedure.
(%standard-phases): Add "enable-bytecode-determinism" phase.
2018-03-15 09:26:30 +01:00
Ricardo Wurmus 8c72ed923d
Merge branch 'master' into core-updates 2018-03-14 17:37:20 +01:00
Marius Bakke d5b5a15a40
build-system/meson: Skip the 'fix-runpath' phase on armhf.
* guix/build-system/meson.scm (lower): Remove DEFAULT-PATCHELF from inputs
on armhf.
(meson-build): Ignore the 'fix-runpath' phase when building for arm systems.
2018-03-12 17:27:07 +01:00
Marius Bakke 09a45ffb14
build-system/meson: Add the output directory to RUNPATH.
* guix/build/meson-build-system.scm (configure): Set LDFLAGS before invoking meson.
2018-03-12 17:27:07 +01:00
Ricardo Wurmus ad1d03fcf0
build-system: minify: Do not import (ice-9 popen) in the build environment.
The (ice-9 popen) module should not be added to the imported-modules here,
because that depends on the Guile that is used on the host side.

* guix/build-system/minify.scm (%minify-build-system-modules): Remove import
of (ice-9 popen).
2018-03-12 15:14:01 +01:00
Ludovic Courtès 189be331ac
build-system/gnu: Add 'bootstrap' phase.
This factorizes what has become a widespread idiom.

* guix/build/gnu-build-system.scm (%bootstrap-scripts): New variable.
(bootstrap): New procedure.
(%standard-phases): Add it after 'unpack'.
* guix/build/ant-build-system.scm (%standard-phases): Delete 'bootstrap.
* guix/build/asdf-build-system.scm (%standard-phases/source)
(%standard-phases): Likewise.
* guix/build/cargo-build-system.scm (%standard-phases): Likewise.
* guix/build/cmake-build-system.scm (%standard-phases): Likewise.
* guix/build/dub-build-system.scm (%standard-phases): Likewise.
* guix/build/emacs-build-system.scm (%standard-phases): Likewise.
* guix/build/font-build-system.scm (%standard-phases): Likewise.
* guix/build/go-build-system.scm (%standard-phases): Likewise.
* guix/build/haskell-build-system.scm (%standard-phases): Likewise.
* guix/build/minify-build-system.scm (%standard-phases): Likewise.
* guix/build/ocaml-build-system.scm (%standard-phases): Likewise.
* guix/build/perl-build-system.scm (%standard-phases): Likewise.
* guix/build/python-build-system.scm (%standard-phases): Likewise.
* guix/build/r-build-system.scm (%standard-phases): Likewise.
* guix/build/ruby-build-system.scm (%standard-phases): Likewise.
* guix/build/scons-build-system.scm (%standard-phases): Likewise.
* guix/build/texlive-build-system.scm (%standard-phases): Likewise.
* guix/build/waf-build-system.scm (%standard-phases): Likewise.
* gnu/packages/audio.scm (faad2)[arguments]: Replace 'bootstrap.
(soundtouch, cuetools, bluez-alsa): Remove 'arguments'.
(cava)[arguments]: Replace 'bootstrap.
* gnu/packages/backup.scm (rdup): Remove 'bootstrap.
* gnu/packages/bioinformatics.scm (seek)[arguments]: Replace
'bootstrap.
* gnu/packages/bioinformatics.scm (htslib-for-sambamba): Remove
'arguments'.
* gnu/packages/ci.scm (hydra, cuirass): Remove 'bootstrap'.
* gnu/packages/crypto.scm (libb2): Remove #:phases.
* gnu/packages/databases.scm (guile-wiredtiger): Likewise.
* gnu/packages/debug.scm (stress-make): Remove 'bootstrap'.
* gnu/packages/documentation.scm (asciidoc): Likewise.
* gnu/packages/fontutils.scm (libuninameslist): Remove 'arguments'.
* gnu/packages/ftp.scm (weex): Remove 'arguments'.
* gnu/packages/game-development.scm (ois): Remove 'arguments'.
* gnu/packages/games.scm (pioneer): Remove 'bootstrap.
* gnu/packages/gnome.scm (vte-ng, byzanz): Replace 'bootstrap.
(arc-theme): Remove 'arguments'.
(faba-icon-theme): Remove 'bootstrap.
(arc-icon-theme): Remove 'arguments'.
* gnu/packages/gnunet.scm (guile-gnunet): Likewise.
* gnu/packages/gtk.scm (guile-rsvg): Likewise.
* gnu/packages/guile.scm (mcron2): Remove 'bootstrap.
(guile-bash): Remove #:phases.
(guile-git): Remove 'bootstrap.
(guile-syntax-highlight): Remove 'arguments'.
(guile-sjson): Likewise.
* gnu/packages/java.scm (classpath-devel): Remove 'bootstrap.
* gnu/packages/kodi.scm (libdvdnav/kodi)
(libdvdread/kodi, libdvdcss/kodi): Likewise.
* gnu/packages/libreoffice.scm (hunspell): Remove 'arguments'.
* gnu/packages/libusb.scm (hidapi): Likewise.
* gnu/packages/linux.scm (bridge-utils): Rename 'bootstrap' to
'patch-stuff'; move it before 'bootstrap', without autoreconf
invocation.
(eudev): Rename 'bootstrap' to 'patch-file-names', without 'autogen.sh'
invocation; move it before 'bootstrap.
(gpm): Replace 'bootstrap'.
(f2fs-tools): Remove 'arguments'.
(rng-tools): Remove #:phases.
* gnu/packages/messaging.scm (hexchat): Rename 'bootstrap' to
'copy-intltool-makefile'; remove "autoreconf" invocation and move before
'bootstrap'.
(libmesode): Remove 'arguments'.
(libstrophe): Likewise.
* gnu/packages/microcom.scm (microcom): Likewise.
* gnu/packages/networking.scm (libnet): Remove 'bootstrap.
* gnu/packages/onc-rpc.scm (libnsl): Remove 'arguments'.
* gnu/packages/package-management.scm (guix): Replace 'bootstrap.
* gnu/packages/sawfish.scm (librep): Remove 'arguments'.
* gnu/packages/version-control.scm (findnewest): Likewise.
* gnu/packages/video.scm (liba52, handbrake, motion): Replace
'bootstrap.
* gnu/packages/web.scm (fcgiwrap): Remove #:phases.
(tidy): Replace 'bootstrap.
(gumbo-parser): Remove #:phases.
* gnu/packages/wget.scm (wget2): Replace 'bootstrap.
* gnu/packages/wm.scm (i3lock-color): Remove #:phases.
* gnu/packages/xdisorg.scm (xclip): Likewise.
* gnu/packages/xml.scm (libxls): Replace 'bootstrap'.
* gnu/packages/xorg.scm (xf86-video-freedreno)
(xf86-video-intel): Remove #:phases.
* gnu/packages/zile.scm (zile-on-guile): Replace 'bootstrap.
2018-03-11 22:04:40 +01:00
Ludovic Courtès 5c6391b33a
utils: Add 'false-if-file-not-found'.
* guix/build/utils.scm (false-if-file-not-found): New macro.
2018-03-11 22:04:39 +01:00
Ludovic Courtès 33286075b9
hash: Add 'sha1'.
* guix/hash.scm (GCRY_MD_SHA1): New macro.
(bytevector-hash): New procedure.
(sha256): Express in terms of 'bytevector-hash'.
(sha1): New procedure.
* tests/hash.scm ("sha1, empty", "sha1, hello"): New tests.
2018-03-08 11:56:20 +01:00
Ludovic Courtès 16de45557f
ui: 'display-hint' preserves Texinfo formatting.
The previous method would mess up with @example formatting, for
instance.

* guix/ui.scm (display-hint): Parameterize '%text-width' instead of
using 'fill-paragraph'.
2018-03-07 11:22:42 +01:00
Ludovic Courtès e1ba6d49ea
ui: Display fix hints in the case where we have location info.
* guix/ui.scm (call-with-error-handling): Display fix-hints in the
error + message case.
2018-03-07 11:22:42 +01:00
Ludovic Courtès ca23693d28
linux-initrd: Factorize 'check-device-initrd-modules'.
* gnu/system/mapped-devices.scm (check-device-initrd-modules): Move to...
* gnu/system/linux-initrd.scm (check-device-initrd-modules): ... here.
New procedure.
* po/guix/POTFILES.in: Add it.
* guix/scripts/system.scm (check-initrd-modules)[check-device]: Remove.
Use 'check-device-initrd-modules' instead.
2018-03-07 11:22:42 +01:00
Ludovic Courtès 7949c140b1
ui: 'load*' no longer fails on Guile 2.2.3 upon EACCES or similar.
Previously, if ~/.cache was not write-accessible, 'guix' would exit with
code 1 without printing any message.  That was because the 'make-stack'
call would fail since the exception (a 'system-error) came from
'compile-file', which was called at a point where TAG wasn't installed
yet.  Secondly, to mimick auto-compilation behavior, we just swallow
'system-error raised by 'compile-file'.

Reported by Clément Lassieur.

* guix/ui.scm (load*): Move 'compile-file' call in the dynamic extent of
TAG.  Catch 'system-error around it and ignore it.
2018-03-06 10:50:39 +01:00
Ludovic Courtès f44c7aaccd
ui: Better workaround for lack of '%fresh-auto-compile' on 2.2.3.
Fixes <https://bugs.gnu.org/29226> for the most part.

* guix/ui.scm (load*): Add call to 'compile-file' on 2.2.3.
2018-03-05 10:54:45 +01:00
Danny Milosavljevic 329dabe13b
git-download: Fetch only the required commit, if possible.
* guix/build/git.scm (git-fetch): Fetch only the required commit, if possible.
2018-03-04 14:43:38 +01:00
Clément Lassieur bdcf0e6fd4
services: messaging: Prosody config supports file-like objects.
* doc/guix.texi (Messaging Services): Update accordingly.
* gnu/services/configuration.scm (serialize-configuration,
serialize-maybe-stem, serialize-package): Return strings or string-valued
gexps (these procedures were only used for their side-effects).
* gnu/services/messaging.scm (serialize-field, serialize-field-list,
enclose-quotes, serialize-raw-content, serialize-ssl-configuration,
serialize-virtualhost-configuration-list,
serialize-int-component-configuration-list,
serialize-ext-component-configuration-list,
serialize-virtualhost-configuration, serialize-int-component-configuration,
serialize-ext-component-configuration, serialize-prosody-configuration):
Return strings or string-valued gexps and stop printing.
(prosody-activation): Use SERIALIZE-PROSODY-CONFIGURATION's return value with
MIXED-TEXT-FILE instead of using its output with PLAIN-FILE.
(serialize-non-negative-integer, serialize-non-negative-integer-list): Convert
numbers to strings.
(file-object?, serialize-file-object, file-object-list?,
serialize-file-object-list): New procedures.
(ssl-configuration)[capath, cafile], (prosody-configuration)[plugin-paths,
groups-file]: Replace FILE-NAME with FILE-OBJECT.
* guix/gexp.scm (file-like?): New exported procedure.
2018-03-03 18:21:52 +01:00
Ludovic Courtès 424cea8083
guix system: Check for the lack of modules in the initrd.
* guix/scripts/system.scm (check-mapped-devices): Take an OS instead of
a list of <mapped-device>.  Pass #:needed-for-boot? and #:initrd-modules
to CHECK.
(check-initrd-modules): New procedure.
(perform-action): Move 'check-mapped-devices' call first.  Add call to
'check-initrd-modules'.
* gnu/system/mapped-devices.scm (check-device-initrd-modules): New
procedure.
(check-luks-device): Add #:initrd-modules and #:needed-for-boot?.  Use
them to call 'check-device-initrd-modules'.
2018-03-02 13:53:15 +01:00
Ludovic Courtès f14c933df1
Add (guix glob).
* guix/glob.scm, tests/glob.scm: New files.
* Makefile.am (MODULES): Add guix/glob.scm.
(SCM_TESTS): Add tests/glob.scm.
2018-03-02 13:46:25 +01:00
Mike Gerwitz e37944d827
environment: Add --user.
This change allows overriding the home directory of all filesystem mappings to
help hide the identity of the calling user in a container.

* doc/guix.texi (Invoking guix environment)[--container]: Mention --user.
[--user]: Add item.
* guix/scripts/environment.scm (show-help): Add --user.
(%options): Add --user.
(launch-environment/container) Add 'user' parameter.  Update doc.  Override
'user-mappings' using 'override-user-mappings'.  Consider override for chdir.
(mock-passwd, user-override-home, overrid-euser-dir): New procedures.
(guix-environment): Disallow --user without --container.  Provide user to
'launch-environment/container'.
* tests/guix-environment.sh: Add user test.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2018-03-02 11:55:43 +01:00
Mike Gerwitz 07ec349229
environment: Add --link-profile.
This change is motivated by attempts to run programs (like GNU IceCat) within
containers.  The 'fontconfig' program, for example, is configured explicitly
to check ~/.guix-profile for additional fonts.

There were no existing container tests in 'tests/guix-environment.sh', but I
added one anyway for this change.

* doc/guix.texi (Invoking guix environment): Add '--link-profile'.
* guix/scripts/environment.scm (show-help): Add '--link-profile'.
(%options): Add 'link-profile' as '#\P', assigned to 'link-profile?'.
(link-environment): New procedure.
(launch-environment/container): Use it when 'link-profile?'.
[link-profile?]: New parameter.
(guix-environment): Leave when '--link-prof' but not '--container'.  Add
'#:link-profile?' argument to 'launch-environment/container' application.
* tests/guix-environment-container.sh: New '--link-profile' test.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2018-03-02 11:55:42 +01:00
Ludovic Courtès b402f4ee34
import: cpan: Drop "v" prefix from version strings.
Fixes <https://bugs.gnu.org/30641>.
Reported by Oleg Pykhalov <go.wigust@gmail.com>.

* guix/import/cpan.scm (cpan-version): Drop the "v" prefix when it is
there.
2018-03-01 14:54:55 +01:00
Ludovic Courtès 435603a1d6
profiles: 'manifest-add' truly deletes duplicate entries.
Fixes <https://bugs.gnu.org/30569>.
Reported by Andreas Enge <andreas@enge.fr>.

* guix/profiles.scm (manifest-add): Don't append ENTRIES as is.
Instead, cons each element of ENTRIES as we fold over it.
Remove unneeded ellispes in 'match' patterns.
2018-03-01 14:00:21 +01:00
Ludovic Courtès 297602513b
build-system/trivial: Add support for #:allowed-references.
* guix/build-system/trivial.scm (lower): Add #:allowed-references and
keep it in the 'arguments' field.
(trivial-build): Add #:allowed-references.  Add
'canonicalize-reference'.  Pass #:allowed-references to
'build-expression->derivation'.
(trivial-cross-build): Likewise.
* tests/packages.scm ("trivial with #:allowed-references"): New test.
2018-02-28 22:47:42 +01:00
Ludovic Courtès 0fb405796c
guix package: '--search' no longer shows superseded packages.
Fixes <https://bugs.gnu.org/30566>.
Reported by Björn Höfling <bjoern.hoefling@bjoernhoefling.de>.

* guix/scripts/package.scm (find-packages-by-description): Ignore
superseded packages.
* tests/guix-package.sh: Add test.
2018-02-27 15:46:56 +01:00
Ludovic Courtès 1d84d7bf60
build: Require Guile >= 2.0.13.
* README, configure.ac, doc/guix.texi (Requirements): Increase minimum
Guile version from 2.0.9 to 2.0.13.
* config-daemon.ac: Remove use of 'GUIX_CHECK_UNBUFFERED_CBIP'.
* m4/guix.m4 (GUIX_CHECK_UNBUFFERED_CBIP): Remove.
* guix/build/download.scm (current-http-proxy): Remove.
* guix/build/syscalls.scm (%libc-errno-pointer, errno): Remove.
(syscall->procedure): Use #:return-errno unconditionally.
* guix/hash.scm (open-sha256-input-port)[unbuffered]: Remove outdated
comment.
* guix/http-client.scm (when-guile<=2.0.5-or-otherwise-broken): Remove.
<top level>: Remove 'when-guile<=2.0.5-or-otherwise-broken' block.
* guix/scripts/substitute.scm (fetch): Remove 'guile-version>?'
conditional.
* tests/hash.scm (supports-unbuffered-cbip?): Remove.
<top level>: Remove 'test-skip' call.
2018-02-26 18:19:34 +01:00
David Thompson 267379f852
environment: Add --manifest option.
* guix/scripts/environment.scm (show-help, %options): Add -m/--manifest.
(options/resolve-packages): Handle manifests.
* tests/guix-envronment.sh: Add a test.
* doc/guix.texi (Invoking guix environment): Document it.
2018-02-21 22:16:38 -05:00
Mark H Weaver 150062f190
Merge branch 'master' into core-updates 2018-02-16 13:14:26 -05:00
Ludovic Courtès 5e2495d09e
import: utils: 'alist->package' allows false license.
Reported by <pkill9@runbox.com>.
Fixes <https://bugs.gnu.org/30470>.

* guix/import/utils.scm (alist->package): Check whether 'license' is
false and set the 'license' field to #f in this case.
* tests/import-utils.scm ("alist->package with false license"): New
test.
2018-02-16 11:10:12 +01:00
Ludovic Courtès 485d355cad
pack: Adjust '--manifest' documentation.
Reported by Konrad Hinsen <konrad.hinsen@fastmail.net>.

* guix/scripts/pack.scm (show-help): Adjust --manifest documentation.
2018-02-16 00:45:29 +01:00
Oleg Pykhalov 06a9dc2fd0
union: Wrap collisions with newlines.
* guix/build/union.scm (union-build): Wrap collisions with newlines.
2018-02-15 20:51:51 +03:00
Konrad Hinsen 4a979afe1b
pack: Add '--manifest'.
* guix/scripts/pack.scm (%options, show-help): Add --manifest.
(guix-pack)[manifest-from-args]: New procedure.
Use it.
* doc/guix.texi (Invoking guix pack): Document --manifest.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2018-02-15 15:40:36 +01:00
Mark H Weaver a7fb298665
Merge branch 'master' into core-updates 2018-02-11 04:05:07 -05:00
Björn Höfling 0a574d7bf7
licenses: Add W3C license.
* gnu/license.scm (w3c): New variable.
2018-02-10 19:03:57 +01:00
Ludovic Courtès 8446dc5a36
ssh: Work around 'select' bug in Guile.
Fixes <https://bugs.gnu.org/30365>.

* guix/ssh.scm (remote-daemon-channel)[redirect]: Define 'select*' and
use it.
2018-02-09 11:23:27 +01:00
Mark H Weaver efe2a2833c
Merge branch 'master' into core-updates 2018-02-09 01:46:34 -05:00
Maxim Cournoyer 7c599eac0c
emacs-build-system: Do not patch files containing NULs.
This is a temporary workaround for <https://bugs.gnu.org/30116>, where
'substitute*' throws on files containing NUL characters.

* guix/build/emacs-build-system.scm (patch-el-files): Filter out elisp files
that contain NUL characters.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2018-02-05 16:54:27 +01:00
Maxim Cournoyer 58b6812fd4
emacs-build-system: Reinstate the check phase.
* guix/build/emacs-build-system.scm (%standard-phases): Reinstate the check
phase from the gnu-build-system.
* guix/build-system/emacs.scm (emacs-build)[tests?]: But do not enable it by default.
[parallel-tests?]: Add argument.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2018-02-05 16:54:27 +01:00
Maxim Cournoyer b7dee6a0b8
emacs-build-system: Add set-emacs-load-path phase.
This generalizes the mechanism by which the Emacs dependencies are made visible,
so that any build phase can make use of them.

* guix/build/emacs-build-system.scm (%legacy-install-suffix): New variable.
(%install-suffix): Redefine in terms of %legacy-install-suffix.
(set-emacs-load-path): Add new phase used for dependency resolution.
(build): Remove ad-hoc dependency discovery mechanism.
(emacs-input->el-directory): Add new procedure.
(emacs-inputs-el-directories): Use it.
(package-name-version->elpa-name-version): Fix typo.
(%standard-phases): Include the new `set-emacs-load-path' phase. Refactor to
make the ordering of the phases clearer.
* guix/build/emacs-utils.scm (emacs-byte-compile-directory): Remove the
optional `dependency-dirs' argument, which is now obsoleted by the
`set-emacs-load-path' phase.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2018-02-05 16:54:27 +01:00
Marius Bakke bee7bb315c
Merge branch 'master' into core-updates 2018-02-01 13:18:47 +01:00
Maxim Cournoyer 8fbc1a2208
download: Fix return value of the url-fetch procedure.
Fixes <https://bugs.gnu.org/30270>.
Regression was introduced by commit 347fa4aebf.

* guix/build/download.scm (url-fetch): Return `file' instead of #t upon success.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2018-01-28 23:14:55 +01:00
Mark H Weaver b89d8a4271
Merge branch 'master' into core-updates 2018-01-26 00:15:26 -05:00
Tobias Geerinckx-Rice 980bcecdab
build-system/dub: Fix typo.
* guix/build/dub-build-system.scm (grep, grep*): Correct ‘occurence’.
2018-01-26 00:09:19 +01:00
Mark H Weaver a102d359a6
Merge branch 'master' into core-updates 2018-01-23 17:01:07 -05:00
Ludovic Courtès 33988f9b58
publish: Restore gzip compression in cache-less mode.
Fixes <https://bugs.gnu.org/30184>.
Regression introduced in 297e04d660.
Reported by Christopher Baines <mail@cbaines.net>.

* guix/scripts/publish.scm (nar-response-port): Add 'compression'
parameter and honor it.
(http-write): Get 'x-nar-compression' from the initial RESPONSE.
2018-01-22 11:15:50 +01:00
Ludovic Courtès 33033a620e
services: shepherd: Make 'shepherd-configuration-file' non-monadic.
Suggested by atw on #guix.

* gnu/services/shepherd.scm (shepherd-service-file): Use 'scheme-file'
instead of 'gexp->file'.
(shepherd-configuration-file): Likewise, and adjust to non-monadic
style.
(shepherd-boot-gexp): Adjust accordingly.
* guix/scripts/system.scm (upgrade-shepherd-services): Use
'lower-object' in addition to 'shepherd-service-file'.
2018-01-21 00:24:02 +01:00
Mark H Weaver e074a655dd
Merge branch 'master' into core-updates 2018-01-19 23:59:20 -05:00
Ludovic Courtès 20fe727105
packages: 'package-mapping' maps replacement.
* guix/packages.scm (package-mapping): Apply PROC to 'replacement' as well.
2018-01-20 00:45:29 +01:00
Tobias Geerinckx-Rice 162a137400
gnu: Consistently Write ‘file system(s)’.
It is the GNU way.

* doc/guix.texi (Build Systems, DNS Services): Write ‘file system(s)’.
* gnu/build/vm.scm (create-ext-file-system, create-fat-file-system):
Likewise.
* gnu/packages/backup.scm (dirvish, rsnapshot)[description]: Likewise.
* gnu/packages/check.scm (python-testpath)[description]: Likewise.
* gnu/packages/disk.scm (pydf)[description]: Likewise.
* gnu/packages/file-systems.scm (disorderfs)[synopsis, description]: Likewise.
(glusterfs)[description]: Likewise.
* gnu/packages/haskell.scm (ghc-directory, ghc-system-fileio-bootstrap)
(ghc-system-fileio)[synopsis]: Likewise.
(ghc-fsnotify)[description]: Likewise.
* gnu/packages/linux.scm (proot)[description]: Likewise.
(jmtpfs)[synopsis, description]: Likewise.
* gnu/packages/mate.scm (caja, caja-extensions)[description]: Likewise.
* gnu/packages/storage.scm (ceph)[description]: Likewise.
* gnu/packages/sync.scm (lsyncd)[description]: Likewise.
* gnu/packages/syncthing.scm (syncthing)[synopsis]: Likewise.
(go-github-com-zillode-notify)[description]: Likewise.
* gnu/services/nfs.scm (pipefs-service-type): Likewise.
* guix/scripts/system.scm (perform-action): Likewise.
2018-01-19 17:28:31 +01:00
Ludovic Courtès 8102cf0b37
gnu: commencement: Memoize 'linux-libre-headers-boot0'.
Fixes <https://bugs.gnu.org/30155>.

The effect can be seen in the package graph produced by:

  guix graph -e '(@@ (gnu packages commencement) static-bash-for-glibc)'

This reduces the number of "duplicate" nodes in this graph, i.e.,
distinct package objects that correspond to the same derivation (objects
that are not 'eq?' but semantically equal.)

* gnu/packages/commencement.scm (linux-libre-headers-boot0): Make an
'mlambda' instead of a 'lambda'.
(hurd-core-headers-boot0): Ditto.
2018-01-18 16:14:06 +01:00
Ludovic Courtès 92423868bc
ui: Disable '%fresh-auto-compile' only for Guile 2.2.3.
Mitigates <https://bugs.gnu.org/29881>.
Reported by Diego Nicola Barbato <dnbarbato@posteo.de>.

* guix/ui.scm (load*): Unset '%fresh-auto-compile' only on Guile 2.2.3.
2018-01-15 23:29:33 +01:00
Ludovic Courtès 309121a113
offload: Look at machine loads for the past minute.
Previously we were looking at the load of the past 5 minutes, which
means that, after a build, we could end up waiting for 5 minutes for
that metric to be low enough.

* guix/scripts/offload.scm (machine-load): Compute RAW based on ONE, not
FIVE.
2018-01-15 23:29:33 +01:00
Danny Milosavljevic b640370d82
ruby-build-system: Fix build error.
* gnu/build/ruby-build-system.scm: Import (ice-9 rdelim).

Follow-up to d9df4bf055.
2018-01-15 16:56:03 +01:00
Christopher Baines 2c2ec3d04a
ruby-build-system: Add a new wrap phase.
Wrap files in bin/ and sbin/ with the location of the gem itself and the
location of any other gems in use (GEM_PATH). This ensures that the bin files
will run with the right environment when executed.

It does however mean that native-inputs will also get wrapped up in any
binaries, which is not good, as it increases the size of the closure, and
risks this code being used at runtime.

* guix/build/ruby-build-system.scm (wrap): New procedure.
  (%standard-phases): Add the wrap phase.
2018-01-14 22:16:20 +00:00
Christopher Baines d9df4bf055
ruby-build-system: Add wrap-ruby-program.
A modified copy of wrap-program from (guix build utils). The wrap-program
procedure doesn't work well for Ruby scripts, as it breaks using the -S flag
with ruby to execute the script, as when -S is passed to ruby, it expects the
script on the PATH to use ruby in the shebang, and not bash.

Therefore, to wrap the program, but keep the shebang as ruby, wrap it with a
ruby script instead.

wrap-ruby-program uses .real/foo rather than .foo-real, as this might be
neater. This procedure also includes a call to Gem.clear_paths to make it
possible to set the GEM_PATH through this method, and for it to take effect.

* gnu/build/ruby-build-system.scm (wrap-ruby-program): New procedure.
2018-01-14 22:16:15 +00:00
Christopher Baines 3cb3fa6747
guix: build: ruby-build-system: Install to the vendor directory
* guix/build/ruby-build-system.scm (install): Install gems to the vendor
  directory, rather than the GEM_HOME. The vendor directory does not include
  the version of ruby used to install the gem in the path, which makes it
  easier to add it to the GEM_PATH for all versions of ruby to use.
  (gem-home): Remove procedure.
* gnu/packages/ruby.scm (ruby, ruby-2.1)[native-search-paths]: Switch to
  lib/ruby/vendor_ruby.
  (ruby-1.8)[native-search-paths]: Remove native-search-paths.
  (gem-directory): Remove procedure.
  (ruby-ansi, ruby-ae)[arguments]: Remove use of gem-directory.
  (ruby-metaclass, ruby-instantiator, ruby-introspection, ruby-mocha,
  ruby-nokogiri, ruby-minitest-tu-shim, ruby-redcloth)[arguments]: Remove use
  of gem-home.
  (ruby-git, ruby-httpclient)[arguments]: Remove use of GEM_HOME.
* gnu/packages/databases.scm (es-dump-restore)[arguments]: Remove use of
  GEM_HOME.
2018-01-14 22:16:08 +00:00
Ludovic Courtès 0dcf675c56
ssh: Switch back to 'get-bytevector-some'.
This mostly reverts 17af5d51de.
Suggested by Andy Wingo <wingo@igalia.com>.

* guix/ssh.scm (remote-daemon-channel)[redirect]: Remove 'read!' FFI
hack.  Use buffered ports.
2018-01-12 23:41:15 +01:00
Ludovic Courtès 4eb0f9ae05
offload: 'test' reports Guile and module errors more nicely.
Fixes <https://bugs.gnu.org/26008>.
Reported by Myles English <mylesenglish@gmail.com>.

* guix/ssh.scm (retrieve-files*): Move error reporting to...
(report-guile-error, report-module-error): ... here.  New procedures.
* guix/scripts/offload.scm (assert-node-repl): Use 'report-guile-error'.
(assert-node-has-guix): Explicitly check for 'use-modules' first.  Use
'report-module-error'.
2018-01-12 23:41:15 +01:00
Ludovic Courtès 5a5e34e358
offload: 'test' gracefully handles 'node-repl-error'.
Fixes <https://bugs.gnu.org/28057>.
Reported by Ricardo Wurmus <rekado@elephly.net>.

* guix/scripts/offload.scm (assert-node-has-guix): Catch
'node-repl-error' and call 'leave'.
2018-01-12 23:41:15 +01:00
Ludovic Courtès 0e3c8528af
ssh: 'retrieve-files' now only retrieves what's missing.
* guix/ssh.scm (retrieve-files): Remove the subset of FILES that is
valid in LOCAL.
(store-export-channel): Add comment.
2018-01-12 23:41:15 +01:00
Ludovic Courtès d06d54e338
offload: Fix regression in file retrieval.
This fixes a regression in 'retrieve-files*' introduced in
896fec476f, whereby (guix scripts offload)
would not read the initial sexp now sent by the remote host via
'store-export-channel'.  This would effectively prevent file retrieval
entirely when offloading.

* guix/ssh.scm (retrieve-files*): New procedure, like former
'retrieve-files' but with an extra #:import parameter.
(retrieve-files): Rewrite in terms of 'retrieve-files*'.
(file-retrieval-port): Make private.
* guix/scripts/offload.scm (transfer-and-offload): Pass #:import to
'retrieve-files*'.
(retrieve-files*): Remove.
2018-01-12 23:41:15 +01:00
Leo Famulari 4adb40bffc
Merge branch 'master' into core-updates 2018-01-11 14:22:50 -08:00
Ludovic Courtès e21888dd0d
derivations: Fix typo in docstring.
* guix/derivations.scm (derivation-prerequisites): Fix typo in docstring.
2018-01-11 00:00:03 +01:00
Ludovic Courtès 55f40fdbcd
ssh: Pass an empty "exceptfds" set to 'select'.
Previously the redirect code could end up exiting prematurely because of
an uninteresting "exceptional condition" on the socket (info "(libc)
Waiting for I/O").

* guix/ssh.scm (remote-daemon-channel): Pass the empty list as the third
argument to 'select'.  It was a mistake to pass a non-empty list there
in the first place.
2018-01-11 00:00:03 +01:00
Ludovic Courtès 39d1e9654c
store: Fix potential over-reads in 'import-paths'.
Previously 'process-stderr' would always pass a bytevector of MAX-LEN to
then daemon in the %stderr-read case (i.e., 'import-paths'), instead of
LEN (where LEN <= MAX-LEN).

In practice the extra bytes didn't cause a protocol violation or
anything because they happen at the end of the stream, which typically
contains the canonical sexp of the signature, and the extra zeros were
just ignored.

* guix/serialization.scm (write-bytevector): Add optional 'l' parameter
and honor it.
* guix/store.scm (process-stderr): Pass LEN to 'write-bytevector'.
2018-01-11 00:00:02 +01:00
Ludovic Courtès 17af5d51de
ssh: Work around 'get-bytevector-some' bug.
This works around <https://bugs.gnu.org/30066> and noticeably improves
performance when using GUIX_DAEMON_SOCKET=ssh://HOST (the redirect code
was transferring data to guix-daemon one byte at a time!).

* guix/ssh.scm (remote-daemon-channel)[redirect]: Define 'read!' and use
it instead of 'get-bytevector-some'.
2018-01-11 00:00:02 +01:00
Tobias Geerinckx-Rice 8286215326
gnu: Use one spelling for ‘copyright’.
* gnu/packages/gtk.scm: Standardise on ‘copyright’ spelling in
file headers.
* gnu/packages/pdf.scm: Likewise.
* gnu/packages/perl-check.scm: Likewise.
* gnu/packages/perl.scm: Likewise.
* guix/import/gem.scm: Likewise.
* guix/import/hackage.scm: Likewise.
2018-01-10 18:21:20 +01:00
Ludovic Courtès 297e04d660
publish: Remove "Guix-Nar-Compression" header from responses.
This was harmless but non-compliant and unnecessary.

* guix/scripts/publish.scm <top level>: Rename "Guix-Nar-Compression" to
"X-Nar-Compression" as should have always been.
(render-nar, nar-response-port): Adjust accordingly.
(strip-headers): New procedure.
(sans-content-length, with-content-length): Use it.
2018-01-09 23:39:02 +01:00
Ludovic Courtès 1e63ecee0b
import: crate: Gracefully deal with missing license info.
Reported by Fis Trivial <ybbs.daans@hotmail.com>.
Fixes <https://bugs.gnu.org/28987>.

* guix/import/crate.scm (crate-fetch): Check whether the "license" info
is present.
2018-01-08 11:45:35 +01:00
Ludovic Courtès c04ffadbed
publish: Publish build logs.
* guix/scripts/publish.scm (render-log-file): New procedure.
(make-request-handler): Add "log" case.
* tests/publish.scm ("/log/NAME")
("/log/NAME not found"): New tests.
* doc/guix.texi (Invoking guix publish): Document /log URLs.
2018-01-07 23:51:46 +01:00
Ludovic Courtès 152b7beeac
publish: Use 'x-raw-file' internal response header.
This adjusts the workaround for <http://bugs.gnu.org/21093> so that it's
not limited to a single content-type.

* guix/scripts/publish.scm (render-nar/cached): Add the 'x-raw-file'
header on the response.
(render-content-addressed-file): Likewise.
(with-content-length): Remove the 'x-raw-file' header.
(http-write): Instead of dispatching on 'application/octet-stream',
check whether 'x-raw-file' is set to determine whether to spawn a
thread.
2018-01-07 23:47:22 +01:00
Ludovic Courtès 29a6866886
daemon: Add gzip log compression.
* nix/nix-daemon/guix-daemon.cc (GUIX_OPT_LOG_COMPRESSION): New macro.
(options): Mark "disable-log-compression" as hidden and add
"log-compression".
(parse_opt): Handle GUIX_OPT_LOG_COMPRESSION.
* nix/libstore/build.cc (DerivationGoal): Add 'gzLogFile'.
(openLogFile): Initialize it when 'logCompression' is COMPRESSION_GZIP.
(closeLogFile, handleChildOutput): Honor 'gzLogFile'.
* nix/libstore/globals.hh (Settings)[compressLog]: Remove.
[logCompression]: New field.
(CompressionType): New enum.
* nix/libstore/globals.cc (Settings::Settings): Initialize it.
(update): Remove '_get' call for 'compressLog'.
* nix/local.mk (guix_daemon_LDADD, guix_register_LDADD): Add -lz.
* guix/store.scm (log-file): Handle '.gz' log files.
* tests/guix-daemon.sh: Add test with '--log-compression=gzip'.
* doc/guix.texi (Invoking guix-daemon): Adjust accordingly.
* config-daemon.ac: Check for libz and zlib.h.
2018-01-07 23:47:22 +01:00
Ludovic Courtès 896fec476f
ssh: Improve error reporting when retrieving files.
'guix copy --from' now reports messages much more useful than "failed to
retrieve files".

* guix/ssh.scm (store-export-channel)[export]: Wrap 'use-modules' in
'catch' and 'with-store' in 'guard'.  Check for invalid items.  Write a
status sexp on stdout.
(raise-error): New macro.
(retrieve-files): Read the initial status sexp and report errors
accordingly.
2018-01-07 23:46:39 +01:00
Ludovic Courtès 4a8d536ffe
ui: Display hints that come along with '&message' conditions.
* guix/ui.scm (call-with-error-handling): Add case for message and
fix-hint?.
2018-01-07 23:46:39 +01:00
Ludovic Courtès f396611776
publish: Save bandwidth on narinfo 404s.
This saves 18 bytes on each 404 narinfo response.

* guix/scripts/publish.scm (render-narinfo): Pass #:phrase to
'not-found'.
(render-narinfo/cached): Likewise.
2018-01-06 14:43:45 +01:00
Leo Famulari 4ed41f472b
Merge branch 'master' into core-updates 2018-01-03 14:18:01 -05:00
Ludovic Courtès 92f36323c4
ui: It's 2018 now!
* guix/ui.scm (show-version-and-exit): Change year to 2018.
2018-01-01 18:22:28 +01:00
Danny Milosavljevic d1a08062c6
build-system/glib-or-gtk: Don't generate 'icon-theme.cache'.
* guix/build-system/glib-or-gtk.scm (glib-or-gtk-build): Don't generate
'icon-theme.cache'.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2018-01-01 18:09:05 +01:00
Efraim Flashner 23de2e1d5f
Merge remote-tracking branch 'origin/master' into core-updates 2017-12-31 14:10:25 +02:00
Danny Milosavljevic 6a1a69679d
build: dub-build-system: Make builds reproducible.
* guix/build/dub-build-system.scm (build): Make reproducible.
(check): Make reproducible.
2017-12-31 00:29:59 +01:00
Ludovic Courtès 3e30cdf1c3
guix build: Support '--with-source=PACKAGE@VERSION=URI'.
* guix/scripts/build.scm (numeric-extension?, tarball-base-name): New
procedures, formerly in 'package-with-source'.
(transform-package-source)[new-sources]: Look for '=' in URI.  Each
element of the list of now a (PKG VERSION SOURCE) tuple.
Pass VERSION to 'package-with-source'.
(package-with-source): Add 'version' parameter and honor it.
* tests/scripts-build.scm ("options->transformation, with-source, PKG=URI")
("options->transformation, with-source, PKG@VER=URI"): New tests.
* doc/guix.texi (Package Transformation Options): Document the new
forms.
2017-12-23 00:05:05 +01:00
Ludovic Courtès 893d0b0bf3
guix system: Check mapped devices upon 'init' and 'reconfigure'.
* guix/scripts/system.scm (check-mapped-devices): New procedure.
(perform-action): Add call to 'check-mapped-devices'.
2017-12-22 09:48:41 +01:00
Ricardo Wurmus 47ebb1a850
guix: Exclude broken symlinks from man files.
* guix/man-db.scm (man-files): Remove broken symlinks from list of man pages.
2017-12-22 00:06:37 +01:00
Leo Famulari f76fc96866
Merge branch 'master' into core-updates 2017-12-21 13:58:35 -05:00
Ludovic Courtès d2b5ede053
build-system/gnu: Check whether the cross-libc has a "static" output.
This is a followup to 614fffe427, which
broke cross-compilation to i686-w64-mingw32.

* guix/build-system/gnu.scm (standard-cross-packages): Add
"cross-libc:static" only when LIBC has a "static" output.
2017-12-21 10:46:24 +01:00
Ludovic Courtès 614fffe427
build-system/gnu: Add the "static" output of libc in cross environments.
Fixes a regression whereby the host libc.a would be missing when
cross-compiling.

This is a followup to commit 6dff905e51.

* guix/build-system/gnu.scm (standard-cross-packages): Add the
"cross-libc:static".
2017-12-20 14:56:47 +01:00
Efraim Flashner 5857a0658a
guix: cmake-build-system: Install libraries to /lib.
* guix/build/cmake-build-system.scm (configure): Add flag to always
install libraries in /lib.
2017-12-19 19:52:00 +02:00
Ludovic Courtès 618f0582b4
upstream: Reject bogus archive type guesses.
This would crash 'guix refresh -u' with source URLs ending in
"…/v1.2.3".

* guix/upstream.scm (package-update): Be stricter when determining
ARCHIVE-TYPE.
2017-12-19 18:16:47 +01:00
Marius Bakke 32cd878be0
Merge branch 'master' into core-updates 2017-12-19 01:42:40 +01:00
Ludovic Courtès 3caab236c4
guix gc: '--verify=foo' is reported as an error.
Fixes <https://bugs.gnu.org/29761>.
Reported by Martin Castillo <castilma@uni-bremen.de>.

* guix/scripts/gc.scm (argument->verify-options): New procedure.
(%options) ["verify"]: Adjust to use it.
* tests/guix-gc.sh: Add test.
2017-12-18 23:17:30 +01:00
Ludovic Courtès ab25eb7caa
gexp: 'computed-file' has a new #:guile parameter.
* guix/gexp.scm (<computed-file>)[guile]: New field.
(computed-file): Add #:guile.
(computed-file-compiler): Honor 'guile'.
2017-12-18 17:52:58 +01:00
Ludovic Courtès 399993f804
ui: Non-zero exit for compound '&message' and '&error-location' conditions.
* guix/ui.scm (call-with-error-handling): When both 'message?' and
'error-location?' are true, add call to 'exit'.
2017-12-18 17:52:58 +01:00
Ludovic Courtès 16613d230b
man-db: Autoload (gdbm).
Fixes 'guix pull'.
Reported by ofosos on #guix.

* guix/man-db.scm: Use 'module-autoload!' instead of 'module-use!'.
so that (gdbm) is not loaded until we need it.
2017-12-17 21:38:03 +01:00
Ludovic Courtès 58d9e71bf1
gnu-maintenance: 'latest-ftp-release' ignores "unstable" directories.
* guix/gnu-maintenance.scm (latest-ftp-release): Filter out "unstable"
directories.
2017-12-17 16:52:27 +01:00
Ludovic Courtès b8396f96bf
profiles: Use (guix man-db) to create the manual database.
Fixes <https://bugs.gnu.org/29654>.
Reported by Ruud van Asseldonk <dev+guix@veniogames.com>.

This also speeds up database creation compared to "man-db
--create" (less than half the time, on a warm cache, for 19k pages.)

* guix/man-db.scm: New file.
* Makefile.am (MODULES_NOT_COMPILED): Add it.
* guix/profiles.scm (manual-database): Rewrite to use (guix man-db).
2017-12-17 16:19:00 +01:00
Ricardo Wurmus dafc3dafea
guix: offload: Add "status" sub-command.
* guix/scripts/offload.scm (check-machine-status): New procedure.
(guix-offload): Call it when the argument is "status".
* doc/guix.texi (Daemon Offload Setup): Document it.
2017-12-16 21:51:33 +01:00
Mathieu Othacehe 5a72ddf176
scripts: system: Add --expression option.
* guix/scripts/system.scm (show-help): Add expression option.
(%options): Ditto.
(guix-system): Allow commands taking a file as an argument to use an
expression instead.
(process-action): Read operating-system from expression or file.
* doc/guix.texi (Invoking guix system): Introduce the expression option.
2017-12-15 12:15:15 +01:00
Ludovic Courtès 3e0a42973b
progress: Rename 'erase-in-line' to 'erase-current-line'.
Suggested by Danny Milosavljevic <dannym@scratchpost.org>.

* guix/progress.scm (erase-in-line): Rename to...
(erase-current-line): ... this.  Adjust callers.
2017-12-15 11:53:21 +01:00
Mathieu Othacehe e224820386
bootloader: Factorize write-file-on-device.
* gnu/bootloader/extlinux.scm (install-extlinux): Factorize bootloader
writing in a new procedure write-file-on-device defined in (gnu build
bootloader).
* gnu/build/bootloader.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add new file.
* gnu/system/vm.scm (qemu-img): Adapt to import and use (gnu build bootloader)
module during derivation building.
* gnu/scripts/system.scm (bootloader-installer-derivation): Ditto.
2017-12-15 11:52:38 +01:00
Ricardo Wurmus 1bc147d609
guix: ant-build-system: Do not compress jars.
Fixes <https://bugs.gnu.org/29700>.

* guix/build/ant-build-system.scm (strip-jar-timestamps): Do not compress jar
when repacking.
2017-12-15 00:00:34 +01:00
Ludovic Courtès 34797d8afc
hydra: Invalidate derivation caches after each architecture evaluation.
This reduces max RSS from 1.3G to 1.0G.

* guix/derivations.scm (invalidate-derivation-caches!): New procedure.
* build-aux/hydra/gnu-system.scm (hydra-jobs): Use it.  Add 'format'
call.
2017-12-13 23:11:53 +01:00
Ludovic Courtès d1f01e4845
memoization: Add 'invalidate-memoization!.
* guix/memoization.scm (%make-hash-table*): When not profiling, add the
new table to %MEMOIZATION-TABLES.
(invalidate-memoization!): New procedure.
2017-12-13 23:11:53 +01:00
Ludovic Courtès 90354e34e3
derivations: Don't memoize 'derivation-hash'.
This has little or no run-time impact and slightly reduces the memory
footprint.

* guix/derivations.scm (derivation-hash): Replace 'mlambda' with
'lambda'.
2017-12-13 23:11:53 +01:00
Ludovic Courtès eb1150c22c
derivations: Split 'derivation-hash' in two procedures.
* guix/derivations.scm (derivation/masked-inputs): New procedure.
(derivation-hash): Use it instead of the inline code.
2017-12-13 23:11:53 +01:00
Ludovic Courtès 22358bdb7c
Revert "derivations: 'derivation-hash' assumes inputs are coalesced."
This reverts commit 1d008d9f8c.
Reported by Rutger Helling <rhelling@mykolab.com>.
Fixes <https://bugs.gnu.org/29689>.
2017-12-13 15:13:38 +01:00
Ludovic Courtès 1d008d9f8c
derivations: 'derivation-hash' assumes inputs are coalesced.
* guix/derivations.scm (derivation-hash): Remove
redundant 'coalesce-duplicate-inputs' call.
2017-12-12 18:11:22 +01:00
Ludovic Courtès 3d19b7fbc2
derivations: Use 'define-immutable-record-type' as appropriate.
This is a followup to dc673fa113.

* guix/derivations.scm (<derivation-output>, <derivation-input>): Use
'define-immutable-record-type'.
2017-12-12 18:11:22 +01:00
Ludovic Courtès 6c80641d54
memoization: Profiling support keeps track of lookups and hits.
* guix/memoization.scm (<cache>): New record type.
(define-lookup-procedure, define-update-procedure): New macros.
(cache-ref, cacheq-ref, cache-set!, cacheq-set!): New procedures.
(cached/mv, cachedq/mv, cached, cachedq): Use them instead of 'hash-ref'
and 'hash-set!'.
(%make-hash-table*): When 'profiled?' returns true, return a <cache>
object.
(define-cache-procedure): Adjust to show cache lookups and hits.
2017-12-12 18:11:22 +01:00
Ludovic Courtès 252c408377
memoization: Add profiling support.
* guix/memoization.scm (%memoization-tables): New variable.
(%make-hash-table*, show-memoization-tables): New procedures.
(make-hash-table*): New macro.
Add top-level call to 'register-profiling-hook!'.
(memoize): Adjust to pass the resulting procedure to
'make-hash-table*'.
(%mlambda): Likewise.
2017-12-12 18:11:22 +01:00
Ludovic Courtès 03870da819
Add (guix profiling).
* guix/profiling.scm: New file.
* Makefile.am (MODULES): Add it.
* guix/store.scm (record-operation): Use 'profiled?' and
'register-profiling-hook!'.
2017-12-12 18:11:22 +01:00
nee 47dc9a0dae
guix: utils: Add version-major.
* guix/utils.scm (version-major): New procedure.
2017-12-11 19:12:23 +00:00
Eric Bavier 7f04197fef
utils: Fix cond-expand for Guile 2.0.
* guix/build/download.scm (tls-wrap): Use 'guile-2.2' feature instead.
2017-12-10 15:58:55 -06:00
Ludovic Courtès 3b80b81358
ui: Display hints to resolve profile collisions.
Fixes <https://bugs.gnu.org/29255>.
Reported by Ben Sturmfels <ben@sturm.com.au>.

* guix/ui.scm (display-collision-resolution-hint): New procedure.
(call-with-error-handling): Call it upon '&profile-collistion-error'.
2017-12-10 23:44:58 +01:00
Ludovic Courtès 8bc1935c7c
build-system/asdf: Use 'mlambda'.
* guix/build-system/asdf.scm (package-with-build-system): Use 'mlambda'
instead of 'memoize'.
2017-12-10 23:44:58 +01:00
Efraim Flashner f4007b2547
lint: 'check-vulnerabilities' also checks package properties.
* guix/scripts/lint.scm (check-vulnerabilities): Also check for CVEs
listed as mitigated in the package properties.
* tests/lint.scm ("cve: known safe from vulnerability"): New test.
2017-12-10 21:59:07 +02:00
Rutger Helling 00cf98eb60
licenses: Add wxWindows 3.1 license.
* guix/licenses.scm (wxwindows3.1+): New variable.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2017-12-08 15:03:46 +01:00
Ludovic Courtès 7920e187c1
scripts: All commands enable build hooks by default.
* guix/scripts/archive.scm (%default-options): Add 'build-hook?'.
* guix/scripts/copy.scm (%default-options): Likewise.
* guix/scripts/environment.scm (%default-options): Likewise.
* guix/scripts/pack.scm (%default-options): Likewise.
* guix/scripts/package.scm (%default-options): Likewise.
* guix/scripts/pull.scm (%default-options): Likewise.
2017-12-07 23:12:37 +01:00
Marius Bakke 9e111db453
Merge branch 'master' into core-updates 2017-12-07 18:26:11 +01:00
Ludovic Courtès 5a2f019c7d
Merge branch 'version-0.14.0' 2017-12-07 17:16:05 +01:00
Ludovic Courtès 609d126e86
Revert "packages: 'package-grafts' trims native inputs."
This reverts commit 91c9b5d016
following the concerns raised by Mark, Ben, and Tobias:
<https://lists.gnu.org/archive/html/guix-devel/2017-12/msg00081.html>.
2017-12-06 09:07:28 +01:00
Ludovic Courtès 45c32bd7e5
syscalls: Define 'input-flags' for 'tcgetattr' and friends.
* guix/build/syscalls.scm (input-flags): New macro.
2017-12-06 08:51:08 +01:00
Marius Bakke 77181815ae
Merge branch 'master' into core-updates 2017-12-05 23:41:30 +01:00
Ludovic Courtès 91c9b5d016
packages: 'package-grafts' trims native inputs.
'package-grafts' returns a list of potentially applicable grafts, which
'cumulative-grafts' then narrows by looking at store item references and
determining the subset of the grafts that's actually applicable.

Until now, 'package-grafts' would traverse native inputs and would thus
return a large superset of the applicable grafts, since native inputs
are not in the reference graph by definition.  This patch fixes that by
having 'package-grafts' ignore entirely native inputs from the
dependency graph.

* guix/packages.scm (fold-bag-dependencies)[bag-direct-inputs*]: Add
special case for libc.
* guix/packages.scm (bag-grafts)[native-grafts, target-grafts]: Remove.
[grafts]: New procedure.
Use it.
* tests/packages.scm ("package-grafts, grafts of native inputs
ignored"): New test.
2017-12-05 16:32:40 +01:00
Ludovic Courtès ff0e0041f3
packages: 'fold-bag-dependencies' honors nativeness in recursive calls.
Previously recursive calls to 'loop' would always consider all the bag
inputs rather than those corresponding to NATIVE?.

* guix/packages.scm (fold-bag-dependencies)[bag-direct-inputs*]: New
procedure.  Use it both in the 'match' expression and in its body.
2017-12-05 15:13:38 +01:00
Mathieu Othacehe 4307397b5e
bootloader: extlinux: Stop using dd binary.
* gnu/bootloader/extlinux.scm (dd): Remove it,
(install-extlinux): replace dd call by Guile I/O procedures.
* gnu/system/vm.scm (qemu-image): Add (ice-9 binary-ports) to used-modules
list to provide "get-bytevector-n" and "put-bytevector".
* guix/scripts/system.scm (bootloader-installer-derivation): Ditto.
2017-12-04 18:26:59 +01:00
Ludovic Courtès 3fb6464ba4
ui: Tweak conflicting profile entry error message.
* guix/ui.scm (call-with-error-handling): Use 'manifest-entry-output*'
when reporting conflicting profile entries.
2017-12-03 23:18:53 +01:00
Ludovic Courtès cbb76780ef
profiles: Really disable deprecation warnings for 'profile-derivation'.
This is a followup to 2815fca142.

* guix/profiles.scm (profile-derivation)[builder]: Remove
'debug-disable' call, which was ineffective.
Pass #:env-vars to 'gexp->derivation'.
2017-12-03 23:18:53 +01:00
Ludovic Courtès d9721c2096
scripts: Default to Guile 2.2 as the guile-for-build.
* guix/scripts/environment.scm (guix-environment): '%guile-for-build'
now defaults to GUILE-2.2 instead of GUILE-2.0.
* guix/scripts/package.scm (guix-package): Likewise.
* guix/scripts/pull.scm (guix-pull): Likewise.
2017-12-03 23:18:53 +01:00
Ludovic Courtès 2815fca142
profile: Use _IO* but disable deprecation warning.
This fixes a regression introduced in
2f60084f77, whereby the profile derivation
would fail to run on Guile 2.0 (as is the case with "guix package
--bootstrap").

Reported by Christopher Baines.

* guix/profiles.scm (profile-derivation)[builder]: Use _IO* but add
'debug-disable' call.
2017-12-03 21:50:46 +01:00
Ludovic Courtès 2f60084f77
profiles: Avoid _IO* in profile builder.
* guix/profiles.scm (profile-derivation)[builder]: Avoid the deprecated
_IO* constants.
2017-12-03 19:12:16 +01:00
Ludovic Courtès cdc938daf9
profiles: Do not import the host's srfi-{19,26}.scm files.
Previously the "manual-database" derivation would always import the
host's srfi-{19,26}.scm files in the build side.  In practice this means
that different users could get different manual-database.drv depending
on the Guile version they're using in the host.

For example, the (gnu tests install) tests would fail if the host was
running Guile 2.2.3 because the guest is running 2.2.2, and thus has
different srfi-{19,26}.scm files.  The manual-database.drv would need to
be built from source, which would fail because prerequisites were
missing.

Reported by Mathieu Othacehe <m.othacehe@gmail.com>
at <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=29409#96>.

* guix/profiles.scm (manual-database): Do not pass #:modules to
'gexp->derivation'.  Wrap 'build' gexp in 'with-imported-modules' form.
2017-12-03 19:12:16 +01:00
Marius Bakke c6bc8e22e9
gnu: glibc: Don't use full version string in locale path.
This is a follow-up to commit ee3ebf1a35.
Fixes <https://bugs.gnu.org/29537>.

* gnu/packages/base.scm (glibc/linux)[version]: Change to 2.26.91-gaaa2eb83b8.
[source](uri): Adjust accordingly.
[arguments]: Use VERSION-MAJOR+MINOR for locales path.
(glibc-locales, glibc-utf8-locales): Likewise.
* guix/packages.scm (patch-and-repack): Likewise.
* guix/profiles.scm (ca-certificate-bundle, profile-derivation): Likewise.
2017-12-03 16:23:43 +01:00
Ludovic Courtès e2721a05e7
Do not set '%fresh-auto-compile'.
* guix/scripts/offload.scm (build-machines): Comment out
'(set! %fresh-auto-compile #t)' since with Guile 2.2.3 it could lead to
an actual rebuild of everything that gets loaded from there on.  See
<https://bugs.gnu.org/29226>.
* guix/ui.scm (load*): Likewise.
2017-12-01 18:47:34 +01:00
Ludovic Courtès cea25b08bf
records: Use 'make-struct/no-tail'.
* guix/records.scm (make-syntactic-constructor): Use
'make-struct/no-tail' as 'make-struct' is deprecated as of 2.2.3.
2017-12-01 18:47:34 +01:00
Ludovic Courtès e261e27676
guix system: 'init' displays a progress bar while copying.
Until now it would print the name of each store item being copied, which
was verbose and unhelpful.

* guix/scripts/system.scm (copy-closure): Use 'progress-reporter/bar'
and 'call-with-progress-reporter'.
(guix-system): Parameterize 'current-terminal-columns'.
2017-12-01 16:00:14 +01:00
Ludovic Courtès e4ecd51e23
guix system: Simplify closure copy.
* guix/scripts/system.scm (copy-item): Add 'references' argument and
remove 'references*' call.  Turn into a non-monadic procedure.
(copy-closure): Remove initial call to 'references*'.  Only pass ITEM to
'topologically-sorted*' since that's equivalent.  Compute the list of
references corresponding to TO-COPY and pass it to 'copy-item'.
2017-12-01 16:00:14 +01:00
Ludovic Courtès 1fafa2f587
weather: Use (guix progress) for progress report.
* guix/progress.scm (start-progress-reporter!, stop-progress-reporter!)
(progress-reporter-report!): New procedures.
* guix/scripts/weather.scm (call-with-progress-reporter): New procedure.
(package-outputs)[update-progress!]: Remove.
Use 'call-with-progress-reporter' instead.
(guix-weather): Parameterize 'current-terminal-columns'.
2017-12-01 16:00:14 +01:00
Ludovic Courtès 4cdb27af48
progress: Add 'progress-reporter/bar'.
* guix/progress.scm (progress-reporter/bar): New procedure.
2017-12-01 16:00:14 +01:00
Ludovic Courtès 5ed534ccc3
progress: 'progress-bar' accounts for brackets.
* guix/progress.scm (progress-bar): Subtract 2 to BAR-WIDTH to account
for brackets.
2017-12-01 16:00:14 +01:00
Ludovic Courtès 1252dd325b
progress: Factorize erase-in-line.
* guix/progress.scm (erase-in-line): New procedure.
(progress-reporter/file): Use it.
2017-12-01 16:00:14 +01:00
Mathieu Othacehe e45b573c2d
utils: Add target-arm32? procedure.
* guix/utils.scm (target-arm32?): New exported procedure.
2017-12-01 13:55:45 +01:00
Ludovic Courtès e42f026eb5
ui: Present 'use-modules' hints with a question mark.
Suggested by myglc2 <myglc2@gmail.com>.

* guix/ui.scm (report-load-error): Write "Did you forget" rather than
"Try adding."
2017-11-30 18:14:56 +01:00
Arun Isaac 3d0aa7f70b
build-system: Add scons-build-system.
* guix/build-system/scons.scm: New file.
* guix/build/scons-build-system.scm: New file.
* Makefile.am (MODULES): Register them.
* doc/guix.texi (Build Systems): Add scons-build-system.
2017-11-30 18:19:31 +05:30
Ludovic Courtès 6ee797f326
gexp: Default to 'guile-2.2' for 'program-file'.
Previously things returned by 'program-file', such as %MODPROBE-WRAPPER
in (gnu services), would refer to 'guile-final'.  This would introduce
'guile-final' in the system closure, which is otherwise absent.  By
referring to 'guile-2.2' we remove that extra Guile.

* guix/gexp.scm (default-guile): Refer to GUILE-2.2 instead of
GUILE-FINAL.
2017-11-29 23:40:39 +01:00
Ludovic Courtès a912c723f7
gexp: 'compiled-modules' disables deprecation warnings by default.
This avoids repeated deprecation messages, particularly while running
'guix system build' or similar.

* guix/gexp.scm (gexp->derivation): Add #:deprecation-warnings.  Pass it
to 'compiled-modules'.
(compiled-modules): Add #:deprecation-warnings and honor it.
* doc/guix.texi (G-Expressions): Update 'gexp->derivation'
documentation.
* guix/packages.scm (patch-and-repack): Pass #:deprecation-warnings #t.
2017-11-29 16:44:54 +01:00
Ludovic Courtès 0a154c15a8
lint: Adjust file-name length test for out-of-tree file names.
* guix/scripts/lint.scm (check-patch-file-names): Adjust
file-name-length calculation.
2017-11-28 15:52:01 +01:00
Ludovic Courtès eef01cfe8e
lint: 'patch-file-names' checks for file name length.
Reported at <https://bugs.gnu.org/27943>
by Danny Milosavljevic <dannym@scratchpost.org>.

* guix/scripts/lint.scm (%distro-directory): New variable.
(check-patch-file-names): Add check for the file name length.
* tests/lint.scm ("patches: file name too long"): New test.
2017-11-28 15:05:55 +01:00
Ludovic Courtès 0d2ecf8b50
ui: Avoid "pkg:out" syntax when reporting collisions.
* guix/ui.scm (call-with-error-handling)[manifest-entry-output*]: New
procedure.  Use it when reporting collisions.
2017-11-28 10:18:40 +01:00
Ludovic Courtès 026f6a42b6
gnu-maintenance: Relax recursion cutoff in 'latest-ftp-release'.
Fixes <https://bugs.gnu.org/25020>.
Reported by Hartmut Goebel <h.goebel@crazy-compilers.com>.

* guix/gnu-maintenance.scm (latest-ftp-release)[contains-digit?]: Remove.
Relax test as to whether to recurse into subdirectories.
2017-11-24 18:48:11 +01:00
Ludovic Courtès b5bfa4773d
ui: 'known-variable-definition' protects against module cycles.
Fixes <https://bugs.gnu.org/29358>.
Reported by Marius Bakke <mbakke@fastmail.com>.

* guix/ui.scm (known-variable-definition): Add 'visited' set to guard
against cycles on 2.0.
2017-11-24 18:16:43 +01:00
Ludovic Courtès cd295fbe17
Revert "Add (guix self) and use it when pulling."
This reverts commit 5f93d97005.

'guix pull' would fail because (guix self) needs 'scheme-files'
from (guix discovery), which was not exported until now.
2017-11-21 23:53:10 +01:00
Ludovic Courtès 5f93d97005
Add (guix self) and use it when pulling.
This mitigates <https://bugs.gnu.org/27284>.

* guix/self.scm: New file.
* Makefile.am (MODULES): Add it.
* build-aux/build-self.scm (libgcrypt, zlib, gzip, bzip2, xz)
(false-if-wrong-guile, package-for-current-guile, guile-json)
(guile-ssh, guile-git, guile-bytestructures): Remove.
(build): Rewrite to simply delegate to 'compiled-guix'.
* gnu/packages.scm (%distro-root-directory): Rewrite to try different
directories.
* guix/discovery.scm (guix): Export 'scheme-files'.
* guix/scripts/pull.scm (build-and-install): Split into...
(install-latest): ... this.  New procedure.  And...
(build-and-install): ... this, which now takes a monadic value argument.
(indirect-root-added): Remove.
(guix-pull): Call 'add-indirect-root'.  Call 'build-from-source' and
pass the result to 'build-and-install'.
2017-11-21 23:09:16 +01:00
Ludovic Courtès fe9b3ec3ee
git: Do not add '.git' to the store.
This makes 'latest-repository-commit' significantly more efficient and
reduces disk usage in the store.

* guix/git.scm (copy-to-store)[dot-git?]: New procedure.
Pass it as the #:select? argument to 'add-to-store'.
2017-11-21 23:09:16 +01:00
Ludovic Courtès a6591381fc
pull: Trim import list.
* guix/scripts/pull.scm: Remove useless imports.
2017-11-21 23:09:16 +01:00
Ludovic Courtès de98b302a1
gexp: 'directory-union' has a #:quiet? parameter.
* guix/gexp.scm (directory-union): Add #:quiet? and honor it.
2017-11-21 23:09:16 +01:00
Ludovic Courtès 59523429d6
union: Parametrize the symlink procedure .
* guix/gexp.scm (directory-union): Add #:hard-links and honor it.
* guix/build/union.scm (union-build): Add #:symlink parameter.
2017-11-21 23:09:16 +01:00
Ludovic Courtès a5792deca5
compile: Put an upper bound on the number of workers.
* guix/build/compile.scm (compile-files): Don't use more than 8 workers.
2017-11-20 23:42:55 +01:00
Ludovic Courtès bd7e136d29
Add semicolon in commands that set GUIX_PROFILE.
Fixes <https://bugs.gnu.org/28223>.
Reported by Rosebud Uplink <Uplink.Introversion@outlook.com>.

* doc/guix.texi (Binary Installation): Add missing semicolon after
'GUIX_PROFILE=' line.
(Invoking guix package): Likewise.
* gnu/system.scm (operating-system-etc-service)[profile]: Likewise.
* guix/build/profiles.scm (build-etc/profile): Likewise.
2017-11-20 18:43:10 +01:00
Ludovic Courtès 85f4f7b790
zlib: Fix race condition when closing gzip ports.
Fixes <https://bugs.gnu.org/29335>.

* guix/zlib.scm (close-procedure): Remove.
(make-gzip-input-port): Do (dup (fileno port)) to get a file descriptor
for 'gzdopen'.  Close PORT before returning.  Use 'gzclose' as the
'close' procedure of the returned port.
(make-gzip-output-port): Likewise.
2017-11-19 23:09:01 +01:00
Ludovic Courtès 52d174d6d1
ssh: Use (guix i18n).
* guix/ssh.scm: Use (guix i18n) instead of (guix ui).
2017-11-19 23:09:01 +01:00
Marius Bakke 2dd12924cf
Merge branch 'master' into core-updates 2017-11-19 15:01:00 +01:00
Julien Lepiller 965ba54be0
licenses: Add cddl1.1.
* guix/licenses.scm (cddl1.1): New variable.
2017-11-18 11:29:36 +01:00
Ricardo Wurmus 82af2c2f0f
build-system: texlive: Only make a union of directories.
* guix/build/texlive-build-system.scm (configure): Filter the input
directories to ensure that source tarballs are excluded.
2017-11-18 11:18:42 +01:00
Leo Famulari d8e257113c
build-system/go: Don't let Go executables refer to the Go compiler.
* guix/build/go-build-system.scm (remove-store-reference, remove-go-references):
New procedures.
(%standard-phases): Add 'remove-go-references' phase.
* guix/build-system/go.scm (go-build): Add allow-go-reference? key.
2017-11-17 18:25:20 -05:00
Ludovic Courtès d5ce7bcfa2
workers: Display backtrace in pre-unwind handler.
* guix/workers.scm (worker-thunk): Add (const #f) as the 'catch'
handler, and move previous handler as pre-unwind handler.  Protect
against 'make-stack' returning #f.
2017-11-17 10:47:56 +01:00
Ludovic Courtès 232b3d3101
workers: 'pool-idle?' returns true only if the workers are idle.
Fixes <https://bugs.gnu.org/28779>.
Reported by Eric Bavier <bavier@cray.com>.

* guix/workers.scm (<pool>)[busy]: New field.
(worker-thunk): Add #:idle and #:busy and use them.
(make-pool): Pass #:busy and #:idle to 'worker-thunk'.  Pass a 'busy'
value to '%make-pool'.
* guix/workers.scm (pool-idle?): Check whether 'pool-busy' returns zero
and adjust docstring.
2017-11-17 10:10:30 +01:00
Ludovic Courtès 304a53f67a
ui: Add source file name to the package search metrics.
* guix/ui.scm (%package-metrics): Include 'package-location'.  Increase
score of the other fields.
2017-11-16 08:45:15 +01:00
Ludovic Courtès 7482b98120
cve: Use 'http-fetch/cached' instead of having custom caching.
That way CVE fetching benefits from 'If-Modified-Since' handling.

* guix/http-client.scm (http-fetch/cached): Add #:write-cache and
 #:cache-miss parameters and honor them.
* guix/cve.scm (%current-year-ttl, %past-year-ttl): Reduce.
(call-with-cve-port): Remove.
(write-cache): New procedure.
(fetch-vulnerabilities): Rewrite in terms of 'http-fetch/cached'.
2017-11-16 08:45:15 +01:00
Ludovic Courtès 866f37fb7e
download: Improve efficiency of 'write-request' over TLS.
This is another instance of <https://bugs.gnu.org/22966>.
The Microsoft-IIS/7.5 server at static.nvd.nist.gov would sometimes hang
when receiving our requests byte by byte.

* guix/build/download.scm (tls-wrap) [!guile-2.0]: Add 'setvbuf' call.
2017-11-16 08:45:14 +01:00
Ludovic Courtès 9f8605958e
download: Pass the timeout to 'ftp-retr'.
This ensures the timeout applies when connecting to the port returned by
PASV.

* guix/ftp-client.scm (ftp-list): Add #:timeout parameter.  Use
'connect*' instead of 'connect' and pass TIMEOUT.
(ftp-retr): Likewise.
* guix/build/download.scm (ftp-fetch): Pass TIMEOUT to 'ftp-retr'.
2017-11-14 23:46:53 +01:00
Leo Famulari 412716eff2
grafts: Clarify the status of the workaround for <http://bugs.gnu.org/24659>.
* guix/build/graft.scm (mkdir-p*): Annotate.
2017-11-14 16:38:02 -05:00
Leo Famulari d0b87779f0
download: Use HTTPS for the first ImageMagick mirror.
* guix/download.scm (%mirrors)[imagemagick]: Use HTTPS for <sunsite.icm.edu.pl>.
2017-11-12 17:50:01 -05:00
Leo Famulari ecc585711e
download: Try FTP servers last.
* guix/download.scm (%mirrors)[savannah, kernel.org, apache, xorg, imagemagick]:
Re-arrange so that FTP is last.
2017-11-12 17:50:01 -05:00
Ludovic Courtès b1488c7653
git: Check whether 'clone-init-options' is defined.
This is a followup to 195f0d05c3.

* guix/git.scm (clone*): Check whether 'clone-init-options' is defined
before using it.
2017-11-11 20:09:25 +01:00
Ludovic Courtès 65a19abf3f
download: Work around more bogus HTTP handling in Guile 2.2 <= 2.2.2.
Reported by Mark H Weaver <mhw@netris.org>
at <https://lists.gnu.org/archive/html/guix-devel/2017-11/msg00190.html>.

* guix/build/download.scm (guile-2.2) [write-request-line]: Backport
Guile commit 6ad28ae3bc6a6d9e95ab7d70510d12c97673a143.
2017-11-11 15:20:02 +01:00
Ludovic Courtès 59da6f04f4
download: Work around bogus HTTP handling in Guile 2.2 <= 2.2.2.
Reported by Konrad Hinsen <konrad.hinsen@fastmail.net>
at <https://lists.gnu.org/archive/html/guix-devel/2017-11/msg00070.html>.

* guix/build/download.scm (write-request-line) [guile-2.2]: New
procedure.
2017-11-10 23:11:52 +01:00
Ludovic Courtès 195f0d05c3
git: Work around wrong default argument of 'clone'.
Fixes <https://bugs.gnu.org/29238>.
Reported by Benjamin Andresen <benny@in-ulm.de>.

* guix/git.scm (clone*): Pass second argument to 'clone'.
2017-11-10 13:07:54 +01:00
Ludovic Courtès dc856223f5
ui: Add an 'unbound-variable' exception printer.
* guix/ui.scm (print-unbound-variable-error): New variable.
Use it as the 'unbound-variable' printer.
2017-11-09 23:54:47 +01:00
Ludovic Courtès a2985bb101
ui: Provide hints for unbound-variable errors.
* guix/ui.scm (known-variable-definition): New procedure.
(report-load-error): Handle 'unbound-variable'.
2017-11-09 23:54:47 +01:00
Ludovic Courtès 935542fbde
ui: Add 'display-hint'.
* guix/ui.scm (known-variable-definition): New procedure.
(report-load-error): Use it.
2017-11-09 23:54:47 +01:00
Ludovic Courtès a864d56302
build-system/gnu: Add 'install-license-files' phase.
Suggested by Dave Love <fx@gnu.org>.

* guix/build-system/gnu.scm (%license-file-regexp): New variable.
(gnu-build): Add #:license-file-regexp and use it.
(gnu-cross-build): Likewise.
* guix/build/gnu-build-system.scm (%license-file-regexp): New variable.
(install-license-files): New procedure.
(%standard-phases): Add it.
2017-11-08 22:43:56 +01:00
Ludovic Courtès 23735137eb
ui: Define and honor '&error-location' and '&fix-hint' conditions.
* guix/utils.scm (&error-location, &fix-hint): New condition types.
* guix/ui.scm (report-load-error): Handle them.
(call-with-error-handling): Honor '&error-location'.
2017-11-08 22:31:58 +01:00
Ludovic Courtès 37eed374d9
ui: Introduce (guix i18n).
* guix/ui.scm (G_, N_, _P, %gettext-domain, %package-text-domain): Move
to...
* guix/i18n.scm: ... here.  New file.
2017-11-08 22:31:58 +01:00
Ricardo Wurmus 25e51b1c45
guix: Add archive support for bioconductor-uri.
* guix/build-system/r.scm (bioconductor-uri): Also return the archive URL.
* guix/import/cran.scm (latest-bioconductor-release, fetch-description):
Adjust because bioconductor-uri now returns a list.
2017-11-07 08:14:09 +01:00
Ricardo Wurmus 27baf50956
import: cran: Use Bioconductor 3.6 helpers.
* guix/import/cran.scm (bioconductor-mirror-url): Remove procedure.
(fetch-description): Extract DESCRIPTION file from tarball for Bioconductor
packages.
(latest-bioconductor-release): Use latest-bioconductor-package-version.
2017-11-07 08:13:35 +01:00
Ricardo Wurmus 84dfdc5759
import: cran: Add support for Bioconductor 3.6.
* guix/import/cran.scm (%bioconductor-version,
%bioconductor-packages-list-url): New variables.
(bioconductor-packages-list, latest-bioconductor-package-version): New
procedures.
2017-11-07 08:13:34 +01:00
Ricardo Wurmus 6b46b04f91
import: utils: Add string helpers.
* guix/import/utils.scm (read-lines, chunk-lines): New procedures.
2017-11-07 08:07:51 +01:00
Ludovic Courtès 8e57e416c0
refresh: Account for hidden packages.
Suggested by Marius Bakke <mbakke@fastmail.com>
in <https://bugs.gnu.org/29177>.

* guix/scripts/refresh.scm (all-packages): Pass #:select? to
'fold-packages'.
2017-11-07 00:12:10 +01:00
Ludovic Courtès c9405c461b
compile: Fix VPATH builds.
Fixes <https://bugs.gnu.org/29091>.
Reported by Eric Bavier <bavier@cray.com>.

* guix/build/compile.scm (relative-file): New procedure.
(load-files): Use it before calling 'file-name->module-name'.
(compile-files): Likewise before calling 'scm->go'.
* guix/build/pull.scm (build-guix): Remove 'with-directory-excursion'
and file name hack from ce33c3af76.
Pass OUT to 'all-scheme-files'.
2017-11-07 00:12:10 +01:00
Ludovic Courtès 0ad5f80982
Fix ambiguous imports.
* gnu/packages/ocaml.scm: Hide 'zip' from (srfi srfi-1).
* guix/git.scm: Select 'mkdir-p' from (guix build utils).
2017-11-07 00:12:10 +01:00
nee 6692d8454a
guix: records: Add match-record.
* guix/records.scm: New syntax-rule.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-11-05 15:21:53 +01:00
Efraim Flashner 19b7bba1b5
Merge remote-tracking branch 'origin/master' into core-updates 2017-11-01 10:29:59 +02:00
Tobias Geerinckx-Rice 63ae4800de
download: Refresh the cpan.org mirror list.
* guix/download.scm (%mirrors)[cpan]: Update the list of CPAN mirrors (of
which several are dead) with a more-or-less geographically diverse selection.
2017-11-01 01:02:03 +01:00
Tobias Geerinckx-Rice b5c7574b2f
Revert "import: cpan: Use HTTPS for home pages."
This reverts commit 29f7bf59d5d4d4b848eaedc6766bb4e02cae20d3: HTTPS support
at search.cpan.org is unreliable, at best.  Don't rely on it.
2017-10-30 17:20:42 +01:00
Tobias Geerinckx-Rice 29f7bf59d5
import: cpan: Use HTTPS for home pages.
* guix/import/cpan.scm (cpan-home): Use HTTPS.
* tests/cpan.scm ("cpan->guix-package"): Expect it.
2017-10-29 17:32:35 +01:00
Tobias Geerinckx-Rice 6d176ad379
import: cpan: Actually use CPAN-HOME.
* guix/import/cpan.scm (cpan-module->sexp): Use the CPAN-HOME procedure.
2017-10-29 17:32:35 +01:00
Tobias Geerinckx-Rice 73f33b9379
import: cpan: Add trailing "/" to CPAN-HOME.
Prevent regression after commit e4bc172730.

* guix/import/cpan.scm (cpan-home): Add trailing "/".
2017-10-29 17:32:12 +01:00
Eric Bavier e4bc172730
import: cpan: Add trailing "/" on home-page.
This appeases 'guix lint', which otherwise complains about permanent
redirects.

* guix/import/cpan.scm (cpan-module->sexp): Add trailing "/" on home-page.
* tests/cpan.scm ("cpan->guix-package"): Adjust accordingly.
2017-10-28 18:20:59 -05:00
Eric Bavier 23055424f2
import: cpan: Propagate imported dependencies.
This is most often the need for perl module dependencies.

* guix/import/cpan.scm (cpan-module->sexp): 'inputs -> 'propagated-inputs.
* tests/cpan.scm ("cpan->guix-package"): Adjust accordingly.
2017-10-28 18:20:58 -05:00
Ludovic Courtès 34b1f339cd
graph: Remove mention of Graphviz from the summary line.
* guix/scripts/graph.scm (show-help): Remove mention of Graphviz from
the summary line.
2017-10-28 09:45:54 +02:00
Ludovic Courtès 0a2ce1ea0a
import: elpa: Do not abort when failing to download the archive.
* guix/import/elpa.scm (elpa-fetch-archive): Use 'http-fetch/cached'
directly instead of 'call-with-downloaded-file'.  This ensures we don't
just abort when networking access is lacking, which is required to allow
'guix refresh -c refresh' to proceed.
2017-10-28 09:45:54 +02:00
Ludovic Courtès 90297811a9
import: github: Gracefully handle multiple-URL origins.
* guix/import/github.scm (latest-release)[origin-github-uri]: New
procedure.  Use it.
2017-10-28 09:45:54 +02:00
Ludovic Courtès 6d6d193221
lint: 'refresh' gracefully handles lack of networking access.
* guix/scripts/lint.scm (check-for-updates): Wrap
'package-latest-release*' call in 'with-networking-fail-safe'.
2017-10-28 09:45:54 +02:00
Ludovic Courtès 4b879e0acf
lint: Extract network-related exception handling.
* guix/scripts/lint.scm (call-with-networking-fail-safe): New procedure.
(with-networking-fail-safe): New macro.
(current-vulnerabilities*): Rewrite in terms of 'with-networking-fail-safe'.
2017-10-28 09:45:54 +02:00
Ludovic Courtès a1ff7e1d8d
scripts: Factorize option parsing sans 'GUIX_BUILD_OPTIONS'.
* guix/scripts.scm (parse-command-line): Add #:build-options? parameter
and honor it.
* guix/scripts/challenge.scm (guix-challenge): Use 'parse-command-line'
with #:build-options? #f instead of 'args-fold*'.
* guix/scripts/gc.scm (guix-gc): Likewise.
* guix/scripts/graph.scm (guix-graph): Likewise.
* guix/scripts/hash.scm (guix-hash): Likewise.
* guix/scripts/lint.scm (guix-lint): Likewise.
* guix/scripts/refresh.scm (guix-refresh): Likewise.
* guix/scripts/size.scm (guix-size): Likewise.
* guix/scripts/weather.scm (guix-weather): Likewise.
2017-10-28 09:45:53 +02:00
Ludovic Courtès efff3dd4c9
scripts: Use 'args-fold*' for command that do not honor build flags.
Fixes <https://bugs.gnu.org/28984>.
Reported by Eric Bavier.

* guix/scripts/challenge.scm (guix-challenge): Use 'args-fold*' instead
of 'parse-command-line'.
* guix/scripts/size.scm (guix-size): Likewise.
* guix/scripts/weather.scm (guix-weather): Likewise.
2017-10-27 13:11:26 -07:00
Leo Famulari 552ee77250
build-system/go: Fix installation path of executable files.
* guix/build/go-build-system.scm (setup-environment): Set GOBIN correctly.
2017-10-26 12:14:33 -04:00
Ludovic Courtès bf7dfb1f07
challenge: Display an overall summary.
* guix/scripts/challenge.scm (summarize-report-list): New procedure.
(guix-challenge): Use it.
* doc/guix.texi (Invoking guix challenge): Adjust command output in
example.
2017-10-25 22:25:19 -07:00
Ludovic Courtès d213cc8c7f
substitute: Don't send more than 1000 requests in a row.
Fixes <https://bugs.gnu.org/28731>.
Reported by Jan Nieuwenhuizen <janneke@gnu.org>.

* guix/scripts/substitute.scm (at-most): New procedure.
(http-multiple-get): Use it to send at most 1000 requests at once.
2017-10-25 22:25:19 -07:00
Ludovic Courtès 44c6a87f53
guix package: '--list-available' does not show superseded packages.
* guix/scripts/package.scm (process-query) <'list-available>: Filter out
P if it matches 'package-superseded'.
2017-10-25 22:25:19 -07:00
Marius Bakke ca4fd41de8
Merge branch 'master' into core-updates 2017-10-24 22:00:23 +02:00
Leo Famulari c10851cf91
build-system/go: Parameterize installing the source code.
* guix/build-system/go.scm (go-build): Add install-source? key.
* guix/build/go-build-system.scm (install-source): Check if
install-source? is true.
2017-10-24 13:10:34 -04:00
Leo Famulari 1c37f839fb
build-system/go: Strip the Go binaries with the native tool.
* guix/build/go-build-system.scm (build): Tell the Go linker to strip some
symbol tables and debugging information.
2017-10-24 13:10:34 -04:00
Ludovic Courtès 2900665888
pull: Hide compilation warnings.
* guix/build/pull.scm (build-guix): Bind 'current-warning-port' to a
void port.
2017-10-23 17:08:51 -07:00
Ludovic Courtès ce33c3af76
pull: Add (guix build compile) to the mix.
Fixes <https://bugs.gnu.org/28956>.
Reported by Leo Famulari <leo@famulari.name>.

* build-aux/build-self.scm (build): Add (guix build compile) to
 #:modules.
* guix/build/pull.scm (build-guix): Wrap 'compile-files' call in
'with-directory-excursion'.  Strip "./" from FILES when passing it to
'compile-files'.
2017-10-23 17:08:50 -07:00
Ludovic Courtès d298c815e6
gexp: Add 'directory-union'.
* gnu/services.scm (directory-union): Move to...
* guix/gexp.scm (directory-union): ... here.  New procedure.
* doc/guix.texi (G-Expressions): Document it.
2017-10-22 22:09:00 -07:00
Ludovic Courtès dedb512f8f
gexp: Add 'file-union'.
* gnu/services.scm (file-union): Move to...
* guix/gexp.scm (file-union): ... here.  New procedure.
* doc/guix.texi (G-Expressions): Document it.
2017-10-22 22:09:00 -07:00
Ludovic Courtès 7a51c78c6e
discovery: Move 'file-name->module-name' to (guix modules).
* guix/discovery.scm (file-name->module-name): Move to...
* guix/modules.scm (file-name->module-name): ... here.
* guix/build/compile.scm: Use (guix modules) instead of (guix discovery).
2017-10-22 22:09:00 -07:00
Ludovic Courtès 2890ad332f
build: Factorize module compilation in (guix build compile).
* guix/build/compile.scm: New file.
* Makefile.am (MODULES): Add it.
* build-aux/compile-all.scm: Use it.
(warnings, file->module, load-module-file)
(%default-optimizations, %lightweight-optimizations)
(optimization-options, compile-file*): Remove.
<top level>: Use 'compile-files'.
* guix/build/pull.scm (%default-optimizations)
(%lightweight-optimizations, optimization-options): Remove.
(build-guix): Rewrite as a call to 'compile-files'.
* guix/discovery.scm (file-name->module-name): Export.
2017-10-22 22:09:00 -07:00
Marius Bakke 119a749db9
Merge branch 'master' into core-updates 2017-10-22 20:12:52 +02:00
Tobias Geerinckx-Rice 5713bbf157
Use HTTPS for bioconductor.org.
* doc/guix.texi (Invoking guix import, Invoking guix refresh): Use HTTPS for
bioconductor.org URLs.
* gnu/packages/bioinformatics.scm (r-annotate, r-geneplotter, r-genefilter)
(r-deseq2, r-dexseq, r-annotationforge, r-rbgl, r-gseabase, r-category)
(r-gostats, r-shortread, r-biocgenerics, r-biocinstaller, r-biocviews)
(r-biocstyle, r-bioccheck, r-s4vectors, r-iranges, r-genomeinfodbdata)
(r-genomeinfodb, r-xvector, r-genomicranges, r-biobase, r-annotationdbi)
(r-biomart, r-biocparallel, r-biostrings, r-rsamtools, r-delayedarray)
(r-summarizedexperiment, r-genomicalignments, r-rtracklayer)
(r-genomicfeatures, r-graph, r-topgo, r-bsgenome, r-impute, r-seqpattern)
(r-seqlogo, r-motifrg, r-bamsignals, r-mutationalpatterns, r-tximport)
(r-rhdf5, r-chipseq, r-sva, r-affy, r-vsn, r-mzid, r-msnid)
(r-interactivedisplaybase, r-annotationhub)[home-page]: Likewise.
* gnu/packages/bioinformatics.scm (r-txdb-hsapiens-ucsc-hg19-knowngene)
(r-go-db, r-bsgenome-hsapiens-1000genomes-hs37d5, r-org-hs-eg-db)
(r-org-ce-eg-db, r-org-dm-eg-db, r-org-mm-eg-db)
(r-bsgenome-hsapiens-ucsc-hg19, r-bsgenome-mmusculus-ucsc-mm9)
(r-bsgenome-mmusculus-ucsc-mm10, r-txdb-mmusculus-ucsc-mm10-knowngene)
(r-bsgenome-celegans-ucsc-ce6, r-bsgenome-celegans-ucsc-ce10)
(r-bsgenome-dmelanogaster-ucsc-dm3, r-copyhelper)[source, home-page]:
Likewise.
* gnu/packages/statistics.scm (r-rcurl)[source]: Likewise.
* guix/build-system/r.scm (bioconductor-uri): Likewise.
* guix/import/cran.scm (%cran-url, bioconductor-package?)
(bioconductor-data-package?, bioconductor-experiment-package?): Likewise.
2017-10-21 17:43:40 +02:00
Ludovic Courtès 37ce440dcf
download: Download a nar when a VCS checkout fails.
Fixes <https://bugs.gnu.org/28709>.

* guix/build/download-nar.scm: New file.
* Makefile.am (MODULES): Add it.
* guix/cvs-download.scm (cvs-fetch)[zlib, config.scm, modules]: New
variables.
[build]: Use MODULES.  Add call to 'download-nar'.
* guix/git-download.scm (git-fetch): Likewise.
* guix/hg-download.scm (hg-fetch): Likewise.
2017-10-19 23:21:49 +02:00
Ludovic Courtès 8c3488259e
Add (guix progress).
Among other things, this removes (guix utils), (guix ui), (guix config),
etc. from the closure of (guix build download), as was the case since
798648515b.

* guix/utils.scm (<progress-reporter>, call-with-progress-reporter):
Move to...
* guix/progress.scm: ... here.  New file.
* Makefile.am (MODULES): Add it.
* guix/build/download.scm (current-terminal-columns)
(nearest-exact-integer, duration->seconds, seconds->string)
(byte-count->string, progress-bar, string-pad-middle)
(rate-limited, progress-reporter/file, dump-port*)
(time-monotonic): Move to progress.scm.
* guix/scripts/download.scm: Adjust accordingly.
* guix/scripts/substitute.scm: Likewise.
2017-10-19 23:21:49 +02:00
Ludovic Courtès 347fa4aebf
download: Make 'http-fetch' public.
* guix/build/download.scm (http-fetch): Remove 'file' parameter.  Change
to return an input port and the content-length.  Make public.
(url-fetch): Adjust accordingly.
2017-10-19 23:21:49 +02:00
Ludovic Courtès b3ac341d4e
download: Remove old-Guile leftovers.
This is a followup to 36626c556e.

* guix/build/download.scm (http-fetch): Rename 'port-or-bv' to 'port'.
Assume (port? port) is always true, and remove other branch.
2017-10-19 23:21:49 +02:00
宋文武 5efa0e4d4f
guix: substitute: Report the last progress in the child process.
Fixes <https://bugs.gnu.org/28756>.

* guix/utils.scm (filtered-port): Close the 'input' port for the current
process, and close it upon exit in the child process.
* guix/scripts/substitute.scm (progress-substitution): Display "\n\n" after
the reporter has finished.
2017-10-17 19:00:35 +08:00
Thomas Danckaert 8cff2e7aed
Merge 'master' into core-updates 2017-10-16 19:52:30 +02:00
Christopher Baines 4cb036d604
emacs-build-system: Change how patch-el-files substitutes commands.
Previously the regex would match from /bin/ to a closing quote. However, this
is greedy, so will match up until the last ". This causes problems when there
are several quotes on the same line, for example:

org-effectiveness.el:
196:      (call-process "/bin/bash" nil t nil "-c" strplot)

Therefore, change . to \S so that it doesn't include whitespace
characters. Changing to a lazy quantifier would be an option, if that were
supported.

* guix/build/emacs-build-system.scm (patch-el-files): Change the regular
  expression used.
2017-10-15 19:02:44 +01:00
Christopher Baines dd2de28423
emacs-build-system: Handle missing programs when patching.
Previously the string-append here would error, which isn't useful as it
doesn't tell you which command couldn't be found. To make the error
actionable, catch it earlier, and explicitly error.

* guix/build/emacs-build-system.scm (patch-el-files): Handle (which cmd)
  returning #f.
2017-10-15 19:02:43 +01:00
Leo Famulari 91525b486c
build: Add the Go build system.
* guix/build-system/go.scm,
guix/build/go-build-system.scm: New files.
* Makefile.am (MODULES): Add new files.
* doc/guix.texi (Build Systems): Document the go-build-system.
2017-10-12 21:22:40 -04:00
Ludovic Courtès 61f28fe7e9
lint: 'home-page' checker reports permanent redirects.
* guix/scripts/lint.scm (probe-uri): Add special case for HTTP 301.
(validate-uri): Likewise.
* tests/lint.scm ("home-page: 301, invalid")
("home-page: 301 -> 200", "home-page: 301 -> 404")
("source: 301 -> 200", "source: 301 -> 404"): New tests.
2017-10-12 23:47:48 +02:00
Ludovic Courtès 6ea10db973
tests: Support multiple HTTP server instances.
* guix/tests/http.scm (%http-server-socket): Turn into...
(open-http-server-socket): ... this procedure.
(http-server-can-listen?): New procedure.
(http-write, %http-server-lock, %http-server-ready)
(http-open, stub-http-server): Move to 'call-with-http-server' body.
(call-with-http-server): Add #:headers parameter.
(with-http-server): Add an additional pattern with headers.
* tests/derivations.scm: Use (http-server-can-listen?) instead
of (force %http-server-socket).
* tests/lint.scm: Likewise.
2017-10-12 23:47:48 +02:00
Ludovic Courtès d8e89b1c79
offload: Reduce the number of calls to 'machine-load'.
Previously we would call 'machine-load' once per machine, which was very
costly when there were many machines.  Now we arrange to call it only
once on average (when all the machines have the same 'speed' value).

* guix/scripts/offload.scm (random-seed, shuffle): New procedures.
(choose-build-machine)[machines+slots+loads]: Rename to...
[machines+slots]: ... this.  Remove load from the tuples therein.
[undecorate]: Adjust accordingly.
[machine-less-loaded-or-faster?]: Remove.
[machine-faster?]: New procedure.
Sort MACHINES+SLOTS according to 'machine-faster?'.  Call
'machine-load?' as the last thing.
2017-10-12 17:51:41 +02:00
宋文武 abaee53c80
substitute: Close the progress port after substitute finished.
Fixes <https://bugs.gnu.org/28756>.

* guix/scripts/substitute.scm (progress-substitution):
Call '(close-port progress)'.
2017-10-12 22:31:22 +08:00
Ludovic Courtès 85a2b58987
zlib: Fix memory leak due to revealed ports not being GC'd.
Fixes <https://bugs.gnu.org/28784>.

This mostly reverts 81a0f1cdf1, which
introduced a regression: revealed ports are *never* GC'd (contrary to
what Guile's manual suggests).

In addition to the revert, 'close-procedure' now explicitly swallows
EBADF errors when 'close-port' is called.

* guix/zlib.scm (close-procedure): New procedure.
(make-gzip-input-port)[gzfile]: Use 'fileno' instead of 'port->fdes'.
Use 'close-procedure' instead of 'gzclose'.
(make-gzip-output-port): Likewise.
* tests/zlib.scm ("compression/decompression pipe"): Use 'port-closed?'
to determine whether PARENT has been closed.
2017-10-11 15:20:50 +02:00
Ludovic Courtès 90eaa9419a
import: cpan: Load (gnu packages perl) lazily.
* guix/import/cpan.scm: Remove dependency on (gnu packages perl).
(perl-package): New procedure.
(%corelist, core-module?): Use it instead of referring to 'perl'.
2017-10-10 23:12:04 +02:00
Ludovic Courtès b719ddbbbb
import: pypi: Remove unneeded import.
* guix/import/pypi.scm: Remove unneeded import.
2017-10-10 23:12:03 +02:00
Ludovic Courtès a6e22d8445
ui: Improve reporting of missing closing parentheses.
Suggested by Ricardo Wurmus.
Works around <https://bugs.gnu.org/28295>.

* guix/ui.scm (report-load-error): Add case for 'read-error'.
* tests/guix-system.sh: Test missing-closing-paren errors.
2017-10-10 23:12:03 +02:00
Marius Bakke c01ef97594
Merge branch 'master' into core-updates 2017-10-10 22:33:28 +02:00
Efraim Flashner 8b4af8284a
guix: mirrors: Add kde archive mirror.
* guix/download.scm (%mirrors)[kde]: Add kde-attic mirror.
2017-10-10 17:01:32 +03:00
Eric Bavier 7f0bb6540a
syscalls: clone: Define syscall-id for aarch64.
* guix/build/syscalls.scm (clone): Define syscall-id for aarch64 machines.
2017-10-09 18:55:18 -05:00
Ludovic Courtès 735f6b63d0
lint: Remove extra newline.
* guix/scripts/lint.scm (check-for-updates): Remove trailing "~%".
2017-10-09 23:17:49 +02:00
Efraim Flashner adf0c531a8
guix: lint: Add checker for new upstream versions.
* guix/scripts/lint.scm (check-for-updates): New procedure.
(%checkers): Add it.
* guix/scripts/refresh.scm (importer-modules, %updaters): Move
from here ...
* guix/upstream.scm: ... to here.
2017-10-09 14:05:17 +03:00
Oleg Pykhalov cca6941fee
pull: Add GUIX_PULL_URL environment variable.
* guix/scripts/pull.scm (%repository-url): Add GUIX_PULL_URL environment
  variable.
* doc/guix.texi (Invoking guix pull): Mention GUIX_PULL_URL.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-10-07 23:01:52 +02:00
Ludovic Courtès aba219af0f
pull: Honor 'parallel-job-count'.
* guix/build/pull.scm (build-guix): Use 'n-par-for-each' and honor
'parallel-job-count'.
2017-10-07 17:08:33 +02:00
Ludovic Courtès 1f3ea89871
store: Add missing import.
* guix/store.scm: Use (ice-9 format).
2017-10-07 17:08:32 +02:00
Ludovic Courtès eca16a3d1d
guix package: '--upgrade' no longer reverses package order.
Reported by Oleg Pykhalov <go.wigust@gmail.com>
at <https://lists.gnu.org/archive/html/help-guix/2017-10/msg00000.html>.

* guix/scripts/package.scm (options->installable)[upgraded]: Use
'fold-right' instead of 'fold'.
2017-10-07 17:08:32 +02:00
Ludovic Courtès e5788ebbe1
publish: Cache uncompressed nars as well.
Fixes <https://bugs.gnu.org/28664>.
Reported by Maxim Cournoyer <maxim.cournoyer@gmail.com>.

* guix/scripts/publish.scm (bake-narinfo+nar): When COMPRESSION is
'none, write NAR instead of doing nothing.
(make-request-handler): Use 'render-nar/cached' for /nar URLs with no
compression.
* tests/publish.scm ("with cache", "with cache, uncompressed"): Adjust
expected result accordingly.
2017-10-05 23:05:06 +02:00
Ludovic Courtès 9d80d0e95c
guix system: Error out when passed a wrong file system UUID/label.
* guix/scripts/system.scm (check-file-system-availability): New
procedure.
(perform-action): Use it.
2017-10-05 12:09:17 +02:00
Julien Lepiller f403d7abdf
guix: ant-build-system: Add #:test-include and #:test-exclude arguments.
* guix/build-system/ant.scm: Add #:test-include and #:test-exclude
arguments.
* guix/build/ant-build-system.scm: Generate test list from arguments.
* doc/guix.texi (Build Systems): Document it.
2017-10-03 21:38:23 +02:00
Julien Lepiller 8df1faa047
guix: ant-build-system: Add main-class support.
* guix/build-system/ant.scm: New #:main-class argument
* guix/build/ant-build-system.scm: Generate a manifest file with
additional properties.
* doc/guix.texi (Build Systems): Document it.
2017-10-03 21:37:47 +02:00
Efraim Flashner 64df08f0cf
Merge remote-tracking branch 'origin/master' into core-updates 2017-10-01 22:16:22 +03:00
Ricardo Wurmus 07f80c27fd
guix: Revert accidentally committed changes.
This is a follow-up to commit fb1db38547.

* guix/scripts/build.scm (lazy-util): Remove procedure.
(options->things-to-build): Remove special case for files with ".json"
extension.
2017-09-28 16:34:12 +02:00
Ricardo Wurmus fb1db38547
import: Add JSON importer.
* doc/guix.texi (Invoking guix import): Document it.
* guix/scripts/import/json.scm: New file.
* Makefile.am (MODULES): Add it.
* guix/scripts/import.scm (importers): Add json importer.
2017-09-28 13:10:11 +02:00
Ricardo Wurmus 5e892bc365
import: Add generic data to package converter.
* guix/import/utils.scm (build-system-modules, lookup-build-system-by-name,
specs->package-lists, source-spec->object, alist->package): New procedures.
* tests/import-utils.scm: Add tests for alist->package.
2017-09-28 13:10:11 +02:00
Ricardo Wurmus 68a91a183b
import: Add package->code.
* guix/import/print.scm: New file.
* tests/print.scm: New file.
* Makefile.am (SCM_TESTS): Add new test file.
(MODULES): Add print.scm.
2017-09-28 13:10:10 +02:00
Mohammed Sadiq ea1cd554cc
build-system: meson: Fix typo in variable name.
* guix/build-system/meson.scm (lower): fix typo in glib-or-gtk?.
2017-09-26 19:58:26 +02:00
Ludovic Courtès 06acf6b52f
http-client: Reset cache TTL upon 304 "Not Modified" responses.
* guix/http-client.scm (http-fetch/cached)[update-cache]: Add call to
'utime' in the 304 case.
2017-09-26 00:35:06 +02:00
Ludovic Courtès c1d8b3b3b5
upstream: Add new GNOME updater.
Partly fixes <https://bugs.gnu.org/28159>.
Reported by Hartmut Goebel <h.goebel@crazy-compilers.com>.

* guix/import/gnome.scm: New file.
* Makefile.am (MODULES): Add it.
* guix/gnu-maintenance.scm (latest-gnome-release)
(%gnome-updater): Remove.
2017-09-26 00:35:06 +02:00
Ludovic Courtès 97abc90733
upstream: Add 'url-prefix-predicate'.
* guix/gnu-maintenance.scm (url-prefix-predicate): Move to...
* guix/upstream.scm (url-prefix-predicate): ... here.
2017-09-26 00:35:06 +02:00
Arun Isaac 2374dee7bc
licenses: Add CC-Sampling+ 1.0.
* guix/licenses.scm (cc-sampling-plus-1.0): New variable.

Signed-off-by: Kei Kebreau <kkebreau@posteo.net>
2017-09-22 08:04:32 -04:00
宋文武 798648515b
download: Don't report the progress too fast.
* guix/utils.scm (<progress-reporter>): New record type.
(call-with-progress-reporter): New procedure.
* guix/build/download.scm (dump-port*, rate-limited, progress-reporter/file):
New procedures.
(ftp-fetch, http-fetch): Use 'dump-port*'.
(progress-proc): Remove procedure.
* guix/scripts/substitute.scm (progress-report-port): Rewrite in terms of
<progress-reporter>.
(process-substitution): Adjust accordingly.
2017-09-20 19:49:31 +08:00
Ludovic Courtès f1b65d0dd9
cve: Disable position recording while reading the CVE list.
* guix/cve.scm (fetch-vulnerabilities)[read*]: New procedure.
Use it in lieu of 'read'.
2017-09-19 23:58:25 +02:00
Ludovic Courtès 3ce1b9021a
http-client: 'http-client/cached' uses 'If-Modified-Since'.
* guix/http-client.scm (http-fetch/cached)[update-cache]: Add
'cache-port' parameter.  Check its mtime and compute 'if-modified-since'
header accordingly.  Guard 'http-get-error?' and honor 304.
Adjust callers of 'update-cache'.
* guix/gnu-maintenance.scm (ftp.gnu.org-files): Set #:ttl to 15m.
2017-09-19 12:19:15 +02:00
Ludovic Courtès 82781d871f
utils: 'current-source-directory' gracefully deals with lack of location info.
* guix/utils.scm (current-source-directory): Adjust for when
'syntax-source' returns #f.
2017-09-19 12:19:15 +02:00
宋文武 4220514b8f
substitute: Close the download port after substitution finished.
* guix/scripts/substitute.scm (progress-substitution): Call 'close-port'
after 'restore-file'.
2017-09-18 19:05:29 +08:00
Peter Mikkelsen 07c101e221
build-system: Add 'meson-build-system'.
* Makefile.am (MODULES): Add 'guix/build-system/meson.scm' and
'guix/build/meson-build-system.scm'.
* guix/build-system/meson.scm: New file.
* guix/build/meson-build-system.scm: New file.
* doc/guix.texi (Build Systems): Add 'meson-build-system'.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-09-16 18:07:00 +02:00
Ludovic Courtès 0649321d91
guix system: Add 'search' command.
* guix/scripts/system.scm (resolve-subcommand): New procedure.
(process-command): Handle 'search'.
(guix-system): Likewise.
(show-help): Augment.
* guix/scripts/system/search.scm: New file.
* po/guix/POTFILES.in: Add it.
* Makefile.am (MODULES): Add it.
* guix/ui.scm (%text-width): Export.
* doc/guix.texi (Invoking guix system): Document it.
(Service Types and Services): Mention 'guix system search'.
* tests/guix-system.sh: Test it.
2017-09-16 17:47:46 +02:00
Ludovic Courtès c7ae219e39
ui: Generalize relevance computation.
* guix/ui.scm (relevance, package-relevance): New procedures.
(%package-metrics): New variable.
* guix/scripts/package.scm (find-packages-by-description)[score]
[package-score]: Remove.  Use 'package-relevance' instead.
2017-09-16 17:47:45 +02:00
Ludovic Courtès c105653329
guix download: Honor mirrors when using '-o'.
Previously "guix download -o x mirror://gnu/…" would fail.

* guix/scripts/download.scm (download-to-file): Pass #:mirrors to
'url-fetch'.
2017-09-14 23:34:35 +02:00
Christopher Baines 01ef804d69
import: cpan: Replace '(package-license perl) with 'perl-license.
The perl-license definition is intended to avoid circular dependencies, so
use this as a default when importing packages from CPAN.

* guix/import/cpan.scm (string->license): Replace '(package-license perl) with
  'perl-license.
2017-09-12 23:15:36 +01:00
Ludovic Courtès 45bba47510
store: 'run-with-store' has a #:target parameter.
* guix/store.scm (run-with-store): Add #:target and honor it.
2017-09-12 23:56:33 +02:00
Ludovic Courtès fc2de6ce13
guix system: Pretty-print device UUIDs.
* guix/scripts/system.scm (display-system-generation): Check if
ROOT-DEVICE is a UUID and pretty-print it if it is.
2017-09-12 08:58:28 +02:00
Ludovic Courtès 4918e7fc22
download: Adjust main ftp.gnu.org mirror.
* guix/download.scm (%mirrors): Add missing "/gnu" in first mirror,
although that mirror would work even without it.  Use https instead of
http.
2017-09-11 11:51:50 +02:00
Ludovic Courtès 1b3ebae4f1
gnu-maintenance: Return all the latest tarballs, not just one.
* guix/gnu-maintenance.scm (latest-gnu-release): Return a list of
matching tarballs instead of just the first one.  This gives us .tar.gz,
.tar.xz, etc.
2017-09-11 11:51:39 +02:00
Ludovic Courtès e9f3811390
gnu-maintenance: Correctly compare versions.
* guix/gnu-maintenance.scm (latest-gnu-release): Add calls to
'sans-extension'.  This fixes version comparison, which could be fooled
with the ".tar.gz" extension.
2017-09-11 11:40:32 +02:00
Ludovic Courtès a9468b422b
substitute: Download from unauthorized sources that provide the right content.
This allows substitutes to be downloaded from unauthorized servers, as
long as they advertise the same hash and references as one of the
authorized servers.

* guix/scripts/substitute.scm (assert-valid-narinfo): Remove.
(valid-narinfo?): Add #:verbose?.  Handle each case of
'signature-case'.
(equivalent-narinfo?): New procedure.
(lookup-narinfos/diverse): Add 'authorized?' parameter and honor it.
[select-hit]: New procedure.
(lookup-narinfo): Add 'authorized?' parameter and pass it.
(process-query): Adjust callers accordingly.
(process-substitution): Remove call to 'assert-valid-narinfo'.  Check
whether 'lookup-narinfo' returns true and call 'leave' if not.
* tests/substitute.scm (%main-substitute-directory)
(%alternate-substitute-directory): New variables.
(call-with-narinfo): Make 'narinfo-directory' a parameter.  Call
'mkdir-p' to create it.  Change unwind handler to check whether
CACHE-DIRECTORY exists before deleting it.
(with-narinfo*): New macro.
("substitute, no signature")
("substitute, invalid hash")
("substitute, unauthorized key"): Change expected error message to "no
valid substitute".
("substitute, unauthorized narinfo comes first")
("substitute, unsigned narinfo comes first")
("substitute, first narinfo is unsigned and has wrong hash")
("substitute, first narinfo is unsigned and has wrong refs")
("substitute, unsigned narinfo comes first")
("substitute, two invalid narinfos"): New tests.
* doc/guix.texi (Substitutes): Explain the new behavior.
2017-09-11 11:10:21 +02:00
Ludovic Courtès 218f6eccaf
substitute: Make substitute URLs a SRFI-39 parameter.
* guix/scripts/substitute.scm (%cache-urls): Rename to...
(%default-substitute-urls): ... this.
(substitute-urls): New variable.
(guix-substitute): Use it instead of %CACHE-URLS.
* tests/substitute.scm: Likewise.
2017-09-11 11:10:21 +02:00
Ludovic Courtès fb25508856
size: Default to '--sort=self'.
* guix/scripts/size.scm (%default-options): Change default value for
'profile<?.
* doc/guix.texi (Invoking guix size): Adjust accordingly.
2017-09-07 13:57:42 +02:00
Tobias Geerinckx-Rice 57d2898772
Handle the same HTTP redirects everywhere.
* guix/build/download.scm (http-fetch): Complete the hard-coded list of HTTP
redirection status codes.
* guix/http-client.scm (http-fetch): Likewise.
* guix/scripts/lint.scm (probe-uri): Likewise.
2017-09-05 20:57:13 +02:00
Mathieu Othacehe 325ff6fe15
guix: Fix Guile current-processor-count deprecation warnings.
When current-processor-count is used without (ice-9 threads) being used, Guile
complains with the following warning:

Import (ice-9 threads) to have access to `current-processor-count'.

* guix/build/utils.scm: Use (ice-9 threads).
2017-09-05 19:41:31 +02:00
Mathieu Othacehe b100a70495
guix: Fix Guile current-processor-count deprecation warnings.
When current-processor-count is used without (ice-9 threads) being used, Guile
complains with the following warning:

Import (ice-9 threads) to have access to `current-processor-count'.

* guix/store.scm: Use (ice-9 threads).
2017-09-05 19:40:48 +02:00
Ludovic Courtès 100b216d8a
gnu-maintenance: GNU updater no longer relies on FTP access.
Partly fixes <https://bugs.gnu.org/28159>.
Suggested by Hartmut Goebel <h.goebel@crazy-compilers.com>.

* guix/gnu-maintenance.scm (%gnu-file-list-uri): New variable.
(ftp.gnu.org-files, latest-gnu-release): New procedures.
(%gnu-updater)[pred]: Change to GNU-HOSTED?.
[latest]: Change to LATEST-GNU-RELEASE.
(%gnu-ftp-updater): New variable.
2017-09-03 23:36:17 +02:00
Ludovic Courtès e3c83a7cd3
memoization: (mlambda () ...) allows for inner 'define'.
Previously (mlambda () (define foo 2) bar) would trigger a syntax error.

* guix/memoization.scm (%mlambda): In the zero-argument case, move
BODY... to a lambda to allow for inner 'define' and such.
2017-09-03 23:36:17 +02:00
Christopher Baines 4363767394
build: Fix helpful output for emacs-build-system install phase.
Detecting when no files were installed was broken when switching to use
cond. Test with (not (null? ...)) to fix this.

* guix/build/emacs-build-system.scm (install): Fix detecting when no files
  were installed.
2017-09-03 19:39:11 +01:00
Christopher Baines 81fe131e0f
build: emacs-build-system: Make the install phase more helpful.
Modify the install phase to detect when nothing has been installed, and error
if this happens. This is preferable to continuing, and allowing the next phase
to fail.

Also, when nothing can be found to be installed, print out each file that was
considered, along with the regular expressions that were used to include and
exclude it.

* gnu/build/emacs-build-system.scm (install-file?): Add additional error
  checking and logging.
2017-09-01 22:00:44 +01:00
Maxim Cournoyer fe55199542
scripts: Remove 'max-silent-time' from the default options.
Fixes <http://bugs.gnu.org/27157>.

Having a finite default `max-silent-time' value for scripts such as 'guix
environment' could lead to timeouts when building subtitutes; this was
undesirable.

This change also fixes client behavior to match the documentation, which
is that by default the daemon's settings are honored.

* guix/scripts/archive.scm (%default-options): Remove max-silent-time entry.
* guix/scripts/copy.scm (%default-options): Likewise.
* guix/scripts/environment.scm (%default-options): Likewise.
* guix/scripts/pack.scm (%default-options): Likewise.
* guix/scripts/package.scm (%default-options): Likewise.
* guix/scripts/pull.scm (%default-options): Likewise.
* guix/scripts/system.scm (%default-options): Likewise.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-09-01 10:29:39 +02:00
Ludovic Courtès 2e86c26478
download: Assume the "download" built-in builder is available.
This is a followup to 05ceb8dcaf.

* guix/download.scm (in-band-download): Remove.
(url-fetch): Call 'error' when BUILTINS lacks "download"; remove call to
'in-band-download'.
2017-08-28 23:15:35 +02:00
Marius Bakke 72e2815d18
Merge branch 'core-updates' 2017-08-26 15:15:49 +02:00
Mark H Weaver 05e172ca4e
download: Remove a SourceForge mirror that never returns 404.
* guix/download.scm (%mirrors)[sourceforge]: Remove
nbtelecom.dl.sourceforge.net, which never returns 404 responses.  This causes
download failures due to hash mismatch, effectively preventing secondary
source URLs from being queried.
2017-08-25 02:08:35 -04:00
Ludovic Courtès 94e86a6b67
graft: Correctly replace references near the end of the scan buffer.
Fixes <http://bugs.gnu.org/28212>.
Reported by Leo Famulari <leo@famulari.name>.

* guix/build/graft.scm (replace-store-references): When I >= END, check
whether WRITTEN > END and call 'get-bytevector-n!' when it is.
* tests/grafts.scm (buffer-size): New variable.
("replace-store-references, <http://bugs.gnu.org/28212>"): New test.
2017-08-24 23:55:51 +02:00
Ludovic Courtès 5e60bef980
Revert "graph: Provide access to the package record in the emit functions."
This reverts commit 5d7e854365, which
broke 'tests/graph.scm' and broke node types not related to <package>
objects, such as '%reference-node-type'.
2017-08-24 23:55:51 +02:00
Ludovic Courtès e4925e00ca
packages: Use Guile 2.0 for grafting.
Works around <https://bugs.gnu.org/28211>.
Reported by Marius Bakke <mbakke@fastmail.com>.

* guix/packages.scm (guile-2.0): New procedure.
(package-derivation, package-cross-derivation): Use it when computing
the #:guile argument to 'graft-derivation'.
2017-08-24 00:41:44 +02:00
Andy Wingo 045ebb3e58
gnu: bootloader: Deprecate "device" field in favor of "target".
* gnu/bootloader.scm (<bootloader-configuration>): Deprecate "device" field in
favor of "target" field.  This is mostly a renaming but also a generalization
to support UEFI targets being paths to a mounted partition instead of a device
name.
* gnu/system/examples/bare-bones.tmpl:
* gnu/system/examples/desktop.tmpl:
* gnu/system/examples/lightweight-desktop.tmpl:
* gnu/system/examples/vm-image.tmpl:
* gnu/system/install.scm:
* gnu/tests.scm:
* gnu/tests/install.scm:
* gnu/tests/nfs.scm:
* tests/system.scm: Adapt all invocations of bootloader-configuration.
* guix/scripts/system.scm (perform-action): Rename device argument to
bootloader-target.
(process-action): Adapt caller.
* doc/guix.texi (Proceeding with the Installation):
* doc/guix.texi (Bootloader Configuration): Update documentation.
2017-08-23 22:23:19 +02:00
Andy Wingo ba015ce9c0
gnu: scripts: Cleanup regarding "gnu system" bootloader devices.
* guix/scripts/system.scm (install-bootloader, install): Remove unused
"device" argument.
(reinstall-bootloader, perform-action): Adapt callers.
2017-08-23 22:23:06 +02:00
Marius Bakke 2718a9cd09
Merge branch 'master' into core-updates 2017-08-21 02:40:37 +02:00
宋文武 a02967d77a
guix download: Support retrieving local file without the URI scheme.
* guix/scripts/download.scm (guix-download): Treat the URL argument as a local
file path when it fails on 'string->uri'.  Call 'fetch' with the processed
'uri' instead of the original URL argument.
* tests/guix-download.sh: Adjust accordingly.
2017-08-20 20:55:45 +08:00
Ricardo Wurmus af735661f3
pack: Add "none" compressor.
* guix/scripts/pack.scm (%compressors): Add compressor "none"; prepend
extension with ".".
(self-contained-tarball, docker-image): Assume compressor extensions start
with period.
* doc/guix.texi (Invoking guix pack): Document it.
2017-08-19 17:59:42 +02:00
Mark H Weaver cc294bcee6
Merge branch 'master' into core-updates 2017-08-09 17:25:31 -04:00
Leo Famulari df851f5a91
download: Add the canonical GnuPG download site.
* guix/download.scm (%mirrors)<gnupg>: Add https://gnupg.org.
2017-08-09 16:01:36 -04:00
Ricardo Wurmus 32b7506c98
profiles: Only check file contents if the file exists.
* guix/profiles.scm (fonts-dir-file): Check that files exist before using
"empty-file?".
2017-08-09 14:46:48 +02:00
Mark H Weaver f167595ba1
Merge branch 'master' into core-updates 2017-08-06 00:23:20 -04:00
Ricardo Wurmus 88c8f247e5
build: Add minify build system.
* guix/build-system/minify.scm: New file.
* guix/build/minify-build-system: New file.
* Makefile.am (MODULES): Add new files.
* doc/guix.texi (Build Systems): Document minify-build-system.
2017-08-04 11:23:52 +02:00
Ludovic Courtès c53fc48144
pull: Honor '--no-grafts'.
* guix/scripts/pull.scm (guix-pull): Parameterize %GRAFT? as a function
of OPTS.
2017-08-02 00:04:00 +02:00
Ludovic Courtès 3085b50200
pull: Use the commit ID as the version string.
* guix/scripts/pull.scm (build-from-source): Add #:commit parameter.
Pass it to BUILD.
(build-and-install): Add #:commit and pass it to 'build-from-source'.
(guix-pull): Pass #:commit to 'build-and-install'.
2017-08-02 00:04:00 +02:00
Ludovic Courtès 59a1627518
pull: Fetch source code from Git.
* guix/scripts/pull.scm (%snapshot-url, with-environment-variable)
(with-PATH): Remove.
(ensure-guile-git!): New procedure.
(%repository-url): New variable.
(%default-options): Add 'repository-url' and 'ref'.
(show-help, %options): Add '--commit' and '--url'.
(temporary-directory, first-directory, interned-then-deleted)
(unpack): Remove.
(build-from-source): Rename 'tarball' to 'source'.  Remove call to
'unpack'.
(build-and-install): Rename 'tarball' to 'source'.
(honor-lets-encrypt-certificates!, report-git-error): New procedures.
(with-git-error-handling): New macro.
(guix-pull)[fetch-tarball]: Remove.
Wrap body in 'with-git-error-handling'.  Rewrite to use
'latest-repository-commit'.
* build-aux/build-self.scm (build): Print an error message and exit when
GUILE-GIT is #f.
* doc/guix.texi (Invoking guix pull): Mention Git.  Document '--commit'
and '--branch'.
2017-08-02 00:04:00 +02:00
Marius Bakke aa9780daf9
Merge branch 'master' into core-updates 2017-08-01 23:42:28 +02:00
Roel Janssen 5d7e854365
graph: Provide access to the package record in the emit functions.
* guix/graph.scm (export-graph): Pass the node to the emit functions, instead
  of the node's label.
2017-08-01 22:57:22 +02:00
Efraim Flashner a60667245f
guix package: Allow `guix package -u' to fuction as before.
This is a follow up to 6ddf97f81b

* guix/scripts/package.scm (%options) <"-u">: Only check for a flag when
there is an ARG after '-u'.
2017-08-01 23:02:26 +03:00
Ludovic Courtès 9081a776ea
lint: formatting: Detect sexp boundaries.
* guix/scripts/lint.scm (report-formatting-issues)[last-line]: Remove.
[sexp-last-line]: New procedure.
Use it.
2017-08-01 15:32:07 +02:00
Ludovic Courtès 6ddf97f81b
guix package: Warn when invoked with '-u -something'.
Fixes <https://bugs.gnu.org/27820>.
Reported by Hartmut Goebel <h.goebel@crazy-compilers.com>.

* guix/scripts/package.scm (%options) <"-u">: Emit a warning when ARG
starts with "-".
2017-07-31 22:22:27 +02:00
Ludovic Courtès 228a3982df
git-download: Remove call to 'canonicalize-path'.
* guix/git-download.scm (git-predicate): Remove call to
'canonicalize-path' since this could lead to discrepancies.  For
instance it broke 'make update-guix-package' since it passes a
non-canonical directory name.
2017-07-30 17:22:13 +02:00
Danny Milosavljevic 1975c754f4
bootloader: Use <menu-entry> for the bootloader side.
* gnu/bootloader.scm (menu-entry-device-mount-point): New variable.  Export it.
(<menu-entry>: New field "device".
* gnu/bootloader/grub.scm (grub-confgiuration-file): Handle <menu-entry>
entries.
* gnu/bootloader/extlinux.scm (extlinux-configuration-file): Handle
<menu-entry> entries.
* gnu/system.scm (menu->entry->boot-parameters): Delete variable.
(boot-parameters->menu-entry): New variable.  Export it.
(operating-system-bootcfg): Make OLD-ENTRIES a list of <menu-entry>.
* guix/script/system.scm (reinstall-bootloader): Fix bootcfg usage.
(perform-action): Fix bootcfg usage.
2017-07-28 21:56:18 +02:00
Ludovic Courtès f0e492f0a5
utils: Factorize XDG directory handling.
* guix/ui.scm (config-directory): Remove.
* guix/utils.scm (xdg-directory, config-directory): New procedures.
(cache-directory): Rewrite in terms of 'xdg-directory'.
* guix/scripts/substitute.scm (%narinfo-cache-directory): Pass #:ensure?
 #f to 'cache-directory'.
2017-07-28 18:09:43 +02:00
Marius Bakke e0b9e377f1
Merge branch 'master' into core-updates 2017-07-28 00:34:13 +02:00
Ludovic Courtès 952cf67cb1
weather: Show "-m" option in help message.
Reported by Alex Kost <alezost@gmail.com>.

* guix/scripts/weather.scm (show-help): Show "-m".
2017-07-27 11:47:50 +02:00
Christopher Baines f135b4ae83
git-download: Speed up 'git-predicate'.
Adjust 'git-predicate' to use data structures that perform better when used
with git repositories with a large number of files.

Previously when matching either a regular file or directory, 'git-predicate'
would search a list with a length equal to the number of files in the
repository. As a search operation happens for roughly every file in the
repository, this meant that the time taken to use 'git-predicate' to traverse
all the files in a repository was roughly exponential with respect to the
number of files in the repository.

Now, for matching regular files or symlinks, 'git-predicate' uses a vhash
using the inode value as the key. This should perform roughly in constant
amount of time, instead of linear with respect to the number of files in the
repository.

For matching directories, 'git-predicate' now uses a tree structure stored in
association lists. To check if a directory is in the tree, the tree is
traversed from the root. The time complexity of this depends on the shape of
the tree, but it should be an improvement on searching through the list of all
files.

* guix/git-download.scm (files->directory-tree, directory-in-tree?): New
procedures.
(git-predicate): Compute DIRECTORY-TREE.  Turn INODES into a vhash.
Adjust body of lambda accordingly.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2017-07-25 23:24:16 +02:00
Ludovic Courtès 84620dd0c4
offload: Fix potential file descriptor and memory leak.
The '%slots' list could grow indefinitely; in practice though,
guix-daemon is likely to restart 'guix offload' often enough.

* guix/scripts/offload.scm (%slots): Remove.
(choose-build-machine): Don't 'set!' %SLOTS.  Return the acquired slot
as a second value.
(process-request): Adjust accordingly.  Release the returned slot after
'transfer-and-offload'.
2017-07-25 23:24:16 +02:00
Ludovic Courtès 236cae0628
offload: Disconnect sessions created by 'machine-load'.
This fixes a memory leak that can be seen by running:

  (map (lambda _ (machine-load m)) (iota 1000))

* guix/scripts/offload.scm (machine-load): Add call to 'disconnect!'.
2017-07-25 23:24:15 +02:00
Ludovic Courtès 585347d7aa
Add 'guix weather'.
* guix/scripts/weather.scm: New file.
* Makefile.am (MODULES): Add it.
* doc/guix.texi (Substitutes, Invoking guix publish): Mention "guix
weather".
(Invoking guix weather): New node.

Co-authored-by: Ricardo Wurmus <rekado@elephly.net>
2017-07-25 12:15:43 +02:00
Ludovic Courtès e956ae16a4
import: cpan: Updater returns a list of URLs.
* guix/import/cpan.scm (latest-release): Return a list in the 'urls'
field of 'upstream-source'.
2017-07-24 17:35:26 +02:00
Leo Famulari 6c1a317e29
Merge branch 'master' into core-updates 2017-07-23 03:42:12 -04:00
Ludovic Courtès c95644f017
publish: Make the cache eviction policy less aggressive.
Suggested by Mark H Weaver <mhw@netris.org>.

* guix/scripts/publish.scm (nar-expiration-time): New procedure.
(render-narinfo/cached): Use it as the #:entry-expiration passed to
'maybe-remove-expired-cache-entries'.
2017-07-21 17:03:25 +02:00
Ludovic Courtès deac674ab4
publish: Avoid 'valid-path?' RPC for non-existent items.
* guix/scripts/publish.scm (render-narinfo/cached): Call 'file-exists?'
before calling 'valid-path?'.  This makes the 404 path slightly faster.
2017-07-21 17:03:25 +02:00
Ludovic Courtès 35eb77b09d
store: Rewrite 'store-path-hash-part' to not use regexps.
* guix/store.scm (store-path-hash-part): Rewrite without using a
regexp.  This speeds up 'guix substitute'.
2017-07-21 17:03:25 +02:00
Ludovic Courtès 33463986ba
publish: Remove 'regexp-exec' call from the hot path.
* guix/scripts/publish.scm (extract-narinfo-hash): Rewrite without
resorting to regexps.
2017-07-21 17:03:24 +02:00
Ludovic Courtès 0a94dc6396
base32: Export the base32 charsets.
* guix/base32.scm (%nix-base32-charset, %rfc4648-base32-charset): New
variables.
2017-07-21 17:03:24 +02:00
Ludovic Courtès 75a4d86f50
substitute: Avoid repeated calls to 'length'.
* guix/scripts/substitute.scm (fetch-narinfos)[update-progress!]: Move
'length' call outside of lambda.
2017-07-21 17:03:24 +02:00
Ludovic Courtès 3d3e93b3f9
substitute: Optimize hash-part-to-path conversion on non-200 responses.
Previously this operation was linear in the number of requests and
involved costly calls to 'string-contains'.

* guix/scripts/substitute.scm (fetch-narinfos)[hash-part->path]: New
procedure.
[handle-narinfo-response]: Use it for caching when CODE is not 200.
2017-07-21 17:03:24 +02:00
Ludovic Courtès 302d46e63f
gexp: Slightly improve error reporting for 'local-file'.
Reported by Ricardo Wurmus.

* guix/gexp.scm (local-file): Define using 'syntax-case' instead of
'syntax-rules'.  Explicitly handle the zero-argument case and the
use-as-an-identifier case.
2017-07-20 18:08:00 +02:00
Arun Isaac 41209a6f3a
licenses: Add MirOS license.
* guix/licenses.scm (miros): New variable.
2017-07-20 19:55:21 +05:30
Ludovic Courtès 561f4e4500
guix package: '-l' correctly handles zero-generation profiles.
* guix/scripts/package.scm (process-query) <'list-generations>: Properly
handle the case where 'profile-generations' returns the empty list.
2017-07-20 15:29:15 +02:00
Ludovic Courtès edbe07cd67
guix package: Trim trailing slashes from the profile name.
Fixes <https://bugs.gnu.org/25762>.
Reported by Ricardo Wurmus <rekado@elephly.net>.

* guix/scripts/package.scm (canonicalize-profile): Trim trailing slashes
from PROFILE.
2017-07-20 15:29:15 +02:00
Ludovic Courtès da03649640
profiles: Remove workaround for an old Guile 'scandir' bug.
* guix/profiles.scm (generation-numbers)[scandir]: Remove.
2017-07-20 11:57:13 +02:00
Tobias Geerinckx-Rice 644e5f17df
download: Add OpenBSD mirrors.
* guix/download.scm (%mirrors) <openbsd>: Add HTTPS OpenBSD mirrors.
* gnu/packages/ntp.scm (openntpd)[source]: Use them.
* gnu/packages/ssh.scm (openssh)[source]: Likewise.
* gnu/packages/tls.scm (libressl)[source]: Likewise.
2017-07-19 01:42:08 +02:00
Ludovic Courtès 5058bf5684
guix system: Use "image.iso" as the name of ISO images.
* guix/scripts/system.scm (system-derivation-for-action): Pass #:name to
'system-disk-image'.
2017-07-18 21:41:35 +02:00
Ludovic Courtès ef03d8dc37
syscalls: Delay resolution of "scm_set_automatic_finalization_enabled".
* guix/build/syscalls.scm (%set-automatic-finalization-enabled?!) [guile-2.2]:
Wrap in 'delay'.
2017-07-18 15:31:12 +02:00
Ludovic Courtès 578dfbe07b
gexp: 'ungexp-splicing' properly accounts for nested native inputs.
Previously, (gexp-native-inputs #~#$@(list #~#+foo)) would return '().

This is a followup to 5b14a7902c.

* guix/gexp.scm (gexp-inputs)[add-reference-inputs]: In the list case,
remove 'if' around 'fold-right'.  In 'map' lambda, always inherit N?.
* tests/gexp.scm ("gexp list splicing + ungexp-splicing"): New test.
2017-07-17 23:41:36 +02:00
Ludovic Courtès b547349d50
substitute: Work around Guile 2.2 'time-monotonic' bug.
Prior to this change, half of the cached narinfos would expire
immediately since they contained the number of nanoseconds instead of
the number of seconds as their date.

* guix/scripts/substitute.scm (time-monotonic) <guile-2.2>: Define, as a
workaround.
2017-07-12 21:56:17 +02:00
Ludovic Courtès a6c1fe8240
size: Add '--sort=KEY'.
* guix/scripts/size.scm (profile-closure<?, profile-self<?): New
procedures.
(display-profile): Add #:profile<? parameter and honor it.
(show-help, %options): Add '--sort'.
(%default-options): Add 'profile<?'.
(guix-size): Pass PROFILE<? to 'display-profile*'.
* doc/guix.texi (Invoking guix size): Document '--sort'.
2017-07-12 21:56:17 +02:00
Ludovic Courtès 1ac3a488ad
environment: Rationalize calls to 'set-build-options'.
Before this change '--substitute-urls' would be ignored.

* guix/scripts/environment.scm (build-environment): Remove redundant
call to 'set-build-options-from-command-line*'.
(guix-environment): Move 'set-build-options-from-command-line' right
after 'with-store'.
2017-07-12 21:56:17 +02:00
Danny Milosavljevic 0bc6fe323d
syscalls: Add network-interface-running?
* guix/build/syscalls.scm (network-interface-running?): New variable.
Export it.
* tests/syscalls.scm: Add test.

Co-authored-by: John Darrington <jmd@gnu.org>
2017-07-12 16:15:30 +02:00
Ludovic Courtès 0ca3d55686
store: Account for 'add-to-store' in RPC statistics.
* guix/store.scm (add-to-store): Add call to 'record-operation'.
2017-07-11 00:48:50 +02:00
Leo Famulari c8eb2b8c60
Merge branch 'master' into core-updates 2017-07-10 14:37:53 -04:00
Ludovic Courtès 1ab9e48339
syscalls: Adjust 'dirent64' struct for GNU/Hurd.
Reported by rennes@openmailbox.org.

* guix/build/syscalls.scm (file-type->symbol): New procedure.
(%struct-dirent-header): Rename to...
(%struct-dirent-header/linux): ... this.  Rename introduced bindings as
well.
(%struct-dirent-header/hurd): New C struct.
(define-generic-identifier): New macro.
(read-dirent-header, %struct-dirent-header, sizeof-dirent-header):
Define in terms of 'define-generic-identifier'.
2017-07-10 00:07:36 +02:00
Ricardo Wurmus bb3b35975c
build-system: texlive: Build union in configure phase.
This allows us to use texmf.cnf instead of having to set all required
environment variables manually.

* guix/build/texlive-build-system.scm (configure): New procedure.
(build): Simplify.
(%standard-phases): Add configure phase.
* guix/build-system/texlive.scm (texlive-build): Include (guix build union) in
modules.
(%texlive-build-system-modules): Likewise.
2017-07-09 17:07:27 +02:00
Ricardo Wurmus 1678be097b
build-system: texlive: Only build packages in the current directory.
* guix/build/texlive-build-system.scm (build): Use scandir instead of
find-files.
2017-07-09 17:07:27 +02:00
Ludovic Courtès 960c6ce96d
discovery: Recurse into directories pointed to by a symlink.
Reported by Christopher Baines <mail@cbaines.net>
and Alex Kost <alezost@gmail.com>
at <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00290.html>.

* guix/discovery.scm (scheme-files): When ENTRY is a symlink that
doesn't end in '.scm', call 'stat' and recurse if it points to a
directory.
* tests/discovery.scm ("scheme-modules recurses in symlinks to
directories"): New test.
2017-07-03 23:51:23 +02:00
Ludovic Courtès cc1dfc202f
copy: Default to port 22.
Failing to do that, "%p" would be "0" when using "ProxyCommand"
in ~/.ssh/config.

* guix/scripts/copy.scm (send-to-remote-host): Default to port 22.
(retrieve-from-remote-host): Likewise.
2017-07-03 23:51:23 +02:00
Ludovic Courtès d5ec5ed719
packages: Mark 'replacement' as an "innate" field.
Suggested by Mark H Weaver
at <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00355.html>.

* guix/packages.scm (<package>)[replacement]: Mark as "innate".
* gnu/packages/base.scm (glibc-2.25-patched, glibc-2.24)
(glibc-2.23, glibc-2.22, glibc-2.21, glibc-locales): Remove
'replacement' field, which was set to #f.
* gnu/packages/commencement.scm (perl-boot0): Likewise.
* gnu/packages/fontutils.scm (graphite2/fixed): Likewise.
* gnu/packages/ghostscript.scm (ghostscript/fixed): Likewise.
* gnu/packages/gnupg.scm (libgcrypt-1.7.8): Likewise.
* gnu/packages/guile.scm (guile-2.0/fixed, guile-2.2): Likewise.
* gnu/packages/icu4c.scm (icu4c/fixed): Likewise.
* gnu/packages/image.scm (libpng-apng): Likewise.
* gnu/packages/make-bootstrap.scm (%guile-static): Likewise.
* gnu/packages/pcre.scm (pcre/fixed): Likewise.
* gnu/packages/perl.scm (perl/fixed): Likewise.
* gnu/packages/ruby.scm (ruby-2.3, ruby-2.2, ruby-2.1)
(ruby-1.8): Likewise.
* gnu/packages/tls.scm (gnutls-3.5.13, gnutls/guile-2.2): Likewise.
* gnu/packages/xml.scm (expat-2.2.1): Likewise.
2017-07-03 23:51:22 +02:00
宋文武 85cfbd46ce
profiles: xdg-desktop-database: Run the hook when GLib is referenced.
This will pull the latest 'desktop-file-utils' package into the profile
closure, as the 'xdg-mime-database' hook already does.

* guix/profiles.scm (xdg-desktop-database): Run the hook when 'glib' is
referenced.
2017-07-03 23:27:04 +08:00
Danny Milosavljevic 3f4d8a7f66
guix system: Add "--file-system-type" option.
* guix/scripts/system.scm (process-action): Pass file-system-type to ...
(perform-action): ... here.  Add new keyword argument.  Pass new value to ...
(system-derivation-for-action): ... here.  Add new keyword argument.
Pass new value to system-disk-image.
* doc/guix.texi (disk-image): Document new option.
2017-07-03 16:33:46 +02:00
宋文武 dbde386ee3
ui: package->recutlis: Remove duplicated package names in dependencies.
* guix/ui.scm (package->recutils): Add call to 'delete-duplicates' in
'dependencies->recutils'.
2017-07-02 13:14:16 +08:00
Ludovic Courtès b2fde4800d
store: 'references/substitutes' really caches its result.
Until now the cache was always empty because 'for-each' was passed ITEMS
as its second argument, and ITEMS was the empty list at that point.

* guix/store.scm (references/substitutes): Add 'requested' variable.
Use it as second argument of 'for-each' in base case.
2017-07-02 00:41:12 +02:00
Ludovic Courtès 2633bd324b
store: 'references/substitutes' save an RPC is the trivial case.
* guix/store.scm (references/substitutes): Save a
'substitutable-path-info' call when MISSING is empty.
2017-07-02 00:41:12 +02:00
Mathieu Othacehe b02469d298
guix: git: Stop using libgit2-shutdown.
* guix/git.scm (with-libgit2): Stop calling (libgit2-shutdown) to prevent
segfaults when pointer finalizers are run.
2017-07-01 16:32:42 +02:00
Ludovic Courtès e0556f7695
Merge branch 'master' into core-updates 2017-06-30 11:41:57 +02:00
Ludovic Courtès a8ac4f081a
vm: Estimate the disk size by default.
* gnu/build/vm.scm (estimated-partition-size): New procedure.
* gnu/system/vm.scm (expression->derivation-in-linux-vm):
Change #:disk-image-size default to 'guess.
[builder]: When DISK-IMAGE-SIZE is 'guess, use
'estimated-partition-size' and compute and estimate of the image size.
(qemu-image): Likewise.
* guix/build/store-copy.scm (file-size, closure-size): New procedures.
* guix/scripts/system.scm (%default-options): Change 'image-size' to
'guess.
* doc/guix.texi (Building the Installation Image): Remove '--image-size'
flag from example.
(Invoking guix system): Document the image size estimate.
2017-06-30 00:16:50 +02:00
Leo Famulari 1024c8119c
Merge branch 'master' into core-updates 2017-06-29 18:02:17 -04:00
Ludovic Courtès 0040140d34
guix package: Allow '--rollback', after all.
* guix/scripts/package.scm (%options): Add "rollback" as an alias for
"roll-back".
2017-06-26 22:52:06 +02:00
Ludovic Courtès fc8fdcf56e
guix package: 'guix package -r PKG -u' does not upgrade PKG.
Fixes <http://bugs.gnu.org/27262>.
Reported by Mark H Weaver <mhw@netris.org>.

* guix/scripts/package.scm (transaction-upgrade-entry): Check if ENTRY
matches 'manifest-transaction-removal-candidate?' and return TRANSACTION
if it does.
(process-actions): Move 'options->removable' from step 2 to step 1.
2017-06-26 22:52:06 +02:00
Ludovic Courtès 6d382339de
profiles: Add 'manifest-transaction-removal-candidate?'.
* guix/profiles.scm (manifest-transaction-removal-candidate?): New
procedure.
* tests/profiles.scm ("manifest-transaction-removal-candidate?"): New
test.
2017-06-26 22:52:06 +02:00
Ludovic Courtès 94a400beba
import cran: Generate a valid 'license' field for "GPL".
Fixes <http://bugs.gnu.org/27294>.
Reported by Joshua Sierles <joshua@joshua.si>.

* guix/import/cran.scm (string->license) <"GPL">: Return a quoted list.
2017-06-26 22:52:06 +02:00
Mark H Weaver ed068b960e
Merge branch 'master' into core-updates 2017-06-26 00:00:58 -04:00
Ludovic Courtès a1b46bdc06
guix package: Warn about packages that no longer exist.
Fixes <http://bugs.gnu.org/27261>.
Reported by Mark H Weaver <mhw@netris.org>.

* guix/scripts/package.scm (transaction-upgrade-entry): Add call to
'warning' when NAME cannot be found in the package set.
2017-06-25 22:29:15 +02:00
Ludovic Courtès 4c228f9e54
refresh: Be more verbose when passed an explicit package list.
* guix/scripts/refresh.scm (check-for-package-update): Use
'version-compare' instead of 'version>?'.  When WARN? is true, print
something for the '=' and '<' cases.
2017-06-24 23:28:23 +02:00
Ludovic Courtès 5df1395a8d
store: Define a default port for TCP connections.
* guix/store.scm (%default-guix-port): New variable.
(connect-to-daemon)[connect]: Use it when (uri-port uri) is #f.
* doc/guix.texi (The Store): Mention the default port number.
2017-06-22 10:59:07 +02:00
Ludovic Courtès 7ae97a4c3f
store: Pass a socket type hint to 'getaddrinfo'.
* guix/store.scm (open-inet-socket): Pass hints in the 'getaddrinfo'
call.
2017-06-22 10:59:06 +02:00
Ludovic Courtès afd06f605b
environment: Disable profile collision checks.
Reported by Efraim Flashner.
This is a followup to a654dc4bcf.

* guix/profiles.scm (profile-derivation): Add #:allow-collisions? and
honor it.
* guix/scripts/environment.scm (inputs->profile-derivation): Pass
 #:allow-collisions? #f to 'profile-derivation'.
* tests/guix-environment.sh: Test "guix environment guix".
2017-06-21 16:53:22 +02:00
Ludovic Courtès 2e2b5ad7bb
profiles: Move 'manifest-entry-dependencies' user after definition.
Reported by Efraim Flashner.

* guix/profiles.scm (manifest-transitive-entries): Move after
<manifest-entry> definition.
2017-06-21 11:59:33 +02:00
Ludovic Courtès 8c9e90debf
guix package: '--search-paths' shows search paths from propagated inputs.
* guix/scripts/package.scm (process-query) <'search-paths>: Use
'manifest-transitive-entries' instead of 'manifest-entries'.
2017-06-21 11:05:53 +02:00
Ludovic Courtès a654dc4bcf
profiles: Catch and report collisions in the profile.
* guix/profiles.scm (&profile-collision-error): New error condition.
(manifest-transitive-entries, manifest-entry-lookup, lower-manifest-entry)
(check-for-collisions): New procedures.
(profile-derivation): Add call to 'check-for-collisions'.
* guix/ui.scm (call-with-error-handling): Handle '&profile-collision-error'.
* tests/profiles.scm ("collision", "collision of propagated inputs")
("no collision"): New tests.
2017-06-21 11:05:53 +02:00
Ludovic Courtès 81e3485c0d
guix package: Always upgrade packages that have propagated inputs.
* guix/scripts/package.scm (transaction-upgrade-entry): Always upgrade
packages that have propagated inputs.
2017-06-21 11:05:53 +02:00
Ludovic Courtès b3a00885c0
profiles: Manifest entries keep a reference to their parent entry.
* guix/profiles.scm (<manifest-entry>)[parent]: New field.
(package->manifest-entry): Add #:parent parameter.  Fill out the
'parent' field of <manifest-entry>; pass #:parent in recursive calls.
* guix/profiles.scm (sexp->manifest)[sexp->manifest-entry]: New
procedure.  Use it for version 3.
* tests/profiles.scm ("manifest-entry-parent"): New procedure.
("read-manifest")[entry->sexp]: Add 'manifest-entry-parent' to the
result.
2017-06-21 11:05:52 +02:00
Ludovic Courtès 55b4715fd4
profiles: Represent propagated inputs as manifest entries.
* guix/profiles.scm (package->manifest-entry): Turn DEPS into a list of
manifest entries.
(manifest->gexp)[entry->gexp]: Call 'entry->gexp' on DEPS.
Bump version to 3.
(sexp->manifest)[infer-dependency]: New procedure.
Use it for versions 1 and 2.  Parse version 3.
(manifest-inputs)[entry->gexp]: New procedure.
Adjust to 'dependencies' being a list of <manifest-entry>.
* tests/profiles.scm ("packages->manifest, propagated inputs")
("read-manifest"): New fields.
2017-06-21 11:05:52 +02:00
Arun Isaac 148585c240
gnu: Move contents of zip module into compression module.
* gnu/packages/zip.scm (zip, unzip, zziplib, perl-zip): Move to...
* gnu/packages/compression.scm: ...here.
* gnu/packages/zip.scm: Delete file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Unregister deleted file.
* po/packages/POTFILES.in: Unregister deleted file.
* gnu/packages/{audio, avr, bioinformatics, busybox, cdrom, ci, compression,
docbook, documentation, fonts, fpga, game-development, games, gl, gnome,
gnuzilla, graphics, guile, haskell, image, java, kodi, ldc, libreoffice,
markup, maths, mc, monitoring, music, php, pretty-print, python, scheme,
smalltalk, statistics, synergy, tex, textutils, video, web-browsers, xml,
zip}.scm, guix/build-system/{ant, font}.scm, guix/{download, packages}.scm:
Adapt module import.
2017-06-20 18:10:35 +05:30
Mark H Weaver 9815739e9b
Merge branch 'master' into core-updates 2017-06-20 00:25:59 -04:00
Ludovic Courtès e037e9dbec
store: Buffer RPC writes.
For a command like:

  guix build python2-numpy -n

this reduces the number of 'write' syscalls from 9.5K to 2.0K.

* guix/store.scm (<nix-server>)[buffer, flush]: New fields.
(open-connection): Adjust accordingly.  Call 'buffering-output-port' to
compute the two new fields.
(write-buffered-output, buffering-output-port): New procedures.
(operation): Write to (nix-server-output-port server).  Call
'write-buffered-output'.
2017-06-19 23:23:14 +02:00
Ricardo Wurmus 00f037ca44
build-system/texlive: Update to texlive-2017.1, revision 44591.
* guix/build-system/texlive.scm (%texlive-tag): Change to texlive-2017.1.
(%texlive-revision): Change to 44591.
2017-06-19 08:22:04 +02:00
Mark H Weaver 9d4385634d
Merge branch 'master' into core-updates 2017-06-18 02:36:51 -04:00
Ludovic Courtès d46c4423f4
discovery: 'scheme-files' returns '() for a non-accessible directory.
Fixes a regression introduced in
d27cc3bfaa.

Reported by Ricardo Wurmus <rekado@elephly.net>.

* guix/discovery.scm (scheme-files): Catch 'scandir*' system errors.
Return '() and optionally raise a warning upon 'system-error'.
* tests/discovery.scm ("scheme-modules, non-existent directory"): New
test.
2017-06-18 00:14:07 +02:00
Ludovic Courtès 3bacc655c5
syscalls: 'opendir*' error message shows the file name.
* guix/build/syscalls.scm (opendir*): Add NAME to the 'system-error'
message.
2017-06-18 00:14:07 +02:00
Ludovic Courtès f4453df9a5
store: Add an RPC counter.
* guix/store.scm (%rpc-calls): New variable.
(show-rpc-profile, record-operation): New procedures.
(operation): Add call to 'record-operation'.
* guix/ui.scm (run-guix-command): Wrap COMMAND-MAIN in 'dynamic-wind'.
Run EXIT-HOOK.
2017-06-16 17:08:22 +02:00
Ludovic Courtès d27cc3bfaa
discovery: Rewrite 'scheme-files' using 'scandir*'.
On a command like:

  guix environment --ad-hoc coreutils -- true

this reduces the number of 'stat' calls from 14.1K to 9.7K on my
setup (previously each getdents(2) call would be followed by one stat(2)
call per entry).

* guix/discovery.scm (scheme-files): Rewrite using 'scandir*'.
2017-06-16 17:08:22 +02:00
Ludovic Courtès fa73c19373
syscalls: Add 'scandir*'.
* guix/build/syscalls.scm (%struct-dirent-header): New C struct.
(string->pointer/utf-8, pointer->string/utf-8): New procedures.
(opendir*, closedir*, readdir*, scandir*): New procedures.
* tests/syscalls.scm ("scandir*, ENOENT")
("scandir*, ASCII file names", "scandir*, UTF-8 file names")
("scandir*, properties): New tests.
2017-06-16 17:08:22 +02:00
Ludovic Courtès cbee955901
ui: Remove the empty string from '%load-extensions'.
* guix/ui.scm (run-guix): Set %LOAD-EXTENSIONS.
2017-06-15 23:07:47 +02:00
Ludovic Courtès 7ebc6cf869
packages: Patches can be any lowerable object.
* guix/packages.scm (patch-and-repack)[instantiate-patch]: Replace
'origin?' with 'struct?'.
2017-06-15 23:07:47 +02:00
Ricardo Wurmus afbc94194e
guix: Add texlive importer.
* guix/import/texlive.scm: New file.
* guix/scripts/import/texlive.scm: New file.
* Makefile.am (MODULES): Add them.
* tests/texlive.scm: New file.
* Makefile.am (SCM_TESTS): Add it.
* guix/scripts/import.scm (importers): Add texlive importer.
* doc/guix.texi (Invoking guix import): Document it.
2017-06-15 17:03:19 +02:00
Ricardo Wurmus 205794c868
build-system: Add 'texlive-build-system'.
* guix/build-system/texlive.scm: New file.
* guix/build/texlive-build-system.scm: New file.
* Makefile.am (MODULES): Add them.
* doc/guix.texi (Build Systems): Document it.
* gnu/packages/tex.scm (%texlive-tag, %texlive-revision): Remove variables.
(texlife-ref): Remove procedure.
2017-06-15 17:03:16 +02:00
Ricardo Wurmus 942c4f812a
licenses: Add common TeX and LaTeX licenses.
* guix/licenses.scm (knuth, lppl, lppl1.0+, lppl1.2, lppl1.2+, lppl1.3,
lppl1.3+, lppl1.3a, lppl1.3a+, lppl1.3b, lppl1.3b+, lppl1.3c, lppl1.3c+): New
variables.
2017-06-15 17:03:14 +02:00
Ricardo Wurmus bef0db3769
guix: Add download-svn-to-store.
* guix/svn-download.scm (download-svn-to-store): New procedure.
2017-06-15 17:03:14 +02:00
Danny Milosavljevic d1e7ca2df8
import: pypi: Always use pypi.io URL with downcased package name.
* guix/import/pypi.scm (make-pypi-sexp): Always use pypi.io URL with
downcased package name.
2017-06-15 09:49:13 +02:00
Ludovic Courtès 4e863eb35f
guix package: '--search' sorts by relevance.
* guix/scripts/package.scm (find-packages-by-description): Rewrite to
compute a score based on the number of regexps matched and the number of
matches for each regexp.  Sort according to this score and return it as
a second value.
(process-query) <'search>: Capture the two return values of
'find-packages-by-description'.  Pass #:extra-fields to
'package->recutils'.
* doc/guix.texi (Invoking guix package): Mention relevance, give an
example.
2017-06-13 23:22:19 +02:00
Ludovic Courtès 4ee79f22f5
ui: 'package->recutils' takes #:extra-fields.
* guix/ui.scm (package->recutils): Add #:extra-fields and honor it.
2017-06-13 23:22:19 +02:00
Ludovic Courtès 015f17e8b9
derivations: Introduce 'read-derivation-from-file'.
This avoids the open/fstat/close syscalls upon a cache hit that we had
with the previous idiom:

  (call-with-input-file file read-derivation)

where caching happened in 'read-derivation' itself.

* guix/derivations.scm (%read-derivation): Rename to...
(read-derivation): ... this.
(read-derivation-from-file): New procedure.
(derivation-prerequisites, substitution-oracle)
(derivation-prerequisites-to-build):
(derivation-path->output-path, derivation-path->output-paths):
(derivation-path->base16-hash, map-derivation): Use
'read-derivation-from-file' instead of (call-with-input-file …
read-derivation).
* guix/grafts.scm (item->deriver): Likewise.
* guix/scripts/build.scm (log-url, options->things-to-build): Likewise.
* guix/scripts/graph.scm (file->derivation): Remove.
(derivation-dependencies, %derivation-node-type): Use
'read-derivation-from-file' instead.
* guix/scripts/offload.scm (guix-offload): Likewise.
* guix/scripts/perform-download.scm (guix-perform-download): Likewise.
* guix/scripts/publish.scm (load-derivation): Remove.
(narinfo-string): Use 'read-derivation-from-file'.
2017-06-12 17:53:51 +02:00
Ludovic Courtès b46712159c
store: Speed up 'add-to-store'.
* guix/store.scm (add-to-store): Remove 'lstat' call.
2017-06-12 17:53:51 +02:00
Ludovic Courtès 2ac6998063
build-system/gnu: Work around 'time-monotonic' bug in Guile 2.2.2.
Fixes <http://bugs.gnu.org/27303>.
Reported by Leo Famulari <leo@famulari.name>.

* guix/build/gnu-build-system.scm (time-monotonic) [guile-2.2]: Define.
2017-06-11 22:52:23 +02:00
Marius Bakke 5bace4c8ad
Merge branch 'master' into core-updates
Conflicts:
* gnu/packages/tls.scm (gnutls): Incorporated 3.5.13 graft (88e2511e21).
2017-06-11 02:07:06 +02:00
Mathieu Othacehe f96752e378
bootloader: Rename boot-name to bootloader-name.
* gnu/system (<boot-parameters>)[boot-name]: Rename field to...
[bootloader-name]: ... this.  Adjust users.
* gnu/scripts/system.scm: Adjust accordingly.
2017-06-10 18:32:11 +02:00
Marius Bakke ea45e2c500
Merge branch 'master' into core-updates 2017-06-10 02:57:50 +02:00
Mathieu Othacehe 6b7b3ca981
guix: git: Add new module.
* guix/git.scm: New file.
* configure.ac: Check for (guile git).
* Makefile.am: Build guix/git.scm if (guile git) is available.
2017-06-09 09:48:26 +02:00
Maxim Cournoyer df34f47894
build-system: emacs: Factorize include/exclude default arguments.
The `install' phase of the emacs-build-system contained default arguments
duplicated from the host side `emacs-build' procedure. This change factorizes
them so that:

1. They are not duplicated.
2. They can be reused and extended easily when defining emacs packages.

* guix/build/emacs-build-system.scm (%default-include, %default-exclude): New
  variables.
(install): Use %default-include and %default-exclude as default arguments.
* guix/build-system/emacs.scm: Use and re-export %default-include,
%default-exclude from (guix build emacs-build-system).
(emacs-build): Use %default-include and %default-exclude as default arguments.

Signed-off-by: Arun Isaac <arunisaac@systemreboot.net>
2017-06-08 19:45:27 +05:30
Leo Famulari c67d587f94
Merge branch 'master' into core-updates
This merge commit includes a fix for CVE-2017-6512 in Perl 5.26.0.
2017-06-07 12:11:55 -04:00
James Richardson 4679dd6967
import: cpan: Update CPAN importer to use MetaCPAN v1 API.
* guix/import/cpan.scm (module->dist-name, cpan-fetch): Use metacpan.org
URLs.
* tests/cpan.scm ("cpan->guix-package"): Adjust accordingly.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-06-07 15:06:34 +02:00
Ludovic Courtès de9d8f0e29
ssh: Improve error reporting when 'send-files' fails.
Fixes <http://bugs.gnu.org/26972>.

* guix/ssh.scm (store-import-channel)[import]: Add 'consume-input'
procedure.  Wrap body in 'catch' and 'guard'.  Use 'open-remote-pipe'
with OPEN_BOTH instead of 'open-remote-output-pipe'.
(send-files): After the 'channel-send-eof' call, do (read port).
Interpret the result sexp and raise an error condition if needed.
2017-06-04 23:00:32 +02:00
Leo Famulari 9f825cec1b
Merge branch 'master' into core-updates 2017-06-04 14:56:31 -04:00
Mathieu Othacehe 1335ac3141
scripts: refresh: Add -m manifest option.
* guix/scripts/refresh.scm (%options): Add -m option,
(show-help): document it,
(packages-from-manifest): new procedure,
(guix-refresh): use packages from manifest if specified, otherwise
keep the previous behaviour.
* doc/guix.texi (Invoking guix refresh): document new option.
2017-06-04 09:07:43 +02:00
Marius Bakke d0c45d2d82
Merge branch 'master' into core-updates
Conflicts:
	gnu/packages/image.scm
        (incorporated libtiff graft)
2017-06-03 17:51:21 +02:00
Marius Bakke 8b8bf88f21
licenses: Add CC-BY 4.0.
* guix/licenses.scm (cc-by4.0): New variable.
2017-06-03 17:35:49 +02:00
Ludovic Courtès 36a9d3f10d
substitute: Do not display the installed size.
* guix/scripts/substitute.scm (process-substitution): Do not show the
installed size in the "Downloading" message.
2017-06-02 18:47:07 +02:00
Ludovic Courtès dcfc6f213b
ui: 'show-what-to-build' warns when we don't have enough disk space.
* guix/ui.scm (check-available-space): New procedure.
(show-what-to-build): Compute 'installed-size' and call
'check-available-space'.
2017-06-02 18:47:07 +02:00
Ludovic Courtès 65f224dc8d
syscalls: Provide 'free-disk-space'.
* guix/build/syscalls.scm (free-disk-space): New procedure.
* guix/scripts/gc.scm (guix-gc)[ensure-free-space]: Use it instead of
'statfs'.
2017-06-02 18:47:07 +02:00
Ludovic Courtès d9bad2f082
ui: 'show-what-to-build' displays how much will be downloaded.
* guix/ui.scm (show-what-to-build)[download-size]
[display-download-size?]: New variables.
Add cases for when DISPLAY-DOWNLOAD-SIZE? is true.
2017-06-02 18:47:06 +02:00
Ludovic Courtès 2dc98729af
derivations: 'derivation-prerequisites-to-build' returns <substitutable>.
* guix/derivations.scm (derivation-prerequisites-to-build): Rename
 #:substitutable? to #:substitutable-info.
[derivation-substitutable?]: Rename to...
[derivation-substitutable-info]: ... this.  Return a list of <substitutable>.
Second return value is now a list of <substitutable> instead of a list
of strings.
* guix/ui.scm (show-what-to-build)[substitutable?]: Rename to...
[substitutable-info]: ... this.
Adjust to new 'derivation-prerequisites-to-build' return value type.
* tests/derivations.scm ("derivation-prerequisites-to-build and
substitutes"): Adjust.
("derivation-prerequisites-to-build and substitutes, local build"):
Likewise.
2017-06-02 18:47:06 +02:00
Ludovic Courtès ef51ac21ee
derivations: 'substitution-oracle' returns a <substitutable>.
* guix/derivations.scm (substitution-oracle): Use
'substitution-path-info' instead of 'substitution-paths'.  Turn SUBST
into a vhash from path to <substitutable>.  Change the returned
procedure to provide a <substitutable> instead of a Boolean.
* tests/derivations.scm ("substitution-oracle and #:substitute? #f"):
Mock 'substitutable-path-info' instead of 'substitutable-paths'.
2017-06-02 18:47:06 +02:00
Danny Milosavljevic 3f65c190d2
utils: Add helper for invoking programs.
* guix/build/utils.scm (invoke): New variable.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2017-06-01 19:06:34 +02:00
Alex Griffin 046175cd4e
build: font: Support font collection files.
* guix/build/font-build-system.scm (install): Support TrueType
Collection (TTC) and OpenType Collection (OTC) files.

Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
2017-05-31 23:24:41 +02:00
Maxim Cournoyer facac29280
build-system/gnu: 'compress-documentation' phase handles double symlinks.
The compress-documentation phase was breaking recursive symbolic links used
for manuals, which was made visible by the `find-files' call in the recently
added `manual-database' profile hook.  See <http://bugs.gnu.org/26771>.

* guix/build/gnu-build-system.scm (compress-documentation)
[points-to-symbolic-link?]: New procedure.
[maybe-compress-directory]: Use `points-to-symbolic-link?' to filter out
symbolic links that shouldn't be retargetted, and re-order the calls to
`retarget-symlink' and `documentation-compressor'.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2017-05-30 21:56:20 +02:00
Christopher Baines 151cb9738a
git-download: Fix 'git-predicate' to use absolute paths.
git ls-files will return paths relative to the repository directory. This
commit prepends the repository directory to those paths when calling lstat,
such that 'git-predicate' works if the current working directory is not the
repository directory.

* guix/git-download.scm (git-predicate): Prepend repository directory to the
  file path when calling lstat.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-05-30 18:08:37 +02:00
Ricardo Wurmus d2ac5e2975
build-system/cmake: Add support for cross compilation.
Fixes <https://bugs.gnu.org/26897>.

* guix/build-system/gnu.scm: Export standard-cross-packages.
* guix/build-system/cmake.scm (cmake-cross-build): New procedure.
(lower): Add support for cross-builds.
* guix/build/cmake-build-system.scm (configure): Handle "target" argument.
2017-05-30 16:52:55 +02:00
Ludovic Courtès 27fd13c3c2
download: Work around GnuTLS bug with UTF-8 certificate file names.
Reported by Mark H Weaver <mhw@netris.org>
at <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=26948#17>.

* guix/build/download.scm (set-certificate-credentials-x509-trust-file!*):
New procedure.
(make-credendials-with-ca-trust-files): Use it instead of
'set-certificate-credentials-x509-trust-file!'.
2017-05-30 13:24:55 +02:00
Ludovic Courtès 8902d0f267
scripts: Set thread names.
This allows 'guix publish' threads as well as 'guix substitute' and
'guix offload' processes to be properly labeled in 'top', 'pstree', etc.

* guix/workers.scm (worker-thunk): Add #:thread-name parameter and honor it.
(make-pool): Likewise.
* guix/scripts/publish.scm (http-write): Add calls to 'set-thread-name'
in bodies of 'call-with-new-thread'.
(guix-publish): Call 'set-thread-name'.   Pass #:thread-name to 'make-pool'.
* guix/scripts/offload.scm (guix-offload): Call 'set-thread-name'.
* guix/scripts/substitute.scm (guix-substitute): Likewise.
2017-05-28 23:13:39 +02:00
Ludovic Courtès aa401f9ba6
syscalls: Add 'thread-name' and 'set-thread-name'.
* guix/build/syscalls.scm (PR_SET_NAME, PR_GET_NAME)
(%max-thread-name-length): New variables.
(%prctl, set-thread-name, thread-name): New procedures.
* tests/syscalls.scm ("set-thread-name"): New test.
2017-05-28 23:13:39 +02:00
Arun Isaac 3d90fa982b
build-system: Add 'font-build-system'.
* Makefile.am (MODULES): Add 'guix/build-system/font.scm' and
  'guix/build/font-build-system.scm'.
* guix/build-system/font.scm: New file.
* guix/build/font-build-system.scm: New file.
* doc/guix.texi (Build Systems): Add 'font-build-system'.
2017-05-28 19:30:05 +05:30
Mark H Weaver 54d9479d8a
Merge branch 'master' into core-updates 2017-05-27 03:39:12 -04:00
Sergei Trofimovich 8b14773ab6
utils: Re-export 'delete'.
* guix/build/utils.scm: Reexport 'delete' binding.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2017-05-26 14:59:51 +02:00
Ricardo Wurmus 3a62dd6b22
build-system: gnu: Fix cross-gcc call.
This is a follow-up to 7b3318e34f.

* guix/build-system/gnu.scm (standard-cross-packages): Use keyword arguments
in cross-gcc call.
2017-05-25 17:02:08 +02:00
Ludovic Courtès 20ed093977
pull: Catch '&missing-dependency-error' raised by 'source-module-closure'.
Fixes <http://bugs.gnu.org/26987>.
Reported by Mathieu Othacehe <m.othacehe@gmail.com>.

* guix/build/pull.scm (depends-on-guile-ssh?): Remove.
(has-all-its-dependencies?): New procedure.
(build-guix): Use it to filter source files.
2017-05-25 14:25:17 +02:00
Ludovic Courtès bfe5264aa1
modules: Raise an error when a dependency could not be found.
* guix/modules.scm (&missing-dependency-error): New error condition.
(source-module-dependencies): Raise it when 'search-path' returns #f.
* tests/modules.scm ("&missing-dependency-error"): New test.
2017-05-25 14:25:17 +02:00
Ludovic Courtès 4862a98be4
base64: Turn into a regular Guile module.
* guix/base64.scm: Replace 'library' form with 'define-module'.
2017-05-25 14:25:17 +02:00
Leo Famulari 38f1163c95
Merge branch 'master' into core-updates 2017-05-24 18:02:27 -04:00
Ricardo Wurmus d1a914082b
Merge branch 'master' into core-updates 2017-05-24 12:05:47 +02:00
Ludovic Courtès 737397355c
publish: Do not bake the same item several times.
Before this patch, there was a possibility that we'd queue several
baking tasks for the same item.  The first one would bake the item but
subsequent tasks wouldn't check whether the item had been baked in the
meantime and would re-bake it.

* guix/scripts/publish.scm (render-narinfo/cached): Don't call
'bake-narinfo+nar' when (file-exists? cached).
2017-05-24 11:17:42 +02:00
Ludovic Courtès 807ba51950
guix package: Swallow EPIPE upon 'guix package --list-generations'.
Fixes <http://bugs.gnu.org/27017>.
Reported by Alex Vong <alexvong1995@gmail.com>.

* guix/scripts/package.scm (process-query) <'list-generations>: Wrap
body in 'leave-on-EPIPE'.
2017-05-23 23:57:28 +02:00
Efraim Flashner 59d0f067ff
packages: Add aarch64-linux to %supported-systems.
* guix/packages.scm (%supported-systems): Add aarch64-linux.
(%hydra-supported-systems): Remove aarch64-linux.
2017-05-23 21:51:36 +03:00
Arun Isaac d879685176
build-system: emacs: Install only a subset of files.
* guix/build/emacs-build-system.scm (install): Install files matching
  #:include while excluding files matching #:exclude.
* guix/build-system/emacs.scm (emacs-build): Add keyword arguments #:include
  and #:exclude.
2017-05-23 06:12:43 +05:30
Arun Isaac d0a26f3a68
build: emacs: Fix `store-file->elisp-source-file'.
This prevents a ".el.el" extension for source files with no version number in
their file name.

* guix/build/emacs-build-system.scm (store-file->elisp-source-file): Remove
  ".el" extension from file name before splitting to name and version.
2017-05-23 04:35:06 +05:30
Arun Isaac 5ae59eb6d9
guix: lint: Slightly simplify `check-source-file-name'.
* guix/scripts/lint.scm (check-source-file-name): Implement file name matching
  with regular expression.
2017-05-23 04:35:06 +05:30
Arun Isaac ad25e9962e
gnu: lint: Fix typo.
* guix/scripts/lint.scm (check-source-file-name): Fix wrong return value in
  docstring.
2017-05-23 04:35:06 +05:30
Marius Bakke fd3782d13b
Merge branch 'version-0.13.0' 2017-05-22 18:25:01 +02:00
Ludovic Courtès 8a29dc07a4
guix system: Don't warn about old distros for "guix system init".
* guix/scripts/system.scm (process-action): Don't call
'warn-about-old-distro' when ACTION is 'init' or 'build'.
2017-05-21 11:49:07 +02:00
Ludovic Courtès 092c58e745
guix system: Increase image size for 'guix system vm'.
This is a followup to 9a1bfe7648.

* guix/scripts/system.scm (system-derivation-for-action): Add 40MiB to
the default size for 'vm'.
2017-05-21 01:25:16 +02:00
Leo Famulari 40fd5600a2
download: Prune the ImageMagick mirror list.
These sites' TLS certificates are invalid.

* guix/download.scm (%mirrors) <imagemagick>: Remove
mirrors-{au,ru,uk}.go-parts.com.
2017-05-20 14:06:20 -04:00
Ludovic Courtès 96afb480f8
pack: Use 'guile2.0-json' when building with Guile 2.0.
Fixes <http://bugs.gnu.org/27005>.
Reported by Pjotr Prins <pjotr.public12@thebird.nl>.

Fixes a regression introduced in commit
2252f087d4.

* guix/scripts/pack.scm (docker-image)[json]: New variable.
[build]: Use it.
2017-05-20 14:39:50 +02:00
Ludovic Courtès d6bf931cb2
pack: Use 'guile2.0-json' when building with Guile 2.0.
Fixes <http://bugs.gnu.org/27005>.
Reported by Pjotr Prins <pjotr.public12@thebird.nl>.

Fixes a regression introduced in commit
2252f087d4.

* guix/scripts/pack.scm (docker-image)[json]: New variable.
[build]: Use it.
2017-05-20 14:30:01 +02:00
Ludovic Courtès 4ee6584cbf
modules: Add more source-less modules.
* guix/modules.scm (%source-less-modules): New variable.
(source-module-dependencies): Use it.
2017-05-20 10:17:43 +02:00
Ludovic Courtès 4a628d57fc
publish: Fix narinfo rendering for already-compressed items.
Fixes <http://bugs.gnu.org/26975>.
Reported by Mark H Weaver <mhw@netris.org>.

* guix/scripts/publish.scm (bake-narinfo+nar): Pass #f as the 2nd
argument to 'stat' and properly handle #f.
* tests/publish.scm (wait-for-file): New procedure.
("with cache"): Remove 'wait-for-file' procedure.
("with cache, uncompressed"): New test.
2017-05-20 10:17:36 +02:00
Ludovic Courtès 36c99429a3
union: Gracefully handle dangling symlinks in the input.
Fixes <http://bugs.gnu.org/26949>.
Reported by Pjotr Prins <pjotr.public12@thebird.nl>.

* guix/build/union.scm (file-is-directory?): Return #f when FILE does
not exist or is a dangling symlink.
(file=?): Pass #f as a second argument to 'stat'; return #f when both
ST1 or ST2 is #f.
* tests/profiles.scm (test-equalm): New macro.
("union vs. dangling symlink"): New test.
2017-05-20 10:17:14 +02:00
Maxim Cournoyer 6d1ae43dcb
profiles: Add elapsed time to manual-database hook to output message.
* guix/profiles.scm (manual-database): Add elapsed time to manual-database
hook to output message.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-05-20 10:15:47 +02:00
Ludovic Courtès 7afc2aabdf
modules: Add more source-less modules.
* guix/modules.scm (%source-less-modules): New variable.
(source-module-dependencies): Use it.
2017-05-19 10:45:12 +02:00
Ludovic Courtès ffa5e0a6d2
publish: Fix narinfo rendering for already-compressed items.
Fixes <http://bugs.gnu.org/26975>.
Reported by Mark H Weaver <mhw@netris.org>.

* guix/scripts/publish.scm (bake-narinfo+nar): Pass #f as the 2nd
argument to 'stat' and properly handle #f.
* tests/publish.scm (wait-for-file): New procedure.
("with cache"): Remove 'wait-for-file' procedure.
("with cache, uncompressed"): New test.
2017-05-18 21:35:35 +02:00
Ludovic Courtès 27c81fcb86
lint: inputs-should-be-native: Add "cmake".
Suggested by Nicolas Goaziou <mail@nicolasgoaziou.fr>.

* guix/scripts/lint.scm (check-inputs-should-be-native)[input-names]:
Add "cmake".
2017-05-18 14:22:03 +02:00
Ludovic Courtès 22ef06b801
union: Gracefully handle dangling symlinks in the input.
Fixes <http://bugs.gnu.org/26949>.
Reported by Pjotr Prins <pjotr.public12@thebird.nl>.

* guix/build/union.scm (file-is-directory?): Return #f when FILE does
not exist or is a dangling symlink.
(file=?): Pass #f as a second argument to 'stat'; return #f when both
ST1 or ST2 is #f.
* tests/profiles.scm (test-equalm): New macro.
("union vs. dangling symlink"): New test.
2017-05-18 11:38:48 +02:00
Maxim Cournoyer 516bfed7a3
profiles: Add elapsed time to manual-database hook to output message.
* guix/profiles.scm (manual-database): Add elapsed time to manual-database
hook to output message.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-05-16 23:10:10 +02:00
Ricardo Wurmus 17a69cf623
import cran: Check if pkg-config is needed.
* guix/import/cran.scm (needs-pkg-config?): New procedure.
(description->package): Use it.
2017-05-16 21:43:35 +02:00
Ricardo Wurmus a0f43208cb
import cran: Refactor "needs-zlib?".
* guix/import/cran.scm (tarball-files-match-pattern?): New procedure.
(needs-zlib?): Implement in terms of "tarball-files-match-pattern?".
2017-05-16 21:43:15 +02:00
Ricardo Wurmus ff8c179ab6
import cran: Export package predicates.
* guix/import/cran.scm (cran-package?, bioconductor-package?,
bioconductor-data-package?, bioconductor-experiment-package?): Export
procedures.
2017-05-16 21:42:18 +02:00
Ricardo Wurmus daaa270ecc
import cran: Add predicate for Bioconductor experiment packages.
* guix/import/cran.scm (bioconductor-experiment-package?): New variable.
2017-05-16 21:40:39 +02:00
Ricardo Wurmus c9ffa91fd3
import cran: Exclude experiment packages in predicate "bioconductor-package?".
* guix/import/cran.scm (bioconductor-package?): Exclude experiment packages,
because they cannot be updated with the default bioconductor updater.
2017-05-16 21:40:03 +02:00
Ricardo Wurmus 7c9fcb0825
import cran: Fetch DESCRIPTION files from Github mirror.
* guix/import/cran.scm (%bioconductor-svn-url): Remove variable.
(bioconductor-mirror-url): New procedure.
(fetch-description): Take a REPOSITORY symbol instead of a BASE-URL string.
(cran->guix-package): Pass REPOSITORY symbol to "fetch-description".
(latest-cran-release, latest-bioconductor-release): Adjust accordingly.
(bioconductor-package?): Update comment about SVN.
2017-05-16 21:39:06 +02:00
Andy Patterson 0383afa02a
build-system/asdf: Handle tests defined in external systems.
* guix/build-system/asdf.scm (asdf-build): Add a #:test-asd-file argument.
[builder]: Pass it to the build system.
(package-with-build-system)[transform]: Strip it from source systems' arguments.
* guix/build/asdf-build-system.scm (check): Pass the fully qualified path to
it on to the test-system procedure.
* guix/build/lisp-utils.scm (test-system): Load the file, or otherwise one of
the often used names for it, before running the tests.  Adjust the docstring
accordingly.
2017-05-16 15:18:16 +02:00
Andy Patterson 4209c31b8f
build-system/asdf: Retain references to source files for binary outputs.
In support of long-running programs in which the users would like to be able
to jump to the source of a definition of any of the dependencies (itself
included) of the program.

* guix/build/asdf-build-system.scm (library-outputs): Move from here ...
* guix/build/lisp-utils.scm (library-outputs): ... to here.
(build-program): Accept dependency-prefixes argument, to allow the caller to
specify references which should be retained.  Default to the library's output.
(build-image): Likewise.
(generate-executable): Likewise.
* gnu/packages/lisp.scm (sbcl-stumpwm+slynk, sbcl-slynk, sbcl-stumpwm): Adjust
accordingly to the new interface.
(sbcl-stumpwm+slynk)[native-inputs]: Move to ...
[inputs]: ... here.
2017-05-16 15:18:16 +02:00
Andy Patterson b9afcb9ed4
build-system/asdf: Simplify the use of lisp-eval-program.
Accept a list of statements, each run within its own `--eval' argument. This
allows statements to use reader package namespacing after a package has been
loaded.

* guix/build/lisp-utils.scm (spread-statements): New procedure.
(lisp-invoke): Rename to ...
(lisp-invocation): ... this. Use spread-statements. Change interface to accept
list of statements instead of a single statement.
(asdf-load-all-systems): Simplify returned statements.
(compile-system): Simplify the program passed to `lisp-eval-program'.
(test-system): Likewise.
(generate-executable-for-system): Likewise. Accept the full symbol describing
the asdf operation to use.
(generate-executable): Document the change.
(build-program, build-image): Use the new interface.
2017-05-16 15:18:15 +02:00
Andy Patterson 40f56176c5
build-system/asdf: Handle unusually-named systems.
* guix/build/lisp-utils.scm (valid-char-set): New variable.
(normalize-string): New procedure.
(compiled-system): Truncate the name of a system which contains slashes.
(generate-system-definition, make-asd-file): Use `normalize-string' to alter
the names of the created system and its dependencies.
* guix/build/asdf-build-system.scm (create-asd-file): Normalize the name of
the asd file being created.
2017-05-16 15:18:15 +02:00
Andy Patterson 0186a463d0
build-system/asdf: Always pre-load the system's definition file.
* guix/build-system/asdf.scm (asdf-build)[builder]: Pass a default
`#:asd-file' argument to the build procedure, using the system's name.
* guix/build/asdf-build-system.scm (build, check): Adjust to assume that
`asd-file' will always be a string.
* guix/build/lisp-utils.scm (compile-system, system-dependencies)
(test-system): Likewise.
2017-05-16 15:18:15 +02:00
Andy Patterson 457702b1d9
build-system/asdf: Pass the system name as an argument to the builder.
* guix/build-system/asdf.scm (asdf-build): Use the user-defined system name,
or calculate it from the package's full name.
[builder]: Pass the value along to the build procedure.
(package-with-build-system): Remove #:asd-system-name from source packages'
arguments.
* guix/build/asdf-build-system.scm: Adjust accordingly.
* guix/build/lisp-utils.scm (remove-lisp-from-name): Delete variable.
2017-05-16 15:18:15 +02:00
Andy Patterson b4c9f0c50d
build-system/asdf: Parameterize the lisp type and implementation globally.
* guix/build-system/asdf.scm (asdf-build)[builder]: Parameterize %lisp-type
and %lisp before invoking the build procedure. Don't pass #:lisp-type as an
argument to said procedure.
* guix/build/asdf-build-system.scm: Adjust accordingly.
(source-install-prefix): Rename to %lisp-source-install-prefix.
* guix/build/lisp-utils.scm: Adjust accordingly.
(%lisp-type): New parameter.
(bundle-install-prefix): Rename to %bundle-install-prefix.
* gnu/packages/lisp.scm: Adjust accordingly.
2017-05-16 15:18:15 +02:00
Andy Patterson 6de91ba2a1
build-system/asdf: Make #:lisp a package argument.
* guix/build-system/asdf.scm (lower): Change argument name to `lisp-type'.
(asdf-build): Change argument name to `lisp-type'.  Remove `lisp' as an
argument to the returned procedure.  Change the argument passed to build
phases to `lisp-type'.
* guix/build/asdf-build-system.scm (copy-source, build, check)
(create-asd-file, symlink-asd-files, cleanup-files, strip): Respect
`lisp-type` argument.
* gnu/packages/lisp.scm (sbcl-stumpwm, sbcl-stumpwm+slynk): Likewise.
2017-05-16 15:18:15 +02:00
Andy Patterson 26a16d37ff
build-system/asdf: Keep ecl's generated archive files.
This may be necessary to produce programs or images with ecl.

* guix/build/asdf-build-system.scm (cleanup-files): Don't delete .a files.
2017-05-16 15:18:14 +02:00
Andy Patterson 0e1371be09
build-system/asdf: Don't rename inputs.
* guix/build-system/asdf.scm (package-with-build-system)[transform]: Use updated
`new-inputs' procedure for inputs and native-inputs.
<rewrite>: Don't rename inputs.
<new-propagated-inputs>: Draw from package-inputs and package-native-inputs
for source packages.  Use the original package's propagated-inputs otherwise.
<new-inputs>: Convert into a function to be used to transform inputs and
native-inputs.
* gnu/packages/lisp.scm (sbcl-fiveam, sbcl-bordeaux-threads)
(sbcl-flexi-streams, sbcl-cl-ppcre, sbcl-stumpwm, sbcl-slynk-arglists)
(sbcl-slynk-fancy-inspector): Don't prefix input names.
2017-05-16 15:18:14 +02:00
Andy Patterson 35189728cd
build-system/asdf: Use asdf to determine dependencies.
This removes the need for conventions to determine which inputs are run-time
dependencies, and also the need to specify "special" dependencies.

* guix/build/lisp-utils.scm (patch-asd-file, lisp-dependencies)
(wrap-perform-method): Remove them.
(inputs->asd-file-map, system-dependencies, generate-system-definition)
(generate-dependency-links, make-asd-file): New procedures.
(lisp-eval-program): Add an error if no lisp matches.
(compile-system): Don't use asdf's in-built asd-file generator.
2017-05-16 15:18:14 +02:00
Andy Patterson 6c76ce39ac
build-system/asdf: Make it possible to use "lib" as the build output.
* guix/build/asdf-build-system.scm (library-output): New procedure.
(copy-source, build, check, patch-asd-files, symlink-asd-files)
(cleanup-files): Use it.
(copy-files-to-output): Rework to take an output instead of an outputs and
string pair.
(install, copy-source): Use the new method.
2017-05-16 15:18:14 +02:00
Andy Patterson bc389c20a9
build-system/asdf: Rename %install-prefix to %source-install-prefix.
* guix/build/lisp-utils.scm (%install-prefix): Rename to
%source-install-prefix.
(build-install-prefix): Use it.
* guix/build/asdf-build-system.scm (source-install-prefix)
(%system-install-prefix, source-directory, copy-source): Likewise.
2017-05-16 15:18:14 +02:00
Mathieu Othacehe 5641dffb07
scripts: system: Display bootloader name in "list-generations".
* guix/scripts/system.scm (display-system-generation): Display
  bootloader name.
2017-05-16 14:41:02 +02:00
Mathieu Othacehe 3241f7ff92
scripts: system: Adapt "switch-generation" to new bootloader API.
* guix/scripts/system.scm (reinstall-grub): Rename to
  reinstall-bootloader. Read boot-device and boot-type from parameters file to
  be able to restore the correct bootloader on specified device.
  Factorize bootloader installation code by calling install-bootloader.
 (system-bootloader-name): New procedure.
 (switch-to-system-generation): Adapt.
2017-05-16 14:41:02 +02:00
Mathieu Othacehe 1229d328fb
scripts: system: Adapt "init" to new bootloader API.
* guix/scripts/system.scm (install): Pass installer a new
argument. Rename other arguments.
Call install-bootloader instead of install-grub*.
(perform-action): Adapt.
2017-05-16 14:41:02 +02:00
Mathieu Othacehe 3042c5d8bb
scripts: system: Adapt "reconfigure" to new bootloader API.
* guix/scripts/system.scm (install-grub*): Rename to install-bootloader.  Use
keys to pass arguments.  Pass a new argument, "installer-drv" which is a script
in store dealing with bootloader-specific install actions.  Also call
"install-boot-config" to install the bootloader config file.

(install-bootloader-derivation): New procedure.  It returns a derivation that
builds a file containing "install-procedure" gexp.

(perform-action): Build install-proc derivation and call install-bootloader
with the resulting file.  Stop adding GRUB to PATH as bootloaders are called in
install-proc with direct store paths.
2017-05-16 14:41:01 +02:00
Mathieu Othacehe b09a8da4a2
bootloader: Add extlinux support.
* gnu/bootloader.scm: New file.
* gnu/bootloader/extlinux.scm: New file.
* gnu/bootloader/grub.scm: New file.
* gnu/local.mk: Build new files.
* gnu/system.scm: Adapt to new bootloader api.
* gnu/scripts/system.scm: Adapt to new bootloader api.
* gnu.scm: Remove (gnu system grub) and replace by (gnu bootloader) and (gnu
bootloader grub) modules.
* gnu/system/grub.scm: Moved content to gnu/bootloader/grub.scm.
* gnu/system/vm: Replace (gnu system grub) module by (gnu bootloader).
* gnu/tests.scm: Ditto.
* gnu/tests/nfs.scm: Ditto.
2017-05-16 14:41:01 +02:00
Ludovic Courtès ce92d269fe
ui: Disable Guile deprecation warnings by default.
* guix/ui.scm (initialize-guix): Call (debug-disable 'warn-deprecated)
when "GUILE_WARN_DEPRECATED" is not set.
2017-05-16 14:31:37 +02:00
Ludovic Courtès f411124321
utils: 'compressed-file?' matches ".lzma" files.
* guix/utils.scm (compressed-file?): Add "lzma" to the list.
2017-05-15 23:55:10 +02:00
Ricardo Wurmus 095494ed6c
licenses: Add EDL 1.0.
* guix/licenses.scm (edl1.0): New variable.
2017-05-15 22:33:17 +02:00
Ludovic Courtès 1812205cf5
bournish: 'ls' adjusts the column width depending on the entries.
* guix/build/bournish.scm (display-tabulated): Remove #:columns and
  #:column-width parameters.  Add #:terminal-width and #:column-gap.
  Compute COLUMN-WIDTH and COLUMNS.
2017-05-13 16:52:11 +02:00
Ludovic Courtès c7d1b061f5
bournish: 'ls' lists directory contents.
Suggested by Ricardo Wurmus.

* guix/build/bournish.scm (ls-command-implementation): When FILE is a
directory, list its contents rather than FILE itself.
2017-05-13 16:52:11 +02:00
Mathieu Othacehe 22fc581db3
import: pypi: Robustify latest-release.
* guix/import/pypi.scm (latest-release): Check if pypi-fetch has
  failed. If so return #f, else construct the <upstream-source>.
2017-05-13 12:40:20 +02:00
Mathieu Othacehe db427602d8
import: cran: Robustify cran-package?.
* guix/import/cran.scm (package->upstream-name): Return #f if url
  start and end index could not be determined.
  (cran-package?): Check if the upstream-name can be extracted from
  given package.
* tests/cran.scm: Add "r-minimal is not a cran package" to make sure that
  r-minimal is not detected as a cran package.

This fixes a failure of guix refresh on r-minimal because no
upsteam-name can be determined from ".../R-version.tar.gz" uri.
2017-05-13 12:40:20 +02:00
Ludovic Courtès e06ca952ed
scripts: Do not create the config directory.
This fixes runs of 'guix package' and 'guix system' tests in
environments where $HOME is read-only.

* guix/ui.scm (config-directory): Add #:ensure? parameter and honor it.
* guix/scripts.scm (warn-about-old-distro): Pass #:ensure? #f to
'config-directory'.
2017-05-13 00:03:46 +02:00
Ludovic Courtès 5db5dff53d
substitute: Honor 'Cache-Control' on 404 responses.
* guix/scripts/substitute.scm (cached-narinfo): When VALUE is #f, use
the TTL that is read instead of %NARINFO-NEGATIVE-TTL.
(cached-narinfo-expiration-time): Likewise.
2017-05-11 18:05:42 +02:00
Ludovic Courtès 24b21720f7
publish: Advertise a short TTL for "baking" 404s.
* guix/scripts/publish.scm (not-found): Add #:phrase and #:ttl
parameters and honor them.
* tests/publish.scm ("with cache"): Check the 'cache-control' header on
of the 404 response.
2017-05-11 18:05:42 +02:00
Roel Janssen 5899fafbfe
graph: Add Cypher backend.
* guix/graph.scm (%cypher-backend): New variable.
* doc/guix.texi: Add documentation for the Cypher backend of 'guix graph'.
2017-05-11 16:17:49 +02:00
Ludovic Courtès bc0e6c9312
scripts: Fix singular/plural message mismatch.
* guix/scripts.scm (warn-about-old-distro): Swap singular and plural
forms in 'N_' call.
2017-05-10 23:38:04 +02:00
Ben Woodcroft c6cfec42b0
build-system: Add package-with-ocaml4.01.
* guix/build-system/ocaml.scm (default-ocaml4.01, default-ocaml4.01-findlib,
package-with-explicit-ocaml, package-with-ocaml4.01,
strip-ocaml4.01-variant): New variables.
2017-05-10 22:13:54 +02:00
Ludovic Courtès 7fd952e052
scripts: Warn about old distro.
Fixes <http://bugs.gnu.org/25852>.
Suggested by Mark H Weaver <mhw@netris.org>.

* guix/scripts.scm (%distro-age-warning): New variable.
(warn-about-old-distro): New procedure.
* guix/scripts/package.scm (process-actions): Call
'warn-about-old-distro'.
* guix/scripts/system.scm (process-action): Likewise.
2017-05-10 22:09:08 +02:00
Ludovic Courtès 30d2397f73
ui: 'string->duration' correctly handles hours.
* guix/ui.scm (string->duration): Add missing '=>' for hours.
* tests/ui.scm ("duration, 2 hours"): New test.
2017-05-10 22:05:21 +02:00
Hartmut Goebel 59135f0d7e
guix: Add java-utils.
* guix/build/java-utils.scm: New file.
* guix/build-system/ant.scm: Use it.
* Makefile.am (MODULES): Add it.

Co-authored-by: Ricardo Wurmus <rekado@elephly.net>
2017-05-10 17:59:22 +02:00
Ricardo Wurmus 52a791f50f
ant-build-system: Add default "check" target.
* guix/build-system/ant.scm (ant-build): Change default test target to
"check"; add "test-dir" argument.
* guix/build/ant-build-system.scm (default-build.xml): Add "test-dir"
argument; add ant targets "compile-tests" and "check".
(configure): Add "test-dir" argument; pass it to "default-build.xml".
2017-05-10 17:59:22 +02:00
Hartmut Goebel 8df64f7384
ant-build-system: Allow specifying source directory.
* guix/build-system/ant.scm (ant-build),
guix/build/ant-build-system.scm (default-build.xml): Add parameter
source-dir.
* guix/build/ant-build-system.scm (configure): Pass source-dir on to
default-build.xml.
* doc/guix.texi (Build Systems): Document it.

Co-authored-by: Ricardo Wurmus <rekado@elephly.net>
2017-05-10 17:59:22 +02:00
Ludovic Courtès 07a0f68fa5
pull: Build package modules without optimizations on Guile 2.2.
* guix/build/pull.scm (%default-optimizations)
(%lightweight-optimizations): New variables.
(optimization-options): New procedure.  Taken from
build-aux/compile-all.scm.
(build-guix): Pass it to 'compile-file'.
2017-05-09 18:08:24 +02:00
Ludovic Courtès 838ba73d6e
pull: Build with the matching Guile major version.
Previously, 'guix pull' would always build with Guile 2.0.
Now it builds with the Guile that matches (effective-version).

* build-aux/build-self.scm (false-if-wrong-guile)
(package-for-current-guile): New procedures.
(guile-json, guile-ssh): Use it.
(guile-for-build): New procedure.
(build): Use (effective-version) instead of the hard-coded "/2.0".
Add (guix modules) closure to #:modules argument.  Pass
\#:guile-for-build argument to 'gexp->derivation'.
* guix/build/pull.scm (depends-on-guile-ssh?, all-scheme-files): New
procedures.
(build-guix): Show the output of (version).  Use the above procedures.
Filter out files that match 'depends-on-guile-ssh?' when (ssh session)
is missing.
2017-05-09 18:08:24 +02:00
Ludovic Courtès 402e98c524
pull: Use 'with-store'.
* guix/scripts/pull.scm (guix-pull): Remove call to 'open-connection'.
Use 'with-store' instead.
2017-05-09 18:08:24 +02:00
Ludovic Courtès 4902d3c4e0
pull: Honor the standard build options.
Reported by Niall Dooley <dooleyn@gmail.com>
in <https://lists.gnu.org/archive/html/help-guix/2017-05/msg00038.html>.

* guix/scripts/pull.scm (%options): Add --dry-run and all of
%STANDARD-BUILD-OPTIONS.
(show-help): Add call to 'show-build-options-help'.
(%default-options): Add 'system', 'substitutes?', 'graft?',
'max-silent-time', and 'verbosity'.
(guix-pull)[parse-options]: Remove.
Use 'parse-command-line' instead.  Honor --dry-run.
2017-05-09 18:08:24 +02:00
Ludovic Courtès ba2260dbbc
git-download: Fix 'git-predicate' file membership.
Previously, it the predicate would return #t for "m4/ChangeLog" if
"ChangeLog" (in the top-level directory) was in FILES.  This commit
fixes the ambiguity.

* guix/git-download.scm (git-predicate): Add 'inodes' variable.  Use it
to determine file membership.
2017-05-07 18:08:11 +02:00
Ludovic Courtès 950d51c9d9
store: Use 'TCP_NODELAY' when connecting to a daemon over PF_INET.
* guix/store.scm (open-inet-socket): Add 'cond-expand' form to define
'TCP_NODELAY' when needed.  Add call to 'setsockopt' after 'connect'.
2017-05-07 00:18:36 +02:00
Leo Famulari 40d728a87d
Revert "guix: git: Add new module."
This reverts commit a70b784708.

Commit a70b784708 caused `guix pull` to fail:

ERROR: In procedure scm-error:
ERROR: no code for module (git)
2017-05-05 20:12:57 -04:00
Mathieu Othacehe a70b784708
guix: git: Add new module.
* guix/git.scm: New file.
* configure.ac: Check for (guile git).
* Makefile.am: Build guix/git.scm if (guile git) is available.
2017-05-05 19:52:38 +02:00
Danny Milosavljevic 7e3f7acbe0
scripts: Remove profile-grub-entries.
* guix/scripts/system.scm (profile-grub-entries): Delete variable.
2017-05-05 15:03:48 +02:00
Danny Milosavljevic bf8b09169c
system: grub: Use boot-parameters instead of menu-entry where possible.
* gnu/system/grub.scm (boot-parameters->menu-entry): New variable.
(grub-configuration-file): Use boot-parameters
instead of menu-entry where possible.
* guix/scripts/system.scm (profile-boot-parameters): Update docstring.
(reinstall-grub): Use profile-boot-parameters.
(perform-action): Use profile-boot-parameters.
2017-05-05 15:03:48 +02:00
Danny Milosavljevic 0315abe608
scripts: Make boot-parameters label include generation number and time.
* guix/scripts/system.scm (system->boot-parameters): Make label include
generation number and time.
2017-05-05 15:03:47 +02:00
Danny Milosavljevic 9530e73b49
system: Introduce read-boot-parameters-file.
* gnu/system.scm (read-boot-parameters): Remove export.
(read-boot-parameters-file): New variable. Export it.
* guix/scripts/system.scm (profile-boot-parameters): Use
read-boot-parameters-file.
(profile-grub-entries): Use read-boot-parameters-file.
(reinstall-grub): Use read-boot-parameters-file.
(display-system-generation): Use read-boot-parameters-file.
2017-05-05 15:03:47 +02:00
Ludovic Courtès 396d12faea
store: Use 'write-bytevector' instead of hand-coded equivalent.
* guix/store.scm (process-stderr): Use 'write-bytevector' in the
%STDERR-READ case.
2017-05-04 18:05:05 +02:00
Ludovic Courtès cd041b268e
store: Add store path computation procedures.
* guix/derivations.scm (compressed-hash, store-path)
(output-path, fixed-output-path): Move to...
* guix/store.scm: ... here.
2017-05-04 18:05:05 +02:00
Tobias Geerinckx-Rice 74067fedce
environment: Correct typo.
* guix/scripts/environment.scm (create-environment): Fix typo.
2017-05-04 12:52:23 +02:00
Ludovic Courtès 634088a565
refresh: Use (guix discovery).
* guix/scripts/refresh.scm (maybe-updater, list-updaters): Remove.
(importer-modules): New procedure.
(%updaters): Define using 'fold-module-public-variables'.  Turn into a
promise and adjust users.
2017-05-03 23:50:15 +02:00
Ludovic Courtès cd903ef787
Add (guix discovery).
* guix/discovery.scm, tests/discovery.scm: New files.
* gnu/packages.scm (scheme-files, file-name->module-name)
(scheme-modules, all-package-modules): Remove.
(fold-packages): Rewrite in terms of 'fold-module-public-variables'.
* gnu/tests.scm: Use (guix discovery).
* Makefile.am (MODULES): Add guix/discovery.scm.
(SCM_TESTS): Add tests/discovery.scm.
2017-05-03 23:50:15 +02:00
Ludovic Courtès 69daee23af
ui: Rename '_' to 'G_'.
This avoids collisions with '_' when the latter is used as a 'match'
pattern for instance.  See
<https://lists.gnu.org/archive/html/guix-devel/2017-04/msg00464.html>.

* guix/ui.scm: Rename '_' to 'G_'.
* po/guix/Makevars (XGETTEXT_OPTIONS): Adjust accordingly.
* build-aux/compile-all.scm (warnings): Remove 'format'.
* gnu/packages.scm,
gnu/services.scm,
gnu/services/shepherd.scm,
gnu/system.scm,
gnu/system/shadow.scm,
guix/gnupg.scm,
guix/http-client.scm,
guix/import/cpan.scm,
guix/import/elpa.scm,
guix/import/pypi.scm,
guix/nar.scm,
guix/scripts.scm,
guix/scripts/archive.scm,
guix/scripts/authenticate.scm,
guix/scripts/build.scm,
guix/scripts/challenge.scm,
guix/scripts/container.scm,
guix/scripts/container/exec.scm,
guix/scripts/copy.scm,
guix/scripts/download.scm,
guix/scripts/edit.scm,
guix/scripts/environment.scm,
guix/scripts/gc.scm,
guix/scripts/graph.scm,
guix/scripts/hash.scm,
guix/scripts/import.scm,
guix/scripts/import/cpan.scm,
guix/scripts/import/cran.scm,
guix/scripts/import/crate.scm,
guix/scripts/import/elpa.scm,
guix/scripts/import/gem.scm,
guix/scripts/import/gnu.scm,
guix/scripts/import/hackage.scm,
guix/scripts/import/nix.scm,
guix/scripts/import/pypi.scm,
guix/scripts/import/stackage.scm,
guix/scripts/lint.scm,
guix/scripts/offload.scm,
guix/scripts/pack.scm,
guix/scripts/package.scm,
guix/scripts/perform-download.scm,
guix/scripts/publish.scm,
guix/scripts/pull.scm,
guix/scripts/refresh.scm,
guix/scripts/size.scm,
guix/scripts/substitute.scm,
guix/scripts/system.scm,
guix/ssh.scm,
guix/upstream.scm: Use 'G_' instead of '_'.  Most of this change was
obtained by running: "sed -i -e's/(_ "/(G_ "/g' `find -name \*.scm`".
2017-05-03 16:16:17 +02:00
Petter 2f3108ad03
gnu: Avoid circular dependencies by Perl license.
* guix/licenses.scm (perl-license): New variable.
* gnu/packages/bioinformatics.scm: Change (package-license perl) to perl-license.
* gnu/packages/compression.scm: Same.
* gnu/packages/databases.scm: Same.
* gnu/packages/gd.scm: Same.
* gnu/packages/language.scm: Same.
* gnu/packages/libevent.scm: Same.
* gnu/packages/mail.scm: Same.
* gnu/packages/messaging.scm: Same.
* gnu/packages/ncurses.scm: Same.
* gnu/packages/networking.scm: Same.
* gnu/packages/photo.scm: Same.
* gnu/packages/tcl.scm: Same.
* gnu/packages/tex.scm: Same.
* gnu/packages/tls.scm: Same.
* gnu/packages/web.scm: Same.
* gnu/packages/wm.scm: Same.
* gnu/packages/xml.scm: Same.
* gnu/packages/xorg.scm: Same.
* gnu/packages/zip.scm: Same.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-05-02 23:41:14 +02:00
Ludovic Courtès dcb95c1fc9
monads: Add a template and specialization mechanism for monadic procedures.
* guix/monads.scm (%templates, %template-instances): New variables.
(register-template!, register-template-instance!): New procedures.
(template-directory, define-template): New macro.
(foldm, sequence, anym): Define using 'define-template'.  Avoid replace
ellipses with dots.
(mapm): Likewise, but do not use 'foldm'.
* guix/store.scm: Add 'template-directory' invocation.
2017-05-02 23:41:13 +02:00
Ludovic Courtès 7b9ac883ea
download: Continue handshake upon TLS warning alerts.
This allows us to download from site such as
<https://fusionforge.int-evry.fr> where the server does not recognize
the server name passed via the 'server_name' extension.

* guix/build/download.scm (tls-wrap): Catch 'gnutls-error' around
'handshake'.  Upon ERROR/WARNING-ALERT-RECEIVED, print a message and
call 'handshake'.
2017-05-02 23:41:13 +02:00
Ludovic Courtès 756be979cb
licenses: Add CeCILL and CeCILL-B.
* guix/licenses.scm (cecill, cecill-b): New variables.
2017-05-02 23:41:13 +02:00
Ludovic Courtès 8a2105078b
substitute: Validate substitute URLs.
Reported by Maxim Cournoyer <maxim.cournoyer@gmail.com>
at <https://lists.gnu.org/archive/html/guix-devel/2017-04/msg00548.html>.

* guix/scripts/substitute.scm (validate-uri): New procedure.
(guix-substitute): Use it.
2017-05-02 12:32:52 +02:00
Ludovic Courtès e723178a10
publish: Use a larger zlib buffer for compression with '--cache'.
* guix/scripts/publish.scm (bake-narinfo+nar): Pass #:buffer-size to
'call-with-gzip-output-port'.
2017-05-02 12:32:51 +02:00
Mark H Weaver bedba06426
Add package/inherit.
* guix/packages.scm (package/inherit): New public macro.
2017-05-02 04:19:09 -04:00
Clément Lassieur 3314396138
licenses: Add new meta-license fsdg-compatible.
* guix/licenses.scm (fsdg-compatible): New record with constructor.
2017-05-01 21:32:15 +02:00
Ludovic Courtès dff3189c7d
publish: Produce a "FileSize" narinfo field when possible.
* guix/scripts/publish.scm (narinfo-string): Add #:file-size parameter.
Produce a "FileSize" field when COMPRESSION is eq? to '%no-compression'
or when FILE-SIZE is true.
(bake-narinfo+nar): Pass #:file-size.
* tests/publish.scm ("/*.narinfo")
("/*.narinfo with properly encoded '+' sign")
("with cache"): Check for "FileSize".
2017-05-01 17:28:20 +02:00
Ludovic Courtès 6d1a5e5ffd
refresh: Report packages using the "@" syntax.
* guix/scripts/refresh.scm (list-dependents)[full-name]: New procedure.
Use 'full-name' instead of 'package-full-name'.
* doc/guix.texi (Invoking guix refresh): Adjust example accordingly.
2017-05-01 16:38:30 +02:00
Roel Janssen 7c3e4660a5
import: Update Bioconductor release to 3.5.
* guix/import/cran.scm: Change Bioconductor release to 3.5.
2017-04-28 11:02:26 +02:00
Ludovic Courtès 25a49294ca
cache: Work around 'time-monotonic' bug in Guile 2.2.2.
* guix/cache.scm (time-monotonic) [guile-2.2]: New variable.
* tests/cache.scm (time-monotonic) [guile-2.2]: Likewise.
* guix/build/download.scm (time-monotonic) [guile-2.2]: Adjust comment:
it's a 2.2.2 bug.
2017-04-22 14:42:15 +02:00
Ludovic Courtès 1fe958d62a
download: Work around Guile 2.2 bug with 'time-monotonic' objects.
* guix/build/download.scm (time-monotonic) [guile-2.2]: New variable.
2017-04-22 01:25:22 +02:00
Ludovic Courtès 9231ef12f2
derivations: Restore UTF-8 encoding of build scripts.
Reported by Mark H Weaver <mhw@netris.org>
at <https://lists.gnu.org/archive/html/guix-devel/2017-04/msg00457.html>.

* guix/derivations.scm (build-expression->derivation): Use a string
output port for the expression.  This reverts part of
2dce88d5bb.
* tests/derivations.scm ("build-expression->derivation and builder
encoding"): New test.
2017-04-21 22:45:29 +02:00
Ludovic Courtès 285f63e805
store: Support 'ssh://' URIs in 'GUIX_DAEMON_SOCKET'.
This allows 'guix' commands to talk to a remote store over SSH.

* guix/store.scm (connect-to-daemon)[connect]: Call 'resolve-interface'
for unknown URI schemes.
* guix/store/ssh.scm: New file.
* Makefile.am (MODULES): Add it.
* doc/guix.texi (The Store): Document it.  Mark remote access as
experimental.
2017-04-21 19:17:36 +02:00
Ludovic Courtès e537833726
ssh: Decompose 'connect-to-remote-daemon'.
* guix/ssh.scm (remote-daemon-channel): New procedure.
(connect-to-remote-daemon): Implement in terms of it.
2017-04-21 19:17:36 +02:00
Ludovic Courtès 615c5298f7
ssh: Move 'open-ssh-session' to (guix ssh).
* guix/scripts/copy.scm (%compression, open-ssh-session): Move to...
* guix/ssh.scm: ... here.  Use '&message' conditions instead of calling
'leave'.
2017-04-21 19:17:34 +02:00
Ludovic Courtès ba97e454bf
offload: Avoid using '_' as a 'match' pattern.
* guix/scripts/offload.scm (host-key->type+key, machine-load)
(process-request, guix-offload): Do not use '_' as a 'match' pattern.
2017-04-21 17:23:37 +02:00
Ludovic Courtès 3dff90ce34
store: Add support for remote connections via 'guix://' URIs.
* guix/store.scm (open-inet-socket): New procedure.
(connect-to-daemon): Support the 'guix' URI scheme.
* doc/guix.texi (The Store): Document it.
2017-04-21 17:23:37 +02:00
Ludovic Courtès 3b5cd17a97
store: Add 'system-error-to-connection-error' macro.
* guix/store.scm (system-error-to-connection-error): New macro.
(open-unix-domain-socket): Use it instead of 'catch'.
2017-04-21 17:23:37 +02:00
Ludovic Courtès 1397b422e2
store: 'GUIX_DAEMON_SOCKET' can now be a URI.
* guix/store.scm (%daemon-socket-file): Rename to...
(%daemon-socket-uri): ... this.
(connect-to-daemon): New procedure.
(open-connection): Rename 'file' to 'uri'.  Use 'connect-to-daemon'
instead of 'open-unix-domain-socket'.
* guix/tests.scm (open-connection-for-tests): Rename 'file' to 'uri'.
* tests/guix-build.sh: Add tests.
* tests/store.scm ("open-connection with file:// URI"): New tests.
2017-04-21 17:23:37 +02:00
Ludovic Courtès 2dce88d5bb
derivations: Avoid string-to-bytevector conversions.
On Guile 2.2.1, this yields a 5% speedup on:

  guix build libreoffice xmonad certbot -n --no-substitutes --no-build-hook

* guix/derivations.scm (derivation->string): Rename to...
(derivation->bytevector): ... this.  Use 'open-bytevector-output-port'
instead of 'call-with-output-string'.
(derivation-hash): Remove string-to-bytevector conversion before
'sha256' call.
(build-expression->derivation): Use 'add-data-to-store' and an
bytevector port instead of a string port for the expression.
2017-04-20 23:35:55 +02:00
Ludovic Courtès e1bbc0e38d
publish: Add a handler for / and /index.html.
Suggested by Quiliro <quiliro@riseup.net>
in <https://bugs.gnu.org/26567>.

* guix/scripts/publish.scm (render-home-page): New procedure.
(make-request-handler): Handle it.
2017-04-19 23:43:51 +02:00
Ludovic Courtès 2363bdd707
gexp: 'gexp-modules' accepts plain Scheme objects.
* guix/gexp.scm (gexp-modules): Return '() when not (gexp? GEXP).
* tests/gexp.scm ("gexp-modules and literal Scheme object"): New test.
2017-04-19 17:51:39 +02:00
Ludovic Courtès d72b42064b
publish: Remove expired cache entries when '--ttl' is used.
* guix/scripts/publish.scm (narinfo-files): New procedure.
(render-narinfo/cached)[delete-file]: New procedure.  Add call to
'maybe-remove-expired-cache-entries'.
* doc/guix.texi (Invoking guix publish): Document the interation between
--cache and --ttl.
2017-04-18 23:19:30 +02:00
Ludovic Courtès 2ea2aac6e9
Add (guix cache) and use it in (guix scripts substitute).
* guix/cache.scm, tests/cache.scm: New files.
* Makefile.am (MODULES, SCM_TESTS): Add them.
* guix/scripts/substitute.scm (obsolete?): Remove.
(remove-expired-cached-narinfos): Rename to...
(cached-narinfo-expiration-time): ... this.  Remove the removal part and
only keep the expiration time part.
(narinfo-cache-directories): Add optional 'directory' parameter and
honor it.
(maybe-remove-expired-cached-narinfo): Remove.
(cached-narinfo-files): New procedure.
(guix-substitute): Use 'maybe-remove-expired-cache-entries' instead of
'maybe-remove-expired-cached-narinfo'.
2017-04-18 23:19:30 +02:00
Ludovic Courtès 00753f7038
publish: Add '--cache' and '--workers'.
Fixes <http://bugs.gnu.org/26201>.
Reported by <dian_cecht@zoho.com>.

These options allow nars to be "baked" off-line and cached instead of
being compressed on the fly.  As a side-effect, this allows us to
provide a 'Content-Length' header for nars.

* guix/scripts/publish.scm (show-help, %options): Add '--cache' and
'--workers'.
(%default-options): Add 'workers'.
(nar-cache-file, narinfo-cache-file, run-single-baker): New procedures.
(single-baker): New macro.
(render-narinfo/cached, bake-narinfo+nar)
(render-nar/cached): New procedures.
(make-request-handler): Add #:cache and #:pool parameters and honor
them.
(run-publish-server): Likewise.
(guix-publish): Honor '--cache' and '--workers'.
* tests/publish.scm ("with cache"): New test.
* doc/guix.texi (Invoking guix publish): Document it.
2017-04-18 23:18:41 +02:00
Ludovic Courtès 339a79fd6a
publish: Use 'sendfile' when possible.
* guix/scripts/publish.scm (http-write): In the
'application/octet-stream' case, use 'sendfile' when OUTPUT is a file
port.
2017-04-18 23:17:18 +02:00
Ludovic Courtès 905ae5276d
publish: Introduce 'actual-compression'.
* guix/scripts/publish.scm (actual-compression): New procedure.
(narinfo-string): Use it.
2017-04-18 23:17:18 +02:00
Ludovic Courtès 1563d6c79f
Add (guix workers).
* guix/workers.scm, tests/workers.scm: New files.
* Makefile.am (MODULES, SCM_TESTS): Add them.
* .dir-locals.el: Add rule for 'eventually'.
2017-04-18 23:17:17 +02:00
Ludovic Courtès e16c823f80
serialization: Remove Guile < 2.0.9 workaround.
* guix/serialization.scm (write-contents): Assume 'sendfile' is always
defined.
2017-04-17 23:31:28 +02:00
Ludovic Courtès 94df39cc08
records: Slight simplification.
* guix/records.scm (make-syntactic-constructor): Simplify 'find' expression.
2017-04-17 23:31:28 +02:00
Marius Bakke 7c7b802cce
download: Add netfilter mirror.
* guix/download.scm (%mirrors): Add mirrors for www.netfilter.org.
2017-04-17 23:05:46 +02:00
Mathieu Othacehe a9eadc06ac
scripts: system: Rename --no-grub option to --no-bootloader.
* guix/scripts/system.scm (%options, show-help): Adjust accordingly.
Keep "--no-grub" for compatibility reasons, but do not mention it in the help.

Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
2017-04-17 17:41:54 +02:00
Ludovic Courtès 1730c5b509
lint: Avoid non-literal format strings.
Reported by Mathieu Othacehe <m.othacehe@gmail.com>
at <http://bugs.gnu.org/26498>.

* guix/scripts/lint.scm (warn-if-package-has-input): Rename to...
(package-input-intersection): ... this.  Remove 'linted' and 'message'
parameters.  Return a list of inputs.
(check-inputs-should-be-native): Adjust accordingly.
(check-inputs-should-not-be-an-input-at-all): Likewise.
2017-04-16 12:08:30 +02:00
Ludovic Courtès f816dba680
ui: Gracefully report '&message' conditions.
* guix/ui.scm (report-load-error, warn-about-load-error)
(read/eval): Add special-case for SRFI-35 &message conditions.
2017-04-16 00:48:07 +02:00
Ludovic Courtès efe7d19a9e
services: 'service-parameters' becomes 'service-value'.
* gnu/services.scm (<service>)[parameters]: Rename to...
[value]: ... this.
Change calls to 'service-parameters' to 'service-value'.
* gnu/system.scm, gnu/tests/base.scm,
guix/scripts/system.scm, tests/services.scm: Likewise.
* doc/guix.texi (Service Reference): Adjust accordingly.
2017-04-16 00:48:07 +02:00
Leo Famulari c8a3dea847
packages: Enable threaded compression of source tarballs.
This provides a ~2x speedup when using 4 threads.

* guix/packages.scm (patch-and-repack)[build]: Invoke xz with
'--threads=0' when re-packing tarballs.
2017-04-15 18:34:59 -04:00
Danny Milosavljevic 958a1fda9e
system: Make grub use <menu-entry> instead of <boot-parameters> again.
* gnu/system/grub.scm: Remove boot-parameters->menu-entry.
(grub-configuration): Don't use boot-parameters->menu-entry.
* gnu/system.scm (operating-system-bootcfg): Use menu-entry.
* guix/scripts/system.scm (reinstall-grub): Use profile-grub-entries.
(perform-action): Use profile-grub-entries.
2017-04-15 22:02:38 +02:00
Danny Milosavljevic abae042ea4
scripts: system: Introduce profile-boot-parameters.
* guix/scripts/system.scm (profile-boot-parameters): New variable.
(reinstall-grub): Use profile-boot-parameters.
(perform-action): Use profile-boot-parameters.

Follow-up to 2e58e05bb6.
2017-04-15 19:34:00 +02:00
Mathieu Othacehe e61519ab9c
scripts: system: Rename grub? and install-grub? to bootloader? and install-bootloader?.
* guix/scripts/system.scm (perform-action): Rename grub? to bootloader,
(%options): rename install-grub? to install-bootloader?,
(%default-options): ditto,
(process-action): reindent and rename grub? to bootloader?.
2017-04-15 15:22:47 +02:00
Mathieu Othacehe c76b3046f6
system: Rename operating-system-grub.cfg to operating-system-bootcfg.
* gnu/system.scm (operating-system-grub.cfg): Rename to...
(operating-system-bootcfg): ... this.
* gnu/system/vm.scm (system-disk-image): Use operating-system-bootcfg.
(system-qemu-image): Use operating-system-bootcfg.
(system-qemu-image/shared-store): Use operating-system-bootcfg.
* guix/scripts/system.scm (perform-action): Use operating-system-bootcfg.

Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
2017-04-15 14:41:10 +02:00
Danny Milosavljevic 03daeaa70f
scripts: system: Back out operating-system-bootcfg change.
Follow-up to 475e2ce211.

* guix/scripts/system.scm (perform-action): Back out operating-system-bootcfg
change.
2017-04-15 14:41:10 +02:00
Danny Milosavljevic 475e2ce211
scripts: system: Move save-load-path-excursion and save-environment-excursion macros to the top.
* guix/scripts/system.scm (save-load-path-excursion,
save-environment-excursion): Move definitions to the top of the file.
It allows to use them in the whole file.

Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
2017-04-15 13:28:25 +02:00
Mathieu Othacehe a41134b442
scripts: system: Move save-load-path-excursion and save-environment-excursion macros to the top.
* guix/scripts/system.scm (save-load-path-excursion,
save-environment-excursion): Move definitions to the top of the file.
It allows to use them in the whole file.

Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
2017-04-15 12:33:56 +02:00
Mathieu Othacehe e60ee79040
build-system/cargo: Remove store reference.
* guix/build/cargo-build-system.scm (generate-checksums): Remove store
  reference from comment. This comment was matching
  assert-no-store-file-names regexp in Makefile.am.
  Also, edit procedure docstring to precise that DIR-NAME is a store
  directory.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-04-14 12:29:20 +02:00
Mathieu Othacehe 23e525e109
syscalls: Add load-linux-module.
* guix/build/syscalls.scm (load-linux-module): New procedure. Reimplemented
from guile-linux-syscalls.patch.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-04-11 11:13:26 +02:00
Mathieu Othacehe c5cd4fad09
syscalls: Use define-as-needed for network-interface syscalls.
* guix/build/syscalls.scm (network-interface-flags): Use define-as-needed macro
and remove from export list.
(set-network-interface-flags): Ditto.
(set-network-interface-address): Ditto.
(IFF_UP, IFF_BROADCAST and IFF_LOOPBACK): Ditto.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-04-11 11:13:25 +02:00
Mathieu Othacehe 7df4d3465d
syscalls: Use define-as-needed for mount and umount.
* guix/build/syscalls.scm (mount): Use define-as-needed macro
and remove from export list.
(umount): Ditto.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-04-11 11:13:25 +02:00
Mathieu Othacehe 8336df0668
syscalls: Add reboot.
* guix/build/syscalls.scm (define-as-needed): New macro.
(reboot): New procedure. Reimplemented from guile-linux-syscalls.patch.
(RB_AUTOBOOT, ..., RB_KEXEC): New flags copied from static Guile patch.

Co-Authored-By: Ludovic Courtès <ludo@gnu.org>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-04-11 11:13:25 +02:00
Chris Marusich 8bc2183fe5
monads: Improve mlet, mlet*, and mbegin documentation.
* doc/guix.texi (The Store Monad) <mlet, mlet*, mbegin>: Clarify
their intended usage.
* guix/monads.scm (mbegin): Update docstring accordingly.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-04-08 14:40:51 +02:00
Chris Marusich 60a9fcb137
monads, doc: Improve mwhen and munless documentation.
* doc/guix.texi (The Store Monad) <mwhen, munless>: Document them.
* guix/monads.scm (mwhen, munless): Clarify their intended use.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-04-08 14:40:51 +02:00
Chris Marusich d922c8e4b7
monads: Use intent-revealing parameter names.
* guix/monads.scm (mwhen, munless): Rename parameters from 'exp0' and 'exp' to
  'mexp0' and 'mexp', respectively.  This makes it more obvious that these
  expressions must be monadic expressions.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-04-08 14:40:50 +02:00
Mathieu Othacehe f91fcd9c42
syscalls: Allow mount and umount use from static Guile.
* guix/build/syscalls.scm (mount): Use Guile core mount if called from
  static Guile, otherwise use FFI based mount implementation.
  (umount): Ditto.
  This allows to use (guix build syscalls) from a module independently
  of calling context.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-04-07 23:30:39 +02:00
Ludovic Courtès 5537f2d279
profiles: Slightly improve the instructions in 'etc/profile'.
* guix/build/profiles.scm (build-etc/profile): Fix typo in comment.
Add backslash in the generated shell comment.
2017-04-07 23:30:38 +02:00
Ludovic Courtès 83cfa0247b
pack: Add '--expression'.
* guix/scripts/pack.scm (%options, show-help): Add '--expression'.
(guix-pack)[maybe-package-argument]: New procedure.
Use it, and remove variable 'specs'.
* doc/guix.texi (Invoking guix pack): Document '--expression'.
2017-04-07 23:30:38 +02:00
Ludovic Courtès 9a3762a768
size: Avoid '_' as a pattern variable in 'match'.
* guix/scripts/size.scm (display-profile, profile->page-map): Don't use
'_' as a 'match' pattern variable.
2017-04-07 00:17:16 +02:00
Chris Marusich 5ea69d9a56
system: Support the --root option in 'guix system'.
Fixes <https://bugs.gnu.org/26271>.

* guix/scripts/system.scm (perform-action): Add #:gc-root parameter and
honor it.
(show-help): Document the --root option.
(%options): Add 'root'.
(process-action): Pass 'root' option to perform-action as #:gc-root.
* doc/guix.texi (Invoking guix system): Document '--root'.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-04-06 10:24:32 +02:00
Chris Marusich a09b45da6f
build: Add and export procedure 'register-root*'.
* guix/scripts/build.scm (register-root*): Add and export it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-04-06 10:11:26 +02:00
Ludovic Courtès 50f4ea18c4
environment: Deal with single-entry search paths.
This is a followup to fcd75bdbfa.

* guix/scripts/environment.scm (create-environment): Check whether
SEPARATOR is #f.
2017-04-05 22:50:21 +02:00
Maxim Cournoyer a0b87ef8ec
profiles: Generate database file for man pages.
The mandb database file (index.db) is used by the "apropos" (whatis) or
"man -k" commands.  This change introduces a profile hook to generate
such database file.

* guix/profiles.scm (manual-database): New procedure.
(%default-profile-hooks): Add it.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2017-04-05 22:45:41 +02:00
Ludovic Courtès 1618006d0b
build-system/python: 'package-with-explicit-python' uses 'package-mapping'.
* guix/build-system/python.scm (package-with-explicit-python)
[package-variant, cut?]: New procedures.
[transform]: Remove 'mlambdaq' form and input tuple handling.
Use 'package-mapping'.
2017-04-05 22:45:41 +02:00
Ludovic Courtès f37f2b83fa
packages: Add 'package-mapping' and base 'package-input-rewriting' on it.
* guix/packages.scm (package-mapping): New procedure.
(package-input-rewriting): Rewrite in terms of 'package-mapping'.
* tests/packages.scm ("package-mapping"): New test.
* doc/guix.texi (Defining Packages): Document it.
2017-04-05 22:45:41 +02:00
Ricardo Wurmus 5ae63362ae
import cran: Distinguish Bioconductor data packages.
* guix/import/cran.scm (bioconductor-package?): Exclude Bioconductor
data packages.
(bioconductor-data-package?): New procedure.
2017-04-05 18:38:51 +02:00
Leo Famulari b23c1a71be
download: Update the GnuPG mirror list.
* guix/download.scm (%mirrors) <gnupg>: Use HTTP for TU Wien mirror.
2017-04-05 07:07:35 -04:00
Chris Marusich 1c6b2d3f98
build: Export register-root procedure.
* guix/scripts/build.scm: Export register-root procedure.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-04-05 00:53:03 +02:00
Leo Famulari 6c17422eac
utils: Fix handling of shell arguments for xz compression.
Fixes test failures related to xz compression in tests/utils.scm.

This is a followup to commit 63102406f2.

* guix/utils.scm (decompressed-port, compressed-port, compressed-output-port):
Split each shell argument into its own list element.
2017-04-03 23:23:39 -04:00
Ludovic Courtès 76c486196f
packages: Catch invalid input errors for structs.
Reported by Thomas Sigurdsen <thomas.sigurdsen@gmail.com>
at <https://lists.gnu.org/archive/html/help-guix/2017-04/msg00007.html>.

* guix/packages.scm (expand-input): Add 'guard' form around call to
'package-source-derivation'.
* tests/packages.scm (dummy): New test.
2017-04-04 00:10:00 +02:00
Ludovic Courtès 3e43166ffc
gexp: 'lower-object' raises an exception when passed an invalid object.
* guix/gexp.scm (&gexp-error, &gexp-input-error): New error conditions.
(lower-object): Raise &gexp-input-error when 'lookup-compiler' returns #f.
* tests/gexp.scm ("lower-object & gexp-input-error?"): New test.
* guix/ui.scm (call-with-error-handling): Add case for 'gexp-input-error?'.
2017-04-04 00:10:00 +02:00
Ludovic Courtès 2a0d5de5a9
Merge branch 'core-updates' 2017-04-03 00:13:06 +02:00
Efraim Flashner 63102406f2
guix: Compress and decompress xz archives in parallel.
* guix/scripts/pack.scm (%compressors): Add flag '-T0' when calling "xz".
* guix/utils.scm (decompressed-port, compressed-port,
compressed-output-port): Same.
2017-04-02 14:42:20 +03:00
Tobias Geerinckx-Rice f264e838c0
substitute: Send ‘User-Agent’ header.
* guix/scripts/substitute.scm (narinfo-request): Pass ‘User-Agent’ #:headers
to ‘build-request’.
2017-03-31 15:33:16 +02:00
Marius Bakke 84157bb8bf
Merge branch 'master' into core-updates
Most conflicts are from 6fd52309b8.
2017-03-30 22:59:53 +02:00
Ludovic Courtès cdb3f734cf
packages: Remove "mips64el-linux" from '%hydra-supported-systems'.
* guix/packages.scm (%hydra-supported-systems): Remove "mips64el-linux".
2017-03-29 22:50:42 +02:00
Ludovic Courtès e1f02f92e9
Replace (compose not PROC) with simpler idioms.
* gnu/packages/bioinformatics.scm (python-pysam)[arguments] <check>:
Use (negate proc) instead of (compose not proc).
* guix/import/cran.scm (recursive-import): Likewise.
* guix/import/elpa.scm (filter-dependencies): Use 'remove' instead of
'(filter (compose not proc) ...)'.
2017-03-28 22:15:44 +02:00
Ricardo Wurmus 1a75083b0d
import cran: Print package stream in the expected order.
* guix/scripts/import/cran.scm (guix-import-cran): Reverse list of packages.
2017-03-28 15:54:10 +02:00
Ricardo Wurmus 2dca8b2d51
import cran: Automatically add gfortran and zlib when needed.
* guix/import/cran.scm (needs-fortran?, needs-zlib?): New procedures.
(description->package): Use them.
2017-03-28 15:37:47 +02:00
Ludovic Courtès 6dfd683dc7
download: Properly parse ftp:// URLs that lack user info.
Fixes a regression introduced in
a4f5423415.

Reported by Hartmut Goebel.

* guix/build/download.scm (ftp-fetch): Account for the case where
'uri-userinfo' returns #f.  Remove the case where it returns "" since
that cannot happen.
2017-03-28 13:30:09 +02:00
Ludovic Courtès bdb59b331b
derivations: Do not fetch narinfos for non-substitutable items.
This avoids connections to substitute servers for derivations that are
not substitutable anyway, such as profiles.

Reported by Andy Wingo.

* guix/derivations.scm (substitution-oracle): Skip derivations that do
not pass 'substitutable-derivation?'.
* tests/derivations.scm ("substitution-oracle and #:substitute? #f"):
New test.
2017-03-28 10:00:05 +02:00
Leo Famulari c17383f400
Merge branch 'master' into core-updates 2017-03-27 21:19:38 -04:00
Alex Kost 689db38e34
ui: Support Texinfo markup in package synopses.
* guix/ui.scm (package-field-string): New procedure.
(package-description-string): Use it.
(package-synopsis-string): New procedure.
(package->recutils): Use it.
* guix/scripts/lint.scm (check-synopsis-style)[check-texinfo-markup]:
New procedure.  Use it in checks.
* tests/lint.scm: Test it.
* gnu/packages/perl.scm (perl-try-tiny)[synopsis]: Adjust for the
Texinfo markup.
2017-03-27 10:55:16 +03:00
Huang Ying 0a5ce0d1df
profiles: Create fonts.dir/scale for all fonts directories.
* guix/profiles.scm (fonts-dir-file): Create fonts.dir/scale files for all
fonts directories.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-03-26 12:53:52 +02:00
Huang Ying addce19e2d
union: Add create-all-directories? parameter to 'union-build'.
* guix/build/union.scm (union-build): Add create-all-directories? keyword
parameter.
* tests/union.scm ("union-build #:create-all-directories? #t"): New test.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2017-03-26 12:53:48 +02:00
Efraim Flashner 0371b345e8
Merge remote-tracking branch 'origin/master' into core-updates 2017-03-23 14:53:33 +02:00
Ludovic Courtès 4bb5e0aeb3
publish: Add '--nar-path'.
* guix/scripts/publish.scm (show-help, %options): Add '--nar-path'.
(%default-options): Add 'nar-path'.
(guix-publish): Honor it.
2017-03-22 14:05:59 +01:00
Ludovic Courtès cdd7a7d210
publish: Make the nar URL prefix a parameter.
* guix/scripts/publish.scm (narinfo-string): Add #:nar-path and honor it.
(render-narinfo): Likewise.
(make-request-handler): Likewise.
(run-publish-server): Likewise.
* tests/publish.scm ("custom nar path"): New test.
2017-03-22 14:05:59 +01:00
Ludovic Courtès 46f58390cb
publish: Add '--public-key' and '--private-key'.
* guix/scripts/publish.scm (show-help, %options): Add --public-key and
--private-key.
* doc/guix.texi (Invoking guix publish): Document it.
2017-03-22 14:05:59 +01:00
Ludovic Courtès ab2a74e4db
publish: The public and private keys are now SRFI-39 parameters.
* guix/scripts/publish.scm (%default-options): Add 'public-key-file' and
'private-key-file'.
(lazy-read-file-sexp): Remove.
(%private-key, %public-key): Turn into SRFI-39 parameters.
(signed-string, render-narinfo): Adjust accordingly.
(guix-publish): Honor 'public-key-file' and 'private-key-file' from
OPTS.  Use 'parameterize'.
* guix/pk-crypto.scm (read-file-sexp): New procedure.
* tests/publish.scm: Initialize '%public-key' and '%private-key'.
2017-03-22 14:05:59 +01:00
Efraim Flashner 378de69c59
Merge remote-tracking branch 'origin/master' into core-updates 2017-03-22 12:57:37 +02:00
Roel Janssen a4f5423415
download: Handle username and password properties for FTP URIs.
* guix/build/download.scm (ftp-fetch): Process username and password from a URI.
2017-03-21 12:15:14 +01:00
Roel Janssen 193420a803
ftp-client: Allow custom username and password for FTP servers.
* guix/ftp-client.scm (ftp-open): Add username and password arguments.
2017-03-21 12:14:05 +01:00
Mark H Weaver d67f972bd7
download: Remove non-existent kernel mirror.
* guix/download.scm (%mirrors) <kernel.org>: Remove www.all.kernel.org.
2017-03-19 21:18:46 -04:00
Mark H Weaver f67337e23e
Merge branch 'master' into core-updates 2017-03-19 18:52:12 -04:00
Ludovic Courtès 4fd06a4dd1
http-client: Avoid name clash with 'open-connection-for-uri' in 2.2.0.
* guix/build/download.scm (open-connection-for-uri): Add note about
same-named binding in Guile 2.2.0.
* guix/http-client.scm: Use 'guix:open-connection-for-uri' for the
procedure coming from (guix build download).
* guix/scripts/lint.scm: Likewise.
* guix/scripts/substitute.scm: Likewise.
2017-03-18 00:39:50 +01:00
Ludovic Courtès 36626c556e
build: Require Guile >= 2.0.9.
* configure.ac: Bump requirement to 2.0.9.
* doc/guix.texi (Requirements): Adjust accordingly.
* README (Requirements): Likewise.
* build-aux/download.scm: Remove workaround for <http://bugs.gnu.org/13095>.
* guix/build/download.scm: Likewise.
(http-fetch)[post-2.0.7?]: Remove.  Remove conditional code for not
POST-2.0.7?.
* guix/http-client.scm:  Remove workaround for <http://bugs.gnu.org/13095>.
(http-fetch)[post-2.0.7?]: Remove.  Remove conditional code for not
POST-2.0.7?.
* guix/serialization.scm (read-latin1-string): Remove mention of 2.0.9.
* tests/nar.scm: Use (ice-9 control).
(let/ec): Remove.
2017-03-18 00:39:49 +01:00
Ludovic Courtès 5461115e8f
pack: Add '--target'.
* guix/scripts/pack.scm (self-contained-tarball): Add #:target.
(docker-image): Add #:target.
[build]: Pass it to 'build-docker-image'.
(%options, show-help): Add '--target'.
(guix-pack): Pass TARGET to 'profile-derivation' and to 'build-image'.
* guix/docker.scm (build-docker-image): Add #:system parameter and honor it.
* doc/guix.texi (Invoking guix pack): Document '--target'.
(Additional Build Options): Refer to the Autoconf manual instead of the
obsolete 'configure.info' for cross-compilation.
2017-03-18 00:38:41 +01:00
Ludovic Courtès 176febe377
profiles: Packages in a profile can be cross-compiled.
* guix/profiles.scm (profile-derivation): Add #:target parameter; pass
it to 'gexp->derivation'.
* tests/profiles.scm ("profile-derivation, cross-compilation"): New test.
2017-03-17 23:25:53 +01:00
Ludovic Courtès 48b444304e
pack: Move absolute file name to <compressor>.
* guix/scripts/pack.scm (<compressor>)[package]: Remove.
[command]: Document as being a gexp with an absolute file name.
(%compressors): Adjust accordingly.
(self-contained-tarball): Simplify PATH expression.  Move 'string-join'
for the compressor command on the build side.
(docker-image): Simplify PATH expression.
* tests/pack.scm (%gzip-compressor): Adjust accordingly.
2017-03-17 23:25:53 +01:00
Danny Milosavljevic 4ed64c534a
build/cargo-build-system: Make cargo-build-system install working packages.
* guix/build/cargo-build-system.scm (configure): Remove proprietary
dependencies. Add rust dependencies and configure Cargo to find them.
(build): Also build libraries, not just applications.
(file-sha256): New variable.
(generate-checksums): New variable. Export it.
(touch): New variable.
(install): Generate checksums so Cargo accepts the package.
2017-03-17 16:48:09 +01:00
Danny Milosavljevic 25fb58a3be
build-system/cargo (cargo-build): Add cargo-build-flags, remove configure-flags.
* guix/build-system/cargo.scm (cargo-build): Add cargo-build-flags,
remove configure-flags.
2017-03-17 16:48:08 +01:00
Ricardo Wurmus 2d7c4ae3ee
gnu: r: Rename to r-minimal.
* gnu/packages/statistics.scm (r): Rename to...
(r-minimal): ...this new variable.
(r-with-recommended-packages): Rename to...
(r): ...this.
* guix/build-system/r.scm (default-r): Reference r-minimal.
* gnu/packages/emacs.scm (emacs-ess)[inputs],
gnu/packages/machine-learning.scm (shogun)[inputs],
gnu/packages/python.scm (python-rpy2)[inputs],
gnu/packages/bioinformatics.scm (ribotaper)[inputs],
(couger)[propagated-inputs],
(roary)[inputs],
(rsem)[inputs],
(rcas-web)[inputs]: Change "r" to "r-minimal".
2017-03-17 10:14:02 +01:00
Ricardo Wurmus aeb64f3cb2
gnu: r: Do not build recommended packages.
* gnu/packages/statistics.scm (r)[arguments]: Rename phase
"build-recommended-packages-reproducibly" to "build-reproducibly"; add
configure flag "--without-recommended-packages".
* guix/import/cran.scm (default-r-packages): Remove recommended packages.
* gnu/packages/python.scm (python-rpy2)[inputs]: Add r-survival.
* gnu/packages/bioinformatics.scm (r-ape)[propagated-inputs]: Add r-lattice
and r-nlme.
(r-vegan)[propagated-inputs]: Add r-mass.
(r-genefilter)[propagated-inputs]: Add r-survival.
(r-grohmm)[propagated-inputs]: Add r-mass.
(r-bioccheck)[propagated-inputs]: Add r-codetools.
(r-summarizedexperiment)[propagated-inputs]: Add r-matrix.
(r-topgo)[propagated-inputs]: Add r-lattice.
(r-sva)[propagated-inputs]: Add r-mgcv.
(r-raremetals2)[propagated-inputs]: Add r-mass.
(r-vsn)[propagated-inputs]: Add r-lattice.
(r-pcamethods)[propagated-inputs]: Add r-mass.
* gnu/packages/bioinformatics.scm (r-ggplot2)[propagated-inputs]: Add r-mass.
(r-locfit)[propagated-inputs]: Add r-lattice.
(r-coda)[propagated-inputs]: Add r-lattice.
(r-irlba)[propagated-inputs]: Add r-matrix.
(r-glmnet)[propagated-inputs]: Add r-matrix.
(r-e1071)[propagated-inputs]: Add r-class.
(r-spams)[propagated-inputs]: Add r-lattice and r-matrix.
(r-hmisc)[propagated-inputs]: Add r-cluster, r-foreign, r-lattice, r-nnet, and
r-rpart.
(r-zoo)[propagated-inputs]: Add r-lattice.
(r-mixtools)[propagated-inputs]: Add r-boot and r-mass.
(r-flexmix)[propagated-inputs]: Add r-lattice and r-nnet.
(r-prabclus)[propagated-inputs]: Add r-mass.
(r-fpc)[propagated-inputs]: Add r-class, r-cluster, and r-mass.
(r-rcppeigen)[propagated-inputs]: Add r-matrix.
(r-matrixmodels)[propagated-inputs]: Add r-matrix.
(r-lme4)[propagated-inputs]: Add r-mass and r-nlme.
(r-pbkrtest)[propagated-inputs]: Add r-mass and r-matrix.
(r-car)[propagated-inputs]: Add r-mass, r-mgcv, and r-nnet.
(r-tclust)[propagated-inputs]: Add r-cluster.
2017-03-17 10:14:02 +01:00
Ludovic Courtès db3f2b61ad
pack: Allow for "-S /opt/foo=".
Reported by Andy Wingo.

* guix/scripts/pack.scm (%options): Use 'string-split' instead of
'string-tokenize'.
2017-03-16 22:50:15 +01:00
Ludovic Courtès 9e84ea3673
pack: Honor symlinks in the Docker back-end.
* guix/docker.scm (symlink-source, topmost-component): New procedures.
(build-docker-image): Add #:symlinks parameter and honor it.  Remove
hard-coded /bin symlink.
* guix/scripts/pack.scm (docker-image): Pass #:symlinks to
'build-docker-image'.
2017-03-16 22:50:15 +01:00
Ludovic Courtès 54241dc8e6
docker: Build images in a reproducible fashion.
* guix/docker.scm (%tar-determinism-options): New variable.
(build-docker-image): Use it on the two 'tar' invocations.
2017-03-16 22:50:15 +01:00
Ludovic Courtès 84dda5a9c0
pack: Use a fixed timestamp in Docker images.
* guix/docker.scm (build-docker-image): Add #:creation-time parameter.
Use SRFI-19 'date->string' instead of 'strftime' et al.
* guix/scripts/pack.scm (docker-image)[build]: Pass #:creation-time to
'build-docker-image'.
2017-03-16 22:50:15 +01:00
Ludovic Courtès b1edfbc37f
pack: Add '--format' option and Docker output support.
* guix/docker.scm: Remove dependency on (guix store) and (guix utils).
Use (guix build store-copy).  Load (json) lazily.
(build-docker-image): Remove #:system.  Add #:closure, #:compressor, and
'image' parameters.  Use 'uname' to determine the architecture.  Remove
use of 'call-with-temporary-directory'.  Use 'read-reference-graph' to
compute ITEMS.  Honor #:compressor.
* guix/scripts/pack.scm (docker-image): New procedure.
(%default-options): Add 'format'.
(%formats): New variable.
(%options, show-help): Add '--format'.
(guix-pack): Honor '--format'.
* guix/scripts/archive.scm: Remove '--format' option.  This reverts
commits 1545a012cb,
01445711db, and
03476a23ff.
* doc/guix.texi (Invoking guix pack): Document '--format'.
(Invoking guix archive): Remove documentation of '--format'.
2017-03-16 22:50:15 +01:00
Ludovic Courtès 2971f39c33
pack: Honor command-line options related to the store.
* guix/scripts/pack.scm (guix-pack): Call
'set-build-options-from-command-line'.
2017-03-16 22:50:15 +01:00
Ludovic Courtès 146db52a18
memoization: Micro-optimize code produced by 'define-cache-procedure'.
* guix/memoization.scm (%nothing): Remove.
(define-cache-procedure): Make '%nothing' a local variable, with a
literal list.
2017-03-16 22:50:15 +01:00
Ludovic Courtès d938a58bee
gexp: Add '=>' syntax to import computed modules.
* guix/gexp.scm (imported-files)[file-pair]: Add case for pairs where
the cdr is not a string.
(imported-modules): Support '=>' syntax in MODULES.
* tests/gexp.scm ("imported-files with file-like objects")
("gexp->derivation & with-imported-module & computed module"): New tests.
* doc/guix.texi (G-Expressions): Document '=>' syntax for
'with-imported-modules'.
2017-03-16 22:50:14 +01:00
Ludovic Courtès 4c0c4db070
utils: Move base16 procedures to (guix base16).
* guix/utils.scm (bytevector->base16-string, base16-string->bytevector):
Move to...
* guix/base16.scm: ... here.  New file.
* tests/utils.scm ("bytevector->base16-string->bytevector"): Move to...
* tests/base16.scm: ... here.  New file.
* Makefile.am (MODULES): Add guix/base16.scm.
(SCM_TESTS): Add tests/base16.scm.
* build-aux/download.scm, guix/derivations.scm,
guix/docker.scm, guix/import/snix.scm, guix/pk-crypto.scm,
guix/scripts/authenticate.scm, guix/scripts/download.scm,
guix/scripts/hash.scm, guix/store.scm, tests/hash.scm,
tests/pk-crypto.scm: Adjust imports accordingly.
2017-03-16 22:50:14 +01:00
Marius Bakke 4b7e5c1131
Merge branch 'master' into core-updates 2017-03-15 17:52:26 +01:00
Ludovic Courtès 70dfdd501a
syscalls: Adjust 'clone' to Guile 2.2.
Before that, something like:

  (call-with-container
    (lambda ()
      (match (primitive-fork)
        …)))

would hang in 'primitive-fork' as the child process (the one started in
the container) would try to pthread_join the finalization thread in
'stop_finalization_thread' in libguile, not knowing that this thread is
nonexistent.

* guix/build/syscalls.scm (%set-automatic-finalization-enabled?!): New
procedure.
(without-automatic-finalization): New macro.
(clone): Wrap PROC call in 'without-automatic-finalization'.
2017-03-15 15:19:53 +01:00
Ludovic Courtès 81a0f1cdf1
zlib: Don't rely on EBADF being ignored by 'fport_close'.
In 2.2, 'fport_close' no longer swallows EBADF and instead raises a
'system-error' for this.  This commit adjusts for 2.2.

* guix/zlib.scm (close-procedure): Remove.
(make-gzip-input-port): Use 'port->fdes' instead of 'fileno'.
Use 'gzclose' instead of 'close-procedure'.
(make-gzip-output-port): Likewise.
* tests/zlib.scm ("compression/decompression pipe"): Don't check whether
PARENT is closed using 'port-closed?'.  Instead, use 'seek' on the
underlying FD and check for EBADF.
2017-03-15 15:19:53 +01:00
Ludovic Courtès 850edd77f9
pack: Add unit test.
* guix/scripts/pack.scm (self-contained-tarball): Add #:tar option.
[build](tar-supports-sort?): New variable.  Use it.
* tests/pack.scm: New file.
* Makefile.am (SCM_TESTS): Add it.
2017-03-14 23:18:32 +01:00
Ludovic Courtès 36f213fb70
pack: Use maximum compression; use '-n' for gzip.
* guix/scripts/pack.scm (<compressor>)[tar-option]: Remove.
[command]: New field.
(%compressors): Provide complete commands.  Use '-9' or equivalent for
each compressor; use '-n' for gzip.
(self-contained-tarball)[build]: Adjust accordingly.
2017-03-14 23:18:32 +01:00
Ludovic Courtès 5895ec8aa2
pack: Add '--symlink'.
* guix/scripts/pack.scm (self-contained-tarball): Add #:symlinks
parameter.
[build](symlink->directives): New procedure
(directives): New variable.
Add call to 'evaluate-populate-directive'.  Pass the directories among
DIRECTIVES to 'tar'.
(%default-options): Add 'symlinks'.
(%options, show-help): Add '--symlink'.
(guix-pack): Honor it.
* gnu/build/install.scm (evaluate-populate-directive): Export.
* doc/guix.texi (Invoking guix pack): Document it.
2017-03-14 17:57:27 +01:00
Ludovic Courtès 6b63c43e06
pack: Add '--localstatedir' option.
* guix/scripts/pack.scm (self-contained-tarball): Add #:localstatedir?
parameter and honor it.
(%options, show-help): Add '--localstatedir'.
(guix-pack): Honor it.
* gnu/build/install.scm (populate-single-profile-directory): Add
 #:register? parameter and honor it.
* doc/guix.texi (Binary Installation): Use '--localstatedir' in
example.
(Invoking guix pack): Document it.
2017-03-14 17:57:27 +01:00
Ludovic Courtès 3b2dc9edcd
upstream: Avoid '_' as a pattern variable in 'match'.
* guix/upstream.scm (lookup-updater): Don't use '_' as a pattern
variable.
2017-03-14 11:19:21 +01:00
Efraim Flashner 3f9543aee1
Merge remote-tracking branch 'origin/master' into core-updates 2017-03-13 23:08:49 +02:00
Ludovic Courtès b111bceecc
download: Export '%x509-certificate-directory'.
* guix/build/download.scm (%x509-certificate-directory): Export, as
expected by (guix scripts pull) since commit
7e81d699de.
2017-03-13 21:52:38 +01:00
Marius Bakke 7e81d699de
pull: Default to HTTPS.
* guix/scripts/pull.scm (%snapshot-url): Use HTTPS.
(guix-pull): Authenticate against LE-CERTS when URL is from Savannah.
2017-03-12 19:39:32 +01:00
Ludovic Courtès 334c95306a
syscalls: Adjust 'define-bits' to macro literal semantics of 2.2.
* guix/build/syscalls.scm (define-bits): Do not define NAMES... as
top-level variables since that prevents literal matches in 2.2.
Instead, determine constant values at expansion time.
2017-03-12 17:47:25 +01:00
Ludovic Courtès 239c22663a
Add 'guix pack'.
* gnu/system/install.scm (self-contained-tarball): Move to...
* guix/scripts/pack.scm: ... here.  New file.
* doc/guix.texi (Binary Installation): Mention 'guix pack'.
(Invoking guix pack): New node.
* build-aux/make-binary-tarball.scm: Remove.
* Makefile.am (MODULES): Add guix/scripts/pack.scm.
(EXTRA_DIST): Remove build-aux/make-binary-tarball.scm.
(guix-binary.%.tar.xz): Rewrite using 'guix pack'.
* build-aux/hydra/gnu-system.scm (tarball-jobs): Adjust accordingly.
2017-03-12 17:47:25 +01:00
Ludovic Courtès e90e0fad1b
Merge branch 'master' into core-updates 2017-03-09 16:35:41 +01:00
Roel Janssen 64fc9f65f1
gexp: Expose functions to allow creating derivation builders.
* guix/gexp.scm: Add load-path-expression and gexp-modules to the public
  interface of the module.  See <http://bugs.gnu.org/26023>.
2017-03-09 12:39:05 +01:00
Ludovic Courtès 3104475148
utils: Use an idiom compatible with both 2.0 and 2.2.
Fixes a regression introduced in 7447aa36e1.
Reported by Ricardo Wurmus.

* guix/utils.scm: Revert 7447aa36e1.  Use
  #:prefix for (ice-9 iconv) to support both 2.0 and 2.2.
2017-03-09 09:48:33 +01:00
Ludovic Courtès 7447aa36e1
utils: Make sure to use the right 'bytevector->string'.
In Guile 2.2, (rnrs io ports) exports 'bytevector->string', which
conflicts with that of (ice-9 iconv).

* guix/utils.scm: Hide 'bytevector->string' from (rnrs io ports).
2017-03-08 23:42:53 +01:00
Ludovic Courtès 1062063a65
ui: Don't use '%default-port-encoding' to set the encoding of string ports.
* guix/ui.scm (right-arrow): Call 'set-port-encoding!' to set PORT's
encoding; remove use of 'with-fluids'.  This is for compatibility with
Guile 2.2 where the encoding of string ports is not influenced by
%DEFAULT-PORT-ENCODING.
* tests/ui.scm ("show-manifest-transaction"): Likewise.
2017-03-08 23:42:53 +01:00