Age | Commit message (Expand) | Author |
2018-07-24 | import: PyPI: Update redirected URL....* guix/import/pypi.scm (guix-package->pypi-name, pypi->guix-package): Update
docstrings.
(pypi-package?): Test for pypi.org, too.
(pypi-fetch): s/pypi.python.org/pypi.org/
* tests/pypi.scm ("guix-package->pypi-name, new URL style",
"pypi->guix-package", "pypi->guix-package, wheels"): Likewise.
| Marius Bakke |
2018-07-23 | build-system: Add 'guile-build-system'....* guix/build-system/guile.scm, guix/build/guile-build-system.scm: New
files.
* Makefile.am (MODULES): Add them.
* doc/guix.texi (Build Systems): Document 'guile-build-system'.
| Ludovic Courtès |
2018-07-22 | Revert "guix: Compress and decompress xz archives in parallel."...Threaded compression makes archives non-deterministic: the result depends on
the number of threads used for compressing. See <https://bugs.gnu.org/31015>.
This reverts commit 63102406f22412bb922de5549deb89d3594a38c0.
| Marius Bakke |
2018-07-20 | database: Reset timestamps to one second after the Epoch....Previously, store items registered in the database by this code (for
instance, store items retrieved by 'guix offload' and passed to
'restore-file-set') would have an mtime of 0 instead of 1.
This would cause problems for things like .go files: Guile would
consider them to be older than the corresponding .scm file, and
consequently it would ignore them and possibly use another (incorrect)
.go file.
Reported by Ricardo Wurmus.
* guix/store/database.scm (reset-timestamps): Pass 1, not 0, to
'utime'.
* tests/store-database.scm ("register-path"): Check the mtime of FILE
and REF.
| Ludovic Courtès |
2018-07-20 | deduplication: Work around Guile bug in 'seek'....Fixes <https://bugs.gnu.org/32161>.
Reported by Ricardo Wurmus <rekado@elephly.net>.
This mostly reverts 83099892e0cf0d9c59f5e1a0774331026e48baa8.
* guix/store/deduplication.scm (counting-wrapper-port): New procedure.
(nar-sha256): Use it.
| Ludovic Courtès |
2018-07-19 | build-system/go: Use invoke instead of system*....* guix/build/go-build-system.scm (unpack, build): Use invoke.
(install-source): Unconditionally return #t.
(check): Use invoke and unconditionally return #t.
| Leo Famulari |
2018-07-19 | deduplication: Remove 'counting-wrapper-port'....* guix/store/deduplication.scm (counting-wrapper-port): Remove.
(nar-sha256): Call 'port-position' directly on PORT.
| Ludovic Courtès |
2018-07-19 | hash: sha256 port now implements 'port-position'....* guix/hash.scm (open-sha256-port)[position]: New variable.
[get-position]: New procedure.
Pass it to 'make-custom-binary-output-port'.
* tests/hash.scm ("open-sha256-port, hello"): Test 'port-position'.
| Ludovic Courtès |
2018-07-19 | self: Use the new 'imported-files'....That way, the source of most nodes is now a content-addressed store item
instead of a derivation.
* guix/self.scm (<file-mapping>): New record type.
(file-mapping-compiler): New procedure.
(scheme-node): Use 'file-mapping' instead of 'imported-files'.
(imported-files): Remove.
| Ludovic Courtès |
2018-07-19 | gexp: 'imported-files/derivation' can copy files instead of symlinking....* guix/gexp.scm (imported-files/derivation): Add #:symlink? and honor
it.
(imported-files): Pass #:symlink? to 'imported-files/derivation'.
* tests/gexp.scm ("imported-files with file-like objects"): Add 'file=?'
and use it instead of calling 'readlink'.
| Ludovic Courtès |
2018-07-19 | gexp: 'imported-files' no longer creates a derivation by default....* guix/gexp.scm (gexp->derivation): Add #:import-creates-derivation?.
Pass #:derivation? to 'imported-modules' and 'compiled-modules'. In -L
argument, check whether MODULES is a derivation.
(%not-slash): New variable.
(file-mapping->tree): New procedure.
(imported-files): Rename to...
(imported-files/derivation): ... this.
(imported-files): New procedure. Rewrite in terms of
'interned-file-tree' when possible; add #:derivation? parameter.
(imported-modules, compiled-modules): Add #:derivation? parameter and
pass it to 'imported-files'.
* guix/packages.scm (patch-and-repack): Pass
#:import-creates-derivation? to 'gexp->derivation'.
* tests/gexp.scm ("imported-files"): Adjust to no longer expect a
derivation.
| Ludovic Courtès |
2018-07-19 | gexp: Remove unnecessary 'mlet'....* guix/gexp.scm (imported-modules): Use 'let' instead of 'mlet'.
| Ludovic Courtès |
2018-07-19 | store: Add 'add-file-tree-to-store'....* guix/store.scm (%not-slash): New variable.
(add-file-tree-to-store, interned-file-tree): New procedures.
* tests/store.scm ("add-file-tree-to-store"): New test.
| Ludovic Courtès |
2018-07-19 | serialization: Add 'write-file-tree'....* guix/serialization.scm (write-contents-from-port): New procedure.
(write-contents): Write in terms of 'write-contents-from-port'.
(filter/sort-directory-entries, write-file-tree): New procedures.
(write-file): Rewrite in terms of 'write-file-tree'.
* tests/nar.scm ("write-file-tree + restore-file"): New test.
| Ludovic Courtès |
2018-07-15 | ruby-build-system: Error or return #t from all phases....Previously, if the tests didn't pass, the check phase would evaluate to #f,
but the package would be built sucessfully. This changes all the phases to
raise exceptions if errors are encountered, and return #t otherwise.
This involves using invoke rather than system*, so that exceptions are raised
if the program exits with a status other than 0, and also returning #t at the
end of functions.
* gnu/build/ruby-build-system.scm (unpack): Use invoke rather than system*,
and return #t at the end.
(build, check): Use invoke rather than system*.
(install): Remove the use of "and", and rewrite the error handling to raise an
exception.
(wrap): Return #t.
| Christopher Baines |
2018-07-13 | utils: Really clean up temporary directories....Fixes <https://bugs.gnu.org/32126>.
* guix/utils.scm (call-with-temporary-directory): Use DELETE-FILE-RECURSIVELY
instead of RMDIR.
| Leo Famulari |
2018-07-13 | pull: Display new/upgraded packages upon completion....* guix/scripts/pull.scm (display-profile-news): New procedure.
(build-and-install): Call it.
(display-new/upgraded-packages): Add #:heading and honor it.
| Ludovic Courtès |
2018-07-13 | pull: Use (guix inferior) to display new and upgraded packages....* guix/scripts/pull.scm (display-profile-content): Call
'display-generation'.
(display-new/upgraded-packages, display-profile-content-diff): New
procedures.
(process-query)[list-generation]: Remove.
[list-generations]: New procedure.
Adjust accordingly.
* doc/guix.texi (Invoking guix pull): Update example of '-l'.
| Ludovic Courtès |
2018-07-13 | Add (guix inferior) and (guix scripts repl)....* guix/inferior.scm, guix/scripts/repl.scm, tests/inferior.scm: New
files.
* Makefile.am (MODULES): Add 'guix/scripts/repl.scm' and
'guix/inferior.scm'.
(SCM_TESTS): Add 'tests/inferior.scm'.
* doc/guix.texi (Invoking guix repl): New node.
| Ludovic Courtès |
2018-07-13 | guix package: Use relative symlinks to generations....Reported by Roel Janssen <roel@gnu.org>
at <https://lists.gnu.org/archive/html/guix-devel/2018-07/msg00036.html>.
* guix/profiles.scm (switch-to-generation): Use (basename generation) as
the symlink target.
* guix/scripts/package.scm (build-and-use-profile): Likewise,
use (basename name) as the symlink target.
* tests/guix-package.sh: Adjust --roll-back test accordingly. Add
explicitly test with '-p foo/prof'.
| Ludovic Courtès |
2018-07-13 | git: Call 'url-cache-directory' outside 'update-cached-checkout'....* guix/git.scm (update-cached-checkout): Call 'url-cache-directory' in
'cache-directory' key argument.
(latest-repository-commit): Call 'url-cache-directory'.
| Oleg Pykhalov |
2018-07-13 | import: hackage: Fix typo....* guix/import/cabal.scm (cabal-custom-setuo-name): Rename to...
(cabal-custom-setup-name): ...this.
| Danny Milosavljevic |
2018-07-13 | Merge branch 'staging' | Marius Bakke |
2018-07-12 | import: hackage: Evaluate "-any" and "-none" version comparison operators....* guix/import/cabal.scm (eval-cabal): Modify.
* tests/hackage.scm (test-cabal-4): New variable and test.
(test-cabal-5): New variable and test.
(test-cabal-6): New variable and test.
| Danny Milosavljevic |
2018-07-12 | import: hackage: Support "-any" and "-none" version comparison operators....* guix/import/cabal.scm (make-cabal-parser): Modify.
(is-any): New variable.
(is-none): New variable.
(lex-any): New procedure.
(lex-none): New procedure.
(lex-word): Modify.
(eval-cabal): Modify.
| Danny Milosavljevic |
2018-07-12 | import: hackage: Support "custom-setup" field....Fixes <https://bugs.gnu.org/23961>.
* guix/import/cabal.scm (make-cabal-parser): Modify.
(is-custom-setup): New variable.
(lex-custom-setup): New procedure.
(is-id): Modify.
(lex-version): Modify.
(<cabal-custom-setup>): New record type.
(eval-cabal): Modify.
(dependencies): Add parameter.
| Danny Milosavljevic |
2018-07-12 | gexp: Allow bytevector as content of `plain-file'....This allows for using a package source directly from git, doing something like
(define (command->bytevector command)
(let ((port (apply open-pipe* OPEN_READ command)))
(let ((output (get-bytevector-all port)))
(close-port port)
output)))
(define-public hello-git
(package
(name "hello")
(version "git")
(source (let* ((commit "stable-2.0")
(content (command->bytevector
`("git" "archive" "--format" "tar" "--prefix"
,(string-append commit "/") ,commit)))
(file-name (string-append "hello-" commit)))
(plain-file file-name content)))
...
))
* guix/gexp.scm (<plain-file>): Also allow bytevector content.
(plain-file-compiler): Handle bytevector content.
* doc/guix.texi (G-Expressions): Describe plain-file now also taking
bytevectors.
| Jan Nieuwenhuizen |
2018-07-12 | store: Add `binary-file'....* guix/store.scm (binary-file): New function.
* doc/guix.texi (The Store Monad): Describe binary-file.
| Jan Nieuwenhuizen |
2018-07-11 | gnu-maintenance: Get GNU metadata from rec files....Suggested by Mike Gerwitz <mtg@gnu.org>.
* guix/gnu-maintenance.scm (%package-list-url): Use the .rec file.
(%package-description-url): Likewise.
(official-gnu-packages)[read-records]: Skip record descriptors.
Rename fields to use underscores instead of hyphens.
| Ludovic Courtès |
2018-07-11 | import: gem: Add recursive import....* doc/guix.texi (Invoking guix import): Document gem recursive import.
* guix/import/gem.scm (gem->guix-package): Return package and dependencies
values.
(gem-recursive-import): New procedure.
* guix/scripts/import/gem.scm (show-help, %options): Add recursive option.
(guix-import-gem): Use 'gem-recursive-import'.
* tests/gem.scm (test-json): Rename to 'test-foo-json'.
("gem->guix-package"): Use 'test-foo-json'.
(test-bar-json, test-bundler-json): New variables.
("gem-recursive-import"): New test.
| Oleg Pykhalov |
2018-07-11 | build-system/haskell: Make phases fail on error....* guix/build/haskell-build-system.scm (configure): Make it fail on error.
(run-setuphs): Make it fail on error.
| Danny Milosavljevic |
2018-07-11 | ui: Fix typo....* guix/ui.scm (display-profile-content-diff): Fix typo in docstring.
| Ludovic Courtès |
2018-07-11 | profiles: Introduce 'profile-search-paths' and use it....* guix/profiles.scm (profile-search-paths): New procedure.
* guix/scripts/environment.scm (evaluate-search-paths): Remove.
(create-environment): Replace 'paths' with 'manifest'. Use
'profile-search-paths' instead of 'evaluate-search-paths'.
(show-search-paths): Likewise.
(launch-environment): Replace 'paths' with 'manifest'. Make 'pure?' a
keyword parameter.
(launch-environment/fork, launch-environment/container): Likewise.
(guix-environment): Remove 'paths' variable. Adjust callers of the
above procedures accordingly.
| Ludovic Courtès |
2018-07-11 | environment: Simplify code by using manifests internally....* guix/scripts/environment.scm (strip-input-name)
(package+propagated-inputs, package-or-package+output?)
(compact): Remove.
(inputs->profile-derivation): Rename to...
(manifest->derivation): ... this. Replace 'inputs' parameter with
'manifest'.
(input->manifest-entry): New procedure.
(package-environment-inputs): Rewrite to return a list of manifest
entries.
(options/resolve-packages): Rewrite to return a manifest.
(guix-environment): Remove 'inputs'. Define 'paths' in terms of
'manifest-search-paths'.
| Ludovic Courtès |
2018-07-11 | profiles: Factorize 'manifest-search-paths'....* guix/profiles.scm (manifest-search-paths): New procedure.
(profile-derivation)[builder]: Use it.
* guix/build/profiles.scm (build-etc/profile): Remove $PATH.
| Ludovic Courtès |
2018-07-10 | guix: Add opam importer....* guix/scripts/import.scm (importers): Add opam.
* guix/scripts/import/opam.scm: New file.
* guix/import/opam.scm: New file.
* tests/opam.scm: New file.
* Makefile.am: Add them.
* doc/guix.texi (Invoking guix import): Document it.
| Julien Lepiller |
2018-07-08 | Merge branch 'master' into staging | Marius Bakke |
2018-07-07 | ui: Add -V as short option for --version....* guix/ui.scm (run-guix): Add -V as the short option for --version for
consistency with most commands.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
| Kyle Meyer |
2018-07-07 | scripts: Add missing -V option to commands that document it....* guix/scripts/container.scm (guix-container):
* guix/scripts/import.scm (guix-import):
* guix/scripts/substitute.scm (guix-substitute): Add -V as the short option
for --version to match show-help's description.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
| Kyle Meyer |
2018-07-07 | weather: Fix pasto in --version output....* guix/scripts/weather.scm (%options): Correct the command name passed to
show-version-and-exit.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
| Kyle Meyer |
2018-07-05 | pack: Use guile-for-build for the target system....Until now, running "guix pack -s i686-linux" on an x86_64-linux machine,
for instance, would use an x86_64 guile for module derivations. This
was OK until now, but would break when passing "--localstatedir" due to
the introduction of guile-sqlite3: we'd be using the i686 guile-sqlite3
along with the x86_64 guile.
* guix/scripts/pack.scm (guix-pack): Pass the 'system option from OPTS
to 'package-derivation'.
| Ludovic Courtès |
2018-07-04 | profiles: 'info-dir-file' hook now produces 'dir.LANG' files....Previously, entries for 'guix.fr.info' would end up in 'dir', above the
'guix.info' entries; consequently, running 'info guix' would actually
open 'guix.fr.info', which was confusing for non-French readers.
* guix/profiles.scm (info-dir-file)[glibc-utf8-locales]: New variable.
[build](info-file-language): New procedure.
(install-info): Use it, to create 'dir.LANG' files.
Set GUIX_LOCPATH.
| Ludovic Courtès |
2018-07-03 | Revert "packages: Optimize 'package-transitive-supported-systems'."...This reverts commit 24420f5ffabfbdbe913a5765e5c00e17de18fb4c.
This broke 'package-transitive-supported-systems', which would return
the union of supported systems instead of the intersection.
| Ludovic Courtès |
2018-07-03 | guix system: Make 'init' idempotent again....This fixes a regression introduced in
df2f6400b1fbc282ef4d6dd7124ea1c17adc23c2: since the new
'register-path' (actually 'reset-timestamps') would make files
read-only, 'delete-file-recursively' would fail to delete them. Thus,
re-running 'guix system init' on an already-populated store would fail
with a 'delete-file' EPERM.
* guix/scripts/system.scm (copy-item): Use 'lstat' instead of
'file-exists?'. Call 'make-file-writable' on each directory below
DEST.
| Ludovic Courtès |
2018-07-03 | ui: Report file names in 'system-error' exceptions from 'delete-file'....* guix/ui.scm (delete-file): New error-reporting wrapper.
| Ludovic Courtès |
2018-07-03 | database: 'reset-timestamps' now correctly handles symlinks....* guix/store/database.scm (reset-timestamps): Use 'utime' with
AT_SYMLINK_NOFOLLOW for symlinks.
| Ludovic Courtès |
2018-07-03 | syscalls: Define AT_SYMLINK_NOFOLLOW et al....* guix/build/syscalls.scm (AT_FDCWD, AT_SYMLINK_NOFOLLOW, AT_REMOVEDIR)
(AT_SYMLINK_FOLLOW, AT_NO_AUTOMOUNT, AT_EMPTY_PATH): New variables.
* tests/syscalls.scm ("utime with AT_SYMLINK_NOFOLLOW"): New test.
| Ludovic Courtès |
2018-07-03 | deduplication: Remove 'false-if-system-error', now unused....* guix/store/deduplication.scm (false-if-system-error): Remove.
| Ludovic Courtès |
2018-07-03 | import: elpa: Check if 'fetch-elpa-package' rest argument is null....* guix/import/elpa.scm (fetch-elpa-package): Check if 'rest' is null.
| Oleg Pykhalov |
2018-07-03 | deduplication: Place link files under /gnu/store/.links....Previously they'd always be placed next to TO-REPLACE, which would lead
to EPERM in some cases.
* guix/store/deduplication.scm (replace-with-link): Add #:swap-directory
parameter and honor it. Add call to 'make-file-writable'. Catch
'system-error' around 'rename-file'.
(deduplicate): Pass #:swap-directory and remove uses of
'false-if-system-error'.
* tests/store-deduplication.scm ("deduplicate"): Add 'chmod' call.
| Ludovic Courtès |