summaryrefslogtreecommitdiff
path: root/guix
AgeCommit message (Collapse)Author
2017-07-21publish: Make the cache eviction policy less aggressive.Ludovic Courtès
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-21publish: Avoid 'valid-path?' RPC for non-existent items.Ludovic Courtès
* guix/scripts/publish.scm (render-narinfo/cached): Call 'file-exists?' before calling 'valid-path?'. This makes the 404 path slightly faster.
2017-07-21store: Rewrite 'store-path-hash-part' to not use regexps.Ludovic Courtès
* guix/store.scm (store-path-hash-part): Rewrite without using a regexp. This speeds up 'guix substitute'.
2017-07-21publish: Remove 'regexp-exec' call from the hot path.Ludovic Courtès
* guix/scripts/publish.scm (extract-narinfo-hash): Rewrite without resorting to regexps.
2017-07-21base32: Export the base32 charsets.Ludovic Courtès
* guix/base32.scm (%nix-base32-charset, %rfc4648-base32-charset): New variables.
2017-07-21substitute: Avoid repeated calls to 'length'.Ludovic Courtès
* guix/scripts/substitute.scm (fetch-narinfos)[update-progress!]: Move 'length' call outside of lambda.
2017-07-21substitute: Optimize hash-part-to-path conversion on non-200 responses.Ludovic Courtès
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-20gexp: Slightly improve error reporting for 'local-file'.Ludovic Courtès
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-20licenses: Add MirOS license.Arun Isaac
* guix/licenses.scm (miros): New variable.
2017-07-20guix package: '-l' correctly handles zero-generation profiles.Ludovic Courtès
* guix/scripts/package.scm (process-query) <'list-generations>: Properly handle the case where 'profile-generations' returns the empty list.
2017-07-20guix package: Trim trailing slashes from the profile name.Ludovic Courtès
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-20profiles: Remove workaround for an old Guile 'scandir' bug.Ludovic Courtès
* guix/profiles.scm (generation-numbers)[scandir]: Remove.
2017-07-19download: Add OpenBSD mirrors.Tobias Geerinckx-Rice
* 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-18guix system: Use "image.iso" as the name of ISO images.Ludovic Courtès
* guix/scripts/system.scm (system-derivation-for-action): Pass #:name to 'system-disk-image'.
2017-07-17gexp: 'ungexp-splicing' properly accounts for nested native inputs.Ludovic Courtès
Previously, (gexp-native-inputs #~#$@(list #~#+foo)) would return '(). This is a followup to 5b14a7902c58d9fb7923f9e16871f549fbe59b6e. * 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-12substitute: Work around Guile 2.2 'time-monotonic' bug.Ludovic Courtès
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-12size: Add '--sort=KEY'.Ludovic Courtès
* 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-12environment: Rationalize calls to 'set-build-options'.Ludovic Courtès
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-12syscalls: Add network-interface-running?Danny Milosavljevic
* 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-11store: Account for 'add-to-store' in RPC statistics.Ludovic Courtès
* guix/store.scm (add-to-store): Add call to 'record-operation'.
2017-07-10syscalls: Adjust 'dirent64' struct for GNU/Hurd.Ludovic Courtès
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-09build-system: texlive: Build union in configure phase.Ricardo Wurmus
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-09build-system: texlive: Only build packages in the current directory.Ricardo Wurmus
* guix/build/texlive-build-system.scm (build): Use scandir instead of find-files.
2017-07-03discovery: Recurse into directories pointed to by a symlink.Ludovic Courtès
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-03copy: Default to port 22.Ludovic Courtès
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-03packages: Mark 'replacement' as an "innate" field.Ludovic Courtès
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-03profiles: 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-03guix system: Add "--file-system-type" option.Danny Milosavljevic
* 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-02ui: package->recutlis: Remove duplicated package names in dependencies.宋文武
* guix/ui.scm (package->recutils): Add call to 'delete-duplicates' in 'dependencies->recutils'.
2017-07-02store: 'references/substitutes' really caches its result.Ludovic Courtès
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-02store: 'references/substitutes' save an RPC is the trivial case.Ludovic Courtès
* guix/store.scm (references/substitutes): Save a 'substitutable-path-info' call when MISSING is empty.
2017-07-01guix: git: Stop using libgit2-shutdown.Mathieu Othacehe
* guix/git.scm (with-libgit2): Stop calling (libgit2-shutdown) to prevent segfaults when pointer finalizers are run.
2017-06-30vm: Estimate the disk size by default.Ludovic Courtès
* 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-26guix package: Allow '--rollback', after all.Ludovic Courtès
* guix/scripts/package.scm (%options): Add "rollback" as an alias for "roll-back".
2017-06-26guix package: 'guix package -r PKG -u' does not upgrade PKG.Ludovic Courtès
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-26profiles: Add 'manifest-transaction-removal-candidate?'.Ludovic Courtès
* guix/profiles.scm (manifest-transaction-removal-candidate?): New procedure. * tests/profiles.scm ("manifest-transaction-removal-candidate?"): New test.
2017-06-26import cran: Generate a valid 'license' field for "GPL".Ludovic Courtès
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-25guix package: Warn about packages that no longer exist.Ludovic Courtès
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-24refresh: Be more verbose when passed an explicit package list.Ludovic Courtès
* 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-22store: Define a default port for TCP connections.Ludovic Courtès
* 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-22store: Pass a socket type hint to 'getaddrinfo'.Ludovic Courtès
* guix/store.scm (open-inet-socket): Pass hints in the 'getaddrinfo' call.
2017-06-21environment: Disable profile collision checks.Ludovic Courtès
Reported by Efraim Flashner. This is a followup to a654dc4bcf7c8e205bdefa1a1d5f23444dd22778. * 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-21profiles: Move 'manifest-entry-dependencies' user after definition.Ludovic Courtès
Reported by Efraim Flashner. * guix/profiles.scm (manifest-transitive-entries): Move after <manifest-entry> definition.
2017-06-21guix package: '--search-paths' shows search paths from propagated inputs.Ludovic Courtès
* guix/scripts/package.scm (process-query) <'search-paths>: Use 'manifest-transitive-entries' instead of 'manifest-entries'.
2017-06-21profiles: Catch and report collisions in the profile.Ludovic Courtès
* guix/profiles.scm (&profile-collision-error): New error condition. (manifest-transitive-entries, manifest-entry-lookup, lower-manifest-entry) (check-for-collisions): New procedures. (profile-derivation): Add call to 'check-for-collisions'. * guix/ui.scm (call-with-error-handling): Handle '&profile-collision-error'. * tests/profiles.scm ("collision", "collision of propagated inputs") ("no collision"): New tests.
2017-06-21guix package: Always upgrade packages that have propagated inputs.Ludovic Courtès
* guix/scripts/package.scm (transaction-upgrade-entry): Always upgrade packages that have propagated inputs.
2017-06-21profiles: Manifest entries keep a reference to their parent entry.Ludovic Courtès
* guix/profiles.scm (<manifest-entry>)[parent]: New field. (package->manifest-entry): Add #:parent parameter. Fill out the 'parent' field of <manifest-entry>; pass #:parent in recursive calls. * guix/profiles.scm (sexp->manifest)[sexp->manifest-entry]: New procedure. Use it for version 3. * tests/profiles.scm ("manifest-entry-parent"): New procedure. ("read-manifest")[entry->sexp]: Add 'manifest-entry-parent' to the result.
2017-06-21profiles: Represent propagated inputs as manifest entries.Ludovic Courtès
* guix/profiles.scm (package->manifest-entry): Turn DEPS into a list of manifest entries. (manifest->gexp)[entry->gexp]: Call 'entry->gexp' on DEPS. Bump version to 3. (sexp->manifest)[infer-dependency]: New procedure. Use it for versions 1 and 2. Parse version 3. (manifest-inputs)[entry->gexp]: New procedure. Adjust to 'dependencies' being a list of <manifest-entry>. * tests/profiles.scm ("packages->manifest, propagated inputs") ("read-manifest"): New fields.
2017-06-20gnu: Move contents of zip module into compression module.Arun Isaac
* gnu/packages/zip.scm (zip, unzip, zziplib, perl-zip): Move to... * gnu/packages/compression.scm: ...here. * gnu/packages/zip.scm: Delete file. * gnu/local.mk (GNU_SYSTEM_MODULES): Unregister deleted file. * po/packages/POTFILES.in: Unregister deleted file. * gnu/packages/{audio, avr, bioinformatics, busybox, cdrom, ci, compression, docbook, documentation, fonts, fpga, game-development, games, gl, gnome, gnuzilla, graphics, guile, haskell, image, java, kodi, ldc, libreoffice, markup, maths, mc, monitoring, music, php, pretty-print, python, scheme, smalltalk, statistics, synergy, tex, textutils, video, web-browsers, xml, zip}.scm, guix/build-system/{ant, font}.scm, guix/{download, packages}.scm: Adapt module import.
2017-06-19store: Buffer RPC writes.Ludovic Courtès
For a command like: guix build python2-numpy -n this reduces the number of 'write' syscalls from 9.5K to 2.0K. * guix/store.scm (<nix-server>)[buffer, flush]: New fields. (open-connection): Adjust accordingly. Call 'buffering-output-port' to compute the two new fields. (write-buffered-output, buffering-output-port): New procedures. (operation): Write to (nix-server-output-port server). Call 'write-buffered-output'.