;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2018 Marius Bakke ;;; ;;; 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 debootstrap) #:use-module (guix packages) #:use-module (guix download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system gnu) #:use-module (gnu packages package-management) #:use-module (gnu packages perl) #:use-module (gnu packages wget) #:use-module (gnu packages)) (define-public debootstrap (package (name "debootstrap") (version "1.0.93") (source (origin (method url-fetch) (uri (string-append "mirror://debian/pool/main/d/debootstrap/" "debootstrap_" version ".tar.gz")) (sha256 (base32 "1nyp9fwb7xrk1vin81dmgx2g9rb52yg4gwz4rcx97gamw4mlvbfd")))) (build-system gnu-build-system) (arguments `(#:make-flags (list (string-append "DESTDIR=" (assoc-ref %outputs "out"))) #:tests? #f ;no tests #:phases (modify-phases %standard-phases (add-after 'unpack 'fix-Makefile (lambda _ (substitute* "Makefile" (("/usr") "") (("-o root -g root") "") (("chown root.*") "\n")) #t)) (add-after 'fix-Makefile 'patch-paths (lambda* (#:key inputs outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out")) (dpkg (assoc-ref inputs "dpkg")) (wget (assoc-ref inputs "wget"))) (substitute* "debootstrap" (("/usr/share/debootstrap") (string-append out "/share/debootstrap")) (("/usr/bin/dpkg") (string-append dpkg "/bin/dpkg"))) (substitute* "functions" (("wget ") (string-append wget "/bin/wget "))) #t))) (delete 'configure)))) (inputs `(("wget" ,wget))) ;; The bootstrapping scripts contain many references to these packages, some ;; of which referring to the target system. For simplicity just propagate them ;; instead of adding absolute references. (propagated-inputs `(("dpkg" ,dpkg) ("perl" ,perl))) (home-page "https://wiki.debian.org/Debootstrap") (synopsis "Bootstrap a Debian or Ubuntu system") (description "@command{debootstrap} is a tool which will install a Debian base system into a subdirectory of another, already installed system. It does not require an installation CD, just access to a Debian repository. It can also be used to create a rootfs for a machine of a different architecture, which is known as \"cross-debootstrapping\".") (license license:gpl2+)))