Commit Graph

2175 Commits (43dcce8674d9c7d72db4f3f5aae590cea788d5b4)

Author SHA1 Message Date
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
David Craven 9dd674db01
daemon: Rename 'NIX_CONF_DIR' to 'GUIX_CONFIGURATION_DIRECTORY'.
Partly fixes <http://bugs.gnu.org/22459>.
Reported by Jeff Mickey <j@codemac.net> and David Craven <david@craven.ch>.

* nix/libstore/globals.cc (Settings::processEnvironment()): Change
'NIX_CONF_DIR' to 'GUIX_CONFIGURATION_DIRECTORY'.
* nix/local.mk (libstore_a_CPPFLAGS): Likewise.
* guix/config.scm.in (%config-directory): Likewise.
* build-aux/test-env.in: Likewise.
* gnu/packages/patches/hydra-automake-1.15.patch: Likewise.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2016-06-26 23:11:07 +02:00
Cyril Roelandt aebd383d04 import: pypi: do not fail when 'run_requires' is missing from the metadata.
* guix/import/pypi.scm (read-wheel-metadata): do not crash when 'run_requires'
is missing from the metadata.
2016-06-25 15:33:06 +02:00
宋文武 8ea8e8d3c3
guix: python-build-system: Change pypi-uri to use https://pypi.io.
* guix/build-system/python.scm (pypi-uri): Use https://pypi.io.
* gnu/packages/python.scm (python-twisted)[uri]: Remove https://pypi.io.
2016-06-25 20:49:59 +08:00
Ludovic Courtès 934c5d5b28
utils: 'cache-directory' always appends "/guix".
Fixes <http://bugs.gnu.org/23836>.
Fixes a regression introduced in f10dcbf1a9.
Reported by myglc2 <myglc2@gmail.com>.

* guix/utils.scm (cache-directory): Always append "/guix".
2016-06-25 01:13:23 +02:00
Efraim Flashner bae06364c1
bournish: Add 'wc' command.
* guix/build/bournish.scm (lines+chars, file-exists?*, wc-print)
(wc-l-print, wc-c-print, wc-command, wc-command-implementation)
(wc-l-command-implementation, wc-c-command-implementation): New procedures.
(%commands): Add 'wc'.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2016-06-23 10:27:02 +02:00
Ludovic Courtès f10dcbf1a9
substitute: Use ~/.cache when invoked by an unprivileged user.
This is a followup to ea0c6e0507.

* guix/scripts/substitute.scm (%narinfo-cache-directory): Use
'cache-directory' when (getuid) returns non-zero.
(cache-narinfo!): Remove 'catch'.
2016-06-22 23:46:32 +02:00
Ludovic Courtès 3583b27b2c
utils: 'cache-directory' honors 'XDG_CACHE_HOME'.
* guix/utils.scm (cache-directory): Honor 'XDG_CACHE_HOME', not
'XDG_CONFIG_HOME'.
2016-06-22 23:39:57 +02:00
Alex Kost 2831675bfd
build: emacs: Search for elisp in "share/emacs/site-lisp".
* guix/build/emacs-build-system.scm (emacs-inputs-el-directories):
Add ".../share/emacs/site-lisp" directory to the returned result as
elisp files can also be placed there.
2016-06-22 11:15:28 +03:00
Ludovic Courtès a9601e2352
gexp: Use a relative file name.
This is a followup to cbbbb7be0f.

* guix/gexp.scm (%utils-module): Use a file name relative to this file
instead of using 'search-path'.
2016-06-20 23:50:46 +02:00
Ludovic Courtès a68d0f6fd5
utils: 'current-source-directory' gracefully handles lack of source info.
* guix/utils.scm (current-source-directory): Add case for when FILE-NAME
is #f.
2016-06-20 00:52:53 +02:00
Ludovic Courtès cbbbb7be0f
utils: 'current-source-directory' resolves relative file names at run time.
* guix/utils.scm (absolute-dirname): New procedure.
(current-source-directory): Emit code to use it instead of calling
'search-path'.
2016-06-20 00:52:53 +02:00
Ludovic Courtès 95fa173ed1
store: 'register-path' no longer swallows 'system-error' exceptions.
* guix/store.scm (register-path): Do not catch 'system-error'.
2016-06-20 00:52:53 +02:00
Ludovic Courtès d4dd37fc46
utils: 'current-source-directory' returns the absolute directory name.
* guix/utils.scm (current-source-directory): When FILE-NAME is relative,
use 'search-path' to determine the absolute file name.
2016-06-16 23:50:44 +02:00
Ludovic Courtès 5dbae738f0
utils: 'current-source-directory' is now purely an expansion-time thing.
* guix/utils.scm (extract-directory): Remove.
(current-source-directory): Rewrite as a 'syntax-case' macro.
2016-06-16 23:50:44 +02:00
Ludovic Courtès a7db719f3d
packages: Disambiguate 'modules' and 'imported-modules' in <origin>.
The two mistakes made here (confusion between 'modules' and
'imported-modules') were canceling each other.

* guix/packages.scm (patch-and-repack): Use IMPORTED-MODULES, not
MODULES, as the base of the module list passed as #:modules to
'gexp->derivation'.
(origin->derivation): Pass IMPORTED-MODULES, not MODULES, as
the #:imported-modules argument of 'patch-and-repack'.
* gnu/packages/engineering.scm (fastcap)[source]: Add 'imported-modules'
field.
2016-06-16 14:31:52 +02:00
Ludovic Courtès 0687fc9cd9
gexp: Add #:select? parameter to 'local-file'.
* guix/gexp.scm (<local-file>)[select?]: New field.
(true): New procedure.
(%local-file): Add #:select? and honor it.
(local-file): Likewise.
* tests/gexp.scm ("local-file, #:select?"): New test.
* doc/guix.texi (G-Expressions): Adjust accordingly.
2016-06-16 09:34:32 +02:00
Ludovic Courtès 07c8a98c3b
gexp: Move 'current-source-directory' to (guix utils).
* guix/gexp.scm (extract-directory, current-source-directory): Move to...
* guix/utils.scm (extract-directory, current-source-directory):
... here.  New procedures.
2016-06-16 09:34:32 +02:00
Ricardo Wurmus c4e48b68bd
guix: Add downloader for Mercurial repositories.
* guix/build/hg.scm: New file.
* guix/hg-download.scm: New file.
* Makefile.am (MODULES): Add them.
2016-06-15 17:02:18 +02:00
Ludovic Courtès 1ec32f4a9d
store: Add #:select? parameter to 'add-to-store'.
* guix/store.scm (write-arg): Remove 'file' case.
(true): New procedure.
(add-to-store): Add #:select? parameter and honor it.  Use hand-coded
stub instead of 'operation'.
(interned-file): Add #:select? parameter and honor it.
* doc/guix.texi (The Store Monad): Adjust 'interned-file' documentation
accordingly.
2016-06-15 15:26:30 +02:00
Ludovic Courtès da675305dd
packages: The 'source' can be any lowerable object.
* guix/packages.scm (expand-input): Use 'struct?' instead of 'origin?'
when matching SOURCE.
(package-source-derivation): Use 'lower-object' instead of
'origin->derivation'.
* tests/packages.scm ("package-source-derivation, local-file"): New
test.
* doc/guix.texi (package Reference): Update 'source' documentation
accordingly.
2016-06-15 15:26:30 +02:00
Ludovic Courtès 789510640d
packages: 'origin->derivation' expects an origin and nothing else.
* guix/packages.scm (origin->derivation): Rename 'source' parameter to
'origin'.  Move cases where SOURCE is a string to...
(package-source-derivation): ... here.
2016-06-15 15:26:30 +02:00
Ludovic Courtès 5257ab6de2
packages: Recognize the '.Z' extension.
Reported by thomasd on #guix.

* guix/packages.scm (patch-and-repack)[decompression-type]: Add "Z".
2016-06-15 15:26:30 +02:00
Cyril Roelandt 266785d21e import: pypi: read requirements from wheels.
* doc/guix.tex (Invoking guix import): Mention that the pypi importer
works better with "unzip".
* guix/import/pypi.scm (latest-wheel-release,
wheel-url->extracted-directory): New procedures.
* tests/pypi.scm (("pypi->guix-package, wheels"): New test.
2016-06-14 22:03:22 +02:00
Ludovic Courtès c25637dfe8
utils: 'with-atomic-file-output' closes the port upon exception.
Previously it could have left the file descriptor open.

* guix/utils.scm (with-atomic-file-output): Call 'close-port' in handler.
2016-06-13 18:05:54 +02:00
Ludovic Courtès d1f33ba44b
syscalls: Use 'syscall->procedure' everywhere.
* guix/build/syscalls.scm (mkdtemp!, setns, %ioctl, network-interfaces):
(free-ifaddrs): Use 'syscall->procedure'.
2016-06-13 18:05:54 +02:00
Ludovic Courtès 1752a17a1e
utils: 'with-atomic-file-output' calls 'fdatasync'.
Suggested by Danny Milosavljevic <dannym@scratchpost.org>
at <https://lists.gnu.org/archive/html/guix-devel/2016-06/msg00456.html>.

* guix/build/syscalls.scm (fdatasync): New procedure.
* guix/utils.scm (with-atomic-file-output): Use it.  Use 'close-port'
instead of 'close'.
2016-06-13 18:05:54 +02:00
Ludovic Courtès fe585be9aa
serialization: Add #:select? parameter to 'write-file'.
* guix/serialization.scm (write-file): Add #:select? parameter and honor it.
* tests/nar.scm ("write-file #:select? + restore-file"): New test.
2016-06-12 23:55:22 +02:00
Ludovic Courtès 4d4c3614c8
profiles: Make sure hook derivations fail upon error.
Reported at
<https://lists.gnu.org/archive/html/guix-devel/2016-06/msg00368.html>.

* guix/profiles.scm (info-dir-file)[build]: Add explicit call to
'exit'.
* guix/profiles.scm (ghc-package-cache-file)[build]: Likewise.
* guix/profiles.scm (xdg-desktop-database)[build]: Likewise.
* guix/profiles.scm (xdg-mime-database)[build]: Likewise.
2016-06-12 23:54:00 +02:00
宋文武 963521a380
profiles: manifest-lookup-package: Correctly handle package entries.
* guix/profiles.scm (manifest-lookup-package): Consider the package entry
in addition to its 'package-transitive-inputs'.
2016-06-11 11:05:18 +08:00
宋文武 359f06aac8
profiles: xdg-mime-database: Union the "share/mime/packages" directory.
* guix/profiles.scm (xdg-mime-database): Call 'union-build' for the
"share/mime/packages" directory of inputs.
2016-06-11 11:03:31 +08:00
Ludovic Courtès e4c7a5f7c8
publish: Add '--ttl'.
* guix/scripts/publish.scm (show-help, %options): Add --ttl.
(render-narinfo): Add #:ttl and honor it.
(make-request-handler): Add #:narinfo-ttl and honor it.
(run-publish-server): Likewise.
(guix-publish): Honor --ttl, pass it to 'run-publish-server'.
2016-06-09 23:34:56 +02:00
Ludovic Courtès 638c5b7939
ui: 'string->duration' supports hours and seconds.
* guix/ui.scm (string->duration): Add seconds and hours.
* tests/ui.scm ("duration, 1 second"): New test.
2016-06-09 23:34:56 +02:00
Ludovic Courtès 93961f0298
publish: Encore URIs that appear in narinfos.
Fixes <http://bugs.gnu.org/21888>.
Reported by iyzsong@member.fsf.org (宋文武).

* guix/scripts/publish.scm (narinfo-string): Use
'encode-and-join-uri-path' instead of 'string-append' to compute URL.
* tests/publish.scm ("/*.narinfo with properly encoded '+' sign"):
("/nar/ with properly encoded '+' sign"): New tests.
2016-06-08 19:07:58 +02:00
Ludovic Courtès dc794a7238
gnu-maintenance: Replace 'find-packages' with 'find-package' (singular).
Fixes <http://bugs.gnu.org/23718>.
Reported by Efraim Flashner <efraim@flashner.co.il>.

* guix/gnu-maintenance.scm (find-packages): Remove.
(find-package): New procedure.
* guix/import/gnu.scm (gnu->guix-package): Use 'find-package' instead of
'find-packages' and adjust accordingly.
2016-06-08 19:07:58 +02:00
Ludovic Courtès f82c58539e
bournish: Allow compilation of multiple expressions.
* guix/build/bournish.scm (%bournish-language): Add a joiner to SCHEME.
Compile only to Scheme.
* tests/bournish.scm: New file.
* Makefile.am (SCM_TESTS): Add it.
2016-06-06 18:14:52 +02:00
Ludovic Courtès 8bebe00a76
bournish: Handle EOF in the reader.
* guix/build/bournish.scm (read-bournish): Add case for EOF.
2016-06-06 18:14:52 +02:00
Ludovic Courtès 40d71e44f5
profiles: 'profile-derivation' now honors #:system.
Fixes <http://bugs.gnu.org/23682>.
Reported by Ander GM <anthk@openmailbox.org>.

* guix/profiles.scm (profile-derivation): Pass #:system to
'gexp->derivation'.
* tests/guix-environment.sh: Add 'guix environment -s' test.
2016-06-05 00:05:38 +02:00
Ludovic Courtès 405d043ddd
import: github: Tiny cosmetic change.
* guix/import/github.scm (find-extension): Use a one-argument lambda.
2016-05-31 23:38:51 +02:00
Efraim Flashner b93efac026
import github: Add to extension list.
* guix/import/github.scm (find-extension): Add '.tgz' extension.
2016-05-31 22:05:44 +03:00
Ludovic Courtès 0a40626fd2
offload: Use (guix build syscalls).
This is a followup to 4e0ea3eb28.

* guix/scripts/offload.scm: Use (guix build syscalls).
2016-05-31 18:22:14 +02:00
Efraim Flashner 552ffa021c
download: Update CPAN mirrors.
* guix/download.scm (mirrors)[cpan]: Add to mirror list.
2016-05-31 00:05:54 +03:00
David Thompson 578b96af69 build: emacs: Handle sources that are a single elisp file.
* guix/build/emacs-build-system.scm (gnu:unpack)
(store-file->elisp-source-file, unpack): New procedures.
(%standard-phases): Use the new unpack procedure.
2016-05-30 10:48:44 -04:00
Efraim Flashner 321dc4dfe4
download: Update Sourceforge mirrors.
* guix/download.scm (mirrors)[sourceforge]: Update mirror list.
2016-05-30 12:09:13 +03:00
Ludovic Courtès 870bf71eb0
cve: Use a more compact format for the list of package/versions.
On a warm cache, "guix lint -c cve vorbis-tools" goes down
from 6.5s to 2.4s.

* guix/cve.scm (cpe->package-name): Change to return two values instead
of a pair.
(cpe->product-alist): New procedure.
(%parse-vulnerability-feed): Use it instead of 'filter-map'.
(fetch-vulnerabilities): Bump sexp format version to 1.
(vulnerabilities->lookup-proc): Adjust accordingly.  When #:version is
omitted, return a list of vulnerabilities instead of a list of
version/vulnerability pairs.
* tests/cve.scm (%expected-vulnerabilities)
("vulnerabilities->lookup-proc): Adjust accordingly.
2016-05-28 01:07:12 +02:00