Ludovic Courtès
9d2f48df02
publish: Gracefully handle the lack of a deriver.
...
* guix/scripts/publish.scm (narinfo-string): Catch 'system-error' around
'load-derivation' call; return BASE-INFO upon ENOENT. This allows us
to return the narinfo even if DERIVER is missing. Before that, the
exception would be uncaught, leading to 500 Internal Error on the
client side.
2015-09-04 00:13:05 +02:00
Ludovic Courtès
4c8f997a7d
graph: Add '--expression'.
...
* guix/scripts/graph.scm (%options, show-help): Add '--expression'.
(guix-graph): Call 'read/eval-package-expression' for 'expression'
pairs in OPTS.
* tests/guix-graph.sh: Add tests.
* doc/guix.texi (Invoking guix graph): Document it.
2015-09-02 23:40:07 +02:00
Ricardo Wurmus
dee38b7b41
guix: Add GUST font license 1.0.
...
* guix/licenses.scm (gfl1.0): New variable.
2015-09-02 08:44:54 +02:00
David Thompson
a96524cc7d
import: gem: Fix minor bug and add unit test.
...
* guix/import/gem.scm (make-gem-sexp): Properly handle an empty list of
licenses. When rendering a list of licenses, cons 'list onto the front of
the expression.
* tests/gem.scm: New file.
* Makefile.am (SCM_TESTS): Add it.
2015-09-01 20:00:01 -04:00
Ricardo Wurmus
f8f3bef6aa
build: Add R build system.
...
* guix/build-system/r.scm: New file.
* guix/build/r-build-system: New file.
* Makefile.am (MODULES): Add new files.
* doc/guix.texi (Build Systems): Document r-build-system.
2015-08-31 15:39:34 +02:00
Ricardo Wurmus
e1248602f9
import: Add 'cran' importer.
...
* guix/import/cran.scm: New file.
* guix/scripts/import.scm: Add "cran" to 'importers'.
* guix/scripts/import/cran.scm: New file.
* tests/cran.scm: New file.
* Makefile.am (MODULES): Add 'guix/import/cran.scm' and
'guix/scripts/import/cran.scm'.
(SCM_TESTS): Add 'tests/cran.scm'.
* doc/guix.texi (Invoking guix import): Document it.
* po/guix/POTFILES.in: Add 'guix/scripts/import/cran.scm'.
2015-08-31 15:39:34 +02:00
Alex Kost
caa6732e96
ui: Add 'run-guix'.
...
* guix/ui.scm (guix-main): Move the code to run guix command line to ...
(run-guix): ...here. New procedure. Export it.
2015-08-30 18:26:02 +03:00
Alex Kost
c1a8c5ab1c
guix graph: Export node types and <node-type> accessors.
...
* guix/scripts/graph.scm (%node-types, node-type, node-type?,
node-type-identifier, node-type-label, node-type-edges,
node-type-convert, node-type-name, node-type-description): Export.
2015-08-30 18:26:02 +03:00
Alex Kost
521a11e0a6
guix lint: Export checkers and <lint-checker> accessors.
...
* guix/scripts/lint.scm (%checkers, lint-checker, lint-checker?,
lint-checker-name, lint-checker-description, lint-checker-check):
Export.
2015-08-30 18:26:01 +03:00
Ludovic Courtès
532164194a
download: Keep a single copy of the mirror file.
...
This saves ~10% on 'guix build inkscape -Sd'.
* guix/download.scm (%mirror-file): New variable.
(url-fetch): Remove #:mirrors parameter.
Remove 'mirror-file'; refer to '%mirror-file' instead.
2015-08-29 23:56:47 +02:00
Ludovic Courtès
3d20ebd6cb
refresh: Add missing newline in warning message.
...
Reported by karhunkynsi on #guix.
* guix/scripts/refresh.scm (update-package): Add missing newline in
string literal passed to 'warning'.
2015-08-29 23:56:47 +02:00
Ludovic Courtès
ced200328c
download: Keep only 2 store items for all the downloads.
...
This significantly reduces churn in the store. It also reduces run time
of 'guix build inkscape -Sd' by ~10%.
* guix/download.scm (url-fetch)[mirror-file]: New variable.
[builder]: Get URL from the "guix download url" env. var. Get the mirrors
from MIRROR-FILE. Pass #:script-name and #:env-vars to 'gexp->derivation'.
2015-08-29 01:22:54 +02:00
Ludovic Courtès
0309e1b0ba
gexp: Add #:script-name parameter to 'gexp->derivation'.
...
* guix/gexp.scm (gexp->derivation): Add #:script-name parameter.
* doc/guix.texi (G-Expressions): Document it.
2015-08-29 01:22:54 +02:00
Ludovic Courtès
b6c6105cac
monads: Inline the procedure returned by liftN.
...
* guix/monads.scm (define-lift): Turn into a macro that open-codes the result
of its lift.
2015-08-29 01:22:54 +02:00
David Thompson
3aae8145a7
import: Add Ruby gem importer.
...
* gnu/scripts/import.scm (importers): Add "gem".
* gnu/import/gem.scm: New file.
* gnu/scripts/import/gem.scm: New file.
* Makefile.am (MODULES): Add them.
* guix.texi ("invoking guix import"): Document it.
2015-08-27 19:45:06 -04:00
David Thompson
140b304815
import: pypi: Move generally useful procedures to utils module.
...
* guix/import/pypi.scm (make-pypi-sexp): Factorize license to symbol
conversion code.
(string->license, snake-case, guix-hash-url): Move from here...
* guix/import/utils.scm: ... to here.
(license->symbol): New procedure.
2015-08-27 18:02:35 -04:00
Ludovic Courtès
888569161c
Add 'guix graph'.
...
* guix/scripts/graph.scm, tests/graph.scm, tests/guix-graph.sh,
doc/images/coreutils-bag-graph.dot, doc/images/coreutils-graph.dot: New
files.
* Makefile.am (MODULES): Add guix/scripts/graph.scm.
(SH_TESTS): Add tests/guix-graph.sh.
(SCM_TESTS): Add tests/graph.scm.
* doc.am (DOT_FILES, DOT_VECTOR_GRAPHICS): New variables.
(EXTRA_DIST): Use them.
(dist_infoimage_DATA): Use $(DOT_FILES).
(pdf-local, info-local, ps-local): Likewise.
* doc/guix.texi (Packages with Multiple Outputs): Add cross-reference to 'guix
graph'.
(Invoking guix gc): Likewise.
(Invoking guix graph): New section.
2015-08-27 00:49:23 +02:00
Ludovic Courtès
c2b8467645
gexp: Add 'lower-object'.
...
* guix/gexp.scm (lower-object): New procedure.
(lower-inputs, lower-references, gexp->sexp): Use it.
* tests/gexp.scm ("lower-object"): New test.
* doc/guix.texi (G-Expressions): Document it.
2015-08-27 00:49:23 +02:00
Mark H Weaver
6bf99bac95
guix package: -s shows outputs.
...
* guix/ui.scm (package->recutils): Print "outputs:".
2015-08-24 20:22:36 -04:00
Ludovic Courtès
fa96048f0a
profiles: Remove duplicate entries in 'etc/profile'.
...
Reported by Andy Wingo
at <http://lists.gnu.org/archive/html/guix-devel/2015-08/msg00109.html >.
* guix/profiles.scm (profile-derivation)[builder]: Delete duplicates in
SEARCH-PATHS.
2015-08-20 19:12:36 +02:00
Ricardo Wurmus
2824146bd8
guix: Add Sleepycat license.
...
* guix/licenses.scm (sleepycat): New variable.
2015-08-20 08:32:28 +02:00
David Thompson
0d2794005c
scripts: package: Add --install-from-file option.
...
* guix/scripts/package.scm (show-help): Add help text for --install-from-file
option.
(%options): Add --install-from-file option.
* tests/guix-package.sh: Test it.
* doc/guix.texi ("invoking guix package"): Document it.
* doc/package-hello.scm: New file.
* doc.am (EXTRA_DIST): Add it.
2015-08-19 22:23:59 -04:00
Ludovic Courtès
83bde59fb3
size: Get the item's size from the daemon rather than compute it.
...
This removes all I/O, which obviously makes things faster.
* guix/scripts/size.scm (file-size, store-item-exists?): Remove.
(query-path-info*): New procedure.
(file-size*): Rename to...
(file-size): ... this; adjust caller. Use 'query-path-info*' instead of
'file-size'.
2015-08-19 11:39:18 +02:00
Ludovic Courtès
40a7d4e58b
lint: Add 'formatting' checker.
...
* guix/scripts/lint.scm (report-tabulations, report-trailing-white-space,
report-long-line, report-formatting-issues, check-formatting): New
procedures.
(%formatting-reporters): New variable.
(%checkers): Add 'formatting' checker.
* tests/lint.scm ("formatting: tabulation", "formatting: trailing white
space", "formatting: long line", "formatting: alright"): New tests.
* doc/guix.texi (Invoking guix lint): Mention the 'formatting' checker.
2015-08-19 11:39:17 +02:00
David Thompson
e83c6d009f
build: ruby: Rewrite build system to use gem archives.
...
Co-Authored-By: Pjotr Prins <pjotr.public01@thebird.nl>
* guix/build-system/ruby.scm (lower): Remove git dependency.
(rubygems-uri): New procedure.
* guix/build/ruby-build-system (gitify): Delete.
(unpack): Use 'gem unpack' utility.
(check): Add docstring.
(build): Repack modified gem.
(install): Rebuild unpacked gem and install it.
(%standard-phases): Remove gitify and build phases.
* gnu/packages/ruby.scm (ruby-hoe, ruby-rake-compiler, ruby-i18n,
ruby-rspec-support, ruby-rspec-core, ruby-diff-lcs-for-rspec,
ruby-rspec-expectations, ruby-rspec-mocks, ruby-rspec, bundler,
ruby-useragent, ruby-bacon, ruby-arel, ruby-connection-pool,
ruby-net-http-persistent, ruby-minitest, ruby-minitest-sprint,
ruby-minitest-bacon, ruby-daemons, ruby-git, ruby-slop,
ruby-multipart-post): Convert to new build system.
* doc/guix.texi (ruby-build-system): Document the gem archive requirement.
2015-08-18 17:58:13 -04:00
David Thompson
39e336b5c8
syscalls: setns: Skip binding if there is no such C function.
...
On systems with a glibc prior to 2.14, the 'setns' function is not available.
Thanks to Eric Bavier for reporting the issue.
* guix/build/syscalls.scm (setns): Wrap with 'false-if-exception'.
2015-08-17 14:51:18 -04:00
Alex Kost
1d3eaef90c
import: elpa: Fix typo.
...
Reported by Eric Dvorsak <eric@dvorsak.fr> on #guix.
* guix/scripts/import/elpa.scm (%default-options): Remove redundant
quote which led to an error if --archive option was not specified.
2015-08-10 15:46:10 +03:00
Mark H Weaver
9f6509c655
python-build-system: Fix 'get-python-version'.
...
* guix/build/python-build-system.scm (get-python-version): Rewrite to handle
multiple-digit version number components.
2015-08-06 16:33:54 -04:00
Federico Beffa
40aee1a133
build: emacs: Fix bug and improvement robustness.
...
* guix/build/emacs-build-system.scm (emacs-inputs): Fix matching pattern.
(patch-el-files): Improve regexp pattern.
2015-08-01 12:37:13 +02:00
Federico Beffa
6544aba5fc
import: elpa: Improve error message reporting.
...
* guix/import/elpa.scm (filter-dependencies): Fix bug.
(call-with-downloaded-file): Add optional parameter 'error-thunk'.
(fetch-package-description): Use it.
2015-08-01 12:36:21 +02:00
Ludovic Courtès
e7f5691d45
syscalls: Add 'network-interfaces', which wraps libc's 'getifaddrs'.
...
Based on discussions with Rohan Prinja <rohan.prinja@gmail.com>.
* guix/build/syscalls.scm (<interface>): New record type.
(write-interface, values->interface, unfold-interface-list,
network-interfaces, free-ifaddrs): New procedures.
(ifaddrs): New C struct.
(%struct-ifaddrs-type, %sizeof-ifaddrs): New macros.
* tests/syscalls.scm ("network-interfaces returns one or more interfaces",
"network-interfaces returns \"lo\""): New tests.
2015-07-25 14:43:45 +02:00
Ludovic Courtès
573b4c1ff3
syscalls: 'define-c-struct' properly align reads.
...
* guix/build/syscalls.scm (alignof*, align): New macros.
(write-types, read-types): Use 'align' to compute the actual offset to
read/write a value of TYPE0.
2015-07-25 14:43:45 +02:00
Ludovic Courtès
3ca337699a
syscalls: 'read-socket-address' gracefully handles unsupported families.
...
* guix/build/syscalls.scm (PF_PACKET, AF_PACKET): New variables.
(read-socket-address): Make 'index' optional. Return (vector FAMILY) when
FAMILY is neither AF_INET nor AF_INET6.
2015-07-25 14:43:44 +02:00
Ludovic Courtès
4a30e84e61
syscalls: 'define-c-struct' distinguishes pointers from integers.
...
* guix/build/syscalls.scm (read-type): Add special-case for when TYPE is '*.
2015-07-25 14:43:44 +02:00
Ludovic Courtès
b89e74054e
syscalls: Rename 'network-interfaces' and 'all-network-interfaces'.
...
* guix/build/syscalls.scm (network-interfaces): Rename to...
(network-interface-names): ... this.
(all-network-interfaces): Rename to...
(all-network-interface-names): ... this.
* gnu/services/networking.scm (dhcp-client-service): Adjust accordingly.
* tests/syscalls.scm ("all-network-interfaces"): Rename to...
("all-network-interface-names"): ... this, and adjust accordingly.
("network-interfaces"): Rename to...
("network-interface-names"): ... this, and adjust accordingly.
2015-07-25 14:43:44 +02:00
Ludovic Courtès
69b4ffcfbd
Fix typos in translatable strings.
...
Reported by Anders Jonsson <anders.jonsson@norsjovallen.se>.
* gnu/packages/backup.scm, gnu/packages/databases.scm,
gnu/packages/linux.scm, gnu/packages/perl.scm,
gnu/packages/web.scm, guix/scripts/lint.scm,
guix/scripts/publish.scm: Fix typos in translatable strings.
2015-07-23 09:42:23 +02:00
Ludovic Courtès
d490d06e0f
size: Add '--substitute-urls' option.
...
* guix/scripts/size.scm (show-help, %options): Add --substitute-urls.
(%default-options): Add 'substitute-urls'.
(guix-size): Honor it.
* doc/guix.texi (Invoking guix size): Document it.
2015-07-22 22:56:41 +02:00
Ludovic Courtès
1eabf4ec63
derivations: Improve docstring of 'substitution-oracle'.
...
* guix/derivations.scm (substitution-oracle): Improve docstring.
2015-07-22 22:56:41 +02:00
Ludovic Courtès
b59df2434a
derivations: Improve complexity of 'substitution-oracle'.
...
* guix/derivations.scm (substitution-oracle): Use a final 'concatenate'
instead of repeated 'append's.
2015-07-22 22:56:41 +02:00
Ludovic Courtès
2c59cbc26a
import: hackage: Remove reference to unbound variable.
...
* guix/scripts/import/hackage.scm (guix-import-hackage): Fix error message for
imports from stdin, which referred to unbound variable 'package-name'.
2015-07-22 22:56:41 +02:00
Ludovic Courtès
1acd8d22af
size: Remove leftover 'pk'.
...
* guix/scripts/size.scm (profile->page-map): Remove leftover 'pk'.
2015-07-22 22:56:41 +02:00
Ludovic Courtès
dee2b3bdb9
import: pypi: Improve warning message.
...
* guix/import/pypi.scm (guess-requirements): Add missing newline and quotes in
warning.
2015-07-21 21:14:33 +02:00
Mark H Weaver
e170571887
Merge branch 'core-updates'
2015-07-19 20:28:56 -04:00
Ludovic Courtès
94080a7263
publish: Do not load archive content in memory.
...
Previously, before replying to a /nar/* request, 'guix publish' would first
build up the whole nar into memory (as a consequence of
<http://bugs.gnu.org/21093 >), which obviously doesn't scale.
* guix/scripts/publish.scm (render-nar): Return STORE-PATH instead of a
procedure that calls 'write-file'.
(sans-content-length): New procedure.
(http-write): For 'x-nix-archive', don't call '%http-write'. Instead, call
'write-file' right from here, using BODY as the file name.
2015-07-20 00:37:47 +02:00
Mark H Weaver
1b4e48d498
Merge branch 'master' into core-updates
2015-07-19 18:12:34 -04:00
Ludovic Courtès
7f23fb0088
publish: Serve /nar requests in a separate thread.
...
* guix/scripts/publish.scm (%http-write): New variable.
(http-write): New procedure.
(concurrent-http-server): New variable.
(run-publish-server): Use it.
2015-07-19 23:59:29 +02:00
pjotrp
6e9f2913ba
build-system/ruby: Add #:gem-flags parameter.
...
* guix/build-system/ruby.scm (build): add 'gem-flags' key
* guix/build/ruby-build-system.scm (build): use 'gem-flags' key
* doc/guix.texi (Build Systems): Mention #:gem-flags.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2015-07-18 17:15:03 +02:00
Ludovic Courtès
3b307162e8
publish: Write hashes in nix-base32 format.
...
* guix/scripts/publish.scm (narinfo-string): Use
'bytevector->nix-base32-string', not 'bytevector->base32-string'.
2015-07-18 00:14:04 +02:00
Ludovic Courtès
13f0c6ed41
syscalls: Struct deserializer can now return arbitrary objects.
...
* guix/build/syscalls.scm (read-types): Add RETURN and VALUES parameters.
(define-c-struct): Add WRAP-FIELDS parameter and pass it to 'read-types'.
(sockaddr-in, sockaddr-in6): Add first argument that uses
'make-socket-address'.
(read-socket-address): Remove 'match' on the result of 'read-sockaddr-in'
and 'read-sockaddr-in6'.
2015-07-17 23:31:29 +02:00
Ludovic Courtès
4f7b564adb
download: Remove spurious warning about 'https_proxy'.
...
* guix/build/download.scm (open-connection-for-uri)[with-https-proxy]: Warn
about 'https_proxy' only when 'getenv' returns a non-empty string.
2015-07-17 22:31:12 +02:00