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