summaryrefslogtreecommitdiff
path: root/guix/build
Commit message (Collapse)AuthorAge
* download: Don't abbreviate things that are not store items.Ludovic Courtès2015-09-24
| | | | | | | | 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.
* download: Fix some minor progress-logging regressions.Steve Sprang2015-09-23
| | | | | | | | * 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.
* download: Only show hours in the elapsed time if necessary.Steve Sprang2015-09-17
| | | | | | | * guix/build/download.scm (seconds->string): Conditionally include hours in timestamp. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* substitute: Improve readability of download progress report.Steve Sprang2015-09-16
| | | | | | | | | | | | * 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>
* download: Avoid type errors when formatting download progress output.Steve Sprang2015-09-14
| | | | | * guix/build/download.scm (nearest-exact-integer): New procedure. (seconds->string, byte-count->string): Use it.
* build: ruby: Add support for tarball and directory sources.David Thompson2015-09-14
| | | | | | | | | | | | 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.
* build: Improve information density and appearance of download progress output.Steve Sprang2015-09-08
| | | | | | | | | | * 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>
* build: container: Use the same clone flags as fork(3).David Thompson2015-09-07
| | | | | | | | | | | | 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.
* build: ruby: Avoid long build directory names.David Thompson2015-09-07
| | | | | | | | | | 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".
* emacs-build-system: Fix a file name of info directory.Alex Kost2015-09-06
| | | | | * guix/build/emacs-build-system.scm (move-doc): Adjust to use "/share/info" instead of its sub-directory.
* build: syscalls: Properly handle clone errors.David Thompson2015-09-05
| | | | * guix/build/syscalls.scm (clone): Catch -1 return value and throw error.
* build: Add R build system.Ricardo Wurmus2015-08-31
| | | | | | | * 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.
* build: ruby: Rewrite build system to use gem archives.David Thompson2015-08-18
| | | | | | | | | | | | | | | | | | | | | 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.
* syscalls: setns: Skip binding if there is no such C function.David Thompson2015-08-17
| | | | | | | | 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'.
* python-build-system: Fix 'get-python-version'.Mark H Weaver2015-08-06
| | | | | * guix/build/python-build-system.scm (get-python-version): Rewrite to handle multiple-digit version number components.
* build: emacs: Fix bug and improvement robustness.Federico Beffa2015-08-01
| | | | | * guix/build/emacs-build-system.scm (emacs-inputs): Fix matching pattern. (patch-el-files): Improve regexp pattern.
* syscalls: Add 'network-interfaces', which wraps libc's 'getifaddrs'.Ludovic Courtès2015-07-25
| | | | | | | | | | | | 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.
* syscalls: 'define-c-struct' properly align reads.Ludovic Courtès2015-07-25
| | | | | | * 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.
* syscalls: 'read-socket-address' gracefully handles unsupported families.Ludovic Courtès2015-07-25
| | | | | | * 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.
* syscalls: 'define-c-struct' distinguishes pointers from integers.Ludovic Courtès2015-07-25
| | | | * guix/build/syscalls.scm (read-type): Add special-case for when TYPE is '*.
* syscalls: Rename 'network-interfaces' and 'all-network-interfaces'.Ludovic Courtès2015-07-25
| | | | | | | | | | | | * 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.
* Merge branch 'master' into core-updatesMark H Weaver2015-07-19
|\
| * build-system/ruby: Add #:gem-flags parameter.pjotrp2015-07-18
| | | | | | | | | | | | | | | | * 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>
| * syscalls: Struct deserializer can now return arbitrary objects.Ludovic Courtès2015-07-17
| | | | | | | | | | | | | | | | | | * 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'.
| * download: Remove spurious warning about 'https_proxy'.Ludovic Courtès2015-07-17
| | | | | | | | | | * guix/build/download.scm (open-connection-for-uri)[with-https-proxy]: Warn about 'https_proxy' only when 'getenv' returns a non-empty string.
* | python-build-system: Add 'ensure-no-mtimes-pre-1980' phase.Mark H Weaver2015-07-16
| | | | | | | | | | | | * guix/build/python-build-system.scm (ensure-no-mtimes-pre-1980): New phase. (%standard-phases): Add it after 'unpack'.
* | build-system/gnu: Pass --build=<triplet> to configure by default.Mark H Weaver2015-07-13
|/ | | | | | | * 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.
* build: Add 'emacs-build-system'.Federico Beffa2015-07-08
| | | | | | | | * 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.
* build: emacs-utils: Add 'emacs-byte-compile-directory'.Federico Beffa2015-07-08
| | | | * guix/build/emacs-utils.scm (emacs-byte-compile-directory): New procedure.
* build: syscalls: Add pivot-root.David Thompson2015-07-07
| | | | | * guix/build/syscalls.scm (pivot-root): New procedure. * tests/syscalls.scm ("pivot-root"): New test.
* build: syscalls: Add setns.David Thompson2015-07-07
| | | | | | | * guix/build/syscalls.scm (setns): New procedure. * tests/syscalls.scm ("setns"): New test. squash: setns
* build: syscalls: Add clone.David Thompson2015-07-07
| | | | | | | * 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.
* build: syscalls: Add mkdtemp!David Thompson2015-07-07
| | | | | * guix/build/syscalls.scm (mkdtemp!): New procedure. * tests/syscalls.scm ("mkdtemp!"): New test.
* build: syscalls: Add unmount flags.David Thompson2015-07-07
| | | | | * guix/build/syscalls.scm (MNT_FORCE, MNT_DETACH, MNT_EXPIRE) (UMOUNT_NOFOLLOW): New variables.
* build: syscalls: Add additional mount flags.David Thompson2015-07-07
| | | | | * guix/build/syscalls.scm (MS_NOSUID, MS_NODEV, MS_NOEXEC, MS_STRICTATIME): New variables.
* build: ruby: Run 'rake gem' when gemspec is missing.pjotrp2015-07-07
| | | | | | | * 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>
* build-system/haskell: install config for any package that creates it.Eric Bavier2015-06-11
| | | | | | | | | 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.
* profiles: Export 'ensure-writable-directory' and use it.Ludovic Courtès2015-05-27
| | | | | | * guix/build/profiles.scm (ensure-writable-directory): Export. * guix/profiles.scm (gtk-icon-themes)[build]: Remove '@@' form and use (guix build profiles).
* services: swap: Use 'restart-on-EINTR'.Ludovic Courtès2015-05-22
| | | | | * gnu/services/base.scm (swap-service)[start, stop]: Use 'restart-on-EINTR'. * guix/build/syscalls.scm (swapoff): Fix typo in 'throw' arguments.
* syscalls: Add 'restart-on-EINTR'.Ludovic Courtès2015-05-22
| | | | | * guix/build/syscalls.scm (call-with-restart-on-EINTR): New procedure. (restart-on-EINTR): New macro.
* profiles: Gracefully deal with packages containing an etc/ symlink.Ludovic Courtès2015-05-18
| | | | | | | | | | | | | 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.
* syscalls: Add 'set-network-interface-up'.Ludovic Courtès2015-05-17
| | | | * guix/build/syscalls.scm (set-network-interface-up): New procedure.
* profiles: Ensure the profile's etc/ directory is writable.Ludovic Courtès2015-05-08
| | | | | | | | | 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.
* profiles: Generate an 'etc/profile' file.Ludovic Courtès2015-05-06
| | | | | | | | | | | | | | 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.
* profiles: Move build code to (guix build profiles).Ludovic Courtès2015-05-06
| | | | | | | | * 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.
* download: Work around Guile small-receive-buffer bug.Ludovic Courtès2015-05-06
| | | | | | | | | | | | | | | | 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.
* download: Reinstate buffering on connection sockets.Ludovic Courtès2015-05-06
| | | | | * guix/build/download.scm (open-connection-for-uri): Reinstate call to 'setvbuf' inadvertently removed in d17551d9.
* Merge branch 'master' into core-updatesLudovic Courtès2015-05-01
|\
| * download: Simplify 'open-connection-for-uri' to support HTTP proxies.Ludovic Courtès2015-05-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | build-system/gnu: #:validate-runpath? now defaults to #t.Ludovic Courtès2015-04-23
| | | | | | | | | | * guix/build/gnu-build-system.scm (validate-runpath): Change default value of VALIDATE-RUNPATH? to #t.