* pre-inst-env.in (abs_top_srcdir, abs_top_builddir): New variables.
Use them instead of @abs_top_srcdir@ and @abs_top_builddir@.
This fixes the "package-field-location, relative file name" test in
'make distcheck'.
* doc/guix.texi (System Configuration): Add paragraph on upgrades and
rollback, moved from "Using the Configuration System".
(Using the Configuration System): Change variable name to
'komputilo'. Add xref to "Package Modules".
* gnu/system.scm (etc-directory): Add 'locale' and 'timezone'
parameters. Set 'LC_ALL', 'TZ', and 'TZDIR' in /etc/profile.
(operating-system-derivation): Adjust call accordingly.
* gnu/system/vm.scm (%demo-operating-system): Change locale to
'en_US.UTF-8'. Add TZDATA to 'packages'.
* gnu/packages/compression.scm : Zlib uses a non-standard
way of configuring for cross-compilation. Thanks to Ludovic
for showing me the correct way to fix this.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* doc/guix.texi (Features): Add xref to "Using the Configuration
System".
(System Configuration, Using the Configuration System, Defining
Services): New nodes.
* gnu/system.scm (union): Allow (PACKAGE OUTPUT), (PACKAGE), and
PACKAGE.
(<operating-system>)[packages]: Make the default a list of package?
objects.
* gnu/system/vm.scm (%demo-operating-system): Likewise. Add a few
packages.
* gnu/system/shadow.scm (<user-account>)[inputs]: New field.
(passwd-file): Bind the 'shell' field of each account.
* gnu/system/vm.scm (%demo-operating-system): Remove 'shell' field.
* gnu/system/dmd.scm (guix-build-accounts): Store a monadic value in
'shell'. Add 'inputs' field.
* gnu/system.scm (operating-system-derivation): Remove 'shell' field for
'root' account. Add all the 'user-account-inputs' to EXTRAS.
* gnu/system/vm.scm (lower-inputs): Move to monads.scm.
(qemu-image): Don't add GRUB-CONFIGURATION to the INPUTS-TO-COPY.
(union, file-union, etc-directory): Move to gnu/system.scm.
(%demo-operating-system): New variable.
(system-qemu-image): Add 'os' parameter. Rewrite in terms of
'operating-system-derivation'.
* guix/monads.scm (lower-inputs): New procedure.
* gnu/system/grub.scm (grub-configuration-file): Change 'entries' to be
a plain list instead of a list of monadic values.
* gnu/system.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
* gnu/packages/web.scm (perl-http-daemon): Propagate inputs perl-http-date,
perl-http-message and perl-lwp-mediatypes; drop input perl-uri
(propagated by perl-http-message).
* gnu/packages/web.scm (perl-http-cookies): Propagate inputs perl-http-date
and perl-http-message; drop input perl-uri (itself propagated from
perl-http-message).
* gnu/system/shadow.scm (guix-build-accounts): Move to...
* gnu/system/dmd.scm (guix-build-accounts): ... here.
(<service>)[user-accounts, user-groups]: New fields.
(guix-service): New #:build-user-id and #:build-accounts parameters.
Use 'guix-build-accounts' and set the 'user-accounts' and
'user-groups' fields accordingly.
* gnu/system/vm.scm (system-qemu-image): Remove use of
'guix-build-accounts'. Augment ACCOUNTS and GROUPS from what SERVICES
demand.
* HACKING (Building from Git): As a follow-up to ff1cbb9, update the
error reported when pkg.m4 is missing. Suggested by
John Darrington <john@darrington.wattle.id.au>.
* gnu/system/vm.scm (etc-directory): Remove 'resolv.conf'.
(system-qemu-image): Use 'static-networking-service' with
#:name-servers. Don't populate the image with /etc/resolv.conf.
* gnu/system/dmd.scm (static-networking-service): Add #:name-servers
parameter. Use it to populate /etc/resolv.conf.
* gnu/system/vm.scm (expression->derivation-in-linux-vm)[lower-inputs]:
Move to top-level...
(lower-inputs): ... here. New variable.
(file-union, etc-directory): New procedures.
(system-qemu-image): Use 'etc-directory'; remove redundant code, and
register the result of 'etc-directory' as a GC root.
* gnu/system/dmd.scm (mingetty-service): Add 'stop' field.
(nscd-service): Run with '--foreground'. Change 'stop' to use
'make-kill-destructor'.
(syslog-service): Run with '--no-detach'; change 'stop' similarly.
(guix-service): Likewise for 'stop'.
(static-networking-service): Remove 'sleep' call from 'start'. Change
'stop' to return #f when networking was actually stopped.
* gnu/packages/math.scm (pspp): Removed the --without-gui flag
and added the necessary inputs to build it.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* guix/build-system/cmake.scm (cmake-build): Change 'out-of-source?' to
default to #t.
* guix/build/cmake-build-system.scm (configure): Add 'out-of-source?'
keyword parameter and honor it.
* gnu/system/dmd.scm (<service>): Add 'documentation' field.
(host-name-service, mingetty-service, nscd-service, syslog-service,
static-networking-service): Provide a 'documentation' value.
(dmd-configuration-file): Use it.
* gnu/packages/patches/qemu-make-4.0.patch: New file.
* gnu/packages/qemu.scm (qemu-headless): Use it. Upgrade to 1.6.1.
* gnu-system.am (dist_patch_DATA): Add it.
* guix/scripts/substitute-binary.scm (n-par-map*): New procedure.
(guix-substitute-binary): Use it instead of 'n-par-map'.
Reported by Nikita Karetnikov and Eric Bavier.
* gnu/packages/gettext.scm (gettext): Rename to...
(gnu-gettext): ... this. This is used to work around the circular
dependency introduced in commit c42a4b7, which users with a #:renamer
cannot cope with.
* gnu/packages/acl.scm, gnu/packages/attr.scm, gnu/packages/cdrom.scm,
gnu/packages/fdisk.scm, gnu/packages/gkrellm.scm, gnu/packages/glib.scm,
gnu/packages/gnunet.scm, gnu/packages/grub.scm, gnu/packages/linux.scm,
gnu/packages/maths.scm, gnu/packages/nano.scm, gnu/packages/parted.scm,
gnu/packages/system.scm, gnu/packages/version-control.scm,
gnu/packages/vpn.scm, gnu/packages/w3m.scm, gnu/packages/wget.scm:
Adjust accordingly.
* guix/ui.scm (read/eval): New procedure.
(read/eval-package-expression): Use it.
* guix/scripts/build.scm (derivations-from-package-expressions): Rename to...
(derivation-from-expression): ... this. Accept procedures, under the
assumption that they are monadic thunk.
(show-help): Adjust accordingly.
(guix-build): Ditto.
* tests/guix-build.sh: Add test.
* doc/guix.texi (Invoking guix build): Augment description of '-e'.
* doc/guix.texi (Introduction): Use "containers" instead of "chroots".
(Invoking guix-daemon): Add @cindex entries. Mention the Linux
container features.
(Features): Add sentence on build reproducibility.
* gnu/packages/maths.scm (pspp): Add cairo and further necessary inputs.
* gnu/packages/patches/pspp-tests.patch: New file, thanks to
John Darrington <john@darrington.wattle.id.au>.
* gnu-system.am (dist_patch_DATA): Register patch.
* gnu/packages/gcc.scm (gcc-4.7): Add snippet to add -lgcc_s to the
"lib" spec. Remove --as-needed trick from 65d3b7c: it had no effect
in cases where we have !static-libgcc && !shared-libgcc.
* gnu/packages/base.scm (glibc): Add 'snippet' to set use_ldconfig=no.
Remove "glibc-no-ld-so-cache.patch"; that patch would still build
'ldconfig', and ld.so would still contain ld.so.cache-related code,
and would look for info in /etc/etc/ld.so.cache (sic).
* gnu/packages/patches/glibc-no-ld-so-cache.patch: Remove.
* gnu-system.am (dist_patch_DATA): Adjust accordingly.
Reported by Mark H. Weaver <mhw@netris.org>.
* tests/packages.scm ("package-source-derivation, snippet"): Change to
"guile-2.0.9.tar.xz".
* tests/union.scm ("union-build"): Check or include/c++ being a symlink.
Reported by Mark H. Weaver <mhw@netris.org>.
* README (Installing Guix from Guix): Explicitly mention $PATH
separately. Mention $ACLOCAL_PATH, not $ACLOCAL. Give the exact
command to install the dependencies. Remove mention of
$GUIX_LD_WRAPPER_ALLOW_IMPURITIES, which is no longer needed.
* build-aux/download.scm (file-name->uri): Update URL to /20131110.
* gnu-system.am (nodist_bootstrap_x86_64_linux_DATA,
nodist_bootstrap_i686_linux_DATA): Change base name to
'guile-2.0.9.tar.xz'.
(gnu/packages/bootstrap/x86_64-linux/guile-2.0.9.tar.xz,
gnu/packages/bootstrap/i686-linux/guile-2.0.9.tar.xz): New targets.
(gnu/packages/bootstrap/x86_64-linux/guile-2.0.7.tar.xz,
gnu/packages/bootstrap/i686-linux/guile-2.0.7.tar.xz): Remove.
(gnu/packages/bootstrap/mips64el-linux/guile-2.0.9.tar.xz): Update
hash.
* gnu/packages/base.scm (gcc-boot0): Base upon GCC-4.8. Enable C++, and
add a few --disable flags. Remove MPFR workaround.
(cross-gcc-wrapper): Base upon GCC-4.8. Wrap both 'gcc' and 'g++'.
(libstdc++): New variable.
(gcc-final): Add it as an input; pass corresponding -I and -L flags.
* gnu/packages/bootstrap.scm (%bootstrap-guile): Always use
"guile-2.0.9.tar.xz.
(%bootstrap-coreutils&co): Update hashes.
(%bootstrap-binutils): Update URL and hashes.
(%bootstrap-glibc): Likewise.
(%bootstrap-gcc): Likewise.
* gnu/packages/gcc.scm (gcc-4.7): Add LDFLAGS.
Add --disable-libstdcxx-pch.
Modify the GNU_USER*_SPEC macros from gnu-user*.h instead of the raw
_SPEC macros.
* guix/scripts/substitute-binary.scm (with-timeout): Update comment to
mention the fix's commit ID.
(fetch): In the 'with-timeout' handler, close PORT only one Guile
versions < 2.0.9.39. Before that, on Guile >= 2.0.9.39, the HTTP
client would end up trying to read from a closed file descriptor.
* guix/derivations.scm (map-derivation)[input->output-paths]: Allow
non-derivation inputs.
Allow replacements to be store files. Replace in SOURCES too.
* tests/derivations.scm ("map-derivation, sources"): New test.
* guix/packages.scm (package-source-derivation): Don't let indirect
store paths pass through.
* tests/packages.scm ("package-source-derivation, indirect store path"):
New test.
* guix/scripts/substitute-binary.scm (%lookup-threads): New variable.
(guix-substitute-binary): Use 'n-par-map' instead of 'par-map' for
batch 'lookup-narinfo' calls.
* guix/packages.scm (<origin>): Add 'snippet', 'modules', and
'imported-modules' fields.
(patch-and-repack): Make 'inputs' a keyword parameter. Add 'snippet',
'modules', and 'imported-modules' parameters. Accept SOURCE as a raw
file name. Insert SNIPPET in BUILDER. Pass IMPORTED-MODULES to
'build-expression->derivation'.
(package-source-derivation): Pass the extra arguments to
'patch-and-repack'.
* tests/packages.scm ("package-source-derivation, snippet"): New test.
* doc/guix.texi (Defining Packages): Mention the 'patches' and 'snippet'
fields.
(Invoking guix build): Tell that --source has patches and snippets
applied.
(Software Freedom): Mention packages that contain non-free code.
Suggested by Mark H. Weaver <mhw@netris.org>.
* doc/guix.texi (Invoking guix package): Spell out the --no-substitutes
documentation.
(Invoking guix build): Use the more complete --no-substitutes
documentation.
(Invoking guix-daemon): Explain the interaction with what clients ask
for.
* tests/derivations.scm ("build-expression->derivation and
max-silent-time"): Use STORE instead of %STORE. Change BUILDER to
succeed by default. Return #f when no exception is raised.
* tests/derivations.scm ("build derivation with 1 source",
"derivation with local file as input",
"derivation with a fixed-output input",
"multiple-output derivation",
"multiple-output derivation, non-alphabetic order",
"user of multiple-output derivation"): Add %BASH as an input, needed
in chroot builds.
* gnu/packages/patches/mit-krb5-init-fix.patch: New file.
* gnu/packages/mit-krb5.scm (mit-krb5): Apply patch at the end of the custom
unpack phase.
* gnu-system.am (dist_patch_DATA): Add patch.
Fixes <http://bugs.gnu.org/15756>.
* guix/profiles.scm (<manifest-pattern>): New record type.
(remove-manifest-entry): Remove.
(entry-predicate, manifest-matching-entries): New procedures.
(manifest-remove): Accept a list of <manifest-pattern>.
(manifest-installed?): Replace 'name' parameter by 'pattern', a
<manifest-pattern>.
* guix/scripts/package.scm (options->removable): Return a list of
<manifest-pattern>.
(guix-package)[process-action]: Use 'manifest-matching-entries' to
compute the list of packages to remove.
* tests/profiles.scm: New file.
* Makefile.am (SCM_TESTS): Add it.
* guix/scripts/package.scm (options->removable): New procedure.
(guix-package)[process-actions]: Use it. Rename 'remove*' to 'remove'
and 'install*' to 'install'.
* guix/ui.scm (package-specification->name+version+output): New
procedure.
* guix/scripts/package.scm (specification->package+output): Use it.
* tests/ui.scm ("package-specification->name+version+output"): New test.
GCC 4.8 relies on C++ headers (<cstring>, <iosfwd>, etc.) that are
missing from the current bootstrap GCC.
* gnu/packages/base.scm (gcc-boot0, cross-gcc-wrapper, gcc-final): Base
on GCC-4.7. This reverts part of commit 9ae7cee.
* guix/scripts/package.scm (<manifest-entry>): Add 'inputs' field.
(manifest=?, lower-input): New procedure.
(profile-derivation)[builder]: Add #:log-port argument to
'union-build'.
[ensure-valid-input]: Remove.
Add each entry's inputs to the input list.
(options->installable): Return just the list of entries.
[package->manifest-entry]: Set 'inputs' field.
[canonicalize-deps]: Rename to...
[deduplicate]: ... this. Remove input fiddling.
(guix-package)[process-actions]: Use 'manifest=?' to compare the new
and old manifests. Pass directly PROF-DRV to 'show-what-to-build'.
Pass #:print-build-trace #f to 'set-build-options'.
* guix/scripts/package.scm (%user-environment-directory): Rename to...
(%user-profile-directory): ... this. Update users accordingly.
(profile-derivation): Use the term "profile" instead of "user
environment", and use "profile" as the derivation name.
* guix/scripts/package.scm (<manifest>, <manifest-entry>): New record
types.
(make-manifest, read-manifest, manifest->sexp, sexp->manifest,
read-manifest, write-manifest, remove-manifest-entry, manifest-remove,
manifest-installed?): New procedures.
(profile-derivation): Take a manifest as the second parameter. Use
'manifest->sexp'. Expect <manifest-entry> objects instead of
"tuples". Adjust callers accordingly.
(search-path-environment-variables): Changes 'packages' parameter to
'entries'. Rename 'package-in-manifest->package' to
'manifest-entry->package'; expect <manifest-entry> objects.
(display-search-paths): Rename 'packages' to 'entries'.
(options->installable): Change 'installed' to 'manifest'. Have
'canonicalize-deps' return name/path tuples instead of raw packages.
Rename 'package->tuple' to 'package->manifest-entry'. Use
<manifest-entry> objects instead of tuples.
(guix-package)[process-actions]: Likewise. Rename 'packages' to
'entries'.
[process-query]: Use 'manifest-entries' instead of
'manifest-packages'.
* guix/scripts/package.scm (find-package): Rename to...
(specification->package+output): ... this. Rename 'name' parmameter
to 'spec'. Return a package and output name instead of a tuple.
(options->installable): New procedure
(guix-package)[process-actions]: Use it, and remove corresponding
code.
Previously references to '%standard-phases' in builder-side code would
refer to the wrong one.
* guix/build-system/cmake.scm (cmake-build): Remove (guix build
gnu-build-system) from the default MODULES value.
* guix/build-system/perl.scm (perl-build): Likewise.
Fixes <http://bugs.gnu.org/15640>.
Reported by Eric Bavier <ericbavier@gmail.com>.
* doc.am (EXTRA_DIST): Add doc/images/bootstrap-graph.pdf to the
distribution.
(pdf-local, info-local, ps-local): Prepend $(top_srcdir) to the image
file names.
* gnu/packages/gnome.scm (evince): Add #:phases argument. Remove "perl"
and "perl-xml-parser" inputs since they are not directly needed; move
"intltool" to 'native-inputs'.
* gnu/packages/base.scm (gnu-make): Update to 4.0. Add Guile as an input.
(gnu-make-boot0): Patch 'build.sh' so it does not attempt to build 'guile.c'.
(gnu-make-final): New variable.
(%final-inputs): Use it.
(glibc): Add 'glibc-make-4.0.patch'.
* gnu/packages/patches/glibc-make-4.0.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
Reported at <http://bugs.gnu.org/15608>.
* guix/build/utils.scm (find-files): Change the 'error' procedure to
return RESULT. Before we would end up with an improper list.
* guix/records.scm (define-record-type*): Wrap field bindings in a
'let*', not in a 'letrec*', which turned out to be pointlessly
inconvenient.
* tests/records.scm: Adjust test names accordingly.
* scripts/guix.in (config-lookup): Add "localedir" entry.
(run-guix-main): Add call to 'bindtextdomain'.
* guix/ui.scm (initialize-guix): Use %GETTEXT-DOMAIN instead of a
literal.
* gnu/packages/linux.scm (linux-libre-headers):
When (%current-target-system) is true, pass it as the argument to
'build-phase'. This fixes cross-compilation.
Reported by Mark H. Weaver <mhw@netris.org>.
* build-aux/sync-synopses.scm: Rename to...
* build-aux/sync-descriptions.scm: ... this. Compare the value of
'gnu-package-doc-description' and 'package-description' and report any
mismatch.
* Makefile.am (EXTRA_DIST): Adjust accordingly.
(sync-synopses): Rename to...
(sync-descriptions): ... this.
* guix/gnu-maintenance.scm (%gnumaint-base-url): New variable.
(%package-list-url): Use it.
(%gsrc-package-list-url): Remove.
(%package-description-url): New variable.
(official-gnu-packages): Change to use %PACKAGE-DESCRIPTION-URL
instead of %GSRC-PACKAGE-LIST-URL. Adjust recutils field names
accordingly.
See <https://lists.gnu.org/archive/html/guix-devel/2013-09/msg00137.html>
for the rationale.
* guix/packages.scm (<origin>)[patches, patch-flags, patch-inputs,
patch-guile]: New fields.
(%standard-patch-inputs, default-guile, patch-and-repack): New
procedures.
(package-source-derivation): When 'patches' is non-empty, call
'patch-and-repack'.
* guix/utils.scm (file-sans-extension): New procedure.
* guix/monads.scm (<monad>): Turn in a raw SRFI-9 record type.
(define-monad): New macro.
(with-monad): Add a case for when MONAD is a macro.
(identity-return, identity-bind, store-return, store-bind): Inline.
(%identity-monad, %store-monad): Use 'define-monad'.
* tests/monads.scm ("monad?"): New test.
* guix/monads.scm: New file.
* tests/monads.scm: New file.
* Makefile.am (MODULES): Add guix/monads.scm.
(SCM_TESTS): Add tests/monads.scm.
* doc/guix.texi (The Store Monad): New node.
(The Store): Reference it.
* gnu/packages/glib.scm (itstool): Add propagated input python-2; it is needed
to rewrite the shebang in the output python script and must be propagated
so that PYTHONPATH gets set when using itstool; and libxml2, imported as a
module by the script.
* gnu/packages/glib.scm (glib): Update to 2.38.0 and drop rewriting of GTESTER.
* gnu/packages/patches/glib-tests-homedir.patch: Update patch for 2.38.0.
* gnu/packages/patches/glib-tests-desktop.patch: Update patch for 2.38.0 and
drop test dbus-appinfo.
* gnu/packages/bison.scm (bison): Move FLEX to 'inputs', and remove the
hack that turned off its test suite.
* gnu/packages/flex.scm (flex): Add 'bison-for-tests' in 'inputs', and
use that to run the tests.
* gnu/packages/bison.scm (bison): Update to 3.0. Make Perl a native
input. Add a variant of Flex as a native input. Use #:export instead
of 'define-public'.
* gnu/packages/flex.scm (flex): Use #:export instead of 'define-public'.
Fixes <http://bugs.gnu.org/15187>.
Reported by Mark H. Weaver <mhw@netris.org>.
* gnu/packages/linux.scm (module-init-tools): Remove reference to
Gentoo's pre-built man pages and 'unpack-man-pages' phase. Add
'fake-docbook' phases.
* gnu/system/dmd.scm (static-networking-service)[start]: Sleep before
running 'route', to leave time for the interface to come up.
[stop]: Run "route del -net default".
* gnu/system/vm.scm (qemu-image): Change the store's mode to #o1775.
Support 'populate' clauses that specify a UID and GID.
(system-qemu-image): Make sure /nix/store has owner 'root' and group
'guixbuild'. Set the right owner for /home/guest. Create
/var/nix/profiles/per-user/{root,guest}.
* gnu/system/shadow.scm (guix-build-accounts): New procedure.
* gnu/system/vm.scm (system-qemu-image): Use it. Add the "guixbuild"
group.
* gnu/system/dmd.scm (guix-service): Add 'builder-group' parameter.
Pass 'guix-daemon' the '--build-users-group' option.
* scripts/guix.in: Change '-s' to '--no-auto-compile'. This avoids
annoying messages about auto-compilation, and avoids permission denied
issues when running without write access in the usual places.
* gnu/system/vm.scm (system-qemu-image): Add a "guest" user and a
"users" user group. Make /home/guest. Add /etc/group. Update
/etc/issue to mention it.
* guix/build-system/trivial.scm (trivial-build): When SOURCE is true,
add it to INPUTS.
(trivial-cross-build): Likewise.
* tests/packages.scm ("trivial with source"): New test.
* guix/scripts/package.scm (switch-to-previous-generation): New function.
(roll-back): Use the new function instead of 'switch-link'.
(show-help): Add '--delete-generations'.
(%options): Likewise.
(guix-package)[process-actions]: Add 'current-generation-number',
'display-and-delete', and 'delete-generation'. Add support for
'--delete-generations', and reindent the code.
* tests/guix-package.sh: Test '--delete-generations'.
* doc/guix.texi (Invoking guix-package): Document '--delete-generations'.
* gnu/system/vm.scm (system-qemu-image): Use
'static-networking-service'. Add /etc/resolv.conf. Add Inetutils to
the profile.
* gnu/system/dmd.scm (static-networking-service): New procedure.
* gnu/system/dmd.scm (host-name-service): New procedure.
(mingetty-service): Require the 'host-name' service.
* gnu/system/vm.scm (system-qemu-image): Add the 'host-name' service.
Set PS1 in /etc/bashrc to something sensible.
* gnu/system/vm.scm (system-qemu-image): Build a 'motd' and an 'issue'
file. Pass 'unix-pam-service' that motd. Have /etc/issue point to
the 'issue' file.
* gnu/system/vm.scm (qemu-image): Add Guix as an input when
INITIALIZE-STORE?.
(union): New procedure.
(system-qemu-image): Use it. Build /etc/profile. Pass PROFILE among
#:inputs-to-copy instead of listing all the individual profiles.
Remove explicit 'build-derivations' call.
* gnu/system/vm.scm (expression->derivation-in-linux-vm)[input-alist]:
Add case for derivation? objects.
Same for #:inputs values.
(qemu-image)[input->name+derivation]: Likewise.
* guix/scripts/package.scm (guix-package)[process-query]: Show that a
generation is the current one if the profile points to it.
* tests/guix-package.sh: Test it.
* guix/scripts/package.scm (guix-package)[process-query]: Change
'list-generation' to not list the zeroth generation.
* tests/guix-package.sh: Test it.
* doc/guix.texi (Invoking guix package): Document it, and use the
right term when talking about generations.
* guix/scripts/package.scm (guix-package)[process-query]: Exit with 1
when a generation does not exist or the profile points to the zeroth
generation.
* tests/guix-package.sh: Test the former case.
* gnu/packages/fontutils.scm (fontconfig): Add gs-fonts as an input and
register it in the configuration file; so any porgram using fontconfig
should at least have the gs-fonts at its disposal.
This fixes a bug whereby 'guix-register' would bail out when trying to
create NIX_STORE_DIR/.links when NIX_STORE_DIR is read-only.
* nix/guix-register/guix-register.cc (parse_opt): Initialize
'settings.nixStore' to PREFIX + NIX_STORE_DIR.
(main): Change 'settings.nixStore' once the 'LocalStore' has been
instantiated.
* nix/guix-register/guix-register.cc (prefix): New variable.
(parse_opt): Use it.
(register_validity): Change 'info.path' to the final store name.
Hash the final under its real path.
* tests/guix-register.sh: Adjust the contents of $closure accordingly.
Rename 'NIX_LOCALSTATE_DIR' to 'NIX_STATE_DIR'. Don't try to call
'valid-path?'. Add test using 'sqlite3'.
* build-aux/list-packages.scm (package->sxml): Add parameters previous,
description-ids and remaining, update docstring accordingly. Introduce logic
for fold-values process.
(insert-tr): Moved sxml package table-row generation to new function; remove
<a> elements and JS function calls. These are created through JS
(prep_pkg_descs). Add insert-js-call for every 15th package, and the last.
(insert-js-call): New function.
(packages->sxml): Change map to fold values; add init params.
(insert-js): show_hide: add compatibility check, introduce, use thingLink
prep: new JS function.
bulk_show_hide: new JS function.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Suggested by Andreas Enge <andreas@enge.fr>.
* guix/scripts/package.scm (guix-package)[list-generations,
list-installed]: Reverse the result of 'manifest-packages'.
* doc/guix.texi (Invoking guix package): Document the order of packages
for '--list-generations' and '--list-installed'.
* build-aux/hydra/gnu-system.scm (package->alist): Call
'derivation-file-name' on the result of 'package-derivation'.
* build-aux/hydra/guix.scm (package->alist): Likewise.
* build-aux/hydra/guix.scm (tarball-package): Add 'nix-checkout'
parameter. Replace 'patch-bootstrap-script' phase by
'set-nix-module'.
(hydra-jobs): Get the 'nix' value from ARGUMENTS, and pass it to
'tarball-package'.
* guix/derivations.scm (derivation->output-path,
derivation->output-paths): New procedures.
(derivation-path->output-path): Use 'derivation->output-path'.
(derivation-path->output-paths): Use 'derivation->output-paths'.
(derivation): Accept 'derivation?' objects as inputs. Return a single
value.
(build-derivations): New procedure.
(compiled-modules): Use 'derivation->output-paths'.
(build-expression->derivation)[source-path]: Add case for when the
input matches 'derivation?'.
[prologue]: Accept 'derivation?' objects in INPUTS.
[mod-dir, go-dir]: Use 'derivation->output-path'.
* guix/download.scm (url-fetch): Adjust to the single-value return.
* guix/packages.scm (package-output): Use 'derivation->output-path'.
* guix/scripts/build.scm (guix-build): When the argument is
'derivation-path?', pass it through 'read-derivation'.
Use 'derivation-file-name' to print out the .drv file names, and to
register them. Use 'derivation->output-path' instead of
'derivation-path->output-path'.
* guix/scripts/package.scm (roll-back): Adjust to the single-value
return.
(guix-package): Use 'derivation->output-path'.
* guix/ui.scm (show-what-to-build): Adjust to deal with 'derivation?'
objects instead of .drv file names.
* gnu/system/grub.scm (grub-configuration-file): Use
'derivation->output-path' instead of 'derivation-path->output-path'.
* gnu/system/vm.scm (qemu-image, system-qemu-image): Likewise.
* tests/builders.scm, tests/derivations.scm, tests/packages.scm,
tests/store.scm, tests/union.scm: Adjust to the new calling
convention.
* doc/guix.texi (Defining Packages, The Store, Derivations): Adjust
accordingly.
* guix/derivations.scm (<derivation>): Add 'file-name' field.
(%read-derivation): Use (port-filename DRV-PORT) as the file name for
the result.
(derivation): Set the 'file-name' field in the result.
* tests/derivations.scm ("build derivation with 1 source"): Assert that
'derivation-file-name' returns the right thing.
* guix/scripts/package.scm (profile-numbers): Rename to 'generation-numbers'.
(previous-profile-number): Rename to 'previous-generation-number'.
(profile-number): Rename to 'generation-number'.
(roll-back): Rename 'previous-profile' to 'previous-generation'.
Fixes compilation with the forthcoming libgcrypt 1.6.x.
Reported by Matthias Wachs <wachs@net.in.tum.de>
and NIIBE Yutaka <gniibe@fsij.org>.
* nix/libutil/gcrypt-hash.cc (guix_hash_init, guix_hash_final): Use
'int' as the type of the 'algo' parameter.
* nix/libutil/gcrypt-hash.hh: Update declarations accordingly.
* gnu/system/vm.scm (example2): Use 'pam-services->directory'. Change
POPULATE to create /etc/pam.d, /etc/login.defs, and /var/run. Change
BOOT to spawn syslogd; boot to Bash. Add inputs.
* gnu/packages/linux.scm (<pam-service>, <pam-entry>): New record
types.
(pam-service->configuration, pam-services->directory,
unix-pam-service): New procedures.
(%pam-other-services): New variable.
* guix/store.scm (add-text-to-store): Make 'references' optional.
* tests/store.scm ("dead-paths", "references"): Use 'add-text-to-store'
with no optional argument.
* doc/guix.texi (The Store): Adjust accordingly.
* gnu/system/vm.scm (/etc/passwd): Rename to...
(passwd-file): ... this. Add 'shadow?' keyword parameter. Change
format of ACCOUNTS, and fix CONTENTS.
(example2): Adjust accordingly. Create both /etc/shadow and
/etc/passwd, the latter being used by getpwnam(3) & co. when nscd is
not running.
to compile with Python 2 instead of the default Python 3.
* guix/build-system/python.scm (default-python2, package-with-explicit-python,
package-with-python2): New procedures.
* guix/build-system/python.scm (python2-pytz, python2-babel): Use
package-with-python2.
* build-aux/hydra/gnu-system.scm (%core-packages): New variable.
(%packages-to-cross-build): Make an alias for %CORE-PACKAGES.
(hydra-jobs): Check for the 'subset' argument, and honor it for values
"all" and "core".
* gnu/packages/grub.scm (<menu-entry>): New record type.
(grub-configuration-file): New procedure.
* gnu/system/vm.scm (qemu-image): Remove parameters 'linux',
'linux-arguments', and 'initrd'. Add 'grub-configuration' parameter.
Honor them, and remove grub.cfg generation code accordingly.
(example2): Use `grub-configuration-file', and adjust accordingly.
* gnu/system/vm.scm (qemu-image): Add 'populate' keyword parameter and
honor it; make it an input.
(/etc/shadow): New procedure.
(example2): Call it; build 'populate' script, and pass it to
'qemu-image'.
* gnu/system/vm.scm (qemu-image): Use (guix build linux-initrd). Remove
'mknod' calls; use 'make-essential-device-nodes' to populate /dev on
the target image.
* gnu/packages/linux-initrd.scm (qemu-initrd): When /root/dev exists,
don't call 'make-essential-device-nodes'.
* gnu/packages/python.scm (pytz): Rename this ...
* gnu/packages/python.scm (python-pytz): ... to this
* gnu/packages/python.scm (python2-pytz): New variable, input python-2.
* gnu/packages/python.scm (babel): Rename this ...
* gnu/packages/python.scm (python-babel): ... to this
* gnu/packages/python.scm (python2-babel): New variable, input python-2.
build system (switches to Python 3) and compute python-version instead of
passing it as a parameter.
* guix/build-system/python.scm (default-python): Switch to python-wrapper.
* guix/build-system/python.scm (python-build): Drop parameter #:python-version.
* guix/build/python-build-system.scm (wrap): Compute python version from input.
* guix/scripts/substitute-binary.scm (guix-substitute-binary)["--substitute"]:
Show the Nar size, when available.
* guix/ui.scm (show-what-to-build): Add 'TODO'.
This significantly reduces I/O when building profiles, especially with
lots of package-specific sub-directories (such as 'share/emacs/24.3',
'texmf', etc.)
* guix/build/union.scm (union-build)[file-tree](others-have-it?): New
procedure. Use it in the 'enter?' parameter of 'file-system-fold';
change 'skip' parameter accordingly.
* tests/union.scm ("union-build"): Ensure that 'include' is a symlink
and 'bin' is a directory.
* gnu/packages/python.scm (python-2): Rename this to...
* gnu/packages/python.scm (python): ...this, rename this to...
* gnu/packages/python.scm (python-3): ...this. Reverts to version 2 as the
default input for packages requiring Python.
* gnu/system/vm.scm (qemu-image): Add #:inputs-to-copy and
#:boot-expression parameters. Honor them. Append INPUTS-TO-COPY to
the #:inputs argument for `expression->derivation-in-linux-vm'.
(example2): Add #:boot-expression and #:inputs-to-copy arguments.
* gnu/packages/linux-initrd.scm (qemu-initrd): Add (guix build utils) to
#:modules, and use it. Copy .scm and .go files to /root.
* guix/build/linux-initrd.scm (bind-mount): New procedure.
Fixes <http://bugs.gnu.org/15194>.
Reported by Mark H Weaver <mhw@netris.org>.
* gnu/packages/patches/hop-bigloo-4.0b.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/scheme.scm (hop): Use it.
* doc/guix.texi: Add second copyright notice again inside @ifinfo, needed
since the first one does not appear in the info output.
Partially undoes commit da7cabd.
This undoes commit 575ed8d ("doc: Create own Makefile.am in subdirectory."),
and fixes a bug whereby "make pdf" or "make ps" wouldn't do anything.
* doc/Makefile.am: Remove.
* doc.am: New file. Use `-local' rules to build the image.
* Makefile.am: Include it.
* configure.ac: Use `-Woverride' to avoid undesired overridding of
Automake rules.
* gnu/packages/linux-initrd.scm (qemu-initrd): Add #:modules argument.
Factorize and move some of the code to...
* guix/build/linux-initrd.scm: ... here. New file.
* Makefile.am (MODULES): Add it.
* guix/derivations.scm (derivation, build-expression->derivation):
Rename #:dependency-graphs to #:references-graphs, for consistency in
the terminology.
* tests/derivations.scm: Adjust accordingly.
* guix/derivations.scm (derivation): Add `dependency-graphs' keyword
parameter; honor it.
* tests/derivations.scm (bootstrap-binary): New procedure.
(%bash): Use it.
(%mkdir): New variable.
(directory-contents): Add `slurp' optional parameter.
("derivation with #:dependency-graphs"): New test.
* doc/guix.texi (Derivations): Update accordingly.
Fixes <http://bugs.gnu.org/15182>.
Reported by Mark H Weaver <mhw@netris.org>.
* guix/download.scm (%mirrors)[kernel.org]: Add ftp.be.debian.org and
mirror.linux.org.au.
* guix/build/gnu-dist.scm: New file.
* Makefile.am (MODULES): Add it.
* guix/build-system/gnu.scm (%default-modules): New variable.
(gnu-build): Use it.
(dist-package): New procedure.
* guix/packages.scm (package-source-derivation): Add cases for SOURCE as
a store path or user file.
* tests/packages.scm ("package-source-derivation, file",
"package-source-derivation, store path"): New tests.
This fixes Guile version comparisons when (version) has a
vendor-specific suffix.
Reported by Andreas Enge <andreas@enge.fr>.
* guix/utils.scm (guile-version>?): New procedure.
* tests/utils.scm ("guile-version>? 1.8", "guile-version>? 10.5"): New
tests.
* guix/scripts/substitute-binary.scm (fetch, progress-report-port): Use
`guile-version>?' instead of `version>?'.
* guix/http-client.scm (when-guile<=2.0.5, http-fetch): Likewise.
* guix/scripts/substitute-binary.scm (fetch): In the `file' case, open
with the `b' flag, so that the coding cookie reading thing doesn't
lead to buffering some of the data (on 2.0.5).
* tests/utils.scm ("filtered-port, file"): Open with `r0b'. Fixes a
test failure with Guile 2.0.5 whereby the first byte of FILE would be
missing from DECOMPRESSED.
Before that, the ‘guile’ binary from ‘guile-static-stripped’ would abort
as it tries and fails to open an iconv descriptor for ISO-8859-1.
* gnu/packages/patches/guile-default-utf8.patch: Add missing hunk for
Guile 2.0.9.
* gnu/packages/scheme.scm (bigloo): Update to 4.0b. Patch the
`configure-gc' scripts. Remove `patch-absolute-file-names' phase.
* gnu/packages/patches/bigloo-gc-shebangs.patch: Adjust to new version.
* gnu/packages/qemu.scm (qemu-kvm): Remove.
(qemu): Incorporate parts of QEMU-KVM that used to be inherited.
(qemu-kvm/smb-shares): Rename to...
(qemu/smb-shares): ... this.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Adjust
accordingly.
* build-aux/list-packages.scm (package->sxml)[license, status]: Add
title for <a> element.
Add alt and title for gnu-logo <img> element. Add title to package
website <a> element.
(packages->sxml): Wrap <div id="intro"> intro paragraph in <p> element.
Add table header row to <table id="packages">
Add <a> back to top of the page beneath table.
(insert-css, insert-js): New procedures.
(list-packages): Move JavaScript to 'insert-js', and CSS to 'insert-css'.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* build-aux/list-packages.scm (package-logo): Assign class of
'package-description' to package synopsis div; 'package-logo'. Move inline
CSS where possible.
(packages->sxml): Assign id of 'intro' to intro div, 'packages' to the
table. Move inline CSS.
(list-packages): Create new <style> section, containing all inline CSS.
Move JavaScript <script> section to above banner include to place it in
<head>.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* README (Requirements): Remove Nixpkgs. Remove mentions of building
from Git.
(Installation): Refer to the manual.
* HACKING: List requirements for when building from Git.
Remove the `dot: Command not found' error.
Fixes <http://bugs.gnu.org/14851>.
Reported by Andreas Enge <andreas@enge.fr>.
* gnu/packages/linux.scm (linux-libre-urls): New procedure.
(linux-libre-headers, linux-libre): Use it.
* doc/guix.texi (Adding New Packages): New section.
(Packaging Guidelines): Make a subsection thereof.
(From the Source Tarball to the Package): New subsection.
(Contributing): Link to "Adding New Packages".
(Package Modules): Link to modules in Guile's manual.
* srfi/srfi-37.scm.in: New file, taken from Guile 2.0.9.
* m4/guix.m4: New macro.
* configure.ac: Use it. Define Automake conditional `INSTALL_SRFI_37'.
* Makefile.am (nobase_nodist_guilemodule_DATA)[INSTALL_SRFI_37]: Add
srfi/srfi-37.scm.
(GOBJECTS)[INSTALL_SRFI_37]: Add srfi/srfi-37.go.
(srfi/srfi-37.scm)[INSTALL_SRFI_37]: New target.
(EXTRA_DIST): Add srfi/srfi-37.scm.in.
* gnu/packages/version-control.scm (subversion): Use the http:// URL
to work around <http://bugs.gnu.org/14884>. Reported by Mark Weaver
and Andreas Enge.
* build-aux/list-packages.scm (package->sxml)[status]: New procedure.
Use it at the end of each description.
(packages->sxml): Add link to hydra.gnu.org.
* build-aux/hydra/gnu-system.scm (hydra-jobs): Pick all the `system'
keys in ARGUMENTS.
[cross-jobs]: Turn into a procedure, with a `system' parameter.
Build packages for all of SYSTEMS and %CROSS-TARGETS.
* guix/scripts/package.scm (guix-package)[process-actions](same-package?):
New procedure. Use it instead of `alist-delete' when filtering out
duplicate packages from the profile.
This fixes a bug whereby a command like
guix package -e '(@@ (gnu packages base) gnu-make-boot0)'
would only succeed when the outputs of that package are available, and
otherwise fail with "/nix/store/... is not valid".
* guix/scripts/package.scm (guix-package)[process-action](package->tuple):
Leave P as is in the result. Move `package->tuple' call from INSTALL*
to INSTALL.
* guix/gnu-maintenance.scm (latest-release): Add `ftp-close' and
`ftp-open' keyword parameters.
* guix/scripts/package.scm (ftp-open*): New variable.
(check-package-freshness): Call `latest-release' with `ftp-open*' and
a no-op procedure.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/patches/plotutils-libpng-jmpbuf.patch: New file.
* gnu/packages/plotutils.scm (plotutils): Add
`plotutils-libpng-jmpbuf.patch' as an input, and apply it.
* guix/scripts/substitute-binary.scm (%regexp-exec-mutex, string->uri):
Remove.
(regexp-exec): Replace this global binding by a thread-safety wrapper.
(fields->alist): Remove `with-mutex', and directly alias `recutils->alist'.
* guix/gnu-maintenance.scm (%gsrc-package-list-url): New variable.
(<gnu-package-descriptor>): Add `doc-description' field.
(official-gnu-packages)[group-package-fields]: Rename to...
[read-records]: ... this. Reverse the result.
[gsrc-description]: New procedure.
Add the "description" field to the alist passed to `alist->record'.
* guix/records.scm (%recutils-plus-rx): New variable.
(recutils->alist): Use it to read + lines.
* tests/records.scm ("recutils->alist with + lines"): New test.
* guix/gnu-maintenance.scm (official-gnu-packages)[group-package-fields]:
Rewrite in terms of `recutils->alist'. Remove `state' parameter.
Specify "doc-url" and "language" as multiple-value keys in the
`alist->record' call.
* guix/records.scm (%recutils-field-rx): New variable.
(recutils->alist): New procedure, formerly known as `fields->alist'.
* guix/scripts/substitute-binary.scm (fields->alist): Use it.
* tests/records.scm ("recutils->alist"): New test.
* tests/packages.scm ("package-field-location"): Check the result of
`read-at' against both VALUE and (FIELD VALUE).
Reported by Matthew Lien - 練喆明" <bluet@bluet.org>.
* gnu/packages/gettext.scm (gettext): Upgrade to 0.18.3.
Remove patch. Change `patch-tests' phase to use (which "sh'); keep it
regardless of whether we're cross compiling.
* doc/guix.texi (Package Modules): New node, with material formerly
under "GNU Distribution".
(Bootstrapping): New node.
* Makefile.am (EXTRA_DIST): Add doc/images/bootstrap-graph.dot and
doc/images/bootstrap-graph.eps.
(infoimagedir, dist_infoimage_DATA, DOT_OPTIONS): New variable.
(.dot.png, .dot.eps, doc/guix.pdf, doc/guix.info, doc/guix.ps): New
targets.
* doc/images/bootstrap-graph.dot: New file.
* gnu/packages/qemu.scm (qemu-kvm): Add `--cc' configure option.
Add PIXMAN and ALSA-LIB as inputs.
(qemu): Upgrade to 1.5.1 Remove autotool hack for pixman. Patch
tests/libqtest.c. Remove Autoconf, Automake, and Libtool from the
inputs. Fix `home-page'.
* guix/derivations.scm (derivation-hash): Add comment as to why we keep
the plain `sha256' call.
* guix/scripts/download.scm (guix-download): Use `port-sha256' instead
of (compose sha256 get-bytevector-all).
* guix/scripts/refresh.scm (update-package): Likewise.
* guix/hash.scm (GCRY_MD_SHA256): New macro.
(sha256): Use it.
(open-sha256-md, md-write, md-read, md-close, open-sha256-port,
port-sha256): New procedures.
* tests/hash.scm: New file.
* Makefile.am (SCM_TESTS): Add it.
* gnu/packages/lsh.scm (liboop): Fix home page. Improve `synopsis' and
`description'. Thanks to carl hansen <carlhansen1234@gmail.com>, who
raised it on bug-gsrc@gnu.org.
Reported by Nikita Karetnikov and Cyril Roelandt.
* guix/ui.scm (show-what-to-build): Call `substitutable-path-info'
only when USE-SUBSTITUTES? is true.
* guix/web.scm (open-socket-for-uri): New procedure.
(http-fetch): Add `port' keyword parameter; use it.
* guix/scripts/substitute-binary.scm (%random-state): New variable.
(with-timeout): Wait a little before retrying.
(fetch): Use `open-socket-for-uri', and keep a copy of the socket in
variable `port'. Close PORT upon timeout.
* gnu/packages/patches/gnutls-fix-tests-on-32-bits-system.patch: New file.
* gnu-system.am: Add it here...
* gnu/packages/gnutls.scm (gnutls): ... and use it here.
Thanks to Nikos Mavrogiannopoulos for providing this patch:
http://permalink.gmane.org/gmane.comp.encryption.gpg.gnutls.devel/6778
* gnu/packages/cross-base.scm (gcc-configure-flags-for-triplet): Move to...
* gnu/packages/gcc.scm (gcc-configure-flags-for-triplet): ... here. New
procedure.
(gcc-4.7): Use it when (%current-target-system) is true.
* gnu/packages/cross-base.scm (gcc-configure-flags-for-triplet): New
procedure.
(cross-gcc): Use it.
(xgcc-mips64el): Use *-gnuabi64 instead of the N32 ABI.
* gnu/packages/bootstrap.scm (glibc-dynamic-linker): Determine SYSTEM
based on (%current-target-system) when it's true.
* gnu/packages/cross-base.scm (cross-gcc): Directly call
(package-arguments gcc-4.7) from the body of `arguments'.
* gnu/packages/make-bootstrap.scm (package-with-relocatable-glibc): Turn
`inputs' into a thunk. Add `native-inputs', and pass it to
`package-with-explicit-inputs'.
(%static-inputs): Add %BASH-STATIC as an input to gawk when cross
building.
(%glibc-stripped): When cross compiling,
use (glibc-for-bootstrap (cross-libc)) as the basis.
(%gcc-static): Base on GCC-4.7, not GCC-FINAL.
(tarball-package): TAR and XZ are native inputs. Choose the tarball
file name based on (%current-target-system) too.
* guix/build-system/trivial.scm (trivial-cross-build): Don't bind
`%target' here since this causes problem when BUILDER
contains (use-modules ...) clauses, and can be achieved differently
anyway.
* guix/build/utils.scm (set-path-environment-variable): When VALUE is
the empty string, call `unsetenv' instead of `setenv'.
* gnu/packages/guile.scm (guile-2.0)[arguments]: Remove `unsetenv'
trick.
* guix/scripts/substitute-binary.scm (decompressed-port): Improve docstring.
(progress-report-port): New procedure.
(guix-substitute-binary)["--substitute"]: Use it to report progress.
* guix/build/download.scm: Export `progress-proc' and `uri-abbreviation'.
* gnu/packages/ld-wrapper.scm (pure-file-name?): As a last resort, when
%BUILD-DIRECTORY is false, check whether FILE is a symlink, and loop
over it to check whether its target is in the store.
* guix/gnu-maintenance.scm (download-tarball): Add a 'key-download'
keyword argument and pass it to 'gnupg-verify*'. Make
'archive-type' a keyword argument.
(package-update): Add a 'key-download' keyword argument. Pass
'archive-type' and 'key-download' keyword arguments to
'download-tarball'.
* guix/gnupg.scm: Import (ice-9 i18n) and (guix ui).
(gnupg-verify*): Add a 'key-download' keyword argument and adjust
'gnupg-verify*' to use it. Make 'server' a keyword argument.
* guix/scripts/refresh.scm (show-help, %options): Add and document
'--key-download'.
(update-package): Add a 'key-download' keyword argument and pass it
to 'package-update'.
(guix-refresh): Pass 'key-download' to 'update-package'. Limit
lines to a maximum of 79 characters.
* gnu/packages/glib.scm (glib): Update to 2.37.1. Add Bash and tzdata
as inputs. Remove `glib-tests-timezone.patch'. Augment `pre-build'
phase to set `TZDIR', `XDG_CACHE_HOME', and to modify makefiles to
honor $(TESTS_ENVIRONMENT).
* gnu/packages/patches/glib-tests-desktop.patch,
gnu/packages/patches/glib-tests-homedir.patch: Update.
* gnu/packages/patches/glib-tests-timezone.patch: Remove.
* Makefile.am (dist_patch_DATA): Update accordingly.
* gnu/packages/subversion.scm (subversion): Download from archive.apache.org,
where versions are kept for a longer period of time. Previously, we
downloaded from the mirrors, which keep only the most recent versions.
* gnu/packages/bash.scm (bash-light): Add (guix build gnu-cross-build)
to #:modules when (%current-target-system) is true.
Add `bash_cv_job_control_missing=no' to #:configure-flags
when (%current-target-system) is true.
* guix/build-system/gnu.scm (static-package): Call `package-arguments'
from within the `arguments' field, so it see the
right (%current-target-system).
* HACKING: Update the command names from `guix-build' to `guix build' & co.
(Submitting Patches, Packaging Guidelines): New sections.
* doc/guix.texi (Contributing): New section.
* guix/ui.scm (define-diagnostic): Use `free-identifier=?' to compare
the user's input with `_' and `N-". This should fix builds with Guile 2.1.
Reported by Cojocaru Alexandru <xojoc@gmx.com>.
This fixes a circular dependency introduced in commit acc26ff ("gnu: Add
pytz.").
* guix/build-system/python.scm (default-python): New procedure.
(python-build): Use it.
Suggested by Andreas Enge <andreas@enge.fr>.
* guix/scripts/substitute-binary.scm (with-networking): New macro.
(guix-substitute-binary): Wrap the body in `with-networking'.
* guix/packages.scm (&package-cross-build-system-error): New condition type.
(package-cross-derivation): Raise &package-cross-build-system-error
when the build system doesn't support cross builds.
* guix/ui.scm (call-with-error-handling): Add
package-cross-build-system-error? case.
* tests/packages.scm ("package-cross-derivation, no cross builder"): New test.
This fixes resolution of DT_NEEDED entries in cross-built libraries.
For instance, if ltdl.so needs libdl.so and has it in its RUNPATH, then
libdl.so is searched for in the right place.
* gnu/packages/cross-base.scm (cross-binutils): Pass
`--with-sysroot=/no-such-path'.
* gnu/packages/guile.scm (guile-2.0): Add Bash as an input
when (%current-target-system) is true. Use %standard-cross-phases as
a basis when (%current-target-system) is true.
* gnu/packages/ncurses.scm (ncurses): Add `cross-pre-install-phase'.
Use different phases when (%current-target-system) is true.
* gnu/packages/readline.scm (readline): Use %standard-cross-phases as
the base when (%current-target-system) is true.
* gnu/packages/libffi.scm (libffi): Use %standard-cross-phases as the
base when cross-compiling. Add (guix build gnu-cross-build) to the
#:modules when cross-compiling. Improve synopsis.
* gnu/packages/gawk.scm (gawk)[arguments]: Use `set-shell-file-name'
phase that works when cross-compiling; use `%standard-cross-phases' as
the base when (%current-target-system) is true.
* gnu/packages/base.scm (coreutils): Remove Perl input
when (%current-target-system) is true. Use %standard-cross-phases as
the base when (%current-target-system) is true.
* guix/build-system/trivial.scm (guile-for-build): New procedure.
(trivial-build): Use it.
(trivial-cross-build): New procedure.
(trivial-build-system): Use it.
* guix/scripts/package.scm (guix-package)[ensure-default-profile]: Check
whether S is true before checking its owner. Fixes the case where we
built %PROFILE-DIRECTORY just above.
* guix/build-system/gnu.scm (inputs-search-paths): New procedure.
(standard-search-paths): Use it.
(expand-inputs): New procedure.
(standard-inputs): Use it.
(standard-cross-packages, standard-cross-inputs,
standard-cross-search-paths, gnu-cross-build): New procedures.
(gnu-build-system): Set `cross-build' field to `gnu-cross-build'.
* gnu/packages/cross-base.scm: Export `cross-gcc', `cross-binutils', and
`cross-libc'.
* guix/build/gnu-cross-build.scm: New file.
* Makefile.am (MODULES): Add it.
* gnu/packages/patches/gcc-cross-environment-variables.patch: Add two
hunks, most notably one that changes GCC to honor LIBRARY_PATH_ENV
when cross-compiling.
* guix/packages.scm (expand-input): New procedure, moved out of...
(package-derivation): ... here. Adjust accordingly.
(package-cross-derivation): Add `cross-system' and `system'
parameters.
* gnu/packages/autotools.scm (autoconf-wrapper): Wrap `configure' files
regardless of the exit code of `autoconf'. Triggered by Automake's
`t/am-prog-cc-stdc.sh'.
(automake): Update to 1.13.2.
* guix/scripts/package.scm (guix-package)[ensure-default-profile]: Check
the owner of %PROFILE-DIRECTORY. Report an error when the owner is
not the current user. Add `rtfm' procedure.
* doc/guix.texi (Invoking guix package): Mention the ownership test.
This fixes a bug whereby `read-response' would read more than just the
response, with the extra data going into the port's buffer; the
"bzip2 -dc" process spawned by `filtered-port' would not see the those
buffered data, which are definitely lost, and would bail out with
"bzip2: (stdin) is not a bzip2 file."
* guix/utils.scm (filtered-port): Document that INPUT must be
unbuffered.
* guix/web.scm (http-fetch): Add `buffered?' parameter. Call
`open-socket-for-uri' explicitly, and call `setvbuf' when BUFFERED? is
false. Pass the port to `http-get'. Close it upon 301/302.
* guix/scripts/substitute-binary.scm (fetch): Add `buffered?'
parameter. Pass it to `http-fetch'; honor it for `file' URIs.
(guix-substitute-binary): Call `fetch' with #:buffered? #f for port RAW.
* tests/utils.scm ("filtered-port, file"): Open FILE as unbuffered.
* guix/scripts/substitute-binary.scm (%regexp-exec-mutex): New variable.
(string->uri): New procedure.
(fields->alist): Wrap `regexp-exec' call in `with-mutex'.
* guix/ftp-client.scm (ftp-open): Let exceptions through.
* guix/scripts/package.scm (waiting): Wrap EXP in a `dynamic-wind', so
the line is always cleared.
* guix/scripts/hash.scm (guix-hash)[eof->null]: New procedure.
Use it to convert the EOF object to the empty bytevector.
* tests/guix-hash.sh: New file.
* Makefile.am (SH_TESTS): Add it.
* guix/scripts/refresh.scm (%options): Add `--key-server' and `--gpg'.
(show-help): Update accordingly.
(update-package): New procedure, formerly in `guix-refresh'.
(guix-refresh): Use it. Parameterize `%openpgp-key-server' and
`%gpg-command'.
* guix/gnupg.scm (%gpg-command): Turn into a SRFI-39 parameter.
(%openpgp-key-server): Likewise. Default to pgp.mit.edu, as
keys.gnupg.net is unreliable.
Update users.
* guix/ui.scm (show-guix-usage): Mention `guix --help'.
Suggested by Mark H. Weaver.
(run-guix-command): Invoke it when a command is not found.
(guix-main): Adjust accordingly.
* guix/scripts/package.scm (guix-package)[process-actions](package->tuple):
Put the output path in the tuple, not the derivation path.
* tests/guix-package.sh: Add test.
Before this, something like "guix package -i glibc" could fail because
glibc lists linux-libre-headers as a propagated input (which would be
added as a dependency in the manifest) but the linux-libre-headers
output could be unavailable, leading to an error like this:
path `/nix/store/4v2bk8sx5cm166gks3fi3q7d9zchibnk-linux-libre-headers-3.3.8' is not valid
This patch adds such dependencies as inputs of the profile derivation.
* guix/scripts/package.scm (profile-derivation): Accept package objects
in the `deps' field of an element of PACKAGES. Convert them to their
output path for BUILDER, and add them to the inputs of the
`build-expression->derivation' call.
(input->name+path): When INPUT doesn't contain a package object,
return it as is.
(guix-package)[process-actions](canonicalize-deps): Expect DEPS to
contain package objects, and leave them as is.
* guix/scripts/refresh.scm (guix-refresh): When updating a source file,
gracefully handle the case where TARBALL is #f.
Reported by Nikita Karetnikov <nikita@karetnikov.org>.
* guix/ui.scm (run-guix-command): Can `resolve-interface' errors and
report them with `leave'. Parameterize `program-name' from here.
(guix-main): Remove parameterization of `program-name'.
This would manifest when downloading a large file such as the Bazaar
tarball, leading to an "Error in the pull function" GnuTLS exception.
* guix/build/download.scm (add-weak-reference): New procedure.
(tls-wrap): Add (add-weak-reference record port).
* guix/scripts/package.scm (search-path-environment-variables): Prefer
%USER-ENVIRONMENT-DIRECTORY when it points to PROFILE.
(display-search-paths): Use 3 spaces for indentation.
* guix/build/rpath.scm: New file.
* Makefile.am (MODULES): Add it.
* gnu/packages/python.scm (python): Use it; remove local copy of
the *rpath* procedures.
* gnu/packages/samba.scm (samba): Likewise.
* guix/scripts/package.scm (guix-package)[find-package]: Add optional
parameter `output'. Use it.
[process-actions]: When computing UPGRADE, pass OUTPUT to
`find-package'.
* gnu/packages/ghostscript.scm (ghostscript): Remove libxext and libxt
as inputs.
(gv): Move to...
* gnu/packages/gv.scm (gv): ... here. New file.
(ghostscript/x): Variant of GHOSTSCRIPT with libxt and libxext as
inputs.
* guix/build/utils.scm (wrap-program): Fix computation of PROG-REAL and
PROG-TMP when PROG is an absolute file name. Add "$@" in the
generated script, and quote PROG-REAL.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* guix/scripts/substitute-binary.scm (filtered-port): Move to utils.scm.
(decompressed-port): Upon "none", return '() as the second value.
(guix-substitute-binary): Expect `decompressed-port' to return a list
of PIDs as its second value.
* guix/utils.scm (filtered-port): New procedure. Add case for when
INPUT is not `file-port?'.
* tests/utils.scm ("filtered-port, file", "filtered-port, non-file"):
New tests.
* guix/gnu-maintenance.scm (latest-release): Filter out directories
whose name does not contain digits early in the process. This fixes
(latest-release "gnupg").
* guix/scripts/refresh.scm (%options): Add `--select'.
(show-help): Likewise. Augment initial help text.
(guix-refresh)[core-package?]: New procedure.
Use it when selecting packages.
This should fix `substitute-binary --query' on Guile 2.0.5.
* guix/web.scm: New file.
* Makefile.am (MODULES): Add it.
* po/POTFILES.in: Add it.
* guix/gnu-maintenance.scm (http-fetch): Remove.
(%package-list-url): Turn into a URI.
(official-gnu-packages): Add #:text? #t to `http-fetch' call.
* guix/scripts/substitute-binary.scm (fetch): Remove `http' case, and
use `http-fetch' instead.
* guix/gnu-maintenance.scm (tarball-regexp, sans-extension,
release-file): New procedures.
(%alpha-tarball-rx): New variable.
(releases): Use them instead of local copies.
(latest-release): Rewrite to not do a recursive search of all
versions and instead jump directly to the latest.
* guix/packages.scm (package-field-location): Rewrite using `read' and
source properties. Change to return #f upon failure.
* tests/packages.scm ("package-field-location"): Check for #f upon failure.
* build-aux/sync-synopses.scm: Adjust accordingly.
* guix/packages.scm (package-field-location): New procedure.
* build-aux/sync-synopses.scm: Use it instead of `package-location'.
* tests/packages.scm ("package-field-location"): New test.
* guix/ui.scm (define-diagnostic, warning, report-error, leave): Move
definitions before any use. Reported by Nikita Karetnikov.
(install-locale): Move back close to `initialize-guix'.
* guix/scripts/hash.scm: New file.
* Makefile.am (MODULES): Add it.
* po/POTFILES.in: Add it.
* doc/guix.texi (Invoking guix hash): New node.
(Defining Packages): Add a cross-reference to the 'Invoking guix
hash' node.
* guix/ui.scm (define-diagnostic): New macro, which is based on the
previous version of 'warning'.
(warning, leave): Redefine using 'define-diagnostic'.
(report-error): New macro.
(install-locale): Use 'warning' instead of 'format'.
(call-with-error-handling): Adjust 'leave'.
* gnu/packages.scm (package-files): Use 'warning' instead of 'format'.
* guix/gnu-maintenance.scm (http-fetch): Use 'warning' and 'leave'.
* guix/scripts/build.scm (derivations-from-package-expressions, guix-build):
Adjust 'leave'.
* guix/scripts/download.scm (guix-download): Adjust 'leave'.
* guix/scripts/gc.scm (size->number, %options): Adjust 'leave'.
* guix/scripts/package.scm (roll-back, guix-package): Adjust 'leave'.
* po/POTFILES.in: Add 'guix/gnu-maintenance.scm'.
Suggested by Mark H. Weaver.
* nix/nix-daemon/guix-daemon.cc (GUIX_OPT_NO_SUBSTITUTES): New macro.
(options): Add `--no-substitutes'.
(parse_opt): Add `GUIX_OPT_NO_SUBSTITUTES' case.
(main): Leave `settings.substituters' empty when
`settings.useSubstitutes' is false.
* guix/derivations.scm (derivation-input-output-paths): New procedure.
(derivation-prerequisites-to-build): New `use-substitutes?' keyword
argument. Change two return the list of substitutable paths as a
second argument.
* guix/ui.scm (show-what-to-build): Turn `dry-run?' into a keyword
argument. New `use-substitutes?' keyword argument. Use `fold2' and
adjust to use both return values of
`derivation-prerequisites-to-build'. Display what will/would be
downloaded.
* guix/scripts/build.scm (guix-build): Adjust accordingly.
* guix/scripts/package.scm (guix-package): Likewise.
* tests/derivations.scm ("derivation-prerequisites-to-build and
substitutes"): New test.
* guix/scripts/packages.scm (guix-package) [process-actions]: When upgrading,
use "" when REGEXP is #f.
* doc/guix.texi: update the documentation accordingly.
* gnu/packages/python.scm: bump to version 2.7.4, remove references to
python-fix-dbm.patch.
* Makefile.am: remove references to python-fix-dbm.patch
* gnu/packages/patches/python-fix-dbm.patch: remove it.
Reported by Andreas Enge <andreas@enge.fr>.
* guix/build-system/gnu.scm (standard-search-paths): New procedure.
(gnu-build): Use it.
* guix/build-system/perl.scm (perl-build):
Append (standard-search-paths) to the search paths of PERL.
* guix/build-system/cmake.scm (cmake-build):
Append (standard-search-paths) to SEARCH-PATHS.
* guix/scripts/substitute-binary.scm (lookup-narinfo): Force CACHE when
passing it to `fetch-narinfo'.
(guix-substitute-binary): Delay calls to `open-cache'.
* guix/scripts/substitute-binary.scm (%narinfo-cache-directory,
%narinfo-ttl, %narinfo-negative-ttl): New variables.
(with-atomic-file-output, object->fields, read-narinfo,
write-narinfo, narinfo->string, string->narinfo, lookup-narinfo): New
procedures.
(fetch-narinfo): Adjust to use `read-narinfo'.
(guix-substitute-binary): Ensure the existence of
%NARINFO-CACHE-DIRECTORY. Use `lookup-narinfo' instead of
`fetch-narinfo'.
* gnu/packages.scm (fold2): Remove.
* guix/utils.scm (fold2): New procedure. Generalization of the above to
one and two lists.
* tests/utils.scm ("fold2, 1 list", "fold2, 2 lists"): New tests.
* guix/store.scm: Remove unneeded (ice-9 rdelim) import. In Guile 2.0.9
that module exports `read-string', which conflicts with that of (guix
serialization).
* guix/scripts/package.scm (roll-back): Use `format', not `leave' when
indicating "already at the empty profile". Fixes a regression
introduced in a2011be5df. Reported by
Nikita Karetnikov <nikita@karetnikov.org>.
This allows build outputs to be transparently downloaded from
http://hydra.gnu.org, for example.
* config-daemon.ac: Check for `gzip', `bzip2', and `xz'.
* guix/config.scm.in (%gzip, %bzip2, %xz): New variable.
* guix/scripts/substitute-binary.scm (fetch): Return SIZE as a second value.
(<narinfo>): Change `url' to `uri'.
(make-narinfo): Rename to...
(narinfo-maker): ... this. Handle relative URLs.
(fetch-narinfo): Adjust accordingly.
(filtered-port, decompressed-port): New procedures.
(guix-substitute-binary): Implement the `--substitute' case.
* tests/store.scm ("substitute query"): Use (%store-prefix) instead
of (getenv "NIX_STORE_DIR").
("substitute"): New test.
* guix/nar.scm (write-file): Add case for type `symlink'.
(restore-file): Likewise.
* tests/nar.scm (random-file-size, make-file-tree, delete-file-tree,
with-file-tree, file-tree-equal?, make-random-bytevector,
populate-file): New procedures.
(%test-dir): New variable.
("write-file + restore-file"): Use `%test-dir' and `file-tree-equal?'.
("write-file + restore-file with symlinks"): New test.
* guix/ui.scm (program-name, guix-warning-port): New variables.
(warning): New macro.
(guix-main): Parametrize PROGRAM-NAME.
* guix/scripts/build.scm, guix/scripts/download.scm,
guix/scripts/gc.scm, guix/scripts/package.scm: Adjust to use `leave'
and `warning' consistently.
* guix/nar.scm (&nar-error, &nar-read-error): New condition types.
(dump): New procedure.
(write-contents)[dump]: Remove. Use the one above instead.
(read-contents, write-file, restore-file): New procedures.
(%archive-version-1): New variable.
This commit enables the bz2, dbm, readline, ssl and zlib modules.
* gnu/packages/gdbm.scm: Enable the compatibility mode.
* gnu/packages/python.scm: Enable a few modules from the standard library.
* gnu/packages/patches/python-fix-dbm.patch: New file.
* Makefile.am: Add it.
* guix/scripts/substitute-binary.scm (guix-substitute-binary)["--query"]:
Emit blank lines only after the complete list of store paths has been
returned.
* guix/scripts/substitute-binary.scm: New file.
* Makefile.am (MODULES): Add it.
* nix/scripts/substitute-binary.in: New file.
* config-daemon.ac: Produce nix/scripts/substitute-binary.
* daemon.am (nodist_pkglibexec_SCRIPTS): Add
nix/scripts/substitute-binary.
* guix/store.scm (substitutable-path-info): Use the
`query-substitutable-path-infos' RPC.
* nix/nix-daemon/guix-daemon.cc (main): Honor `NIX_SUBSTITUTERS'.
* pre-inst-env.in: Set `NIX_SUBSTITUTERS'.
* test-env.in: Leave `NIX_SUBSTITUTERS' unchanged. Set
`GUIX_BINARY_SUBSTITUTE_URL, and create
$NIX_STATE_DIR/substituter-data.
Run `guix-daemon' within `./pre-inst-env'.
* tests/store.scm ("substitute query"): New test.
* guix/gnu-maintenance.scm (http-fetch): Try #:streaming? #t, or
'http-get*', or 'http-get' as a last resort. Check whether DATA is
#f, a string, or an input port.
* guix/store.scm: Remove unneeded (ice-9 rdelim) import. In Guile 2.0.9
that module exports `read-string', which conflicts with that of (guix
serialization).
* guix/scripts/package.scm (roll-back): Use `format', not `leave' when
indicating "already at the empty profile". Fixes a regression
introduced in a2011be5df. Reported by
Nikita Karetnikov <nikita@karetnikov.org>.
This allows build outputs to be transparently downloaded from
http://hydra.gnu.org, for example.
* config-daemon.ac: Check for `gzip', `bzip2', and `xz'.
* guix/config.scm.in (%gzip, %bzip2, %xz): New variable.
* guix/scripts/substitute-binary.scm (fetch): Return SIZE as a second value.
(<narinfo>): Change `url' to `uri'.
(make-narinfo): Rename to...
(narinfo-maker): ... this. Handle relative URLs.
(fetch-narinfo): Adjust accordingly.
(filtered-port, decompressed-port): New procedures.
(guix-substitute-binary): Implement the `--substitute' case.
* tests/store.scm ("substitute query"): Use (%store-prefix) instead
of (getenv "NIX_STORE_DIR").
("substitute"): New test.
* guix/nar.scm (write-file): Add case for type `symlink'.
(restore-file): Likewise.
* tests/nar.scm (random-file-size, make-file-tree, delete-file-tree,
with-file-tree, file-tree-equal?, make-random-bytevector,
populate-file): New procedures.
(%test-dir): New variable.
("write-file + restore-file"): Use `%test-dir' and `file-tree-equal?'.
("write-file + restore-file with symlinks"): New test.
Fixes a regression introduced in a18eda2.
Reported by Nikita Karetnikov <nikita@karetnikov.org>.
* tests/builders.scm (%bootstrap-search-paths): New variable.
("gnu-build"): Pass #:search-paths.
* guix/ui.scm (program-name, guix-warning-port): New variables.
(warning): New macro.
(guix-main): Parametrize PROGRAM-NAME.
* guix/scripts/build.scm, guix/scripts/download.scm,
guix/scripts/gc.scm, guix/scripts/package.scm: Adjust to use `leave'
and `warning' consistently.
Reported by Andreas Enge <andreas@enge.fr>.
* guix/build-system/gnu.scm (standard-packages): New procedure.
(standard-inputs): Use it instead of resolving things locally.
(gnu-build)[implicit-search-paths]: Map over (standard-packages), not
over STANDARD-INPUTS.
* guix/nar.scm (&nar-error, &nar-read-error): New condition types.
(dump): New procedure.
(write-contents)[dump]: Remove. Use the one above instead.
(read-contents, write-file, restore-file): New procedures.
(%archive-version-1): New variable.
This commit enables the bz2, dbm, readline, ssl and zlib modules.
* gnu/packages/gdbm.scm: Enable the compatibility mode.
* gnu/packages/python.scm: Enable a few modules from the standard library.
* gnu/packages/patches/python-fix-dbm.patch: New file.
* Makefile.am: Add it.
* guix/scripts/substitute-binary.scm (guix-substitute-binary)["--query"]:
Emit blank lines only after the complete list of store paths has been
returned.
* guix/scripts/substitute-binary.scm: New file.
* Makefile.am (MODULES): Add it.
* nix/scripts/substitute-binary.in: New file.
* config-daemon.ac: Produce nix/scripts/substitute-binary.
* daemon.am (nodist_pkglibexec_SCRIPTS): Add
nix/scripts/substitute-binary.
* guix/store.scm (substitutable-path-info): Use the
`query-substitutable-path-infos' RPC.
* nix/nix-daemon/guix-daemon.cc (main): Honor `NIX_SUBSTITUTERS'.
* pre-inst-env.in: Set `NIX_SUBSTITUTERS'.
* test-env.in: Leave `NIX_SUBSTITUTERS' unchanged. Set
`GUIX_BINARY_SUBSTITUTE_URL, and create
$NIX_STATE_DIR/substituter-data.
Run `guix-daemon' within `./pre-inst-env'.
* tests/store.scm ("substitute query"): New test.
* guix/gnu-maintenance.scm (http-fetch): Try #:streaming? #t, or
'http-get*', or 'http-get' as a last resort. Check whether DATA is
#f, a string, or an input port.
* gnu/packages/lesstif.scm (lesstif): Add propagated input printproto;
include/Xm/Print.h from lesstif includes X11/extensions/Print.h from
printproto.
* gnu/packages/autotools.scm (automake)[native-search-paths]: New field.
* gnu/packages/guile.scm (guile-1.8)[native-search-paths]: New field.
(guile-2.0)[native-search-paths]: New field.
* gnu/packages/python.scm (python)[native-search-paths]: New field.
* gnu/packages/xorg.scm (xf86-video-glide): Comment variable; driver for
obsolete graphics cards, depends on libglide, last updated in 2003,
and which does not compile out of the box any more.
* guix/gnu-maintenance.scm (http-fetch): Return an input port.
(<gnu-package-descriptor>): Add it.
(official-gnu-packages): Use <gnu-package-descriptor>.
(find-packages): Add it.
(gnu-package?): Adjust accordingly.
* guix/store.scm (write-contents)[call-with-binary-input-file]: New
procedure.
Use `sendfile' instead of `dump' when available. Add `size'
parameter.
(write-file): Update caller.
* release.nix (unchrootedNixpkgs): New function.
(jobs)[tarball, build, build_disable_daemon, distro): Use it.
Should fix <http://hydra.gnu.org:3000/build/7279>.
This reduces the execution time of
"guix build -e '(@ (gnu packages emacs) emacs)' -d" by 6%, from
1.15s to 1.08s.
* guix/derivations.scm (build-expression->derivation): Write the builder
as UTF-8.
This reduces the execution time of
"guix build -e '(@ (gnu packages emacs) emacs)' -d" by 25%, from
1.54 s. to 1.15s.
* guix/derivations.scm (write-sequence, write-list, write-tuple): New
procedures.
(write-derivation)[list->string, write-list]: Remove.
[write-string-list, write-output, write-input, write-env-var]: New helpers.
Rewrite in terms of these new helpers.
* guix/gnu-maintenance.scm (http-fetch): Error out when DATA is #f.
* guix/scripts/package.scm (check-package-freshness): Wrap
`gnu-package?' call in `false-if-exception'.
Reported by Cyril Roelandt <tipecaml@gmail.com>.
* gnu/packages/xorg.scm (mesa): New variable, only version 8.0.5 compiles.
* gnu/packages/xorg.scm (libdrm-2.4.33): New variable, required by mesa 8.0.5.
* guix/store.scm (&nix-connection-error): New condition type.
(open-connection): Translate `system-error' during the `connect' call
into `&nix-connection-error'.
* guix/ui.scm (call-with-error-handling): Add case for `nix-connection-error?'.
* guix/scripts/package.scm (guix-package): Move `open-connection' call
within `with-error-handling'.
* guix/scripts/pull.scm (guix-pull): Likewise.
* guix/scripts/download.scm (guix-download): Move body within
`with-error-handling'.
Comment out packages with non-free license, without license, or
not available on the ftp servers.
Remove package not present in the distribution.
* gnu/packages/xorg.scm (*): Add licenses.
* gnu/packages/xorg.scm (libxp): Remove variable of package that is not
present in the R7.7 distribution.
* gnu/packages/xorg.scm (libpthread, libxcb): Comment out variables, which
are referenced, but not present on the ftp servers.
* gnu/packages/xorg.scm (font-adobe-utopia-100dpi, font-adobe-utopia-75dpi,
font-adobe-utopia-type1, font-bh-100dpi, font-bh-75dpi,
font-bh-lucidatypewriter-100dpi, font-bh-lucidatypewriter-75dpi,
font-bh-type1, font-bitstream-100dpi, font-bitstream-75dpi,
font-daewoo-misc, font-ibm-type1, font-jis-misc, font-misc-meltho,
xf86-video-dummy):
Comment out variables, packages have non-free licenses.
* gnu/packages/xorg.scm (font-cursor-misc, xf86-video-v4l, xorg-docs):
Comment out variables, packages have no license.
* gnu/packages/xorg.scm: Remove packages not from
ftp://ftp.freedesktop.org/pub/xorg/X11R7.7/src/everything/ .
Add missing packages, for the time being with a 0 hash and
without dependencies.
Correct spelling (all lower case for package names).
* guix/gnu-maintenance.scm (gnu-package?): New procedure.
* guix/scripts/package.scm (waiting): New macro.
(check-package-freshness): New procedure.
(guix-package)[process-actions]: Use it.
* doc/guix.texi (Invoking guix package): Mention the feature.
* gnu/packages/vpn.scm: New file.
* Makefile.am (MODULES): Add it.
* gnu/packages/patches/vpnc-script.patch: New file.
* Makefile.am (dist_patch_DATA): Add it.
* guix/scripts/package.scm (read/eval-package-expression): New
procedure.
(show-help): Add `-e'.
(%options): Likewise.
(guix-package)[process-actions]: Handle ('install . p) pairs, where P
is a package.
* tests/guix-package.sh: Add `boot_make_drv'. Use `-i $boot_make_drv'
once, and then use `-e $boot_make'.
* doc/guix.texi (Invoking guix package): Document `-e'.
* gnu/packages/cross-base.scm: New file.
* gnu/packages/patches/gcc-cross-environment-variables.patch: New file.
* Makefile.am (MODULES): Add cross-base.scm.
(dist_patch_DATA): Add gcc-cross-environment-variables.patch.
* gnu/packages/base.scm (gcc-4.7): Use `LDFLAGS_FOR_TARGET' instead of
`LDFLAGS_FOR_BUILD', and use `-B' instead of `-L'.
* gnu/packages/bootstrap.scm (glibc-dynamic-linker): Add case for
"mips64el-linux".
* guix/ui.scm (show-what-to-build): Return (length req*).
* guix/scripts/pull.scm (guix-pull): Print an "already up to date"
message when there's nothing to build.
* guix/scripts/pull.scm: New file.
* Makefile.am (MODULES): Add it.
* doc/guix.texi (Invoking guix pull): New node.
(Invoking guix package): Add cross-ref to it.
* guix/ui.scm (config-directory): New procedure.
* scripts/guix.in: When `GUIX_UNINSTALLED' is undefined, add
$XDG_CONFIG_HOME/guix/latest to the search path.
* po/POTFILES.in: Add guix/scripts/pull.scm.
* gnu/packages/guile.scm (guile-reader): Change the character preceding the
guile version number from '-' to '_' so that it will not be misinterpreted
as the package version number.
* gnu/packages/qemu.scm (qemu-kvm/smb-shares): New variable.
* gnu/packages/patches/qemu-multiple-smb-shares.patch: New file.
* Makefile.am (dist_patch_DATA): Add it.
* gnu/packages/make-bootstrap.scm (%guile-static): Add
`guile-linux-syscalls.patch' as an input, and use it.
* gnu/packages/patches/guile-linux-syscalls.patch: New file.
* Makefile.am (dist_patch_DATA): Add it.
* gnu/packages/linux.scm (linux-libre): Choose "defconfig" instead of
"allmodconfig" since the latter enables all debugging features. Add
`CONFIG_CIFS=m'.
* gnu/packages.scm (find-newest-available-packages):
New exported procedure.
* guix-build.in (newest-available-packages, find-best-packages-by-name):
New procedures.
(find-package): Use find-best-packages-by-name, to guarantee that
if a version number is not specified, only the newest versions will
be considered.
* guix-package.in (%options): Add --upgrade/-u option.
(newest-available-packages, find-best-packages-by-name, upgradeable?):
New procedures.
(find-package): Use find-best-packages-by-name, to guarantee that
if a version number is not specified, only the newest versions will
be considered.
(process-actions): Implement upgrade option.
* doc/guix.texi (Invoking guix-package): In the description of --install,
mention that if no version number is specified, the newest available
version will be selected.
* gnu/packages/make-bootstrap.scm (%guile-static): Use libgc build with
CPPFLAGS=-DUSE_LIBC_PRIVATES.
* gnu/packages/bdw-gc.scm (libgc): Add TODO to always do it.
* guix/utils.scm (version-compare, version>?): New exported procedures,
based on version-string>?, which was formerly in gnu-maintenance.scm.
* guix/gnu-maintenance.scm (version-string>?): Removed procedure.
(latest-release): Use 'version>?' instead of 'version-string>?'.
* guix/build/utils.scm (patch-shebang): Do not add a space after a command
interpreter not followed by an argument; this made two tests of
coreutils fail.
* guix/ui.scm (show-what-to-build): Return (length req*).
* guix/scripts/pull.scm (guix-pull): Print an "already up to date"
message when there's nothing to build.
* guix/scripts/pull.scm: New file.
* Makefile.am (MODULES): Add it.
* doc/guix.texi (Invoking guix pull): New node.
(Invoking guix package): Add cross-ref to it.
* guix/ui.scm (config-directory): New procedure.
* scripts/guix.in: When `GUIX_UNINSTALLED' is undefined, add
$XDG_CONFIG_HOME/guix/latest to the search path.
* po/POTFILES.in: Add guix/scripts/pull.scm.
* gnu/packages/guile.scm (guile-reader): Change the character preceding the
guile version number from '-' to '_' so that it will not be misinterpreted
as the package version number.
* gnu/packages/qemu.scm (qemu-kvm/smb-shares): New variable.
* gnu/packages/patches/qemu-multiple-smb-shares.patch: New file.
* Makefile.am (dist_patch_DATA): Add it.
* gnu/packages/make-bootstrap.scm (%guile-static): Add
`guile-linux-syscalls.patch' as an input, and use it.
* gnu/packages/patches/guile-linux-syscalls.patch: New file.
* Makefile.am (dist_patch_DATA): Add it.
* gnu/packages/linux.scm (linux-libre): Choose "defconfig" instead of
"allmodconfig" since the latter enables all debugging features. Add
`CONFIG_CIFS=m'.
* gnu/packages.scm (find-newest-available-packages):
New exported procedure.
* guix-build.in (newest-available-packages, find-best-packages-by-name):
New procedures.
(find-package): Use find-best-packages-by-name, to guarantee that
if a version number is not specified, only the newest versions will
be considered.
* guix-package.in (%options): Add --upgrade/-u option.
(newest-available-packages, find-best-packages-by-name, upgradeable?):
New procedures.
(find-package): Use find-best-packages-by-name, to guarantee that
if a version number is not specified, only the newest versions will
be considered.
(process-actions): Implement upgrade option.
* doc/guix.texi (Invoking guix-package): In the description of --install,
mention that if no version number is specified, the newest available
version will be selected.
* gnu/packages/make-bootstrap.scm (%guile-static): Use libgc build with
CPPFLAGS=-DUSE_LIBC_PRIVATES.
* gnu/packages/bdw-gc.scm (libgc): Add TODO to always do it.
* guix/utils.scm (version-compare, version>?): New exported procedures,
based on version-string>?, which was formerly in gnu-maintenance.scm.
* guix/gnu-maintenance.scm (version-string>?): Removed procedure.
(latest-release): Use 'version>?' instead of 'version-string>?'.
* guix-package.in (profile-manifest): Return "version 1" manifests.
(manifest-packages): Likewise. When MANIFEST is "version 0", add
'() as the list of "propagated inputs" of each package.
(profile-derivation): Produce "version 1" manifests. Pass each
PACKAGES item's propagated inputs as an input for BUILDER.
(input->name+path): New procedure.
(guix-package)[find-package]: Add the transitive propagated inputs of
each selected package as the last item of the tuple.
[canonicalize-deps]: New procedure.
[process-actions]: Adjust to support propagated inputs as the last item.
[process-query]: Likewise.
* guix/build/union.scm (union-build): Prepend "." to the result of
`union-tree', to match the expectations of `delete-duplicate-leaves'.
Don't do mkdir when SUBDIR is ".".
* tests/union.scm ("union-build"): Keep duplicates in %BOOTSTRAP-INPUTS.
* gnu/packages/make-bootstrap.scm (%binutils-static-stripped): Add
distinguishing `name' field. Add `output' field to have a single
"out" output (followup to 4873f8e). Reported by Nikita.
* gnu/packages/multiprecision.scm (mpfr): Change GMP to a propagated input.
(mpc): Likewise for GMP and MPFR.
Reported by Andreas Enge <andreas@enge.fr>.
* guix/store.scm (%protocol-version): Bump.
(operation-id): Comment out `query-substitutable-path-info'.
Rename `query-valid-paths' to `query-all-valid-paths'. Add
`query-path-from-hash-part', `query-substitutable-path-infos',
`query-valid-paths', and `query-substitutable-paths'.
(set-build-options): Add `binary-caches' keyword parameter. When
using a server >= 1.12, send the list of binary caches.
(query-path-hash): Use the `store-path' type, for clarity.
* tests/derivations.scm ("derivation with local file as input"): Return
a Boolean instead of a bytevector. Don't attempt to compare the
content of the result with that of the input.
* guix/ui.scm (fill-paragraph, string->recutils, package->recutils): New
procedures.
* guix-package.in (guix-package)[process-query]: Use `package->recutils'
to display package meta-data.
* tests/guix-package.sh: Adjust test.
* tests/ui.scm: New file.
* Makefile.am (TESTS): Add it.
* doc/guix.texi (Invoking guix-package): Adjust `--search'
documentation, and give an example.
* guix/derivations.scm (read-derivation): Rename to...
(%read-derivation): ... this.
(read-derivation): New procedure.
This reduces the execution of "guix-build gdb" from 2.5s to 1.7s.
* guix/store.scm (open-connection): Call `make-hash-table' with 100.
(add-text-to-store): Move TEXT first in ARGS, for better `hash'
results.
(add-to-store): Likewise, move ST first.
* guix/store.scm (add-to-store): Remove the `fixed?' parameter from the
public interface.
* gnu/packages/bootstrap.scm, guix-download.in, guix/derivations.scm,
guix/packages.scm, tests/derivations.scm: Update all callers
accordingly.
* guix/store.scm (operation): New macro.
(define-operation): Define in terms of `operation'.
(add-text-to-store): Define using `operation', and remove now
unnecessary `set!'.
(add-to-store): Likewise.
(add-text-to-store/cached, add-to-store/cached): Remove.
* guix/store.scm (write-string): Optimize to write the length, contents,
and padding all at once. This yields a 2% improvement on the
execution time of "guix-build gdb".
* guix/ui.scm (install-locale): New procedure.
* guix-build.in, guix-download.in, guix-gc.in, guix-import.in,
guix-package.in: Use it instead of (setlocale LC_ALL "").
* guix/store.scm (<nix-server>)[atts-cache]: New field.
(add-text-to-store/cached): New procedure. Use it as a wrapper around
`add-text-to-store'.
When running "guix-build gdb", this reduces the number of RPCs from
3048 to 289, and execution time from 4.7s to 2.6s.
* guix/store.scm (<nix-server>)[ats-cache]: New field.
(open-connection): Update accordingly.
(add-to-store/cached): Use (nix-server-add-to-store-cache SERVER)
instead of a weak hash table.
* guix/store.scm (add-to-store/cached): New variable.
Use it as the new `add-to-store'.
This reduces the number of RPCs when doing "guix-build gdb" from 5009
to 3053, and the execution time from 7s to 3.9s.
Suggested by Andreas Enge <andreas@enge.fr> at
<http://lists.gnu.org/archive/html/bug-guix/2013-01/msg00325.html>.
* guix-package.in (latest-profile-number): Remove.
(switch-symlinks): New procedure.
(roll-back)[switch-link]: Use it.
(guix-package)[process-actions]: Always choose NUMBER + 1 for the new
profile. Use `switch-symlinks' instead of `symlink'. Remove code to
delete PROFILE when it exists since `switch-symlinks' has the same
effect.
* tests/guix-package.sh: Adjust existing `--roll-back' tests.
* doc/guix.texi (Invoking guix-package): Document this `--roll-back'
behavior.
Suggested by Andreas Enge <andreas@enge.fr> at
<http://lists.gnu.org/archive/html/bug-guix/2013-01/msg00316.html>.
* guix-package.in (roll-back): Check whether PROFILE is valid using
`file-exists?'. When NUMBER is zero, just emit a notice. When
PREVIOUS-NUMBER is zero and PREVIOUS-PROFILE does not exist, build the
empty profile, and link to it.
* tests/guix-package.sh: Add tests.
* doc/guix.texi (Invoking guix-package): Document the new behavior.
* guix/packages.scm (<package>)[inputs]: Mark as thunked.
(package-derivation)[expand-input]: Remove case where the input is a
procedure.
* tests/packages.scm ("trivial with system-dependent input"): Remove
`lambda', and use (%current-system).
* gnu/packages/bootstrap.scm (package-from-tarball): Likewise for `inputs'.
(%bootstrap-glibc, %bootstrap-gcc): Likewise.
* gnu/packages/scheme.scm (mit-scheme): Likewise.
* guix-package.in (guix-package)[parse-options]: Call `leave' when
passed a non-option argument.
Reported by Andreas Enge <andreas@enge.fr>.
* tests/guix-package.sh: Add test.
* guix/packages.scm (<package>): Mark `arguments' as thunked.
(package-derivation): Adjust accordingly. Parameterize
%CURRENT-SYSTEM to SYSTEM, so that arguments can refer to it.
* guix/build-system/gnu.scm (package-with-explicit-inputs): Expect
`package-arguments' to always return a list, and return a list.
(package-with-extra-configure-variable): Likewise.
(static-package): Likewise.
* gnu/packages/base.scm (patch, findutils, gcc-4.7, binutils-boot0,
gcc-boot0, glibc-final-with-bootstrap-bash, cross-gcc-wrapper,
static-bash-for-glibc, binutils-final, gcc-final): Change `arguments'
from a lambda to a list, and use (%current-system) as needed.
(nix-system->gnu-triplet, boot-triplet): Have the first argument
default to (%current-system).
* gnu/packages/bootstrap.scm (glibc-dynamic-linker): Have `system'
default to (%current-system).
(%bootstrap-gcc): Change `arguments' to a list.
* gnu/packages/gawk.scm (gawk): Likewise.
* gnu/packages/m4.scm (m4): Likewise.
* gnu/packages/make-bootstrap.scm (%glibc-for-bootstrap): Likewise, and
expect `package-arguments' to return a list.
(%static-inputs, %gcc-static, tarball-package): Likewise.
* gnu/packages/ncurses.scm (ncurses): Likewise.
* guix/utils.scm (define-record-type*)[make-syntactic-constructor]: Add
a `thunked' parameter.
(thunked-field?, field-bindings): New procedures. Use the latter when
generating `letrec*' bindings.
[thunked-field?, thunked-field-accessor-name, field-spec->srfi-9,
thunked-field-accessor-name]: New procedures.
Use them when generating the `define-record-type' form, and to
generated thunk field accessors, along call to
`make-syntactic-constructor' with the new argument.
* tests/utils.scm ("define-record-type* & thunked",
"define-record-type* & thunked & default",
"define-record-type* & thunked & inherited"): New tests.
* doc/guix.texi (Invoking guix-build): Make it clear that `guix-build'
doesn't access the user's profile, and add cross-ref to `guix-package'.
Suggested by Nikita Karetnikov <nikita@karetnikov.org>.
* guix-package.in (roll-back): Fix file name of PREVIOUS-PROFILE, which
could end up containing the dirname twice.
Reported by Nikita and Andreas.
* tests/guix-package.sh: Add test.
* guix-build.in (guix-build)[find-package]: New procedure.
Use it instead of using `find-packages-by-name' directly.
Suggested by Andreas Enge <andreas@enge.fr>.
* tests/guix-build.sh: Add tests.
* doc/guix.texi (Invoking guix-build): Add `coreutils-8.20' as an
example. Fix guile-1.8 example.
* gnu/packages/autotools.scm (autoconf-wrapper): New variable.
(automake): Use AUTOCONF-WRAPPER instead of AUTOCONF.
Add `automake-skip-amhello-tests.patch' as an input.
Add #:patches and #:phases arguments.
* gnu/packages/patches/automake-skip-amhello-tests.patch: New file.
* Makefile.am (dist_patch_DATA): Add it.
* guix/build/download.scm: Autoload (gnutls).
(tls-wrap): New procedure.
(open-connection-for-uri): Add support for `https'. Wrap the socket
with `tls-wrap' in that case.
(url-fetch): Add `https'.
* guix/download.scm (gnutls-derivation): New procedure.
(url-fetch)[need-gnutls?]: New variable.
Call `gnutls-derivation' when NEED-GNUTLS? is true, and add its output
to the `GUILE_LOAD_PATH' env. var. in that case.
* guix/packages.scm (cache): Change the `drv' argument to `thunk'.
Memoize all the return values of THUNK.
(cached-derivation): Remove.
(cached): New macro.
(package-derivation): Use `cached' instead of `(or (cached-derivation) …)'.
* doc/guix.texi (Defining Packages): Update accordingly.
* distro/packages/glib.scm: Rename to...
* gnu/packages/glib.scm: ... this. Update module declaration
accordingly.
(dbus): New variable.
(glib): Change version number to 2.34.3, and adjust URL accordingly.
Add a "doc" output. Add #:configure-flags, #:patches, and #:phases
arguments. Add DBUS as an input, as well a three patches.
* Makefile.am (MODULES): Adjust to file renaming.
(dist_patch_DATA): Add `glib-tests-timezone.patch',
`glib-tests-homedir.patch', and `glib-tests-desktop.patch'.
* gnu/packages/gnutls.scm (gnutls): Remove the #:parallel-build?
argument, which is no longer needed. Remove the commented-out LZO
input, since GnuTLS no longer supports it since 3.0.0.
Development is done using the Git distributed version control system. Thus,
access to the repository is not strictly necessary. We welcome contributions
in the form of patches as produced by ‘git format-patch’ sent to
guix-devel@gnu.org. Please write commit logs in the [[http://www.gnu.org/prep/standards/html_node/Change-Logs.html#Change-Logs][GNU ChangeLog format]].
Alternatively, it is possible to semi-automatically import recipes from
the [[http://nixos.org/nixpkgs/][Nixpkgs]] software distribution using this command:
As you become a regular contributor, you may find it convenient to have write
access to the repository (see below.)
guix-import /path/to/nixpkgs/checkout nettle
* Coding Style
The command automatically fetches and converts to Guix the “Nix
expression” of Nettle.
In general our code follows the [[info:standards][GNU Coding Standards]] (GCS). However, the GCS
do not say much about Scheme, so here are some additional rules.
* Porting the Guix distro on a new platform
** Programming Paradigm
** Introduction
Scheme code in Guix is written in a purely functional style. One exception is
code that involves input/output, and procedures that implement low-level
concepts, such as the ‘memoize’ procedure.
Unlike Make or similar build tools, Guix requires absolutely /all/ the
dependencies of a build process to be specified.
** Modules
For a user-land software distribution, that means that the process that
builds GCC (then used to build all other programs) must itself be
specified; and the process to build the C library to build that GCC; and
the process to build the GCC to build that library; and... See the
problem? Chicken-and-egg.
Guile modules that are meant to be used on the builder side must live in the
(guix build …) name space. They must not refer to other Guix or GNU modules.
However, it is OK for a “host-side” module to use a build-side module.
To break that cycle, the distro starts from a set of pre-built
binaries–usually referred to as “bootstrap binaries.” These include
statically-linked versions of Guile, GCC, Coreutils, Make, Grep, sed,
etc., and the GNU C Library.
Modules that deal with the broader GNU system should be in the (gnu …) name
space rather than (guix …).
This section describes how to build those bootstrap binaries when
porting to a new platform.
** Data Types and Pattern Matching
** When the platform is supported by Nixpkgs
The tendency in classical Lisp is to use lists to represent everything, and
then to browse them “by hand” using ‘car’, ‘cdr’, ‘cadr’, and co. There are
several problems with that style, notably the fact that it is hard to read,
error-prone, and a hindrance to proper type error reports.
In that case, the easiest thing is to bootstrap the distro using
binaries from Nixpkgs.
Guix code should define appropriate data types (for instance, using
‘define-record-type*’) rather than abuse lists. In addition, it should use
pattern matching, via Guile’s (ice-9 match) module, especially when matching
lists.
To do that, you need to comment out the definitions of
‘%bootstrap-guile’ and ‘%bootstrap-inputs’ in distro/packages/bootstrap.scm
to force the use of Nixpkgs derivations. For instance, when porting to
‘i686-linux’, you should redefine these variables along these lines:
Guix uses Nix’s daemon (‘nix-worker’, later renamed to ‘nix-daemon’) to
actually perform builds, scheduling, substitution of pre-built binaries,
and GC-related tasks. The daemon mainly uses ‘libstore’ from Nix.
Integrating it in Guix itself will make Guix self-contained, thereby
simplifying our users’ lives.
** Remove dependency on OpenSSL
The ‘openssl’ command-line tool is used in libstore to sign store paths
@@ -23,39 +20,33 @@ X.509 SubjectPublicKeyInfo. These can be decoded with the [[http://lists.gnu.or
GnuTLS]], but not yet with its Guile bindings. There’s also
‘gnutls_privkey_sign_data’ to sign, and related functions.
** Add a binary cache substituter
Like scripts/download-from-binary-cache.pl in Nix, but written in
Scheme. Substituters allow pre-built binaries to be downloaded when
they are available from a trusted source.
** Add `guix publish' to publish the store using Guile's web server
** MAYBE Add a substituter that uses the GNUnet DHT
Generate narinfos and nars on the fly, upon HTTP GET requests.
Ideally, extend .nix-cache-info to include the server's public key, and also
reply to requests for .narinfo.sig.
Optionally, use Guile-Avahi to publish the service.
Would be neat if binaries could be pushed to and pulled from the GNUnet
DHT. Guix users would sign their binaries, and define which binaries
they trust.
** MAYBE Add a substituter that uses the GNUnet DHT or [[http://libswift.org][libswift]]
Would be neat if binaries could be pushed to and pulled from the GNUnet DHT or
rather libswift (since DHTs aren’t suited for large payloads). Guix users
would sign their binaries, and define which binaries they trust.
Use UPnP and similar to traverse NAT, like ‘filegive’ does.
** Add a remote build hook
Like scripts/build-remote.pl in Nix.
* infrastructure
** have a Hydra instance build Guix packages
[[http://nixos.org/hydra/][Hydra]] is a continuous integration tool based on Nix. It now has
[[https://github.com/NixOS/hydra/commit/f27ae1d5663680400cb99cfb898970f34d8d21be][Guile/Guix support]], which allows “build recipes” written in Guile using
Guix to be used directly on Hydra.
For a start, we may use the instance at hydra.nixos.org, generously
provided by TU Delft. However, in the future, we may want to setup our
own instance at gnu.org.
* user interface
** Add a package.el (Emacs) back-end
Unfortunately package.el is monolithic, so most likely we’d have to
write a new one based on it, as opposed to actually using it.
package.el is quite monolithic, but we may be able to reuse/extend
‘package-menu-mode’ or at least ‘tabulated-list-mode’.
** add guile-ncurses interface
* extend <origin>
** add OpenPGP signatures:
@@ -70,11 +61,11 @@ write a new one based on it, as opposed to actually using it.
* extend <package>
** add support for ‘search-paths’
** add ‘recommends’ field
This should be passed to the build system, to extend package-specific
;; FIXME: Add more dependencies for further plugins.
(inputs
`(("glib",glib)
("gstreamer",gstreamer)
("pkg-config",pkg-config)
("python-wrapper",python-wrapper)))
(arguments
`(#:tests?#f))
;; All tests pass except for one:
;; Running suite(s): pbutils library
;; 85%: Checks: 7, Failures: 1, Errors: 0
;; libs/pbutils.c:522:F:general:test_pb_utils_install_plugins:0: gst_install_plugins_sync() failed ;; with unexpected ret 201, which is neither HELPER_MISSING nor 1
;; FAIL: libs/pbutils
;; According to the documentation, "gst_install_plugins_sync (...)
;; should almost never be used".
(home-page"http://gstreamer.freedesktop.org/")
(synopsis
"Plugins for the gstreamer multimedia library")
(description
"GStreamer is a library for constructing graphs of media-handling
components. The applications it supports range from simple Ogg/Vorbis
playback, audio/video streaming to complex audio (mixing) and video
(non-linear editing) processing.
Applications can take advantage of advances in codec and filter technology
transparently. Developers can add new codecs and filters by writing a
simple plugin with a clean, generic interface.
This package provides an essential exemplary set of elements.")
(synopsis"ICU, International Components for Unicode")
(description
"ICU is a set of C/C++ and Java libraries providing Unicode and
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.