Commit Graph

4532 Commits

Author SHA1 Message Date
Ludovic Courtès
dc209d5a5d
guix build, daemon: Rename "--no-build-hook" to "--no-offload".
This is a followup to bc69ea2d60.

* guix/scripts/build.scm (show-build-options-help): Rename
"--no-build-hook" to "--no-offload".
(%standard-build-options): Likewise, and warn when "--no-build-hook" is
passed.
* nix/nix-daemon/guix-daemon.cc (options): Add "--no-offload" and mark
"--no-build-hook" as hidden.
* guix/scripts/offload.scm: Adjust comment.
* doc/guix.texi (Invoking guix-daemon, Common Build Options): Replace
"--no-build-hook" with "--no-offload".
* etc/completion/fish/guix.fish, etc/completion/zsh/_guix: Adjust
accordingly.
2019-11-26 00:16:36 +01:00
Ludovic Courtès
fed3632812
compile: Adjust for Guile 2.9.5.
* guix/build/compile.scm (optimizations-for-level): New procedure.
Include '%lightweight-optimizations' and '%default-optimizations'.
(optimization-options): Use 'optimizations-for-level'.
2019-11-23 22:45:21 +01:00
Mathieu Othacehe
74f1718081
utils: Use target-aarch64? and target-arm? helpers.
* guix/utils.scm (target-aarch64?, target-arm?): New exported procedures.
2019-11-22 16:33:42 +01:00
Ludovic Courtès
ca541f9ce6
pack: Allow multiple '--manifest' options.
* guix/scripts/pack.scm (guix-pack): Collect 'manifest' options, and
concatenate the resulting manifests.
* tests/guix-pack.sh: Test it.
* doc/guix.texi (Invoking guix pack): Document it.
2019-11-22 15:07:59 +01:00
Ludovic Courtès
bf9206d8ed
package: Allow multiple '--manifest' options.
* guix/scripts/package.scm (manifest-action): Remove.
(%actions): Remove it.
(load-manifest): New procedure.
(process-actions): Handle 'manifest' options.  Define 'files' from
'manifest' options.  Define 'manifest' based on FILES.  Define 'trans'
to represent the final transaction.
* tests/guix-package.sh: Test it.
* doc/guix.texi (Invoking guix package): Mention
2019-11-22 15:07:58 +01:00
Ludovic Courtès
ce30a0eb7e
profiles: Add 'concatenate-manifests'.
* guix/profiles.scm (concatenate-manifests): New procedure.
* tests/profiles.scm ("concatenate-manifests"): New test.
2019-11-22 15:07:58 +01:00
Ludovic Courtès
c0e9d470e1
import: texlive: Handle multi-license packages.
This fixes "guix import texlive translator".

* guix/import/texlive.scm (sxml->package): Add clause for when 'license'
is a list of licences, as is the case with the "translator" package.
2019-11-22 15:00:59 +01:00
Ludovic Courtès
4f5234be03
substitute: Don't fetch /nix-cache-info.
This avoids one GET request every time 'fetch-narinfos' is called.
The file itself was essentially useless.

* guix/scripts/substitute.scm (<cache-info>, download-cache-info):
Remove.
(%unreachable-hosts): New variable.
(open-connection-for-uri/maybe): New procedure.
(fetch-narinfos)[handle-narinfo-response]: Check whether NARINFO has its
'path' under (%store-prefix) and ignore it otherwise.  Move
'update-progress!' call before 'if'.
[do-fetch]: Remove 'port' parameter.  Use
'open-connection-for-uri/maybe'.
Remove call to 'download-cache-info'.
2019-11-22 12:17:42 +01:00
Ludovic Courtès
a2e661e95f
pack: Add "--derivation".
* guix/scripts/pack.scm (%options, show-help): Add "--derivation".
(guix-pack): Honor it.
* tests/guix-pack.sh: Test it.
* doc/guix.texi (Invoking guix pack): Document it.
2019-11-21 11:48:30 +01:00
Timothy Sample
064a967ba0
gnu: Use GHC 8.6.5 as the main Haskell compiler.
* gnu/package/haskell.scm (ghc-8): Change to 'ghc-8.6'.
* guix/import/hackage.scm (ghc-standard-libraries): Add 'ghc-heap'
and 'libiserv'.
2019-11-20 20:47:48 -05:00
Ludovic Courtès
1bdb63e73b
deploy: Handle "--version".
* guix/scripts/deploy.scm (%options): Add "--version".
2019-11-19 10:51:53 +01:00
Ludovic Courtès
6fbd8fde2f
pull: Acquire a lock for the target profile.
This is a followup to b1fb663404.

* guix/scripts/pull.scm (guix-pull): Wrap 'run-with-store' call in
'with-file-lock/no-wait'.
2019-11-19 10:51:52 +01:00
Ludovic Courtès
0d78d0f09c
download: Load *.crt certificate bundles when *.pem files are missing.
Fixes <https://bugs.gnu.org/38254>.

* guix/build/download.scm (make-credendials-with-ca-trust-files): Look
for *.crt files under DIRECTORY when *.pem files cannot be found.
2019-11-18 12:17:32 +01:00
Maxim Cournoyer
e1d31e6457
build-system: emacs: Simplify the SET-EMACS-LOAD-PATH phase.
It is no longer necessary to search for the Elisp libraries manually, as Emacs
now include a search path specification serving that purpose.

* guix/build/emacs-build-system.scm (set-emacs-load-path): Replace by...
(add-source-to-load-path): ...this.
(%standard-phases): Adjust accordingly.
2019-11-18 14:34:40 +09:00
Alex Sassmannshausen
b997d43214
utils: Handle #f file-name.
* guix/utils.scm (current-source-directory): Change dispatch to handle #f
file-name.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2019-11-18 13:18:41 +09:00
Ludovic Courtès
9c9982dc0c
guix build: Handle "guix build /….drv" correctly for non-existent derivations.
This lets the daemon substitute missing derivations, as in the example
at <https://bugs.gnu.org/38226>, instead of failing with ENOENT.

* guix/scripts/build.scm (options->things-to-build): In the
'derivation-path?' case, don't fail when 'read-derivation-from-file'
raises to ENOENT; return the empty list in that case.
(guix-build): Add non-existent '.drv' files to ITEMS.
Pass ITEMS in addition to DRV to 'build-derivations'.
* tests/guix-build.sh: Add test.
2019-11-17 23:14:54 +01:00
Ludovic Courtès
87e7faa2ae
time-machine: Honor the standard build options.
* guix/scripts/time-machine.scm (show-help): Call 'show-build-options-help'.
(%options): Add %STANDARD-BUILD-OPTIONS.
(%default-options): New variable.
(parse-args): Pass (list %default-options) to 'parse-command-line' and
remove #:build-options? parameter.
(guix-time-machine): Call 'set-build-options-from-command-line' and wrap
'cached-channel-instance' call in 'with-status-verbosity'.
* doc/guix.texi (Invoking guix time-machine): Mention common build options.
2019-11-15 23:29:06 +01:00
Ludovic Courtès
d17e012da7
time-machine: Handle 'git-error' exceptions.
* guix/scripts/pull.scm (with-git-error-handling): Export.
* guix/scripts/time-machine.scm (guix-time-machine): Wrap body in
'with-git-error-handling'.
2019-11-15 23:29:06 +01:00
Konrad Hinsen
1d5485690b
inferior: 'cached-channel-instance' takes an open store connection.
* guix/inferior.scm (cached-channel-instance): Take an explicit 'store'
argument.
(inferior-for-channels): Wrap call to 'cached-channel-instance' in
'with-store'.
* guix/time-machine.scm (guix-time-machine): Wrap call to
'cached-channel-instance' in 'with-store'.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2019-11-15 23:28:17 +01:00
Konrad Hinsen
f675f8dec7
Add 'guix time-machine'.
* guix/scripts/time-machine.scm: New file.
* Makefile.am: (MODULES): Add it.
* guix/scripts/pull.scm (channel-list): Export.
* guix/inferior.scm (cached-channel-instance): New procedure.
(inferior-for-channels): Use it.
* doc/guix.texi (Invoking guix time-machine): New section.
(Channels): Cross-reference it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2019-11-15 23:28:17 +01:00
Ludovic Courtès
1edcfda81b
pull: Remove unused '--verbose' option.
This option had been ignored since commit
0d39a3b989 (August 2018).

* guix/scripts/pull.scm (show-help, %options): Remove "--verbose".
(build-and-install): Remove #:verbose?, which was unused.
(guix-pull): Adjust accordingly.
2019-11-15 23:28:17 +01:00
Efraim Flashner
cda79c7cc9
make-bootstrap: Adjust copied linux headers.
* guix/build/make-bootstrap.scm (copy-linux-headers): Remove header
file 'a.out.h' is no longer part of the linux kernel headers.
2019-11-15 13:00:23 +02:00
Julien Lepiller
277ba1d4f8
guix: svn: Allow dropping externals.
* guix/build/svn.scm (svn-fetch): Allow to ignore externals.
* guix/svn-download.scm (svn-reference, svn-multi-reference): Add
recursive? field.
2019-11-13 22:49:47 +01:00
Ludovic Courtès
edd25a8cac
ui: Emit hyperlinks for 'license' in package search results.
* guix/ui.scm (package->recutils): When HYPERLINKS is true, call
'hyperlink' for the 'license' field.
2019-11-09 00:36:10 +01:00
Ludovic Courtès
7f0f38b54c
ui: Produce hyperlinks for the 'location' field of search results.
This affects the output of 'guix show', 'guix search', and 'guix system
search'.

* guix/ui.scm (hyperlink, supports-hyperlinks?, location->hyperlink):
New procedures.
(package->recutils): Add #:hyperlinks? and honor it.
(display-search-results): Pass #:hyperlinks? to PRINT.
* guix/scripts/system/search.scm (service-type->recutils): Add
 #:hyperlinks? and honor it.
2019-11-09 00:36:10 +01:00
Julien Lepiller
b1fb663404
guix: package: lock profiles when processing them.
* guix/scripts/package.scm (process-actions): Get a per-profile lock to
prevent concurrent actions on profiles.
* tests/guix-package.sh: Add test.
2019-11-08 21:52:53 +01:00
Julien Lepiller
f49e913188
guix: Add file-locking with no wait.
* guix/build/syscalls.scm (with-file-lock/no-wait): New procedure.
(lock-file): Take a #:wait? key.
2019-11-08 21:52:30 +01:00
Ludovic Courtès
3e962e59d8
graph: Support package transformation options.
* guix/scripts/graph.scm (%options): Append %TRANSFORMATION-OPTIONS.
(show-help): Call 'show-transformation-options-help'.
(guix-graph): Call 'options->transformation' and use it.
* tests/guix-graph.sh: Add test.
* doc/guix.texi (Invoking guix graph): Document it.
2019-11-07 18:39:55 +01:00
Ludovic Courtès
6654677675
derivations: Use a regular hash table for the module cache.
The hit rate of the 'add-data-to-store' cache goes from 10% to 4% on:

  guix build -e '(@@ (gnu packages libreoffice) libreoffice)' -nd

* guix/derivations.scm (%module-cache): Turn into a regular hash table.
It didn't make sense to use a weak-value hash table given that values
are pairs.
2019-11-07 18:39:55 +01:00
Ludovic Courtès
6330db4d55
pull: Gracefully handle invalid Texinfo markup in news.
Reported by Oleg Pykhalov <go.wigust@gmail.com>.

* guix/scripts/pull.scm (display-news-entry-title)
(display-news-entry): Catch 'parser-error' around call to
'texi->plain-text', and return Texinfo as-is when an exception is
caught.
2019-11-01 12:23:45 +01:00
Ludovic Courtès
8c8d60752e
derivation: Remove memoization invalidation for 'derivation->bytevector'.
This is a followup to d727a9343d, which
broke 'hydra-jobs' from (gnu ci).

* guix/derivations.scm (invalidate-derivation-caches!): Remove call to
'invalidate-memoization!' for 'derivation->bytevector'.
2019-10-28 15:56:18 +01:00
Ludovic Courtès
49af34cfac
pull: Honor '/etc/guix/channels.scm'.
* guix/scripts/pull.scm (channel-list)[global-file]: New variable.
[channels]: Honor it.
* doc/guix.texi (Invoking guix pull): Document it.
2019-10-27 23:05:01 +01:00
Ludovic Courtès
b74ed90916
channels: Refer to 'guile-json-3'.
Fixes a regression introduced in 84af1e7402.

* guix/channels.scm (whole-package-for-legacy): Refer to GUILE-JSON-3,
not GUILE-JSON.
2019-10-27 23:05:01 +01:00
Ludovic Courtès
d727a9343d
derivations: Don't memoize 'derivation->bytevector'.
Its hit rate was only 8%.  Removing it reduces heap size of "guix build
libreoffice -nd" from 69MiB to 61MiB and the wall-clock time is unchanged.

* guix/derivations.scm (derivation->bytevector): Change from 'mlambda'
to 'lambda'.
2019-10-27 23:05:00 +01:00
Ludovic Courtès
f5fca9a82c
gexp: Cache the module to derivation mappings.
This reduces the number of 'add-data-to-store' cache lookups from 3329
to 2743 (hit rate: 27% to 11%) when running:

  GUIX_PROFILING=add-data-to-store-cache guix build libreoffice -nd

Execution time of "guix build libreoffice -nd" goes from 1.86s to 1.80s.

* guix/gexp.scm (imported+compiled-modules): Wrap body in 'mcached'.
2019-10-27 23:05:00 +01:00
Ludovic Courtès
c57e417eff
store: Allow objects in the cache to be inserted and search for with 'equal?'.
* guix/store.scm (cache-object-mapping): Add #:vhash-cons parameter and
honor it.
(lookup-cached-object): Add #:vhash-fold* parameter and honor it.
(%mcached): Add #:vhash-fold* and #:vhash-cons and honor them.
(mcached): Add clauses with 'eq?' and 'equal?' as the first argument.
2019-10-27 23:05:00 +01:00
Ludovic Courtès
f58b45350b
gexp: Add 'imported+compiled-modules'.
* guix/gexp.scm (imported+compiled-modules): New procedure.
(lower-gexp): Use it instead of separate calls to 'imported-modules' and
'compiled-modules'.
2019-10-27 23:05:00 +01:00
Ludovic Courtès
f726f6f802
derivations: 'build-expression->derivation' caches its module derivations.
This reduces the number of lookups in the 'add-data-to-store' cache from
7505 to 3329 (hit rate from 68% to 27%) when running:

  GUIX_PROFILING=add-data-to-store-cache guix build libreoffice -nd

The execution time of "guix build libreoffice -nd" goes from 2.12s to 1.87s.

* guix/derivations.scm (%module-cache): New variable.
(imported+compiled-modules)[key]: New variable.
Lookup KEY in %MODULE-CACHE and populate %MODULE-CACHE upon cache miss.
2019-10-27 23:04:59 +01:00
Ludovic Courtès
cf7648f882
derivations: Introduce 'imported+compiled-modules'.
* guix/derivations.scm (imported+compiled-modules): New procedure.
(build-expression->derivation): Use it instead of separate calls to
'%imported-modules' and '%compiled-modules'.
2019-10-27 23:04:59 +01:00
Ludovic Courtès
b1b27f284f
guix build: Remove obsolete TODO.
* guix/scripts/build.scm (set-build-options-from-command-line): Remove
obsolete TODO comment.
2019-10-25 12:13:00 +02:00
Ludovic Courtès
b3673e9917
guix build: Warn when '--keep-failed' is passed to a remote daemon.
* guix/scripts/build.scm (set-build-options-from-command-line): When
OPTS has 'keep-failed?' set, check whether STORE is connected over
AF_UNIX and warn when it's not.
2019-10-25 12:13:00 +02:00
Tobias Geerinckx-Rice
8a2b231782
Revert "guix: svn: Allow dropping externals."
This reverts commit 51395c84fd,
fixing <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=37896>.

Reported by <o.rojon@posteo.net>.
2019-10-24 01:08:23 +02:00
Julien Lepiller
51395c84fd
guix: svn: Allow dropping externals.
* guix/build/svn.scm (svn-fetch): Allow to ignore externals.
* guix/svn-download.scm (svn-reference, svn-multi-reference): Add
recursive? field.
2019-10-23 23:31:08 +02:00
Ludovic Courtès
9efa2c28a4
lint: Re-enable CVE checker.
This reverts d7fcd9c565.

* guix/lint.scm (%network-dependent-checkers): Re-enable 'cve checker.
2019-10-23 16:40:17 +02:00
Ludovic Courtès
74afaa37d5
cve: Rewrite to read the JSON feed instead of the XML feed.
The XML feed was discontinued on Oct. 16th, 2019:

  <https://nvd.nist.gov/General/News/XML-Vulnerability-Feed-Retirement-Phase-3>

* guix/cve.scm (string->date*): New procedure.
(<cve-item>, <cve>, <cve-reference>): New record types.
(cpe-match->cve-configuration, configuration-data->cve-configurations)
(json->cve-items, version-matches?): New procedures.
(yearly-feed-uri): Change URL to refer to JSON feed.
(cpe->product-alist, %parse-vulnerability-feed)
(xml->vulnerabilities): Remove.
(cve-configuration->package-list, merge-package-lists)
(cve-item->vulnerability, json->vulnerabilities): New procedures.
(write-cache): Use 'json->vulnerabilities' instead of
'xml->vulnerabilities', and remove 'parameterize'.
(vulnerabilities->lookup-proc): Use 'version-matches?' when VERSION is
true.
* tests/cve.scm (%sample): Use 'tests/cve-sample.json'.
(%expected-vulnerabilities): Rewrite accordingly.
("json->cve-items", "cve-item-published-date")
("json->vulnerabilities"): New tests.
("xml->vulnerabilities"): Remove.
("vulnerabilities->lookup-proc"): Adjust to new vulnerabilities.
* tests/cve-sample.json: New file.
* tests/cve-sample.xml: Remove.
* Makefile.am (EXTRA_DIST): Adjust accordingly.
* doc/guix.texi (Invoking guix lint): Update nist.gov URLs.
2019-10-23 16:40:17 +02:00
Ludovic Courtès
674e143cf8
download: Honor /etc/ssl/certs when 'SSL_CERT_DIR' is not set.
* guix/build/download.scm (%x509-certificate-directory): Use
"/etc/ssl/certs" as a last resort.  This ensures, for instance, that
'guix download' honors system-wide certificates when SSL_CERT_DIR is
unset.
2019-10-21 18:16:16 +02:00
Ludovic Courtès
d04285647d
packages: Add "aarch64-linux" to '%hydra-supported-systems'.
* guix/packages.scm (%hydra-supported-systems): Keep "aarch64-linux".
2019-10-20 23:26:50 +02:00
Ludovic Courtès
f05f722657
reconfigure: Silence "shepherd: Evaluating ..." messages.
* guix/scripts/system/reconfigure.scm (upgrade-services-program):
Parameterize 'shepherd-message-port' to silent "Evaluating ..." messages.
2019-10-18 23:22:25 +02:00
Ludovic Courtès
d7fcd9c565
lint: Comment out 'cve' checker.
* guix/lint.scm (%network-dependent-checkers): Comment out 'cve' checker.
2019-10-18 12:02:52 +02:00
Ludovic Courtès
e6ea74d86c
pull: Call 'ensure-default-profile' after 'set-build-options'.
This is a followup to 81c580c866.

* guix/scripts/pull.scm (guix-pull): Move 'ensure-default-profile' call after
'set-build-options-from-command-line' call.  This ensures that the
'profiles/per-user/$USER' directory is created before
'ensure-default-profile' is called when 'GUIX_DAEMON_SOCKET' points to a
remote TCP daemon.
2019-10-18 12:02:52 +02:00