Commit Graph

2901 Commits

Author SHA1 Message Date
Leo Famulari 6c1a317e29
Merge branch 'master' into core-updates 2017-07-23 03:42:12 -04:00
Ludovic Courtès c95644f017
publish: Make the cache eviction policy less aggressive.
Suggested by Mark H Weaver <mhw@netris.org>.

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

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

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

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

This is a followup to 5b14a7902c.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* guix/profiles.scm (manifest-transitive-entries): Move after
<manifest-entry> definition.
2017-06-21 11:59:33 +02:00
Ludovic Courtès 8c9e90debf
guix package: '--search-paths' shows search paths from propagated inputs.
* guix/scripts/package.scm (process-query) <'search-paths>: Use
'manifest-transitive-entries' instead of 'manifest-entries'.
2017-06-21 11:05:53 +02:00