Commit Graph

3052 Commits

Author SHA1 Message Date
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
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
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
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
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 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
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