Commit Graph

2329 Commits

Author SHA1 Message Date
Ludovic Courtès 1cdecf24f5
gexp: Store compilers in a hash table for O(1) lookup.
* guix/gexp.scm (<gexp-compiler>)[predicate]: Remove.
[type]: New field.
(%gexp-compilers): Turn into a hash table.
(register-compiler!, lookup-compiler, lookup-expander): Adjust
accordingly.
(define-gexp-compiler): Replace 'predicate' by 'record-type'.
(derivation-compiler, local-file-compiler, plain-file-compiler)
(computed-file-compiler, program-file-compiler, scheme-file-compiler)
(file-append-compiler): Adjust accordingly.
* guix/packages.scm (package-compiler, origin-compiler): Likewise.
2016-09-10 13:10:06 +02:00
Ludovic Courtès a9e5e92f94
gexp: Add 'file-append'.
* guix/gexp.scm (<file-append>): New record type.
(file-append): New procedure.
(file-append-compiler): New gexp compiler.
* tests/gexp.scm ("file-append", "file-append, output")
("file-append, nested", "gexp->file + file-append"): New tests.
* doc/guix.texi (G-Expressions): Use it in 'nscd' and 'list-files'
examples.  Document 'file-append'.
2016-09-09 23:54:43 +02:00
Ludovic Courtès ebdfd776f4
gexp: Compilers can now provide an "expander".
* guix/gexp.scm (<gexp-compiler>)[expand]: New field.
(default-expander, lookup-expander): New procedures.
(define-gexp-compiler): Add second pattern to allow for the definition
of both a compiler and an expander.
(gexp->sexp)[reference->sexp]: Call 'lookup-expander' and use its
result.
2016-09-09 23:54:43 +02:00
Ludovic Courtès b5fed903c4
gexp: Remove outdated comment.
* guix/gexp.scm (lower-references): Remove outdated "XXX" comment.
2016-09-09 23:54:43 +02:00
Jan Nieuwenhuizen 392a4e1223
guix hash: Add --exclude-vcs option.
* guix/scripts/hash.scm (show-help): Add help text for --exclude-vcs option.
(%options): Add --exclude-vcs option.
(guix-hash): Handle exclude-vcs option.
* doc/guix.texi ("Invoking guix hash"): Update doc.
* tests/guix-hash.sh: Add test.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2016-09-07 12:00:35 +02:00
Ludovic Courtès 01afdab89c
packages: Add 'package-superseded' and associated support.
This provides a way to mark a package as superseded by another one.
Upgrades replace superseded packages with their replacement.

* guix/packages.scm (package-superseded, deprecated-package): New
procedures.
* gnu/packages.scm (%find-package): Check for 'package-superseded'.
* guix/scripts/package.scm (transaction-upgrade-entry)[supersede]: New
procedure.  Call it when 'package-superseded' is true.
* tests/guix-build.sh: Add test for a superseded package.
* tests/packages.scm ("package-superseded")
("transaction-upgrade-entry, superseded package"): New tests.
2016-09-06 23:22:10 +02:00
Ludovic Courtès 03763d6473
profiles: Export <manifest-pattern> accessors.
* guix/profiles.scm (manifest-pattern-name, manifest-pattern-version)
(manifest-pattern-output): Export.
2016-09-06 23:22:10 +02:00
Ludovic Courtès 5239f3d908
guix package: Build up the transaction incrementally.
* guix/scripts/package.scm (upgraded-manifest-entry): Rename to...
(transaction-upgrade-entry): ... this.  Add 'transaction' parameter and
return a transaction.
(options->installable): Likewise.
[to-upgrade]: Rename to...
[upgraded]: ... this, and change to be a transaction.  Return a
transaction.
(options->removable): Likewise.
(process-actions): Adjust accordingly.
* tests/packages.scm ("transaction-upgrade-entry, zero upgrades")
("transaction-upgrade-entry, one upgrade"): New tests.
2016-09-06 23:22:10 +02:00
Ludovic Courtès c8c25704ae
profiles: Add manifest-transaction helper procedures.
* guix/profiles.scm (manifest-transaction-install-entry)
(manifest-transaction-remove-pattern)
(manifest-transaction-null?): New procedures.
* tests/profiles.scm ("manifest-transaction-null?"): New test.
2016-09-06 23:22:10 +02:00
Ludovic Courtès dd72173455
guix package: Clarify upgrade code.
* guix/scripts/package.scm (upgradeable?): Rename to...
(upgraded-manifest-entry): ... this.  Change to take a <manifest-entry>
and to return a <manifest-entry>.
(options->installable)[to-upgrade]: Adjust accordingly.
2016-09-06 23:22:10 +02:00
Ludovic Courtès 0c90ed5505
gnupg: Honor $GUIX_GPG_COMMAND and default to 'gpg'.
* guix/gnupg.scm (%gpg-command): Change to "gpg" or $GUIX_GPG_COMMAND.
2016-09-06 11:12:11 +02:00
Ludovic Courtès 26ffb69399
syscalls: Use #:return-errno? when it is available.
* guix/build/syscalls.scm (errno): Do not export.
(syscall->procedure): Change to return a procedure that returns both the
value and errno.  Use #:return-errno? where available.
(mount, umount, swapon, swapoff, mkdtemp!, fdatasync, statfs)
(clone, setns, pivot-root, fcntl-flock, network-interface-names)
(network-interface-flags, set-network-interface-flags)
(set-network-interface-address, network-interface-address):
(network-interfaces, tcgetattr, tcsetattr, terminal-window-size): Adjust
accordingly using 'let-values'.
2016-09-06 11:12:11 +02:00
Ludovic Courtès 7ca87354db
Add (guix modules).
* guix/modules.scm, tests/modules.scm: New files.
* Makefile.am (MODULES, SCM_TESTS): Add them.
* doc/guix.texi (G-Expressions): Add an example of
'source-module-closure'.
2016-09-05 00:06:47 +02:00
Ludovic Courtès 2ff0da0257
file-systems: Always use (guix build syscalls).
* gnu/build/file-systems.scm: Use (guix build syscalls)
unconditionally.  Override the 'mount' and 'umount' bindings
when (guile) provides them.
(MS_RDONLY, MS_NOSUID, MS_NODEV, MS_NOEXEC, MS_REMOUNT)
(MS_BIND, MS_MOVE): Remove.
* guix/build/syscalls.scm (%libc-errno-pointer): Add
'false-if-exception' around 'dynamic-func'.
2016-09-05 00:06:47 +02:00
Ludovic Courtès 14d5ca2e2e
ui: Initialize %FILE-PORT-NAME-CANONICALIZATION to #f.
This avoids loads of needless 'stat' calls due to the default 'relative
setting and the 'canonicalize-path' calls it leads to.  This was
especially visible when 'guix substitute' access files in
/var/guix/substitute/cache.

* guix/ui.scm (run-guix-command): Set %FILE-PORT-NAME-CANONICALIZATION
to #f.
2016-09-05 00:06:47 +02:00
Hartmut Goebel abc4cb57ca
guix: ant-build-system: Fix pattern for collecting jar files.
The former pattern included the "jar" binary.

* guix/build/ant-build-system.scm (generate-classpath): Change pattern.

Suggested by: Ricardo Wurmus <rekado@elephly.net>
2016-09-03 10:36:20 +02:00
Ludovic Courtès 4e49163f76
guix build: Rewrite '--with-input' in terms of 'package-input-rewriting'.
* guix/scripts/build.scm (transform-package-inputs): Rewrite in terms of
'package-input-rewriting'.
2016-09-01 23:07:54 +02:00
Ludovic Courtès 2a75b0b63d
packages: Add 'package-input-rewriting'.
* guix/packages.scm (package-input-rewriting): New procedure.
* tests/packages.scm ("package-input-rewriting"): New test.
* doc/guix.texi (Defining Packages): Document it.
(Package Transformation Options): Add cross-reference.
2016-09-01 23:07:54 +02:00
Ludovic Courtès 7b44cae50a
services: shepherd: Add 'shepherd-service-upgrade', from 'guix system'.
* guix/scripts/system.scm (service-upgrade): Move to...
* gnu/services/shepherd.scm (shepherd-service-upgrade): ... here.
* tests/system.scm ("service-upgrade: nothing to do", "service-upgrade:
one unchanged, one upgraded, one new", "service-upgrade: service
depended on is not unloaded", "service-upgrade: obsolete services that
depend on each other"): Move to...
* tests/services.scm: ... here.  Adjust to 'service-upgrade' rename.
2016-08-31 15:44:20 +02:00
Ludovic Courtès d4f8884fdb
guix system: Do not unload services depended on.
Reported by Mark H Weaver <mhw@netris.org>
at <https://lists.gnu.org/archive/html/guix-devel/2016-08/msg01470.html>.

* guix/scripts/system.scm (service-upgrade)[live-service-required?]: New
procedure.
[obsolete?]: Use it.
* tests/system.scm ("service-upgrade: service depended on is not
unloaded", "service-upgrade: obsolete services that depend on each
other"): New tests.
2016-08-31 15:44:20 +02:00
Ludovic Courtès f20a7b8696
guix system: Use 'shepherd-service-lookup-procedure' in 'service-upgrade'.
* guix/scripts/system.scm (service-upgrade)[essential?]: SERVICE is now
a <live-service>.
[lookup-target, lookup-live, running?, stopped, obsolete?]: New
procedures.
[to-load, to-unload]: Use them.  TO-UNLOAD is now a list of
<live-service>.
(call-with-service-upgrade-info): Extract symbols from TO-UNLOAD.
* tests/system.scm ("service-upgrade: one unchanged, one upgraded, one
new"): Adjust accordingly.
2016-08-31 15:44:20 +02:00
Ludovic Courtès b8692e4696
guix system: Extract and test the service upgrade procedure.
* guix/scripts/system.scm (service-upgrade): New procedure, with code
from...
(call-with-service-upgrade-info): ... here.  Use it.
* tests/system.scm (live-service, service-upgrade): New variables.
("service-upgrade: nothing to do", "service-upgrade: one unchanged, one
upgraded, one new"): New tests.
2016-08-31 15:44:20 +02:00
Ludovic Courtès 183605c853
services: herd: Provide <live-service> objects.
* gnu/services/herd.scm (<live-service>): New record type.
(current-services): Change to return a single value: #f or a list of
<live-service>.
* guix/scripts/system.scm (call-with-service-upgrade-info): Adjust
accordingly.
* gnu/tests/base.scm (run-basic-test)["shepherd services"]: Adjust
accordingly.
2016-08-31 15:44:19 +02:00
David Craven 2098d0240e
build: Add wrap-qt-program.
* guix/build/qt-utils.scm (wrap-qt-program): New file.
* Makefile.am (MODULES): Add it.
2016-08-30 22:38:28 +02:00
ng0 18f7473504
import: hackage: Default to https urls.
* guix/import/hackage.scm (hackage-source-url, hackage-cabal-url): Use https
for hackage.haskell.org.
2016-08-30 22:38:16 +03:00
ng0 7a62263ee5
import: cpan: Use tls to query api.metacpan.org.
* guix/import/cpan.scm (module->dist-name, cpan-fetch-module): Use tls
for api.metacpan.org.

Signed-off-by: Eric Bavier <bavier@member.fsf.org>
2016-08-30 13:21:07 -05:00
Ben Woodcroft 75160d4b9d
guix: ruby-build-system: Add replace-git-ls-files.
* guix/build/ruby-build-system.scm (replace-git-ls-files): New variable.
(%standard-phases): Add it.
2016-08-30 10:31:48 +10:00
Ben Woodcroft edf0a45846
guix: ruby-build-system: Build compiled gems reproducibly.
* guix/build/ruby-build-system.scm (log-file-deletion): New procedure.
(install): Remove files containing non-reproducible elements.  Print when each
file is deleted.
2016-08-30 10:31:48 +10:00
Eric Bavier 83f18e0653
guix: lint: Check descriptions for trademark signs.
* guix/scripts/lint.scm (check-description-style): Emit a warning if
trademark signs found in description.
* tests/lint.scm (description: may not contain trademark signs): Add
test.
2016-08-28 23:24:18 -05:00
Roel Janssen fd59105c49
guix scripts: Disable grafting on dry runs.
* guix/scripts/archive.scm, guix/scripts/build.scm,
  guix/scripts/environment.scm, guix/scripts/system.scm,
  guix/scripts/package.scm: Disable grafting when a dry-run parameter is given.
2016-08-28 16:22:19 +02:00
David Craven a34b236c17
import: Importers return prefixed licenses.
* guix/import/utils.scm
(define-module): Import licenses with license: prefix.
(string->licenses): Use prefixed licenses.
(license->symbol): Return symbols with the prefix license:.
* guix/tests/pypi.scm (pypi->guix-package): Update test cases.
* guix/tests/gem.scm (gem->guix-package): Update test case.
2016-08-28 14:04:50 +02:00
Christopher Allan Webber b47f7510f0
base64: Restore original license header.
When incorporating a copyleft licensed program with a lax licensed program,
it is correct to preserve the original license notice.  See also:
  https://www.softwarefreedom.org/resources/2007/gpl-non-gpl-collaboration.html

* guix/base64.scm: Restored original license header.
2016-08-27 08:45:27 -05:00
Mark H Weaver c52bf877e9
system: Fix 'guix system' when root fs is named by UUID.
Fixes <https://bugs.gnu.org/23881>.

* guix/scripts/system.scm (previous-grub-entries)
(display-system-generation): Handle the case where the root device is
specified by UUID.
2016-08-20 04:48:31 -04:00
Ludovic Courtès 00677a7e55
edit: Do not honor 'GUIX_BUILD_OPTIONS'.
* guix/scripts/edit.scm (guix-edit)[parse-arguments]: New procedure.
Use it.
2016-08-19 17:34:37 +02:00
Leo Famulari 59c3e98474
ant-build-system: Fix typo.
* guix/build-system/ant.scm (ant-build): Fix typo.
2016-08-16 14:05:14 -04:00
宋文武 801d316b20
profiles: xdg-mime-database: Run the hook when have GLib based applications.
* guix/profiles.scm (xdg-mime-database): Run the hook when GLIB is referenced by
the manifest.  Add SHARED-MIME-INFO to the mime packages of `update-mime-database'.
2016-08-12 22:22:43 +08:00
Mark H Weaver 5a1add373a
grafts: Make grafting faster.
* guix/build/graft.scm (replace-store-references): Reimplement for
faster grafting.  Use binary I/O instead of textual I/O.  Replace
'mapping' argument (an alist) with 'replacement-table' (a vhash).
(rewrite-directory): Adapt to mapping argument change in
'replace-store-references'.  Remove 'with-fluids' that previously set
'%default-port-encoding' to #f, since we now use binary I/O.
(define-inline, hash-length): New macros.
(nix-base32-char?): New variable.
2016-08-09 17:59:26 -04:00
David Craven 112f089d6c
download: Add download.kde.org to kde mirrors.
* guix/download.scm (%mirrors)[kde]: Add download.kde.org.
2016-08-05 21:48:43 +02:00
Ludovic Courtès d77a0bd6f1
ui: Remove dependency on (gnu system file-systems).
* guix/ui.scm (specification->file-system-mapping): Move to...
* gnu/system/file-systems.scm (specification->file-system-mapping):
... here.
2016-08-04 19:38:33 +02:00
Mark H Weaver 536fc5f8cd
Merge branch 'core-updates' 2016-08-04 08:17:05 -04:00
Mark H Weaver 0832787e5c
Revert "Merge branch 'core-updates'"
This reverts commit 455859a50f.
2016-08-04 08:16:38 -04:00
Ludovic Courtès 9d1e56b76d
guix system: Fix the Shepherd error handling fix.
This is a followup to aa1e73a996.

* guix/scripts/system.scm (with-shepherd-error-handling): Return two
values when an exception is caught.
2016-08-02 23:51:12 +02:00
Ludovic Courtès aa1e73a996
guix system: Properly report Shepherd errors when upgrading services.
Fixes regression introduced in 8bf92e3904.
Reported by myglc2 <myglc2@gmail.com> in <http://bugs.gnu.org/24135>.

* guix/scripts/system.scm (with-shepherd-error-handling): Rename 'body'
to 'mbody'.  Expand to a monadic procedure that runs MBODY.
2016-08-02 23:43:29 +02:00
David Craven 8f9d70fcb9
lint: 'inputs-should-be-native' checks for extra-cmake-modules and qttools.
* guix/scripts/lint.scm (check-inputs-should-be-native): Warn when
  extra-cmake-modules or qttools isn't a native-input.
2016-08-02 13:29:24 +02:00
David Craven 9c97afe858
gnu-maintenance: Add KDE updater.
* guix/gnu-maintenance.scm (kde-package?, latest-kde-release): New private
  functions.
  (%kde-updater): New public variable.
* guix/scripts/refresh.scm (list-updaters): Add %kde-updater.
* doc/guix.texi (Invoking guix refresh): Mention the new updater.
2016-08-02 13:28:21 +02:00
David Craven ff02b82678
download: Add KDE mirrors.
* guix/download.scm (%mirrors)[kde]: Add kde mirrors.
2016-08-02 13:28:21 +02:00
Ludovic Courtès 455859a50f
Merge branch 'core-updates' 2016-08-01 23:30:52 +02:00
Ludovic Courtès 089b167812
publish: Do not compress already-compressed files.
* guix/scripts/publish.scm (narinfo-string): Force %NO-COMPRESSION when
STORE-PATH matches 'compressed-file?'.
* guix/utils.scm (compressed-file?): New procedure.
* tests/publish.scm ("/*.narinfo for a compressed file"): New test.
2016-08-01 17:58:56 +02:00
Mark H Weaver 3d337bbc39
Merge branch 'master' into core-updates 2016-07-31 23:27:03 -04:00
Ludovic Courtès 40f788b9f6
download: Add mirror.hydra.gnu.org as a content-addressed mirror.
* guix/download.scm (%content-addressed-mirrors): Add
'mirror.hydra.gnu.org'.
2016-07-31 18:27:14 +02:00
Ludovic Courtès 38f1cf8a8e
download: Pass the raw file name to content-addressed mirrors.
* guix/build/download.scm (url-fetch)[content-addressed-uris]: Call
'strip-store-file-name' on FILE before passing it to 'make-url'.
2016-07-31 18:27:14 +02:00
Alex Kost a82a201a8d
emacs: Disable grafts when dry-run is enabled.
* emacs/guix-main.scm (process-package-actions): Set grafting according
to 'dry-run?'.
* guix/scripts.scm (build-package): Disable grafts when 'dry-run?' is #t.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2016-07-30 18:17:03 +03:00
Mark H Weaver 359aba76b6
Merge branch 'master' into core-updates 2016-07-29 18:29:58 -04:00
Ludovic Courtès da2d893e32
size: Fix corner case with multiple items on the command line.
Fixes 'guix size foo bar' when 'foo' is in the local store and 'bar'
isn't, which could lead to an incomplete requisite list.

* guix/scripts/size.scm (requisites*): Partition ITEMS according to
'valid-path?'.  Use 'substitutable-requisites' only on invalid items.
2016-07-29 22:32:04 +02:00
Leo Famulari 49d725a108
Merge branch 'master' into core-updates 2016-07-28 16:46:27 -04:00
Mark H Weaver 622c22ccb4
Merge branch 'master' into core-updates 2016-07-28 14:13:26 -04:00
Ludovic Courtès 4e3bfaf406
guix package: Suggest prefix search path settings.
* guix/scripts/package.scm (build-and-use-profile): Pass #:kind 'prefix
to 'display-search-paths'.
2016-07-28 20:07:59 +02:00
Ludovic Courtès 6980511b73
packages: Add 'hidden-package'.
* guix/packages.scm (hidden-package, hidden-package?): New procedures.
* gnu/packages.scm (fold-packages): Filter out 'hidden-package?'.
* tests/packages.scm ("hidden-package"): New test.
2016-07-28 18:50:43 +02:00
Andreas Enge e309c75610
Merge remote-tracking branch 'origin/master' into core-updates 2016-07-28 11:08:55 +02:00
Ludovic Courtès 688ec13c45
zlib: Protect against non-empty port internal buffers.
* guix/zlib.scm (make-gzip-input-port)[gzfile]: Error out
if (drain-input port) returns a non-empty string.
* guix/zlib.scm (make-gzip-output-port)[gzfile]: Call 'force-output'.
2016-07-27 12:45:01 +02:00
Ludovic Courtès d00240c36e
zlib: Clarify when 'gzread!' can return zero.
* guix/zlib.scm (gzread!): Augment docstring to clarify when zero is
returned (based on reading zlib code).
(make-gzip-input-port)[read!]: Remove scary comment.
2016-07-27 12:45:01 +02:00
Ludovic Courtès 9e90fc7713
profiles: Output in 'package->manifest-entry' defaults to "out".
Fixes <http://bugs.gnu.org/24029>.
Reported by Dylan Jeffers <sapientech@openmailbox.org>.

* guix/profiles.scm (package->manifest-entry): Change #:output to
default to "out".
(packages->manifest): Add 'package?' in second 'match' clause.
* tests/profiles.scm ("package->manifest-entry defaults to \"out\""):
New test.
2016-07-26 18:18:53 +02:00
Ludovic Courtès 201855221f
environment: Set 'GUIX_ENVIRONMENT' to the profile.
* guix/scripts/environment.scm (create-environment): Set
'GUIX_ENVIRONMENT' to PROFILE.
* tests/guix-environment.sh: Test it.
* doc/guix.texi (Invoking guix environment): Document it.
2016-07-26 17:59:25 +02:00
Ludovic Courtès 8173ceee1f
import: pypi: Correctly handle new-style URLs.
Fixes <http://bugs.gnu.org/23997>.

* guix/import/pypi.scm (guix-package->pypi-name): Rewrite using
'basename' and 'hyphen-package-name->name+version'.
* tests/pypi.scm ("guix-package->pypi-name, old URL style")
("guix-package->pypi-name, new URL style"): New tests.
2016-07-26 17:49:34 +02:00
Andreas Enge 14656f4495
Merge remote-tracking branch 'origin/master' into core-updates 2016-07-25 21:58:36 +02:00
Alex Kost 9eb5a449ee
profiles: Add fonts-dir-file hook.
* guix/profiles.scm (fonts-dir-file): New procedure.
(%default-profile-hooks): Add it.
2016-07-25 17:18:52 +03:00
David Craven 99fe215cc1
lint: 'inputs-should-be-native' checks for intltool, itstool and glib:bin.
* guix/scripts/lint.scm (check-inputs-should-be-native): Warn when intltool,
itstool or glib:bin isn't a native-input.
* tests/lint.scm (inputs: glib:bin is probably a native input): Add test.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2016-07-24 19:54:15 +02:00
Alex Griffin fe224d20cc
download: Add SourceForge load balancer.
* guix/download.scm (%mirrors)[sourceforge]: Add canonical load balancer for
sourceforge.net.

Signed-off-by: Leo Famulari <leo@famulari.name>
2016-07-24 12:35:46 -04:00
Leo Famulari d227260d2f
Merge branch 'master' into core-updates
Resolved conflicts:
* gnu/packages/scheme.scm: Conflict in import of (guix licenses). On master,
"#:hide (openssl)" was used. On core-updates, "#:select (some licenses)" was
used. The latter won the conflict.
* gnu/packages/version-control.scm (git)[arguments]: Whitespace conflict
in 'install-shell-completion.
2016-07-22 18:58:31 -04:00
Ludovic Courtès 13cee334f1
pull: Install (guix config) module to override the user's one.
* build-aux/build-self.scm (zlib, gzip, bzip2, xz): New variables.
(build)[storedir, localstatedir, sysconfdir, sbindir]: New variables.
[builder]: Pass them to 'build-guix'.
* guix/build/pull.scm (build-guix): Add #:system, #:storedir,
  #:localstatedir, #:sysconfdir, #:sbindir, #:package-name,
  #:package-version, #:bug-report-address, #:home-page-url, #:libgcrypt,
  #:zlib, #:gzip, #:bzip2, and #:xz.  Remove #:gcrypt.
  Instantiate all the substitution variables in (guix config).  Remove
  code to delete OUT/guix/config.{scm,go}.
* guix/config.scm.in: Add note about (guix script pull).
2016-07-20 22:53:02 +02:00
Ludovic Courtès 0b0086e94c
config: Export the raw installation directories.
* guix/config.scm.in (%storedir, %localstatedir)
(%sysconfdir, %sbindir): New variables.
(%store-directory): Use %STOREDIR.
(%state-directory): Use %LOCALSTATEDIR.
(%config-directory): Use %SYSCONFDIR.
(%guix-register-program): Use %SBINDIR.
2016-07-20 22:53:02 +02:00
Ludovic Courtès ab84b927ef
download: Prepare to support the 'guix publish' /file URLs.
* guix/download.scm (%content-addressed-mirrors): Add 'file' parameter
to the lambda.
* guix/build/download.scm (url-fetch)[content-addressed-uris]: Adjust
accordingly.
2016-07-20 17:02:35 +02:00
Ludovic Courtès ff6638d112
publish: Handle '/file' URLs, for content-addressed files.
* guix/scripts/publish.scm (render-content-addressed-file): New procedure.
(http-write): Add 'application/octet-stream' case.
(make-request-handler): Add /file/NAME/sha256/HASH URLs.
* tests/publish.scm ("/file/NAME/sha256/HASH")
("/file/NAME/sha256/INVALID-NIX-BASE32-STRING")
("/file/NAME/sha256/INVALID-HASH"): New tests.
* doc/guix.texi (Invoking guix publish): Mention the /file URLs.
2016-07-20 16:54:31 +02:00
Ludovic Courtès 260bc60f83
derivations: Export 'fixed-output-path'.
* guix/derivations.scm (fixed-output-path): Change 'output',
'hash-algo', and 'recursive?' to keyword parameters.  Export.
(derivation): Adjust accordingly.
2016-07-20 16:39:19 +02:00
Ludovic Courtès 7575655212
Merge branch 'master' into core-updates 2016-07-20 11:42:17 +02:00
Ludovic Courtès 053fa76ae7
publish: Keep compression disabled when zlib is missing.
Reported by David Thompson.

* guix/scripts/publish.scm (%options)[--compression]: Warn if LEVEL > 0
and zlib is missing, and return RESULT.
2016-07-19 16:47:19 +02:00
Ludovic Courtès 4a1fc562ae
publish: Add '--compression'.
* guix/scripts/publish.scm (show-help, %options): Add '--compression'.
(<compression>): New record type.
(%no-compression, %default-gzip-compression): New variables.
(%default-options): Add 'compression' key.
(narinfo-string): Add #:compression parameter and honor it.
(render-narinfo): Likewise.
(render-nar): Likewise.
<top level>: Add call to 'declare-header!'.
(swallow-zlib-error): New macro.
(nar-response-port): New procedure.
(http-write): Add call to 'force-output'.  Use 'nar-response-port'
instead of 'response-port'.  Use 'swallow-zlib-error'.
(make-request-handler): Add #:compression parameter and honor it.  Add
"nar/gzip" URL handler.
(run-publish-server): Add #:compression parameter and honor it.
(guix-publish): Honor --compression.
* tests/publish.scm (http-get-port, wait-until-ready): New procedures.
<top level>: Run main server with "-C0".  Call 'wait-until-ready'.
("/nar/gzip/*", "/*.narinfo with compression"): New tests.
* doc/guix.texi (Invoking guix publish): Document it.
2016-07-19 00:07:12 +02:00
Ludovic Courtès 721539026d
Add (guix zlib).
* guix/zlib.scm, tests/zlib.scm: New files.
* Makefile.am (MODULES): Add guix/zlib.scm.
(SCM_TESTS): Add tests/zlib.scm.
* m4/guix.m4 (GUIX_LIBGCRYPT_LIBDIR): New macro.
* configure.ac (LIBGCRYPT_LIBDIR): Use it.  Define and substitute
'LIBZ'.
* guix/config.scm.in (%libz): New variable.
2016-07-19 00:07:12 +02:00
Vincent Legoll 1187a27112
guix gc: Display of saved space for garbage collection.
Fixes <http://bugs.gnu.org/23979>.

* guix/scripts/gc.scm (guix-gc): Display freed bytes.

Signed-off-by: Vincent Legoll <vincent.legoll@idgrilles.fr>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2016-07-16 14:41:39 +02:00
Ludovic Courtès f82ce8f6b1
build: Substitute URLs now default to "mirror.hydra.gnu.org" alone.
* config-daemon.ac: Remove "hydra.gnu.org" from 'guix_substitute_urls'.
* guix/store.scm (%default-substitute-urls): Remove "hydra.gnu.org".
2016-07-16 14:41:39 +02:00
Ludovic Courtès babc2c80a7
records: Improve reporting of invalid field specifiers.
Fixes <http://bugs.gnu.org/23969>.
Reported by Vincent Legoll <vincent.legoll@gmail.com>.

* guix/records.scm (report-invalid-field-specifier): New procedure.
* tests/records.scm ("define-record-type* & wrong field specifier"): New
test.
2016-07-14 19:07:07 +02:00
Ludovic Courtès db8f6b3412
challenge: Disable grafting.
* guix/scripts/challenge.scm (guix-challenge): Set %GRAFT? to #f.
2016-07-14 19:07:07 +02:00
Ludovic Courtès a7a3b39060
substitute: Gracefully handle trailing slashes in URLs.
Previously, using something like
"--substitute-urls=http://example.org///" would lead to a
'cache-narinfo!' call with #f as its second argument.

It would also do the wrong thing for URLs with a non-empty initial path
component, such as "http://example.org/foo/bar".

* guix/scripts/substitute.scm (fetch-narinfos)[handle-narinfo-response]:
Add call to 'basename' for PATH.
2016-07-14 19:07:07 +02:00
Ludovic Courtès bfcb3d767b
lint: 'validate-uri' reports suspiciously small 200 responses.
* guix/scripts/lint.scm (validate-uri): Upon 200 http-response, check
the 'response-content-length' and emit a warning when it is <= 1000.
* tests/lint.scm (call-with-http-server): Add 'data' parameter.
(with-http-server): Likewise.
(%long-string): New variable.
("home-page: 200"): Pass %LONG-STRING to 'with-http-server'.
("home-page: 404", "source: 200", "source: 404"): Likewise.
("home-page: 200 but short length"): New test.
("source: 200 but short length"): New test.
2016-07-13 00:50:05 +02:00
Ludovic Courtès cd4c41fdcf
download: Attempt to update SourceForge mirror URLs.
* guix/download.scm (%mirrors)[sourceforge]: End in "/project" instead
of "/sourceforge".  Remove a couple of dangling URLs.
2016-07-13 00:32:36 +02:00
Ludovic Courtès 1929fdba80
packages: <origin> no longer has an 'imported-modules' field.
* guix/packages.scm (<origin>)[imported-modules]: Remove.
(patch-and-repack): Remove #:imported-modules.  Use
'with-imported-modules'.  Remove #:modules argument to
'gexp->derivation'.
(origin->derivation): Adjust accordingly.
* doc/guix.texi (origin Reference): Adjust accordingly.
2016-07-12 22:47:08 +02:00
Ludovic Courtès 66a35ceb43
gexp: Remove more uses of #:modules.
* guix/scripts/system.scm (switch-to-system): Adjust comment.
* tests/gexp.scm ("gexp->derivation #:references-graphs"): Use
'with-imported-modules' instead of #:modules.
* tests/grafts.scm ("graft-derivation, preserve empty directories"):
Likewise.
2016-07-12 22:47:08 +02:00
Ludovic Courtès 9c14a487bb
gexp: 'program-file' and 'gexp->script' no longer have #:modules.
* guix/gexp.scm (<program-file>)[modules]: Remove.
(program-file): Remove #:modules and adjust accordingly.
(program-file-compiler): Likewise.
(gexp->script): Likewise.
2016-07-12 22:47:08 +02:00
Ludovic Courtès a769bffb65
gexp: 'computed-file' no longer has a #:modules parameter.
* guix/gexp.scm (<computed-file>)[modules]: Remove.
(computed-file): Remove #:modules.
(computed-file-compiler): Likewise.
* doc/guix.texi (G-Expressions): Adjust accordingly.
2016-07-12 22:47:08 +02:00
Ludovic Courtès e9b046fdda
download: Use 'with-imported-modules'.
* guix/cvs-download.scm (cvs-fetch): Use 'with-imported-modules' instead
of the #:modules argument of 'gexp->derivation'.
* guix/download.scm (url-fetch): Likewise.
* guix/git-download.scm (git-fetch): Likewise.
* guix/hg-download.scm (hg-fetch): Likewise.
* guix/svn-download.scm (svn-fetch): Likewise.
2016-07-12 22:47:08 +02:00
Ludovic Courtès 99b231dee6
profiles: Use 'with-imported-modules'.
* guix/profiles.scm (info-dir-file): Use 'with-imported-modules' instead
of the #:module argument to 'gexp->derivation'.
(ghc-package-cache-file): Likewise.
(ca-certificate-bundle): Likewise.
(gtk-icon-themes): Likewise.
(xdg-desktop-database): Likewise.
(xdg-mime-database): Likewise.
(profile-derivation): Likewise.
2016-07-12 22:47:08 +02:00
Ludovic Courtès 2b4185792d
gexp: 'gexp->file' emits code to set '%load-path'.
* guix/gexp.scm (gexp->file): Add #:set-load-path? parameter and honor it.
* gnu/system.scm (operating-system-parameters-file): Pass
  #:set-load-path? #f.
* doc/guix.texi (G-Expressions): Adjust accordingly.
2016-07-12 22:47:08 +02:00
Ludovic Courtès dd8d1a3046
gexp: Factorize load-path-setting expression.
* guix/gexp.scm (load-path-expression): New procedure.
(gexp->script): Use it.
2016-07-12 22:47:08 +02:00
Ludovic Courtès 0bb9929eaa
gexp: Add 'with-imported-modules' macro.
* guix/gexp.scm (<gexp>)[modules]: New field.
(gexp-modules): New procedure.
(gexp->derivation): Use it and append the result to %MODULES.
Update docstring to mark #:modules as deprecated.
(current-imported-modules, with-imported-modules): New macros.
(gexp): Pass CURRENT-IMPORTED-MODULES as second argument to 'gexp'.
(gexp->script): Use and honor 'gexp-modules'; define '%modules'.
* tests/gexp.scm ("gexp->derivation & with-imported-modules")
("gexp->derivation & nested with-imported-modules")
("gexp-modules & ungexp", "gexp-modules & ungexp-splicing"):
New tests.
("program-file"): Use 'with-imported-modules'.  Remove #:modules
argument to 'program-file'.
* doc/guix.texi (G-Expressions): Document 'with-imported-modules'.
Mark #:modules of 'gexp->derivation' as deprecated.
* emacs/guix-devel.el: Add syntax for 'with-imported-modules'.
(guix-devel-keywords): Add it.
* .dir-locals.el: Likewise.
2016-07-12 22:47:08 +02:00
Ludovic Courtès affd7761f3
gexp: Keep only a single 'references' field.
The distinction between native inputs and "normal" inputs can already be
determined by looking at the 'native?' field of <gexp-input>.  The extra
'natives' field of <gexp> added complexity for no good reason.

* guix/gexp.scm (<gexp>)[natives]: Remove.
(write-gexp): Remove use of 'gexp-native-references'.
(gexp-inputs)[native-input?]: New procedure.
Use it.
(gexp->sexp)[reference->sexp]: Honor N? for input lists.
Remove use of 'gexp-native-references'.
(gexp)[collect-native-escapes]: Remove.
Simplify.
2016-07-12 22:47:08 +02:00
Alex Sassmannshausen 5b8e564ccd
import: cpan: Use our mirrors for 'https' URLs.
* guix/import/cpan.scm (fix-source-url): New procedure.
  (cpan-module->sexp): Use it to construct our source-url.
* tests/cpan.scm: Add tests for fix-source-url.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2016-07-03 23:58:29 +02:00
Ricardo Wurmus 140dd8f82c
guix: Support authentication when fetching from SVN.
* guix/svn-download.scm (<svn-reference>): Add fields for optional
credentials.
(svn-fetch): Pass credentials to build-side "svn-fetch".
* guix/build/svn.scm (svn-fetch): Pass optional credentials to svn
command.
2016-07-03 18:55:30 +02:00
Ludovic Courtès 8aa5e15ebd
download: Update CPAN mirrors.
* guix/download.scm (%mirrors)[cpan]: Remove enstimac.fr, which seems
dead; add ibcp.fr.
2016-07-02 16:24:35 +02:00
David Thompson 242ad41c01
download: Use basic authentication when userinfo is present in URI.
* guix/download.scm (url-fetch): Include (guix base64) module on the
  build-side.
* guix/build/download.scm (http-fetch): Add "Authorization" header when
  userinfo is present in the URI.
2016-06-29 08:51:41 -04:00
Ludovic Courtès 01497dfe6c
Merge branch 'master' into core-updates 2016-06-27 09:30:01 +02:00