Commit Graph

565 Commits

Author SHA1 Message Date
Ludovic Courtès
57aff6476e utils: Add 'every*'.
* guix/build/gnu-build-system.scm (every*): Move to...
* guix/build/utils.scm (every*): ... here.  New procedure.
2015-10-03 14:36:12 +02:00
Ludovic Courtès
fde1783087 download: Check whether HORIZONTAL ELLIPSIS can be encoded.
* guix/build/download.scm (ellipsis): New procedure.
  (store-path-abbreviation): Use it.
2015-10-01 11:28:58 +02:00
Ludovic Courtès
1007b6bf0b Merge branch 'master' into core-updates 2015-09-24 22:18:07 +02:00
Ludovic Courtès
75726135ce download: Don't abbreviate things that are not store items.
Fixes a regression introduced in a8be7b9a.

* guix/build/download.scm (store-path-abbreviation): Return STORE-PATH
  if it's not an actual store path.  Fixes an out-of-range exception
  when running tests/substitute.scm and tests/store.scm.
2015-09-24 21:54:37 +02:00
Steve Sprang
9462882889 download: Fix some minor progress-logging regressions.
* guix/build/download.scm
  (string-pad-middle): Allow resulting padded string to overflow.
  (store-url-abbreviation): Remove unnecessary procedure.
  (progress-proc): Use BASENAME as default for parameter 'abbreviation'.
  (url-fetch): Display extra newlines for readability.
2015-09-23 22:04:46 -04:00
Mark H Weaver
a05c06720a emacs-build-system: Fix 'package-name-version->elpa-name-version'.
Fixes a regression introduced in b7c7c03eb5.

* guix/build/emacs-build-system.scm (package-name-version->elpa-name-version):
  Remove unused 'name' binding.  Do not abuse 'strip-store-file-name' to
  remove the "emacs-" prefix, which worked before b7c7c03eb5 but not after.
2015-09-23 17:38:47 -04:00
Mark H Weaver
bd90127ad4 Merge branch 'master' into core-updates 2015-09-22 16:38:48 -04:00
Steve Sprang
47770296d2 download: Only show hours in the elapsed time if necessary.
* guix/build/download.scm
  (seconds->string): Conditionally include hours in timestamp.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2015-09-17 14:40:46 +02:00
Steve Sprang
a8be7b9a7a substitute: Improve readability of download progress report.
* guix/build/download.scm
  (string-pad-middle, store-url-abbreviation, store-path-abbreviation):
  New procedures.
  (progress-proc): Add #:abbreviation parameter and use it.  Generate a
  better indeterminate progress string.
* guix/scripts/substitute.scm (assert-valid-narinfo): Add newlines to output.
  (process-substitution): Use byte-count->string and store-path-abbreviation.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2015-09-16 23:50:12 +02:00
Steve Sprang
eb95ace9f1 download: Avoid type errors when formatting download progress output.
* guix/build/download.scm (nearest-exact-integer): New procedure.
  (seconds->string, byte-count->string): Use it.
2015-09-14 23:36:26 -04:00
David Thompson
5dc876231b build: ruby: Add support for tarball and directory sources.
Previously, the Ruby build system only knew how to work with gem archives,
which made it difficult to build unreleased gems from a Git repository or
released gems in tarball form.

* gnu/build/ruby-build-system.scm (gnu:unpack, gem-archive?): New procedures.
  (unpack): Use GNU build system unpack phase for non-gem sources.
  (build): Rebuild the gemspec iff the source is a gem archive.
* guix.texi ("ruby-build-system"): Mention that tarballs and directories are
  acceptable.
2015-09-14 08:29:07 -04:00
Ludovic Courtès
75710da667 Merge branch 'master' into core-updates 2015-09-13 21:28:01 +02:00
宋文武
f47fbeb23a build-system/glib-or-gtk: Don't generate 'icon-theme.cache'.
* guix/build-system/glib-or-gtk.scm (default-gtk+): Remove.
  (lower): Adjust accordingly.
* guix/build/glib-or-gtk-build-system.scm (generate-icon-cache): Remove.
  (%standard-phases): Remove 'glib-or-gtk-icon-cache' phase.
2015-09-11 20:24:30 +08:00
Steve Sprang
0c0a1f22ce build: Improve information density and appearance of download progress output.
* guix/build/download.scm (seconds->string): New function.
  (byte-count->string): New function.
  (progress-bar): New function.
  (throughput->string): Remove function.
  (progress-proc): Display base file name, elapsed time, and progress bar.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2015-09-08 21:47:30 +02:00
David Thompson
ee78d02452 build: container: Use the same clone flags as fork(3).
The intent is to make 'clone' behave a lot more like 'primitive-fork', which
calls clone(2) with SIGCHLD, CLONE_CHILD_CLEARTID, and CLONE_CHILD_SETTID
flags.  Notably, running 'clone' at the REPL without these flags would break
the REPL beyond repair.

* guix/build/syscalls.scm (CLONE_CHILD_CLEARTID, CLONE_CHILD_SETTID): New
  variables.
* gnu/build/linux-container.scm (namespaces->bit-mask): Add
  CLONE_CHILD_CLEARTID and CLONE_CHILD_SETTID to bit mask.
2015-09-07 13:09:58 -04:00
David Thompson
b500e7182d build: ruby: Avoid long build directory names.
Having the hash of the source gem in the source directory file name proved to
be problematic when running the test suite for the 'pg' gem that creates
UNIX-domain sockets in the source directory and exceeded the 108 character
limit on GNU/Linux systems.

* guix/build/ruby-build-system.scm (unpack): Rename unpacked gem directory to
  "gem".
2015-09-07 08:27:10 -04:00
Mark H Weaver
f4ae827e26 utils: find-files: Add DIRECTORIES? and FAIL-ON-ERROR? arguments.
* guix/build/utils.scm (find-files): Add DIRECTORIES? and FAIL-ON-ERROR?
  keyword arguments.
2015-09-06 17:25:50 -04:00
Alex Kost
6480fcae24 emacs-build-system: Fix a file name of info directory.
* guix/build/emacs-build-system.scm (move-doc): Adjust to use
  "/share/info" instead of its sub-directory.
2015-09-06 12:15:51 +03:00
David Thompson
cf897cbacc build: syscalls: Properly handle clone errors.
* guix/build/syscalls.scm (clone): Catch -1 return value and throw error.
2015-09-05 13:42:02 -04:00
Ricardo Wurmus
f8f3bef6aa build: Add R build system.
* guix/build-system/r.scm: New file.
* guix/build/r-build-system: New file.
* Makefile.am (MODULES): Add new files.
* doc/guix.texi (Build Systems): Document r-build-system.
2015-08-31 15:39:34 +02:00
Ludovic Courtès
8c578a6094 utils: Move 'package-name->name+version' to (guix build utils).
* guix/utils.scm (package-name->name+version): Move to...
* guix/build/utils.scm (package-name->name+version): ... here.  New
  procedure.
* guix/build/emacs-build-system.scm (package-name->name+version):
  Remove.
2015-08-30 18:38:08 +02:00
Ludovic Courtès
b7c7c03eb5 utils: Add 'strip-store-file-name'.
* guix/build/utils.scm (strip-store-file-name): New procedure.
* guix/build/emacs-build-system.scm (store-directory->name-version):
  Remove.  Update callers to use 'strip-store-file-name'.
* gnu/packages/gcc.scm (make-libstdc++-doc)[arguments]: Use
  'strip-store-file-name' instead of 'string-drop'.
2015-08-30 18:38:08 +02:00
Ludovic Courtès
5c962e93e5 build-system/gnu: Use monotic time to measure elapsed time.
* guix/build/gnu-build-system.scm (gnu-build)[elapsed-time]: New
  procedure.
  Use it, and use (current-time time-monotonic) instead
  of (gettimeofday).  Show one digit after the comma for the elapsed
  time.
2015-08-30 17:07:45 +02:00
Ludovic Courtès
4cc2ed98cf utils: Add 'install-file'.
* guix/build/utils.scm (install-file): New procedure.
2015-08-29 01:25:08 +02:00
David Thompson
e83c6d009f build: ruby: Rewrite build system to use gem archives.
Co-Authored-By: Pjotr Prins <pjotr.public01@thebird.nl>

* guix/build-system/ruby.scm (lower): Remove git dependency.
  (rubygems-uri): New procedure.
* guix/build/ruby-build-system (gitify): Delete.
  (unpack): Use 'gem unpack' utility.
  (check): Add docstring.
  (build): Repack modified gem.
  (install): Rebuild unpacked gem and install it.
  (%standard-phases): Remove gitify and build phases.
* gnu/packages/ruby.scm (ruby-hoe, ruby-rake-compiler, ruby-i18n,
  ruby-rspec-support, ruby-rspec-core, ruby-diff-lcs-for-rspec,
  ruby-rspec-expectations, ruby-rspec-mocks, ruby-rspec, bundler,
  ruby-useragent, ruby-bacon, ruby-arel, ruby-connection-pool,
  ruby-net-http-persistent, ruby-minitest, ruby-minitest-sprint,
  ruby-minitest-bacon, ruby-daemons, ruby-git, ruby-slop,
  ruby-multipart-post): Convert to new build system.
* doc/guix.texi (ruby-build-system): Document the gem archive requirement.
2015-08-18 17:58:13 -04:00
David Thompson
39e336b5c8 syscalls: setns: Skip binding if there is no such C function.
On systems with a glibc prior to 2.14, the 'setns' function is not available.

Thanks to Eric Bavier for reporting the issue.

* guix/build/syscalls.scm (setns): Wrap with 'false-if-exception'.
2015-08-17 14:51:18 -04:00
Mark H Weaver
9f6509c655 python-build-system: Fix 'get-python-version'.
* guix/build/python-build-system.scm (get-python-version): Rewrite to handle
  multiple-digit version number components.
2015-08-06 16:33:54 -04:00
Federico Beffa
40aee1a133 build: emacs: Fix bug and improvement robustness.
* guix/build/emacs-build-system.scm (emacs-inputs): Fix matching pattern.
  (patch-el-files): Improve regexp pattern.
2015-08-01 12:37:13 +02:00
Ludovic Courtès
e7f5691d45 syscalls: Add 'network-interfaces', which wraps libc's 'getifaddrs'.
Based on discussions with Rohan Prinja <rohan.prinja@gmail.com>.

* guix/build/syscalls.scm (<interface>): New record type.
  (write-interface, values->interface, unfold-interface-list,
  network-interfaces, free-ifaddrs): New procedures.
  (ifaddrs): New C struct.
  (%struct-ifaddrs-type, %sizeof-ifaddrs): New macros.
* tests/syscalls.scm ("network-interfaces returns one or more interfaces",
  "network-interfaces returns \"lo\""): New tests.
2015-07-25 14:43:45 +02:00
Ludovic Courtès
573b4c1ff3 syscalls: 'define-c-struct' properly align reads.
* guix/build/syscalls.scm (alignof*, align): New macros.
  (write-types, read-types): Use 'align' to compute the actual offset to
  read/write a value of TYPE0.
2015-07-25 14:43:45 +02:00
Ludovic Courtès
3ca337699a syscalls: 'read-socket-address' gracefully handles unsupported families.
* guix/build/syscalls.scm (PF_PACKET, AF_PACKET): New variables.
  (read-socket-address): Make 'index' optional.  Return (vector FAMILY) when
  FAMILY is neither AF_INET nor AF_INET6.
2015-07-25 14:43:44 +02:00
Ludovic Courtès
4a30e84e61 syscalls: 'define-c-struct' distinguishes pointers from integers.
* guix/build/syscalls.scm (read-type): Add special-case for when TYPE is '*.
2015-07-25 14:43:44 +02:00
Ludovic Courtès
b89e74054e syscalls: Rename 'network-interfaces' and 'all-network-interfaces'.
* guix/build/syscalls.scm (network-interfaces): Rename to...
  (network-interface-names): ... this.
  (all-network-interfaces): Rename to...
  (all-network-interface-names): ... this.
* gnu/services/networking.scm (dhcp-client-service): Adjust accordingly.
* tests/syscalls.scm ("all-network-interfaces"): Rename to...
  ("all-network-interface-names"): ... this, and adjust accordingly.
  ("network-interfaces"): Rename to...
  ("network-interface-names"): ... this, and adjust accordingly.
2015-07-25 14:43:44 +02:00
Mark H Weaver
1b4e48d498 Merge branch 'master' into core-updates 2015-07-19 18:12:34 -04:00
pjotrp
6e9f2913ba build-system/ruby: Add #:gem-flags parameter.
* guix/build-system/ruby.scm (build): add 'gem-flags' key
* guix/build/ruby-build-system.scm (build): use 'gem-flags' key
* doc/guix.texi (Build Systems): Mention #:gem-flags.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2015-07-18 17:15:03 +02:00
Ludovic Courtès
13f0c6ed41 syscalls: Struct deserializer can now return arbitrary objects.
* guix/build/syscalls.scm (read-types): Add RETURN and VALUES parameters.
  (define-c-struct): Add WRAP-FIELDS parameter and pass it to 'read-types'.
  (sockaddr-in, sockaddr-in6): Add first argument that uses
  'make-socket-address'.
  (read-socket-address): Remove 'match' on the result of 'read-sockaddr-in'
  and 'read-sockaddr-in6'.
2015-07-17 23:31:29 +02:00
Ludovic Courtès
4f7b564adb download: Remove spurious warning about 'https_proxy'.
* guix/build/download.scm (open-connection-for-uri)[with-https-proxy]: Warn
  about 'https_proxy' only when 'getenv' returns a non-empty string.
2015-07-17 22:31:12 +02:00
Mark H Weaver
3bacb7a698 python-build-system: Add 'ensure-no-mtimes-pre-1980' phase.
* guix/build/python-build-system.scm (ensure-no-mtimes-pre-1980):
  New phase.
  (%standard-phases): Add it after 'unpack'.
2015-07-16 01:49:39 -04:00
Mark H Weaver
3c7d023d64 build-system/gnu: Pass --build=<triplet> to configure by default.
* guix/build-system/gnu.scm (gnu-build, gnu-cross-build): Accept #:build
  keyword argument.  Pass it to 'gnu-build' on the build side.
* guix/build/gnu-build-system.scm (configure): Accept #:build keyword
  argument.  Unless it is false, pass --build to configure.
2015-07-13 18:54:40 -04:00
Federico Beffa
e9137a5310 build: Add 'emacs-build-system'.
* Makefile.am (MODULES): Add 'guix/build-system/emacs.scm' and
  'guix/build/emacs-build-system.scm'.
* guix/build-system/emacs.scm: New file.
* guix/build/emacs-build-system.scm: New file.
* doc/guix.texi (Build Systems): Document it.
2015-07-08 10:53:05 +02:00
Federico Beffa
1d44b4e544 build: emacs-utils: Add 'emacs-byte-compile-directory'.
* guix/build/emacs-utils.scm (emacs-byte-compile-directory): New procedure.
2015-07-08 10:53:05 +02:00
David Thompson
df3ce5c123 build: syscalls: Add pivot-root.
* guix/build/syscalls.scm (pivot-root): New procedure.
* tests/syscalls.scm ("pivot-root"): New test.
2015-07-07 21:16:25 -04:00
David Thompson
43ace6ea76 build: syscalls: Add setns.
* guix/build/syscalls.scm (setns): New procedure.
* tests/syscalls.scm ("setns"): New test.

squash: setns
2015-07-07 20:55:09 -04:00
David Thompson
8950ed11c6 build: syscalls: Add clone.
* guix/build/syscalls.scm (clone): New procedure.
  (CLONE_NEWNS, CLONE_NEWUTS, CLONE_NEWIPC, CLONE_NEWUSER, CLONE_NEWPID,
  CLONE_NEWNET): New variables.
* tests/syscalls.scm ("clone"): New test.
2015-07-07 20:35:08 -04:00
David Thompson
b4abdeb63b build: syscalls: Add mkdtemp!
* guix/build/syscalls.scm (mkdtemp!): New procedure.
* tests/syscalls.scm ("mkdtemp!"): New test.
2015-07-07 18:46:44 -04:00
David Thompson
b16d138a0a build: syscalls: Add unmount flags.
* guix/build/syscalls.scm (MNT_FORCE, MNT_DETACH, MNT_EXPIRE)
  (UMOUNT_NOFOLLOW): New variables.
2015-07-07 18:38:41 -04:00
David Thompson
577c02eb40 build: syscalls: Add additional mount flags.
* guix/build/syscalls.scm (MS_NOSUID, MS_NODEV, MS_NOEXEC, MS_STRICTATIME):
  New variables.
2015-07-07 18:38:41 -04:00
pjotrp
76ae915ec8 build: ruby: Run 'rake gem' when gemspec is missing.
* guix/build/ruby-build-system.scm (build): Run 'rake gem' when there is no
  gemspec in the source tree.

Co-Authored-By: David Thompson <davet@gnu.org>
2015-07-07 08:54:29 -04:00
Eric Bavier
6508ce55e9 build-system/haskell: install config for any package that creates it.
A Cabal package is allowed to declare an "empty" library, in an
otherwise executable-only package, for the purpose of allowing Cabal
to use it as a dependency for other packages.  See e.g. hspec-discover.

* guix/build/haskell-build-system.scm (register): Unconditionally call
  setup script with "register", and install any config file generated.
2015-06-11 18:55:49 -05:00
Ludovic Courtès
6a669bda51 profiles: Export 'ensure-writable-directory' and use it.
* guix/build/profiles.scm (ensure-writable-directory): Export.
* guix/profiles.scm (gtk-icon-themes)[build]: Remove '@@' form and use (guix
  build profiles).
2015-05-27 22:36:52 +02:00
Ludovic Courtès
60a56db007 services: swap: Use 'restart-on-EINTR'.
* gnu/services/base.scm (swap-service)[start, stop]: Use 'restart-on-EINTR'.
* guix/build/syscalls.scm (swapoff): Fix typo in 'throw' arguments.
2015-05-22 11:51:12 +02:00
Ludovic Courtès
ea98270443 syscalls: Add 'restart-on-EINTR'.
* guix/build/syscalls.scm (call-with-restart-on-EINTR): New procedure.
  (restart-on-EINTR): New macro.
2015-05-22 11:51:12 +02:00
Ludovic Courtès
113c17a0c9 profiles: Gracefully deal with packages containing an etc/ symlink.
This fixes a bug whereby 'guix package -i gcc-toolchain' would fail in
'build-profile'.  This is because in 'gcc-toolchain', etc/ is a symlink,
and so the 'scandir' call in 'unsymlink' would return #f instead of
returning a list.

Reported by Andreas Enge <andreas.enge@inria.fr>.

* guix/build/profiles.scm (ensure-writable-directory)[unsymlink]: Append
  "/" to TARGET before calling 'scandir'.
* tests/profiles.scm ("etc/profile when etc/ is a symlink"): New test.
2015-05-18 09:47:29 +02:00
Ludovic Courtès
6944fdbdbd syscalls: Add 'set-network-interface-up'.
* guix/build/syscalls.scm (set-network-interface-up): New procedure.
2015-05-17 23:20:59 +02:00
Ludovic Courtès
a0dac7a01f profiles: Ensure the profile's etc/ directory is writable.
Reported by 宋文武 <iyzsong@gmail.com>.

* guix/build/profiles.scm (build-etc/profile,
  ensure-writable-directory): New procedures.
  (build-profile): Use them.
* tests/profiles.scm ("etc/profile when etc/ already exists"): New test.
2015-05-08 16:35:32 +02:00
Ludovic Courtès
d664f1b431 profiles: Generate an 'etc/profile' file.
Suggested by 宋文武 <iyzsong@gmail.com>
in <http://bugs.gnu.org/20255>.

* guix/build/profiles.scm (abstract-profile,
  write-environment-variable-definition): New procedures.
  (build-profile): Add #:search-paths parameter.  Create
  OUTPUT/etc/profile.
* guix/profiles.scm (profile-derivation)[builder]: Add 'search-paths'
  variable and pass it to 'build-profile'.  Adjust #:modules argument.
* tests/profiles.scm ("etc/profile"): New test.
* doc/guix.texi (Invoking guix package): Mention etc/profile.
2015-05-06 18:26:54 +02:00
Ludovic Courtès
611adb1ee5 profiles: Move build code to (guix build profiles).
* guix/build/profiles.scm: New file.
* Makefile.am (MODULES): Add it.
* guix/profiles.scm (profile-derivation)[builder]: Call out to
  'build-profile'.
  Add (guix build profiles) to the #:modules argument.
2015-05-06 18:26:54 +02:00
Ludovic Courtès
7623848343 download: Work around Guile small-receive-buffer bug.
Previously, code using directly (guix build download) was still affected
by <http://bugs.gnu.org/15368>.  This includes source derivations, the
'guix download' command, and (guix gnu-maintenance).

'guix substitute' was unaffected since it used (guix http-client), which
already had the fix.

* guix/http-client.scm (open-socket-for-uri): Remove.
  (http-fetch): Remove #:buffered? argument to 'open-socket-for-uri';
  use 'setvbuf' instead.
* guix/scripts/substitute.scm (fetch): Likewise.
* guix/build/download.scm (open-socket-for-uri): New procedure, taken
  from guix/http-client.scm, but without the #:buffered? parameter.
2015-05-06 10:31:11 +02:00
Ludovic Courtès
c822fb8e34 download: Reinstate buffering on connection sockets.
* guix/build/download.scm (open-connection-for-uri): Reinstate call to
  'setvbuf' inadvertently removed in d17551d9.
2015-05-06 09:50:15 +02:00
Ludovic Courtès
bf4af30bb2 Merge branch 'master' into core-updates 2015-05-01 15:03:30 +02:00
Ludovic Courtès
d17551d943 download: Simplify 'open-connection-for-uri' to support HTTP proxies.
Partly fixes <http://bugs.gnu.org/20402>.
Reported by Joshua Randall <jcrandall@alum.mit.edu>.

* guix/build/download.scm (open-connection-for-uri): Rewrite to be a
  small wrapper around 'open-socket-for-uri'.  This procedure was
  initially introduced in d14ecda to work around the lack of NSS modules
  during bootstrap but that has become unnecessary since 0621349, which
  introduced a bootstrap Guile that uses static NSS modules (from commit
  d3b5972.)
  On Guile >= 2.0.10, this allows the 'http_proxy' environment variable
  to be used.
2015-05-01 00:06:17 +02:00
Ludovic Courtès
0bd4377566 build-system/gnu: #:validate-runpath? now defaults to #t.
* guix/build/gnu-build-system.scm (validate-runpath): Change default
  value of VALIDATE-RUNPATH? to #t.
2015-04-23 18:52:40 +02:00
Ludovic Courtès
cb85eb5e65 build-system/gnu: Gracefully handle dangling symlinks.
Fixes <http://bugs.gnu.org/20081>.
Reported by Tomáš Čech <tcech@suse.cz>.

* guix/build/gnu-build-system.scm (patch-source-shebangs): Remove files
  that don't pass 'file-exists?'.
  (patch-generated-file-shebangs): Likewise.
2015-04-23 18:52:40 +02:00
Ludovic Courtès
cd91504df2 gremlin: Add support for the expansion of $ORIGIN in RUNPATH.
* guix/build/gremlin.scm (expand-variable, expand-origin): New
  procedures.
  (validate-needed-in-runpath): Map 'expand-origin' to the RUNPATH field
  of DYNINFO.
* tests/gremlin.scm ("expand-origin"): New test.
2015-04-23 18:52:40 +02:00
Ludovic Courtès
b7615c56a7 build-system/haskell: Adjust to new 'modify-phases' syntax.
* guix/build/haskell-build-system.scm (%standard-phases): Add missing
  quotes, as needed since commit f8503e2.
2015-04-16 09:51:38 +02:00
Ludovic Courtès
ee5408576d Merge branch 'master' into core-updates 2015-04-09 21:10:46 +02:00
Federico Beffa
283cce508a build-system/haskell: Update configure flags, 'haddock' and %standard-phases.
* guix/build/haskell-build-system.scm (%standard-phases): move 'haddock phase
  before 'install phase.
* guix/build/haskell-build-system.scm (haddock): Simplify it as the 'install
  phase takes care of copying files.
* guix/build/haskell-build-system.scm (configure): Add '--libsubdir' flag.
  Fix use of '--extra-include-dirs' and '--extra-lib-dirs' flags.  Use 'doc',
  'bin' and 'lib' outputs if they are defined.
* guix/build/haskell-build-system.scm (make-ghc-package-database, register):
  Aligh location of 'package.conf.d' directory with '--libsubdir' flag.
2015-04-08 17:31:11 +02:00
宋文武
cf3e3e374c Merge branch 'master' into core-updates 2015-04-08 16:04:37 +08:00
Ludovic Courtès
347f54ed33 utils: 'find-files' does not follow symlinks by default.
Fixes <http://bugs.gnu.org/20081>.
Reported by Tomáš Čech <sleep_walker@suse.cz>.

* guix/build/utils.scm (find-files): Add #:stat parameter.  Pass it as
  last argument to 'file-system-fold'.
2015-04-06 23:09:54 +02:00
Federico Beffa
b198545df6 build-system/gnu: Add docstring to 'delete-info-dir-file'.
* guix/build/gnu-build-system.scm (delete-info-dir-file): Add docstring.
2015-04-06 10:47:31 +02:00
Federico Beffa
26b261ecfe build-system/gnu: Add 'delete-info-dir-file' phase.
* guix/build/gnu-build-system.scm (delete-info-dir-file): New procedure.
  (%standard-phases): Use it.
2015-04-06 10:22:21 +02:00
Ludovic Courtès
dacd5d2ca7 gremlin: Ignore non-store file names in RUNPATH and warn about them.
* guix/build/gremlin.scm (validate-needed-in-runpath)[runpath]:
  Add (filter absolute-file-name? ...).
  Emit a warning when RUNPATH file names that do not match
  'store-file-name?'.  Change format of error message to begin with file
  name.
* guix/build/utils.scm (store-file-name?): New procedure.
2015-04-05 15:40:48 +02:00
Federico Beffa
14dfdf2e0e build-system: Add haskell-build-system.
* guix/build-system/haskell.scm: New file.
* guix/build/haskell-build-system.scm: New file.
* doc/guix.texi: Add section on 'haskell-build-system'.
2015-04-04 09:11:31 +02:00
Andy Wingo
8b43df2b30 build-system/glib-or-gtk: Wrap libexec programs.
* guix/build/glib-or-gtk-build-system.scm (wrap-all-programs): Also
  wrap binaries in libexec/, such as those launched by dbus services.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2015-04-03 23:24:01 +02:00
Ludovic Courtès
112da58875 build-system/gnu: Add 'validate-runpath' phase.
* guix/build/gnu-build-system.scm (every*, validate-runpath): New
  procedures.
  (%standard-phases): Add 'validate-runpath'.
* guix/build-system/gnu.scm (%gnu-build-system-modules): Add (guix build
  gremlin) and (guix elf).
  (gnu-build): Add #:validate-runpath?.
  [builder]: Pass it.
  (gnu-cross-build): Likewise.
* gnu/packages/base.scm (glibc)[arguments]: Add #:validate-runpath? #f.
2015-04-01 16:47:49 +02:00
Ludovic Courtès
4ba3a84d07 utils: Make the second 'find-files' argument optional.
* guix/build/utils.scm (find-files): Make 'pred' optional.
2015-04-01 15:43:54 +02:00
Ludovic Courtès
7be8c63e0d gremlin: Guard against invalid ELF segments.
* guix/build/gremlin.scm (&elf-error, &invalid-segment-size): New error
  condition types.
  (dynamic-link-segment): Compare SEGMENT's offset + size to ELF's total
  size.
  (validate-needed-in-runpath): Wrap body in 'guard' form.
2015-04-01 14:17:39 +02:00
Ludovic Courtès
d83ccc9b42 gremlin: Add libnsl to libc's library list.
* guix/build/gremlin.scm (%libc-libraries): Add "libnsl.so".
2015-04-01 13:46:01 +02:00
Ludovic Courtès
1968262a23 utils: 'find-files' takes an arbitrary predicate as its second argument.
* guix/build/utils.scm (file-name-predicate): New procedure.
  (find-files): Rename second parameter to 'pred'.  When 'pred' is not a
  procedure, call 'file-name-predicate'.  Use PRED instead of
  'regexp-exec' in the leaf procedure.
2015-03-31 22:55:41 +02:00
Ludovic Courtès
f8503e2b25 utils: 'modify-phases' no longer introduces quotes.
Suggested by Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>.

* guix/build/utils.scm (%modify-phases): Remove quotes.
* guix/build/cmake-build-system.scm (%standard-phases): Adjust
  accordingly.
* guix/build/glib-or-gtk-build-system.scm (%standard-phases): Likewise.
* guix/build/gnu-dist.scm (%dist-phases): Likewise.
* guix/build/perl-build-system.scm (%standard-phases): Likewise.
* guix/build/python-build-system.scm (%standard-phases): Likewise.
* guix/build/ruby-build-system.scm (%standard-phases): Likewise.
* guix/build/waf-build-system.scm (%standard-phases): Likewise.
* gnu/packages/bash.scm, gnu/packages/code.scm, gnu/packages/gl.scm,
  gnu/packages/gnome.scm, gnu/packages/graphics.scm,
  gnu/packages/image.scm, gnu/packages/key-mon.scm,
  gnu/packages/ocr.scm, gnu/packages/plotutils.scm,
  gnu/packages/search.scm, gnu/packages/video.scm: Likewise.
2015-03-31 22:43:01 +02:00
Ludovic Courtès
15aa2c3842 Add (guix build gremlin).
* guix/build/gremlin.scm, tests/gremlin.scm: New files.
* Makefile.am (MODULES): Add guix/build/gremlin.scm.
  (SCM_TESTS): Add tests/gremlin.scm.
2015-03-31 22:23:57 +02:00
David Thompson
7578f6e32a build: ruby: Set $GEM_HOME that matches Ruby's $GEM_PATH.
* guix/build/ruby-build-system.scm (install): Ignore the Ruby patch version
  when creating $GEM_HOME.
2015-03-17 19:23:17 -04:00
Andreas Enge
0d6f936036 gnu: cmake: Add CMAKE_PREFIX_PATH as a native search path, and drop
CMAKE_LIBRARY_PATH and CMAKE_INCLUDE_PATH from the cmake build system.

* gnu/packages/cmake.scm (cmake)[native-search-paths]: New field.
* guix/build/cmake-build-system.scm (configure): Drop environment variables
  CMAKE_LIBRARY_PATH and CMAKE_INCLUDE_PATH.
2015-03-14 16:06:55 +01:00
Ludovic Courtès
1289062522 Merge branch 'core-updates'. 2015-03-04 14:07:23 +01:00
David Thompson
f3c96d474f build: ruby: Install executables in /bin.
* guix/build/ruby-build-system.scm (install): Add '--bindir' flag to gem
  command.
2015-03-02 17:33:53 -05:00
David Thompson
7e7c6a1ac0 build: ruby: Add gitify phase.
* guix/build-system/ruby.scm (lower): Add git as implicit input.
* guix/build/ruby-build-system.scm (gitify): New procedure.
  (%standard-phases): Add gitify phase.
2015-03-02 17:33:53 -05:00
Ludovic Courtès
bbe7a2ce0c Revert "build-system/gnu: Keep the sloppy conversion strategy during bootstrap."
This reverts commit b479c3ddaf.
This commit was the result of an incorrect characterization of the
problem; see the log of commit 87c8b92 for details.
2015-03-01 17:05:41 +01:00
Ludovic Courtès
b479c3ddaf build-system/gnu: Keep the sloppy conversion strategy during bootstrap.
* guix/build/gnu-build-system.scm (gnu-build): Leave
  %DEFAULT-PORT-CONVERSION-STRATEGY unchanged when 'string->bytevector'
  fails to convert to ISO-8859-1.  This is an attempt to work around the
  build failures at <http://hydra.gnu.org/build/263002>.
2015-03-01 00:23:07 +01:00
Ludovic Courtès
dd0a8ef15f utils: Treat 'configure' and Makefiles with an 8-bit encoding.
* guix/build/utils.scm (patch-makefile-SHELL, patch-/usr/bin/file): Wrap
  'substitute*' in 'with-fluids'.  Fixes <http://hydra.gnu.org/build/262895>.
2015-02-28 12:25:22 +01:00
Ludovic Courtès
4db87162e6 packages: Set the port conversion strategy to 'error'.
Suggested by Mark H Weaver.

* guix/build/gnu-build-system.scm (gnu-build): Set
  %DEFAULT-PORT-CONVERSION-STRATEGY to 'error.
* guix/packages.scm (patch-and-repack)[builder]: Likewise.
2015-02-28 01:10:24 +01:00
Ludovic Courtès
ca1e3ad2fa utils: Change 'patch-shebangs' to use binary input.
* guix/build/utils.scm (get-char*): New procedure.
  (patch-shebang): Use it instead of 'read-char'.
  (fold-port-matches): Remove local 'get-char' and use 'get-char*'
  instead.
2015-02-28 01:01:51 +01:00
Ludovic Courtès
c9727aac40 download: Comment on lack of progress report with chunked encoding.
* guix/build/download.scm (progress-proc): Add comment.
2015-02-27 15:08:37 +01:00
Ludovic Courtès
9fbe6f1920 download: Measure and display the throughput.
* guix/build/download.scm (duration->seconds, throughput->string): New
  procedures.
  (progress-proc): Measure and display the throughput.
2015-02-27 15:08:37 +01:00
Ludovic Courtès
e7620dc995 download: Abstract the receive buffer size.
* guix/build/download.scm (%http-receive-buffer-size): New variable.
  (progress-proc, tls-wrap, http-fetch): Use it.
2015-02-27 15:08:37 +01:00
Ludovic Courtès
2c1fb35377 utils: Call the progress-report proc when 'dump-port' starts.
* guix/build/utils.scm (dump-port): Add call to PROGRESS at the
  beginning.
2015-02-27 15:08:37 +01:00
Ludovic Courtès
251e8b2ee8 build-system/gnu: Set $LC_ALL (or similar) to the chosen locale.
Suggested by Mark H Weaver.

* guix/build/utils.scm (locale-category->string): New procedure.
* guix/build/gnu-build-system.scm (install-locale): Add 'setenv' call.
2015-02-27 15:08:37 +01:00
宋文武
50915d2c2e build-system/cmake: Enable verbose output from Makefile builds.
* guix/build/cmake-build-system.scm (configure): Pass
  -DCMAKE_VERBOSE_MAKEFILE=ON to cmake.
2015-02-27 19:10:40 +08:00
Ludovic Courtès
5335c56e8e build-system/gnu: Add 'install-locale' phase.
* guix/build/gnu-build-system.scm (install-locale): New procedure.
  (%standard-phases): Add it.
* guix/build-system/gnu.scm (gnu-build): Add #:locale and pass it to
  the build script.
  (gnu-cross-build): Likewise.
2015-02-26 23:36:55 +01:00
Ludovic Courtès
f84218acae build-system: Use 'modify-phases'.
* guix/build/cmake-build-system.scm (%standard-phases): Use
  'modify-phases' instead of alist-*.
* guix/build/glib-or-gtk-build-system.scm (%standard-phases): Likewise.
* guix/build/gnu-dist.scm (%dist-phases): Likewise.
* guix/build/perl-build-system.scm (%standard-phases): Likewise.
* guix/build/python-build-system.scm (%standard-phases): Likewise.
* guix/build/ruby-build-system.scm (%standard-phases): Likewise.
* guix/build/waf-build-system.scm (%standard-phases): Likewise.
2015-02-26 23:00:21 +01:00
Ludovic Courtès
8ddc41e1f2 utils: Add 'modify-phases'.
* guix/build/utils.scm (modify-phases): New macro.
2015-02-26 22:48:39 +01:00
Ludovic Courtès
cd0385b61a build-system/gnu: Add support for zip archives.
Fixes <http://bugs.gnu.org/19866>.
Reported by Andreas Enge <andreas@enge.fr>.

* guix/build/gnu-build-system.scm (unpack): Use 'unzip' when SOURCE ends
  in '.zip'.
2015-02-26 22:48:33 +01:00
Ludovic Courtès
93be4e8e6c Merge branch 'master' into core-updates 2015-02-26 22:37:12 +01:00
Mark H Weaver
c964a15d82 download: Cope with Guile 2.0.6 or earlier.
* guix/build/download.scm: Do not attempt to support relative URIs in
  "Location" headers if 'declare-relative-uri-header!' is not present.
  This is the case for Guile 2.0.6 or earlier.
2015-02-24 20:01:55 -05:00
Mark H Weaver
04dec194d8 download: Handle HTTP redirects to relative URI references.
Fixes <http://bugs.gnu.org/19840>.
Reported by Ricardo Wurmus <rekado@elephly.net>.

* guix/build/download.scm: On Guile 2.0.11 or earlier, redefine the http
  "Location" header to accept relative URIs.
  (resolve-uri-reference): New exported procedure.
  (http-fetch): Use 'resolve-uri-reference' to resolve redirections.
* guix/http-client.scm (http-fetch): Use 'resolve-uri-reference'
2015-02-19 03:32:22 -05:00
Eric Bavier
2d2a53fc24 build-system/perl: Use Build.PL for builds if present.
* guix/build/perl-build-system.scm (configure): Use Build.PL if present.
  (build, check, install): New procedures.
  (%standard-phases): Replace build, check, and install phases.
* guix/build-system/perl (perl-build): Add make-maker? and module-build-flags
  arguments.
* doc/guix.texi (Build Systems)[perl-build-system]: Document behavior rsp.
  Build.PL and new arguments.
2015-02-18 23:53:46 -06:00
Andreas Enge
da466f7ff6 utils: Preserve symbolic links in 'wrap-program'.
* guix/build/utils.scm (wrap-program): Preserve symbolic links instead of
    copying the contents of the link.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>

Closes <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=19743>.
2015-02-16 10:13:40 +01:00
Andreas Enge
b01f89675d utils: Use $0 instead of absolute path to original program in 'wrap-program'.
* guix/build/utils.scm (wrap-program): Create scripts that use $0 (which is
    usually just the base name) instead of the absolute path to the original
    program. Alternative implementation of 2ed11b3.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>

Closes <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=19742>.
2015-02-16 10:13:39 +01:00
Eric Bavier
d5b3de6af2 utils: Strip duplicates from search path.
* guix/build/utils.scm (search-path-as-list): Delete duplicate input
  directories before searching.
2015-02-10 13:31:56 -06:00
Ricardo Wurmus
a677c7267b build: Add 'waf-build-system'.
* guix/build-system/waf.scm,
  guix/build/waf-build-system.scm: New files.
* Makefile.am (MODULES): Add them.
* doc/guix.texi (Build Systems): Document waf-build-system.
2015-02-08 19:21:58 +01:00
Mark H Weaver
89328d240f Add support for 'cvs-fetch' method in origins.
* guix/cvs-download.scm, guix/build/cvs.scm: New files.
* Makefile.am (MODULES): Add them.
2015-02-04 01:51:20 -05:00
Ludovic Courtès
ca79e42ea2 build-system/glib-or-gtk: Add MIME directories to $XDG_DATA_DIRS.
Fixes an Evince regression introduced in commit 3d243e9.

* guix/build/glib-or-gtk-build-system.scm (data-directories): Check the
  /mime sub-directory.
2015-01-23 23:49:24 +01:00
Mark H Weaver
a813710a5f Merge branch 'master' into core-updates 2015-01-13 12:14:08 -05:00
Federico Beffa
f5895dab8a build/glib-or-gtk-build-system: Fix 'generate-icon-cache'.
Reported by Mark H Weaver <mhw@netris.org>

* guix/build/glib-or-gtk-build-system.scm (generate-icon-cache): Add check for
  existence of icons directory.
2015-01-13 09:16:47 +01:00
Federico Beffa
61771a79ab guix: build/glib-or-gtk-build-system: Add support for GIO and XDG theming.
* guix/build/glib-or-gtk-build-system.scm (data-directories): Rename
  'schemas-directories' to 'data-directories' and add support for XDG theming
  data.

* guix/build/glib-or-gtk-build-system.scm (gio-module-directories): New
  function.

* guix/build/glib-or-gtk-build-system.scm (wrap-all-programs): Update names to
  reflect that we are dealing with more types of data and not only with
  schemas.  Add handling of GIO modules.

* guix/build-system/glib-or-gtk.scm (lower): Import the 'bin' output of GLib
  instead of 'out'.  This was an error since we need the program
  'glib-compile-schemas'.  Update the description.
2015-01-12 18:00:08 +01:00
Ludovic Courtès
4eb01e5442 build-system/gnu: Patch /usr/bin/file in all 'configure' files.
* guix/build/utils.scm (patch-/usr/bin/file): New procedure.
* guix/build/gnu-build-system.scm (patch-usr-bin-file): Rewrite using
  it.  Patch all the files returned by 'find-files' that are executable.
* gnu/packages/gawk.scm (gawk)[arguments]: Remove use of 'substitute*'
  for 'extension/configure'.
2015-01-09 23:29:20 +01:00
Mark H Weaver
23800e4736 Merge branch 'master' into core-updates 2015-01-06 12:57:15 -05:00
宋文武
9331ba5dd9 linux-boot: Make /etc/mtab a symlink to /proc/self/mounts.
Fixes <http://bugs.gnu.org/19491>.

* gnu/build/linux-boot.scm (mount-root-file-system): Make /root/etc/mtab
  a symlink to /proc/self/mounts.
* gnu/build/file-systems.scm (mount-file-system): Don't update /etc/mtab.
* guix/build/syscalls.scm (mount, umount): Have #:update-mtab? default to
  #f.
2015-01-05 22:24:00 +08:00
Ludovic Courtès
ac70048be2 build-system/gnu: Use executables from the target inputs in 'patch-shebangs'.
Fixes <http://bugs.gnu.org/18895>.

* guix/build/gnu-build-system.scm (patch-shebangs): Add #:inputs
  parameter.  Remove 'bindirs'.  Add 'bin-directories',
  'output-bindirs', and 'input-bindirs'.  Use them instead of (getenv
  "PATH") to as the argument to 'patch-shebang'.
2015-01-04 18:16:16 +01:00
Mark H Weaver
8cbb67e045 Merge branch 'master' into core-updates 2014-12-30 12:23:32 -05:00
Ludovic Courtès
7da473b757 gnu: Revert use of '--strip-all'.
This reverts commits f05bdc9412
and 856ae5e6c7.

This broke all sorts of things.  See <http://hydra.gnu.org/eval/102058>,
for example.
2014-12-29 21:54:12 +01:00
Ludovic Courtès
dd8ea244f4 download: Export 'maybe-expand-mirrors'.
* guix/build/download.scm (uri-vicinity, maybe-expand-mirrors): New
  procedures.
  (url-fetch): Remove them from here.
2014-12-29 21:19:17 +01:00
Ludovic Courtès
f05bdc9412 gnu: Don't use --strip-all in cases where this is problematic.
This is a followup to 856ae5e.  See <http://hydra.gnu.org/build/180506>
for an example of build failure.

* guix/build/gnu-build-system.scm (strip): Add #:archive-strip-flags
  parameter.  Use it when (ar-file? path).
* guix/build-system/gnu.scm (gnu-build): Add #:archive-strip-flags
  parameter and pass it down.
* gnu/packages/commencement.scm (gcc-boot0)[arguments]: Add
  #:strip-flags.
* gnu/packages/base.scm (glibc)[arguments]: Likewise.
2014-12-28 23:46:59 +01:00
Ludovic Courtès
a3bf096945 lint: Add 'home-page' checker.
* guix/build/download.scm (open-connection-for-uri): Export.
* guix/scripts/lint.scm (probe-uri, check-home-page): New procedures.
  (%checkers): Add 'home-page' checker.
2014-12-28 17:57:36 +01:00
Ludovic Courtès
bd2fc4d813 utils: Export 'search-path-as-list'.
* guix/build/utils.scm (search-path-as-list): Make public.
* guix/scripts/environment.scm (for-each-search-path): Use it.
2014-12-27 23:24:35 +01:00
Ludovic Courtès
7ec02d374d build-support/gnu: Add support for file patterns in search paths.
* guix/build/utils.scm (search-path-as-list): Add #:pattern parameter
  and honor it.
  (set-path-environment-variable): Likewise, and pass it to
  'search-path-as-list'.
* guix/packages.scm (search-path-specification->sexp): Add PATTERN slot.
* guix/build/gnu-build-system.scm (set-paths): Adjust accordingly.
2014-12-27 23:22:55 +01:00
Ludovic Courtès
856ae5e6c7 build-system/gnu: Strip with '--strip-all' instead of '--strip-debug'.
This saves 19% on the 'bin' directory of Coreutils, and certainly
helpful for things like Git's 'libexec' directory.

* guix/build-system/gnu.scm (gnu-build): Change default value for
  #:strip-flags to '("--strip-all").
* guix/build/gnu-build-system.scm (strip): Ditto.
* gnu/packages/linux.scm (linux-libre)[arguments]: Add #:strip-flags.
2014-12-27 19:20:18 +01:00
Ludovic Courtès
6aa47e3883 build-system/gnu: Add support for non-directory search paths.
Partly fixes <http://bugs.gnu.org/18033>.

* guix/build/utils.scm (search-path-as-list): Rename 'sub-directories'
  parameter to 'files'.  Add #:type parameter and honor it.
  (set-path-environment-variable): Likewise.  Pass #:type to
  'search-path-as-list'.
* guix/packages.scm (search-path-specification->sexp): Add 'directory as
  the last item of the tuple.
* guix/build/gnu-build-system.scm (set-paths): Add 'type' to search-path
  pattern.  Pass #:type to 'set-path-environment-variable'.
2014-12-27 12:25:31 +01:00
Ludovic Courtès
763a401ed1 Merge branch 'master' into core-updates 2014-12-26 23:31:04 +01:00
Ludovic Courtès
c9bf64d6d7 syscalls: Add more procedures for network interfaces.
* guix/build/syscalls.scm (sizeof*, type-size, write-type, write-types,
  read-type, read-types, define-c-struct): New macros.
  (SIOCSIFFLAGS, SIOCGIFADDR, SIOCSIFADDR): New variables.
  (sockaddr-in, sockaddr-in6): New C structs.
  (write-socket-address!, read-socket-address,
  set-network-interface-flags, set-network-interface-address,
  network-interface-address, configure-network-interface): New
  procedures.
2014-12-19 17:15:53 +01:00
Federico Beffa
6f8fe4b29e build/python-build-system: Fix easy-install.pth collisions.
* guix/build/python-build-system.scm (rename-pth-file): New rename-pth-file
  phase and corresponding function.
2014-12-18 17:58:10 +01:00
Ludovic Courtès
c4a1b6c2ba Merge branch 'master' into 'core-updates'. 2014-12-14 11:55:07 +01:00
Ludovic Courtès
2ed11b3a3e utils: Change 'wrap-program' to preserve the original argv[0].
Suggested by Mark H Weaver <mhw@netris.org>
in <http://bugs.gnu.org/19138>.

* guix/build/utils.scm (wrap-program): Change wrapper to use "exec -a
  PROG" instead of just "exec".
2014-12-14 11:54:12 +01:00
Ludovic Courtès
c809ec94d1 utils: Change 'patch-makefile-SHELL' to support ":=" assignments.
Reported by Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>.

* guix/build/utils.scm (patch-makefile-SHELL): Update regexp to match
  ":=" assignments.
2014-12-13 00:06:32 +01:00
Ludovic Courtès
5e5deea952 utils: Use 'which' to find the shell in 'patch-makefile-SHELL'.
* guix/build/utils.scm (patch-makefile-SHELL)[find-shell]: Use 'which'.
2014-12-13 00:04:25 +01:00
Alex Kost
0b08600ca5 build: emacs-utils: Add 'emacs-generate-autoloads'.
* guix/build/emacs-utils.scm (emacs-generate-autoloads): New procedure.
2014-12-02 22:09:23 +03:00
Ludovic Courtès
73aa8ddb75 build-system/glib-or-gtk: Allow specific outputs to be excluded from wrapping.
* guix/build/glib-or-gtk-build-system.scm (wrap-all-programs): Add
  #:glib-or-gtk-wrap-excluded-outputs parameter and honor it.
* guix/build-system/glib-or-gtk.scm (glib-or-gtk-build): Add
  #:glib-or-gtk-wrap-excluded-outputs parameter and pass it in BUILDER.
* doc/guix.texi (Build Systems): Mention it.
2014-12-01 22:41:04 +01:00
Ludovic Courtès
c8b7569558 build-system/glib-or-gtk: Correctly handle multiple-output packages.
* guix/build/glib-or-gtk-build-system.scm (wrap-all-programs): Move body
  to 'handle-output' inner procedure, and parametrize it by output name
  and directory.  Call it for each element of OUTPUTS.
  (compile-glib-schemas): Likewise.
2014-12-01 22:41:04 +01:00
Ludovic Courtès
4efdabb810 build-system/glib-or-gtk: Use 'for-each' and 'cut' as appropriate.
* guix/build/glib-or-gtk-build-system.scm (wrap-all-programs): Use
  'for-each' instead of 'map' in for-effect contexts.  Use 'cut' instead
  of 'lambda' when appropriate.
2014-12-01 22:41:04 +01:00
Ludovic Courtès
85dbd3dcd0 build-system/glib-or-gtk: Clean up whitespace.
* guix/build/glib-or-gtk-build-system.scm: M-x whitespace-cleanup.
2014-12-01 22:41:04 +01:00
Ludovic Courtès
7cc7dec139 build-system/gnu: Add 'compress-documentation' phase.
* guix/build/gnu-build-system.scm (compress-documentation): New
  procedure.
  (%standard-phases): Add it.
2014-12-01 16:50:28 +01:00
Ludovic Courtès
9741aca9a5 utils: Add 'symbolic-link?'.
* guix/build/utils.scm (symbolic-link?): New procedure.
2014-12-01 15:46:38 +01:00
Ludovic Courtès
d68fe74162 build-system/gnu: Add 'validate-documentation-location' phase.
* guix/build/gnu-build-system.scm (validate-documentation-location): New
  procedure.
  (%standard-phases): Add it.
2014-12-01 14:09:36 +01:00
Taylan Ulrich Bayırlı/Kammer
094b2efc3c utils: Improve docstring of 'substitute*' & co.
* guix/build/utils.scm (substitute): Clarify first sentence of
  docstring and add warning to the docstring about using '$' to match
  an end of line.
  (substitute*): Add warning to the docstring about using '$' to match
  an end of line.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-11-26 11:17:48 +01:00
Ludovic Courtès
f8bcf1935a build-system/gnu: Gracefully handle dangling symlinks in the 'strip' phase.
* guix/build/gnu-build-system.scm (strip): Check whether 'file-exists?'
  before calling 'elf-file?' and 'ar-file?'.  This should fix build
  failures in the presence of dangling symlinks, as in
  <http://hydra.gnu.org/build/167521/nixlog/1/raw>.
2014-11-24 22:45:41 +01:00
Ludovic Courtès
c23d17095d utils: 'elf-file?' and 'ar-file?' return #f for directories.
This avoids uncaught exceptions when the 'strip' phase would call these
procedures on symlinks to directories, such as 'lib/terminfo' in
ncurses (see <http://hydra.gnu.org/build/167310/nixlog/1/tail-reload>.)

* guix/build/utils.scm (file-header-match): Catch 'system-error', and
  return #f upon EISDIR.
2014-11-23 19:19:35 +01:00
Ludovic Courtès
1d1fa9327c utils: Turn 'parallel-job-count' into a parameter.
* guix/build/utils.scm (parallel-job-count): Turn into a SRFI-39 parameter.
2014-11-22 21:57:05 +01:00
Ludovic Courtès
e8c7fdda5d build-system/gnu: Strip 'ar' archives as well.
* guix/build/gnu-build-system.scm (strip): Also strip when (ar-file?
  PATH) is true.
2014-11-22 21:54:27 +01:00
Ludovic Courtès
2bbc6db5e2 utils: Factorize magic bytes detection.
* guix/build/utils.scm (file-header-match): New procedure.
  (%elf-magic-bytes): New variable.
  (elf-file?, ar-file?): Define using 'file-header-match'.
2014-11-22 21:52:57 +01:00
Ludovic Courtès
91ee959b03 utils: Add 'ar-file?'.
* guix/build/utils.scm (%ar-magic-bytes): New variable.
  (ar-file?): New procedure.
2014-11-22 21:52:12 +01:00
Ludovic Courtès
50b87bd54b build-system/gnu: Strip only ELF files.
Suggested by Mark H Weaver <mhw@netris.org>
at <http://lists.gnu.org/archive/html/guix-devel/2014-10/msg00395.html>.

* guix/build/gnu-build-system.scm (strip)[strip-dir]: Strip only
  when (elf-file? PATH) is true.
2014-11-22 12:49:14 +01:00
Ludovic Courtès
99533da50d utils: Add 'elf-file?'.
* guix/build/utils.scm (elf-file?): New procedure.
2014-11-22 12:44:56 +01:00
Ludovic Courtès
e6039b9c70 utils: Export 'parallel-job-count'.
* guix/build/utils.scm (parallel-job-count): New procedure.
* guix/build/gnu-build-system.scm (%parallel-job-count): Remove.
  (build, check): Use 'parallel-job-count' instead.
2014-11-22 12:32:32 +01:00
Ludovic Courtès
cd4a3cb359 syscalls: Update /etc/mtab, not /etc/fstab.
* guix/build/syscalls.scm (remove-from-mtab): Replace "fstab" with
  "mtab".
2014-11-14 00:41:01 +01:00
Ludovic Courtès
ccea821bef syscalls: Add 'mount-points'.
* guix/build/syscalls.scm (mount-points): New procedure.
* tests/syscalls.scm ("mount-points"): New test.
2014-11-10 22:42:14 +01:00
Ludovic Courtès
f81ac34dd9 pull: Use the build procedure provided by the newly-downloaded Guix.
Fixes <http://bugs.gnu.org/18534>.

* guix/scripts/pull.scm (with-environment-variable, with-PATH): New
  macros.
  (temporary-directory, first-directory, interned-then-deleted): New
  procedures.
  (unpack): Rewrite to do the unpacking in the current process rather
  than as a separate derivation.
  (%self-build-file): New variable.
  (build-from-source): New procedure.
  (build-and-install): Use it.
* guix/build/pull.scm (build-guix): Rename 'tarball' argument to
  'source'.  Remove #:tar and #:gzip parameters, as well as 'tar'
  invocation.  Remove 'scandir' invocation.  Wrap body in
  'with-directory-excursion'.
* build-aux/build-self.scm: New file.
* Makefile.am (EXTRA_DIST): Add it.
2014-11-09 22:33:45 +01:00
Ludovic Courtès
38bf090e7c download: Add "Accept: */*" to the headers.
Fixes downloads from https://alioth.debian.org.
Reported by John Darrington <jmd@gnu.org>.

* guix/build/download.scm (http-fetch)[headers]: Add 'Accept'.
2014-10-19 12:07:53 +02:00
Federico Beffa
be3425e5a9 gnu: Add the 'glib-or-gtk' build system.
* guix/build-system/glib-or-gtk.scm, guix/build/glib-or-gtk-build-system.scm:
  New files.
* Makefile.am (MODULES): Add them.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-10-08 12:01:50 +02:00
Ludovic Courtès
fb59e275dd derivations: Add 'graft-derivation'.
* guix/derivations.scm (graft-derivation): New procedure.
* guix/build/graft.scm: New file.
* Makefile.am (MODULES): Add it.
* tests/derivations.scm ("graft-derivation"): New test.
2014-10-08 12:01:49 +02:00
Ludovic Courtès
9849cfc12c build-system/cmake: Add #:build-type parameter, default to "RelWithDebInfo".
* guix/build-system/cmake.scm (cmake-build): Add #:build-type.  Pass it
  in BUILDER.
* guix/build/cmake-build-system.scm (configure): Add #:build-type
  parameter and honor it.
* doc/guix.texi (Build Systems): Document #:configure-flags and
  #:build-type for CMake.
2014-10-04 22:59:38 +02:00
David Thompson
c08f9818f9 build: Add ruby build system.
* guix/build-system/ruby.scm: New file.
* guix/build/ruby-build-system: New file.
* Makefile.am (MODULES): Add new files.
* doc/guix.texi (Build Systems): Document ruby-build-system.
2014-09-28 15:09:24 -04:00
Mark H Weaver
b5b73a8269 Use #:prefix instead of #:renamer with 'symbol-prefix-proc'.
* gnu/packages/abiword.scm, gnu/packages/admin.scm, gnu/packages/aidc.scm,
  gnu/packages/backup.scm, gnu/packages/bittorrent.scm,
  gnu/packages/boost.scm, gnu/packages/compression.scm,
  gnu/packages/cryptsetup.scm, gnu/packages/curl.scm,
  gnu/packages/cyrus-sasl.scm, gnu/packages/dc.scm, gnu/packages/emacs.scm,
  gnu/packages/fonts.scm, gnu/packages/fontutils.scm, gnu/packages/geeqie.scm,
  gnu/packages/ghostscript.scm, gnu/packages/gimp.scm,
  gnu/packages/gkrellm.scm, gnu/packages/gl.scm, gnu/packages/glib.scm,
  gnu/packages/gnome.scm, gnu/packages/gnunet.scm, gnu/packages/gnupg.scm,
  gnu/packages/gnutls.scm, gnu/packages/gnuzilla.scm, gnu/packages/gsasl.scm,
  gnu/packages/gtk.scm, gnu/packages/gv.scm, gnu/packages/image.scm,
  gnu/packages/indent.scm, gnu/packages/inkscape.scm,
  gnu/packages/lesstif.scm, gnu/packages/links.scm, gnu/packages/lisp.scm,
  gnu/packages/lsh.scm, gnu/packages/lsof.scm, gnu/packages/maths.scm,
  gnu/packages/mp3.scm, gnu/packages/openssl.scm, gnu/packages/ots.scm,
  gnu/packages/pciutils.scm, gnu/packages/pcre.scm, gnu/packages/pdf.scm,
  gnu/packages/pulseaudio.scm, gnu/packages/python.scm, gnu/packages/slim.scm,
  gnu/packages/ssh.scm, gnu/packages/texlive.scm, gnu/packages/vim.scm,
  gnu/packages/vpn.scm, gnu/packages/web.scm, gnu/packages/wv.scm,
  gnu/packages/xiph.scm, gnu/packages/xml.scm, gnu/packages/xorg.scm,
  gnu/packages/yasm.scm, gnu/packages/zip.scm,
  guix/build/cmake-build-system.scm, guix/build/perl-build-system.scm,
  guix/build/python-build-system.scm, guix/download.scm: Replaces uses of
  #:renamer and 'symbol-prefix-proc' with #:prefix.
2014-09-23 18:52:29 -04:00
Ludovic Courtès
f07aa672fd Merge branch 'core-updates' 2014-09-22 23:06:33 +02:00
Ludovic Courtès
8591fae4cf syscalls: Adjust /proc/net/dev parser for old kernels.
* guix/build/syscalls.scm (%interface-line): Remove whitespace in rest
  pattern.  (There's no extra whitespace after the colon with Linux
  2.6.32.)
2014-09-22 21:12:26 +02:00
Ludovic Courtès
077bd18d22 download: Use the 'SERVER NAME' TLS extension when possible.
Fixes <http://bugs.gnu.org/18526>.
Reported by Mark H. Weaver.

* guix/build/download.scm (tls-wrap): Add 'server' parameter.  Call
  'set-session-server-name!' when (gnutls) defines it.
  (open-connection-for-uri): Adjust 'tls-wrap' call accordingly.
2014-09-22 21:06:39 +02:00
Ludovic Courtès
715fc9d44d syscalls: Add 'swapon' and 'swapoff'.
* guix/build/syscalls.scm (swapon, swapoff): New procedures.
* tests/syscalls.scm ("swapon, ENOENT/EPERM", "swapoff, EINVAL/EPERM"):
  New tests.
2014-09-18 20:19:56 +02:00
Ludovic Courtès
4d54785c69 syscalls: Add 'all-network-interfaces'.
* guix/build/syscalls.scm (network-interfaces): Update docstring.
  (%interface-line): New variable.
  (all-network-interfaces): New procedure.
* tests/syscalls.scm ("all-network-interfaces"): New test.
  ("network-interfaces"): Change to make sure the result is a subset
  of (all-network-interfaces).
2014-09-14 23:49:02 +02:00
Ludovic Courtès
973eea3478 syscalls: Add 'network-interface-flags'.
* guix/build/syscalls.scm (SIOCGIFFLAGS, IFF_UP, IFF_BROADCAST,
  IFF_LOOPBACK, IF_NAMESIZE): New variables.
  (network-interface-flags, loopback-network-interface?): New
  procedures.
* tests/syscalls.scm ("network-interface-flags",
  "loopback-network-interface?"): New tests.
2014-09-14 23:49:02 +02:00
Ludovic Courtès
7585016f53 syscalls: Add 'network-interfaces'.
* guix/build/syscalls.scm (SIOCGIFCONF, ifconf-struct,
  ifreq-struct-size): New variables.
  (%ioctl, bytevector->string-list, network-interfaces): New
  procedures.
* tests/syscalls.scm ("network-interfaces"): New test.
2014-09-14 23:49:02 +02:00
Mark H Weaver
c041886d92 utils: Import (ice-9 format).
* guix/build/utils.scm: Import (ice-9 format).
2014-09-14 11:54:25 -04:00
Eric Bavier
de61113857 utils: Allow wrap-program to be called multiple times.
* guix/build/utils.scm (wrap-program): Multiple invocations of
  wrap-program for the same file create successive wrappers.  Adjust
  docstring.
* tests/build-utils.scm: Test new wrap-program behavior.
  (%store): New variable.
2014-09-13 21:53:21 -05:00
Mark H Weaver
e759c0a38c Merge branch 'master' into core-updates 2014-09-08 11:00:06 -04:00
Ludovic Courtès
b50c5b7418 pull: Add a compilation progress report.
* guix/build/pull.scm (report-build-progress): New procedure.
  (p-for-each): Add #:progress parameter.
  [loop]: Keep track of the number of completed processes.  Tail-call
  PROGRESS at each loop iteration.
  (build-guix): Add #:debug-port parameter.  Use it for verbose
  messages.  Change 'tar' flags to 'xf'.  Around 'compile-file' call,
  bind CURRENT-WARNING-PORT to DEBUG-PORT.
* guix/scripts/pull.scm (unpack): Add #:verbose? parameter.
  [builder]: Pass #:debug-port to 'build-guix'.
  (guix-pull): Leave CURRENT-BUILD-OUTPUT-PORT unchanged.  Pass
  #:verbose? to 'unpack'.
2014-09-05 23:11:04 +02:00
Eric Bavier
1145938496 utils: Clean trailing whitespace at end of SHELL
* guix/build/utils.scm (patch-makefile-SHELL): Remove trailing whitespace.
2014-09-05 00:02:19 -05:00
Ludovic Courtès
6fd1a79674 vm: Move store copy handling to (guix build store-copy).
* gnu/build/vm.scm (read-reference-graph, populate-store): Move to...
* guix/build/store-copy.scm: ... here.  New file.
* Makefile.am (MODULES): Add it.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Adjust default
  #:modules values accordingly.
* tests/gexp.scm ("gexp->derivation, store copy"): New test.
2014-09-04 23:24:54 +02:00
Ludovic Courtès
548f7a8fa2 Move operating system helpers from (guix build …) to (gnu build …).
* guix/build/activation.scm, guix/build/install.scm,
  guix/build/linux-initrd.scm, guix/build/vm.scm: Move to...
* gnu/build: ... here.
* Makefile.am (MODULES): Remove the above guix/build/ files.
* gnu-system.am (GNU_SYSTEM_MODULES): Add the above gnu/build/ files
  here.
* gnu/services/base.scm, gnu/services/dmd.scm, gnu/system.scm,
  gnu/system/linux-initrd.scm, gnu/system/vm.scm,
  guix/scripts/system.scm: Adjust to the new module names.
2014-09-03 15:43:07 +02:00
Mark H Weaver
c00a9fbfef Merge branch 'master' into core-updates
Conflicts:
	gnu/packages/base.scm
2014-08-28 14:22:15 -04:00
Eric Bavier
83291101c3 utils: Preserve makefile shell arguments during patch.
* guix/build/utils.scm (patch-makefile-SHELL): Preserve shell arguments.
2014-08-28 11:16:19 -05:00
Ludovic Courtès
5c3eb14e07 linux-initrd: Wait a bit longer for partitions to appear.
Reported by Sveltana on #guix.

* guix/build/linux-initrd.scm (canonicalize-device-spec): Increase
  MAX-TRIALS.  Add "waiting for partition" 'format' call.
2014-08-28 09:21:21 +02:00
Mark H Weaver
8a0576f175 gnu-build-system: Add 'patch-usr-bin-file' to %standard-phases.
* guix/build/gnu-build-system.scm (patch-usr-bin-file): New procedure.
  (%standard-phases): Add it.
2014-08-23 20:48:18 -04:00
Ludovic Courtès
c0b9213dbb linux-initrd: Do not create /etc/resolv.conf.
* guix/build/linux-initrd.scm (configure-qemu-networking): Don't create
  /etc/resolv.conf.
2014-08-15 16:26:28 +02:00
Mark H Weaver
75f3b1a12d Add (guix build emacs-utils).
* guix/build/emacs-utils.scm: New file.
* Makefile.am (MODULES): Add it.
* .dir-locals.el: Add indentation rules.
2014-08-14 23:53:04 -04:00
Ludovic Courtès
c8fa34265d system: Add the 'system?' field for user groups.
Suggested by Mark H. Weaver.

* gnu/system/shadow.scm (<user-group>)[system?]: New field.
  (%base-groups): Introduce 'system-group' macro, and use it.
* gnu/system.scm (user-group->gexp): Pass the 'system?' field.
* guix/build/activation.scm (add-group): Add #:system? and honor it.
  (activate-users+groups): Handle the 'system?' field.
* gnu/system/file-systems.scm (%tty-gid): Choose an ID below 1000.
* doc/guix.texi (User Accounts): Document the 'system?' field.
2014-07-25 00:12:35 +02:00
Ludovic Courtès
2c071ce96e system: Recognize more file system flags.
* guix/build/linux-initrd.scm (MS_NOSUID, MS_NODEV, MS_NOEXEC): New
  variables.
  (mount-flags->bit-mask): New procedure.
  (mount-file-system)[flags->bit-mask]: Remove.
  Use 'mount-flags->bit-mask' instead.
  In /etc/mtab, use the empty string when OPTIONS is false.
* gnu/services/base.scm (file-system-service): Add #:flags parameter and
  honor it.
* gnu/system.scm (other-file-system-services): Pass FLAGS to
  'file-system-service'.
2014-07-23 02:02:07 +02:00
Ludovic Courtès
7f239fd33f system: Add 'file-system' decl. for /dev/pts, and use the right options.
Fixes <http://bugs.gnu.org/18081>.

* gnu/system/file-systems.scm (%devtmpfs-file-system): Add
  'needed-for-boot?' field.
  (%tty-gid, %pseudo-terminal-file-system): New variables.
  (%base-file-systems): Add %PSEUDO-TERMINAL-FILE-SYSTEM.
* gnu/services/base.scm (udev-service): Remove dependency on
  'file-system-/dev'.
* gnu/system/shadow.scm (%base-groups): Add 'id' field for group 'tty'.
* guix/build/linux-initrd.scm (boot-system): Remove 'mount' call for
  /dev/pts.
* doc/guix.texi (File Systems): Add %pseudo-terminal-file-system.
2014-07-23 02:02:07 +02:00
Ludovic Courtès
66c2703f09 install: Set the store's permission to #o1775.
Fixes <http://bugs.gnu.org/18053>.
Reported by Mark H Weaver <mhw@netris.org>.

* guix/build/install.scm (directives): Add mode #o1775 for STORE.
2014-07-19 14:26:19 +02:00
Ludovic Courtès
3485716fd9 install: Make /var/db and /mnt.
* guix/build/install.scm (directives): Add /var/db and /mnt.
2014-07-13 16:37:47 +02:00
Ludovic Courtès
66670cf39c vm: Add support for i686.
Partially fixes <http://bugs.gnu.org/18002>.
Reported by David Thompson <dthompson2@worcester.edu>.

* guix/build/vm.scm (qemu-command): Add optional 'system' parameter.
  Special-case "^i[3456]86$".
* gnu/system/vm.scm (system-qemu-image/shared-store-script): Use it.
2014-07-13 16:37:11 +02:00
Ludovic Courtès
e3ced65af0 linux-initrd: Use 'call-with-error-handling' when booting.
* guix/build/linux-initrd.scm (canonicalize-device-spec): When label
  resolution fails, call 'error' instead of 'format' + 'start-repl'.
  (boot-system): Wrap most of body in 'call-with-error-handling'.
  Remove 'catch' around 'primitive-load' call.
2014-07-03 22:44:14 +02:00
Ludovic Courtès
dccab4df20 linux-initrd: Remove unused local procedure.
* guix/build/linux-initrd.scm (boot-system)[resolve]: Remove.
2014-07-03 22:24:56 +02:00
Ludovic Courtès
d266b79332 linux-initrd: Gracefully handle lack of or invalid ext2 superblocks.
Reported by David Thompson <dthompson2@worcester.edu>.

* guix/build/linux-initrd.scm (read-ext2-superblock): Add
  'superblock-size' variable.  Read with 'get-bytevector-n!' instead of
  'getbytevector-n', and make sure we read exactly SUPERBLOCK-SIZE
  bytes.
2014-07-02 12:18:36 +02:00
Ludovic Courtès
6750877f46 git-download: Support recursive clones.
* guix/git-download.scm (<git-reference>)[recursive?]: New field.
  (git-fetch): Add 'inputs' variable.  Add it to the #:inputs argument
  of 'build-expression->derivation'.  Augment builder with call to
  'set-path-environment-variable', and pass #:recursive? to
  'git-fetch'.
* guix/build/git.scm (git-fetch): Add #:recursive? parameter.  Pass
  --recursive when RECURSIVE? is true, and delete all the '.git' files.
2014-06-27 23:04:48 +02:00
Ludovic Courtès
459dd9eaf2 system: Add a 'system?' field to user accounts.
* gnu/system/shadow.scm (<user-account>)[system?]: New field.
* gnu/system.scm (user-account->gexp): Add it.
* guix/build/activation.scm (add-user): Add #:system? parameter and
  honor it.
  (activate-users+groups): Handle the 'system?' part of user tuples.
  Pass it to 'add-user'.  Don't create PROFILE-DIR when SYSTEM? is
  true.
* gnu/services/dbus.scm (dbus-service): Add 'system?' field for
  "messagebus" account.
* gnu/services/base.scm (guix-build-accounts): Likewise.
* gnu/services/avahi.scm (avahi-service): Likewise.
2014-06-27 19:06:08 +02:00
Ludovic Courtès
f2c403eab6 system: Install /var/guix/profiles/system-1-link on new systems.
* guix/build/install.scm (directives): Add /var/guix/profiles/system.
  (populate-root-file-system): Add 'system' parameter.  Create
  /var/guix/profiles/system-1-link.
* guix/scripts/system.scm (install): Pass OS-DIR to
  'populate-root-file-system'.
* guix/build/vm.scm (initialize-root-partition): Add #:system-directory
  parameter, and pass it to 'populate-root-file-system'.
  (initialize-hard-disk): Add #:system-directory parameter, and pass it
  to 'initialize-root-partition'.
* gnu/system/vm.scm (qemu-image): Add #:os-derivation parameter and pass
  it to 'initialize-hard-disk'.
  (system-disk-image, system-qemu-image,
  system-qemu-image/shared-store): Pass #:os-derivation to 'qemu-image.
2014-06-27 19:06:08 +02:00
Ludovic Courtès
f01efec09a activation: Preserve /etc/groups upon reboots.
This is a followup to e2fcc23.  The /etc/group file would be cleared
when booting.

* guix/build/activation.scm (activate-users+groups)[touch]: Rewrite so
  it does not wipe out FILE's contents.
2014-06-27 00:12:40 +02:00
Ludovic Courtès
9b9148d8bb linux-initrd: Allow unionfs to have a large number of open files.
Fixes <http://bugs.gnu.org/17827>.

* guix/build/linux-initrd.scm (mount-root-file-system) [volatile-root?]:
  Pass unionfs '-o max_file=65536'.
2014-06-21 17:35:56 +02:00
Ludovic Courtès
7470df5ddf Merge branch 'master' into core-updates 2014-06-14 23:25:59 +02:00
Ludovic Courtès
9d0b8fbd78 pull: Copy and compile gnu.scm.
* guix/build/pull.scm (build-guix): Copy gnu.scm to OUT.
2014-06-13 11:42:33 +02:00
Ludovic Courtès
872c69d00e Merge branch 'master' into core-updates 2014-06-06 17:23:14 +02:00
Ludovic Courtès
e97c5be914 services: Use a fixed GID for the build group and use that for the store.
This partly reverts commit 185f669 ("services: Make sure the store's
group is the build group.")

* gnu/services/base.scm (guix-service)[activate]: Remove 'chown' call.
  Add 'id' field to 'user-group' form.
* guix/build/install.scm (directives): Set the store's GID to 30000.
2014-06-06 00:28:21 +02:00
Ludovic Courtès
e2fcc23a3a activation: Only create groups that do not exist yet.
Before that the effect would be to re-create groups at each boot, and
thus remove any members of the groups.

* guix/build/activation.scm (activate-users+groups): Call 'add-group'
  only when (getgrname name) fails.
2014-06-04 23:08:09 +02:00