4748 Commits

Author SHA1 Message Date
Ricardo Wurmus
e31ec53ed8
import: cran: Recognize LGPL 2.1+.
* guix/import/cran.scm (string->license): Add case for lgpl2.1+.
2019-12-14 13:35:58 +01:00
Ludovic Courtès
6212146f88
import: utils: Update docstring of 'recursive-import'.
This is a followup to 70a8e13277d4a44b89dd9ee2290b98105f0235f1.

* guix/import/utils.scm (recursive-import): Update docstring.
2019-12-13 18:04:04 +01:00
Maxim Cournoyer
e34e02707d
emacs-build-system: Ensure the core libraries appear last in the load path.
Fixes bug #38568 (see: https://bugs.gnu.org/38568).

* guix/build/emacs-build-system.scm (add-source-to-load-path): Ensure the core
libraries appear last in the load path.

Reported-by: Jelle Licht <jlicht@fsfe.org>
2019-12-13 10:48:28 +09:00
Ludovic Courtès
828a39da68
challenge: Support "--diff=diffoscope".
* guix/scripts/challenge.scm (call-with-nar): New procedure.
(narinfo-contents): Express in terms of 'call-with-nar'.
(call-with-mismatches, report-differing-files/external): New
procedures.
(%diffoscope-command): New variable.
(%options): Support "diffoscope" and a string starting with "/".
* tests/challenge.scm (call-mismatch-test): New procedure.
("differing-files"): Rewrite in terms of 'call-mismatch-test'.
("call-with-mismatches"): New test.
* doc/guix.texi (Invoking guix challenge): Document it.
2019-12-12 17:56:58 +01:00
Ludovic Courtès
5208db3a52
challenge: Add "--diff".
* guix/scripts/challenge.scm (dump-port*): New variable.
(archive-contents, store-item-contents, narinfo-contents)
(differing-files, report-differing-files): New procedures.
(summarize-report): Add #:report-differences and call it.
(show-help, %options): Add "--diff".
(%default-options): Add 'difference-report' key.
(report-differing-files): Parameterize CURRENT-TERMINAL-COLUMNS and pass
 #:report-differences to 'summarize-report'.
* guix/tests/http.scm (%local-url): Add optional argument.
(call-with-http-server): Fix docstring typo.
* tests/challenge.scm (query-path-size, make-narinfo): New procedures.
("differing-files"): New test.
* doc/guix.texi (Invoking guix challenge): Document "--diff".
2019-12-12 17:56:58 +01:00
Ludovic Courtès
22f06a2128
progress: Add 'progress-report-port'.
* guix/scripts/substitute.scm (progress-report-port): Move to...
* guix/progress.scm (progress-report-port): ... here.  New procedure.
2019-12-12 17:56:58 +01:00
Ludovic Courtès
1d9a4456a8
serialization: Remove unused procedure.
* guix/serialization.scm (write-contents): Remove.
2019-12-12 17:56:58 +01:00
Ludovic Courtès
4736d06f78
challenge: Report the best narinfo URI.
* guix/scripts/substitute.scm (select-uri): Rename to...
(narinfo-best-uri): ... this, and make public.  Update callers.
* guix/scripts/challenge.scm (summarize-report): Use 'narinfo-best-uri'
instead of (first (narinfo-uris ...)).
2019-12-12 17:56:58 +01:00
Ludovic Courtès
044277f610
guix archive: Add '--list'.
* guix/scripts/archive.scm (show-help, %options): Add '--list'.
(list-contents): New procedure.
(guix-archive): Honor the '--list' option.
* tests/guix-archive.sh: Test it.
* doc/guix.texi (Invoking guix archive): Document it.
2019-12-12 17:56:58 +01:00
Ludovic Courtès
12c1afcdbd
serialization: Add 'fold-archive'.
* guix/serialization.scm (read-contents): Remove.
(read-file-type, fold-archive): New procedures.
(restore-file): Rewrite in terms of 'fold-archive'.
* tests/nar.scm ("write-file-tree + fold-archive")
("write-file-tree + fold-archive, flat file"): New tests.
2019-12-12 17:56:57 +01:00
Brice Waegeneire
263a267b75
import: crate: Better handle license expressions.
* guix/import/crate.scm (%dual-license-rx): Removed function.
(crate->guix-package): Handle most of the multi-licensing cases.
* tests/crate.scm (licenses): Add tests for some licenses.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2019-12-11 12:13:03 +01:00
Ludovic Courtès
70a8e13277
import: utils: 'recursive-import' returns a list rather than a stream.
* guix/import/utils.scm (recursive-import): Remove 'list->stream' call.
* guix/scripts/import/cran.scm (guix-import-cran): Remove 'stream->list'
call.
* guix/scripts/import/crate.scm (guix-import-crate): Likewise.
* guix/scripts/import/elpa.scm (guix-import-elpa): Likewise.
* guix/scripts/import/gem.scm (guix-import-gem): Likewise.
* guix/scripts/import/hackage.scm (guix-import-hackage): Likewise.
* guix/scripts/import/opam.scm (guix-import-opam): Likewise.
* guix/scripts/import/pypi.scm (guix-import-pypi): Likewise.
* guix/scripts/import/stackage.scm (guix-import-stackage): Likewise.
* tests/gem.scm ("gem-recursive-import"): Likewise.
* tests/import-utils.scm ("recursive-import"): Likewise.

Co-authored-by: Brian Leung <bkleung89@gmail.com>
2019-12-11 12:13:03 +01:00
Ludovic Courtès
ddd5915900
import: utils: 'recursive-import' returns packages in topological order.
* guix/import/utils.scm (topological-sort): New procedure.
(recursive-import): Rewrite to use it.
* tests/import-utils.scm ("recursive-import"): New test.
* guix/import/cran.scm (cran->guix-package): Always return two values.
* guix/scripts/import/cran.scm (guix-import-cran): Remove 'reverse' call
on 'cran-recursive-import' result.
* guix/scripts/import/crate.scm (guix-import-crate): Likewise.
* guix/scripts/import/elpa.scm (guix-import-elpa): Likewise.
* guix/scripts/import/gem.scm (guix-import-gem): Likewise.
* guix/scripts/import/hackage.scm (guix-import-hackage): Likewise.
* guix/scripts/import/opam.scm (guix-import-opam): Likewise.
* guix/scripts/import/pypi.scm (guix-import-pypi): Likewise.
* guix/scripts/import/stackage.scm (guix-import-stackage): Likewise.
* tests/gem.scm ("gem-recursive-import"): Change the order of package
expressions accordingly.
2019-12-11 12:12:58 +01:00
Ludovic Courtès
c20ba18304
profiles: Use 'getpwuid' when $USER and $LOGNAME are undefined.
Reported by YOANN P <yoann_mac_donald@hotmail.com>.

* guix/profiles.scm (%profile-directory): Fall back to 'getpwuid' when
"USER" and "LOGNAME" are undefined.
2019-12-10 20:56:06 +01:00
Ludovic Courtès
dc995fcd5a
pack: Clarify the /bin/sh requirement for Singularity.
* guix/scripts/pack.scm (squashfs-image)[symlinks*]: New variable.
[build]: Use it instead of SYMLINKS.
(guix-pack): Emit a warning and a hint when "bash" and "bash-minimal"
are missing and PACK-FORMAT is 'squashfs.
* doc/guix.texi (Invoking guix pack): Document the /bin/sh requirement
for Singularity.
2019-12-10 20:56:05 +01:00
zimoun
7282f94967
lint: Add '--load-path' option.
* guix/scripts/lint.scm (%options): Add '--load-path' option.
* doc/guix.texi: Document it.
* tests/guix-lint.sh: Test it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2019-12-08 23:14:03 +01:00
Maxim Cournoyer
add773c37a
emacs-build-system: Move the source directory to the start of EMACSLOADPATH.
Fixes issue #38479 (see: https://bugs.gnu.org/38479).

* guix/build/emacs-build-system.scm (add-source-to-load-path): Move the source
directory to the start of the EMACSLOADPATH environment variable.

Reported-by:  Diego Nicola Barbato <dnbarbato@posteo.de>
2019-12-08 11:58:08 +09:00
Maxim Cournoyer
d0105e7f29
emacs-build-system: Make the order of the phases more clear.
* guix/build/emacs-build-system.scm (%standard-phases): Re-arrange to explicit
the ordering of phases.
2019-12-08 11:58:08 +09:00
Hartmut Goebel
f69439dff4
build-system: qt: Fix output missing in wrapped variables.
* guix/build/qt-build-system .scm (handle-output): Use directory of
  output, not its name.
2019-12-07 20:48:38 +01:00
Guillaume Le Vaillant
0dc5c85638
file-systems: Add support for 'strict-atime' and 'lazy-time' flags.
* guix/build/syscalls.scm (MS_LAZYTIME): New variable.
* gnu/build/file-systems.scm (mount-flags->bit-mask): Add match rules for
  'strict-atime' and 'lazy-time'.
* doc/guix.texi (File Systems): Add 'strict-atime' and 'lazy-time' to the list
  of supported flags.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2019-12-07 01:00:24 +01:00
Ludovic Courtès
158032bd7d
guix system: Add "describe" action.
* guix/scripts/system.scm (show-help): Add "describe".
(process-command): Handle it.
(guix-system): Likewise.
* doc/guix.texi (Invoking guix system): Document it.
2019-12-07 00:59:57 +01:00
Ludovic Courtès
60f4564a63
guix system: "list-generations" displays provenance info.
* guix/scripts/pull.scm (channel-commit-hyperlink): Export.
* guix/scripts/system.scm (display-system-generation)
[display-channel]: New procedure.
Read the "provenance" file of GENERATION and display channel info and
the configuration file name when available.
2019-12-07 00:59:56 +01:00
Ludovic Courtès
b85836d306
guix system: Use 'provenance-service-type', add "--save-provenance".
* guix/scripts/system.scm (show-help, %options): Add "--save-provenance".
(process-action): Define 'save-provenance?' and 'transform'; call
'transform' on the OS.
* doc/guix.texi (Invoking guix system): Document it under 'reconfigure'.
(Service Reference): Mention that 'provenance-service-type' is
automatically added by 'reconfigure' & 'init'.
2019-12-07 00:59:56 +01:00
Ludovic Courtès
fcbe4f71ca
derivations: Add 'derivation-input-fold'.
* guix/derivations.scm (derivation-input-fold): New procedure.
(substitution-oracle)[closure]: Rewrite in terms of
'derivation-input-fold'.
* tests/derivations.scm ("derivation-input-fold"): New test.
2019-12-07 00:29:41 +01:00
Pierre Neidhardt
88f06fd015
gnu: Really move lisp libraries to lisp-xyz, uglify-js to javascript and stumpwm to wm.
* gnu/local.mk: Include lisp-xyz.scm.
* gnu/packages/lisp-xyz.scm: New file.
* gnu/packages/lisp.scm: Move all lisp libraries to lisp-xyz.scm, uglify-js to
  javascript.scm and stumpwm to wm.scm.
* gnu/packages/javascript.scm: Add uglify-js.
* gnu/packages/wm.scm: Add stumpwm.
* gnu/packages/bioinformatics.scm: Find uglify-js in javascript.scm.
* gnu/packages/machine-learning.scm: Depend on lisp-xyz.scm instead of lisp.scm.
* gnu/packages/web.scm: Find uglify-js in javascript.scm.
* gnu/packages/web-browsers.scm: Depend on lisp-xyz.scm instead of lisp.scm.
* guix/build-system/minify.scm (default-uglify-js): Find uglify-js in
  javascript module instead of lisp.
2019-12-05 16:23:06 +01:00
Tobias Geerinckx-Rice
d9544d91a6
Revert "gnu: Properly move lisp libraries to lisp-xyz, uglify-js to javascript and stumpwm to wm."
This reverts commit ac1ee30f4f7f9d0ae2a655676b0e8b9eb90a35dd, which
still breaks ‘guix pull’.
2019-12-05 15:38:52 +01:00
Efraim Flashner
73bd8ab669
Revert "build-system/linux-module: Accept a #:make-flags keyword."
I should've tested this better before pushing the commit.

This reverts commit fabd4900d8fb739a55e2dff76dee3a29b2a90bb1.
2019-12-05 15:37:39 +02:00
Pierre Neidhardt
ac1ee30f4f
gnu: Properly move lisp libraries to lisp-xyz, uglify-js to javascript and stumpwm to wm.
* gnu/local.mk: Include lisp-xyz.scm.
* gnu/packages/lisp-xyz.scm: New file.
* gnu/packages/lisp.scm: Move all lisp libraries to lisp-xyz.scm, uglify-js to
  javascript.scm and stumpwm to wm.scm.
* gnu/packages/javascript.scm: Add uglify-js.
* gnu/packages/wm.scm: Add stumpwm.
* gnu/packages/bioinformatics.scm: Find uglify-js in javascript.scm.
* gnu/packages/machine-learning.scm: Depend on lisp-xyz.scm instead of lisp.scm.
* gnu/packages/web.scm: Find uglify-js in javascript.scm.
* gnu/packages/web-browsers.scm: Depend on lisp-xyz.scm instead of lisp.scm.
* guix/build-system/minify.scm (default-uglify-js): Find uglify-js in
  javascript module instead of lisp.
2019-12-05 13:48:47 +01:00
Marius Bakke
33b59c1a3e
Merge branch 'staging' 2019-12-04 20:12:41 +01:00
Ludovic Courtès
2b8682841d
ssh: 'open-ssh-session' can be passed the expected host key.
* guix/ssh.scm (open-ssh-session): Add #:host-key parameter.
Pass #:knownhosts to 'make-session'.  When HOST-KEY is true, call
'authenticate-server*' instead of 'authenticate-server'.
2019-12-04 18:16:08 +01:00
Ludovic Courtès
f5c180180e
ssh: Always authenticate the server [security fix].
Until now, users of 'open-ssh-session', including "guix deploy" and
"GUIX_DAEMON_SOCKET=ssh://…" (but not "guix offload"), would not
authenticate the SSH server they're talking to.

* guix/ssh.scm (open-ssh-session): Call 'authenticate-server'.
2019-12-04 18:16:08 +01:00
Ludovic Courtès
114dcb429a
ssh: Add 'authenticate-server*' and use it for offloading.
* guix/scripts/offload.scm (host-key->type+key): Remove.
(open-ssh-session): Replace server authentication code with a call to
'authenticate-server*'.
* guix/ssh.scm (host-key->type+key, authenticate-server*): New
procedures.
2019-12-04 18:16:08 +01:00
Ludovic Courtès
a6492178bd
substitute: Remove unused procedure.
This became unused with commit
a9468b422b6df2349a3f4d1451c9302c3d77011b.

* guix/scripts/substitute.scm (assert-valid-signature): Remove.
2019-12-04 18:16:08 +01:00
Maxim Cournoyer
65a7dd2950
build: emacs-build-system: Unify the installation directory.
This change aims to reduce the length of the EMACSLOADPATH environment
variable, which was found to cause issues such as
<https://bugs.gnu.org/38309>.

It should also enable discovery of newly installed packages without refreshing
the session's EMACSLOADPATH of the user profile (e.g., when launching Emacs
from the desktop manager application launcher), as discussed in
<https://bugs.gnu.org/38309>.

* guix/build/emacs-build-system.scm (%legacy-install-suffix): Rename to...
(%install-dir): ...this.
(%install-suffix): Remove variable.
(build): Adjust installation target directory.
(patch-el-files): Likewise.
(install): Likewise.
(move-doc): Likewise.
(make-autoloads): Likewise.

Signed-off-by: Clément Lassieur <clement@lassieur.org>
2019-12-04 11:06:49 +01:00
Tobias Geerinckx-Rice
fabd4900d8
build-system/linux-module: Accept a #:make-flags keyword.
Fixes bug#37882.

* guix/build-system/linux-module.scm (linux-module-build): Accept a
MAKE-FLAGS argument.
<builder>: Pass it on.
2019-12-04 11:25:33 +02:00
Ludovic Courtès
c2b2c8e9e7
lint: archival: Gracefully handle network failures.
* guix/lint.scm (check-archival): Wrap re-throw in 'with-networking-fail-safe'.
2019-12-02 12:24:56 +01:00
Hartmut Goebel
b6d852ce6d
guix: Add the 'qt' build system.
* guix/build-system/qt.scm, guix/build/qt-build-system.scm: New files.
* Makefile.am (MODULES): Add them.
* doc/guix.texi (Buiild systems): Add the new build system.
2019-12-01 20:24:47 +01:00
Mathieu Othacehe
fcc4c6ae60
scripts: system: Add --target option.
* guix/scripts/system.scm (%options): Add target option,
(%default-options): ditto,
(process-action): Rename existing target variable to target-file and pass new
target variable to run-with-store procedure.
2019-12-01 16:51:40 +01:00
Ludovic Courtès
99c45877a9
gexp: 'local-file' properly resolves non-literal relative file names.
* guix/gexp.scm (local-file): Distinguish the case where FILE is a
literal string and when it's not.  Add a clause for when FILE is not a
literal string.
* tests/gexp.scm ("local-file, non-literal relative file name"): New test.
* doc/guix.texi (G-Expressions): Update accordingly.
2019-11-30 23:50:40 +01:00
Julien Lepiller
ba3ff730ca
guix: import: Fix importing dune project.
* guix/import/opam.scm: Detect dune projects from dependencies, then
filter dune from dependencies.
2019-11-30 15:50:51 +01:00
Julien Lepiller
c60d98d42d
guix: import: Fix opam importer.
* guix/import/opam.scm: Allow line breaks in strings.
2019-11-30 15:50:46 +01:00
Ludovic Courtès
3f8e890d91
ui: 'with-profile-lock' keeps going upon ENOLCK.
* guix/build/syscalls.scm (call-with-file-lock/no-wait): Really pass
ARGS to HANDLER.  Return #f when HANDLER is called.
* guix/ui.scm (profile-lock-handler): Emit a mere warning upon ENOLCK.
2019-11-29 15:54:20 +01:00
Ludovic Courtès
55e1dfa4dd
ui: Factorize 'with-profile-lock'.
* guix/ui.scm (profile-lock-handler, profile-lock-file): New
procedures.
(with-profile-lock): New macro.
* guix/scripts/package.scm (process-actions): Use 'with-profile-lock'
instead of 'with-file-lock/no-wait'.
* guix/scripts/pull.scm (guix-pull): Likewise.
2019-11-29 15:54:20 +01:00
Ludovic Courtès
2d6bd5edbc
pull, describe: Emit hyperlinks for commit identifiers.
* guix/scripts/pull.scm (%vcs-web-views): New variable.
(channel-commit-hyperlink): New procedure.
(display-news-entry): Add 'channel' parameter.  When
'supports-hyperlinks?' returns true, call 'channel-commit-hyperlink'.
(display-profile-content): Likewise, and define CHANNEL.
(display-channel-specific-news): Pass CHANNEL to 'display-news-entry'.
* guix/ui.scm (hyperlink): Make public.
2019-11-28 18:43:54 +01:00
Marius Bakke
34f849a945
Merge branch 'master' into staging 2019-11-28 16:47:01 +01:00
Ludovic Courtès
055f052574
ui: 'display-generation' emits a hyperlink for the generation.
* guix/ui.scm (supports-hyperlinks?): Make 'port' optional.
(display-generation): Use 'file-hyperlink' for the heading when
'supports-hyperlinks?' returns true.
2019-11-28 13:30:53 +01:00
Ludovic Courtès
fa983b8257
ui: Add 'file-hyperlink'.
* guix/ui.scm (file-hyperlink): New procedure.
(location->hyperlink): Use it.
2019-11-28 13:30:53 +01:00
Ludovic Courtès
9e3f9ac3c0
substitute: 'http-multiple-get' no longer drops requests above 1,000.
Previously, in the unlikely case 'http-multiple-get' was passed more
than 1,000 requests, it could have dropped all those above 1,000.

* guix/scripts/substitute.scm (http-multiple-get): Define 'batch'.  Use
that for the 'write-request' loop.  Add 'processed' parameter to 'loop'
and use that to compute the remaining requests and call 'connect' in the
recursion base case.
2019-11-28 13:30:53 +01:00
Efraim Flashner
e8c6644af1
lint: Check for more packages which should be native.
* guix/lint.scm (check-inputs-should-be-native): Add yasm, nasm, fasm.
2019-11-28 12:30:42 +02:00
Marius Bakke
0897ad7fac
Merge branch 'master' into staging 2019-11-28 00:38:25 +01:00