;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer ;;; Copyright © 2016, 2017, 2019, 2022 Efraim Flashner ;;; Copyright © 2016–2018, 2020–2022 Tobias Geerinckx-Rice ;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . (define-module (gnu packages moreutils) #:use-module (gnu packages bash) #:use-module (gnu packages docbook) #:use-module (gnu packages perl) #:use-module (gnu packages xml) #:use-module (guix build-system gnu) #:use-module (guix download) #:use-module (guix gexp) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix utils)) (define-public moreutils (package (name "moreutils") (version "0.69") (source (origin (method url-fetch) (uri (string-append "https://git.joeyh.name/index.cgi/moreutils.git/snapshot/" name "-" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 "1l859qnzccslvxlh5ghn863bkq2vgmqgnik6jr21b9kc6ljmsy8g")))) (build-system gnu-build-system) (arguments (list #:phases #~(modify-phases %standard-phases (add-after 'install 'wrap-program (lambda _ (for-each (lambda (script) (wrap-program script `("PERL5LIB" ":" prefix (,(getenv "PERL5LIB"))))) (find-files (string-append #$output "/bin"))))) (delete 'configure)) ; no configure script #:make-flags #~(list (string-append "PREFIX=" #$output) (string-append "DOCBOOKXSL=" #$(this-package-native-input "docbook-xsl") "/xml/xsl/docbook-xsl-" #$(package-version (this-package-native-input "docbook-xsl"))) (string-append "CC=" #$(cc-for-target))))) (inputs (list bash-minimal perl perl-ipc-run perl-timedate perl-time-duration)) ;; For building the manual pages. (native-inputs (list docbook-xml-4.4 docbook-xsl libxml2 libxslt)) (home-page "https://joeyh.name/code/moreutils/") (synopsis "Miscellaneous general-purpose command-line tools") (description "Moreutils is a collection of general-purpose command-line tools to augment the traditional Unix toolbox.") (properties '((release-monitoring-url . "https://git.joeyh.name/index.cgi/moreutils.git/"))) (license license:gpl2+))) put' parameter. (guix-perform-download): Adjust 'match' clauses accordingly. * tests/derivations.scm ("'download' built-in builder, check mode"): New test. Ludovic Courtès 2016-11-16daemon: Add 'built-in-builders' RPC....* nix/libstore/builtins.cc (builtinBuilderNames): New function. * nix/libstore/builtins.hh (builtinBuilderNames): New declaration. * nix/libstore/worker-protocol.hh (PROTOCOL_VERSION): Bump to 0x160. (WorkerOp)[wopBuiltinBuilders]: New value. * nix/nix-daemon/nix-daemon.cc (performOp): Handle it. * guix/store.scm (operation-id)[built-in-builders]: New value. * guix/store.scm (read-arg): Add 'string-list'. (built-in-builders): New procedure. * tests/derivations.scm ("built-in-builders"): New test. Ludovic Courtès 2016-11-16daemon: Add "builtin:download" derivation builder....This ensures that 1) the derivation doesn't change when Guix changes; 2) the derivation closure doesn't contain Guix and its dependencies; 3) we don't have to rely on ugly chroot hacks. Adapted from Nix commit 0a2bee307b20411f5b0dda0c662b1f9bb9e0e131. * nix/libstore/build.cc (DerivationGoal::runChild): Add special case for 'isBuiltin(drv)'. Disable chroot when 'isBuiltin(drv)'. * nix/libstore/builtins.cc, nix/libstore/builtins.hh, nix/scripts/download.in, guix/scripts/perform-download.scm: New files. * guix/ui.scm (show-guix-help)[internal?]: Add 'perform-download'. * nix/local.mk (libstore_a_SOURCES): Add builtins.cc. (libstore_headers): Add builtins.hh. (nodist_pkglibexec_SCRIPTS): Add 'scripts/download'. * config-daemon.ac: Emit 'scripts/download'. * Makefile.am (MODULES): Add 'guix/scripts/perform-download.scm'. * tests/derivations.scm ("unknown built-in builder") ("'download' built-in builder") ("'download' built-in builder, invalid hash") ("'download' built-in builder, not found") ("'download' built-in builder, not fixed-output"): New tests. Co-authored-by: Eelco Dolstra <eelco.dolstra@logicblox.com> Ludovic Courtès