~ruther/guix-local

994a14947988e7f833d2c2625ac3069c92359567 — Ludovic Courtès 8 years ago 950d51c
gnu: guix: Remove the stable-release 'guix' package.

* gnu/packages/package-management.scm (guix-release): Remove.
(guix-devel): Rename to...
(guix): ... this.  Incorporate fields from former 'guix-release'.
(guix-devel): New variable.
1 files changed, 176 insertions(+), 186 deletions(-)

M gnu/packages/package-management.scm
M gnu/packages/package-management.scm => gnu/packages/package-management.scm +176 -186
@@ 68,207 68,197 @@
                        arch "-linux"
                        "/20131110/guile-2.0.9.tar.xz"))))

(define-public guix-release
  (package
    (name "guix")
    (version "0.12.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "ftp://alpha.gnu.org/gnu/guix/guix-"
                                 version ".tar.gz"))
             (sha256
              (base32
               "1jgy5mlygmhxdqhrp6vr8w83ndcm5mk64xfravr8l2d7hq8y40b2"))))
    (build-system gnu-build-system)
    (arguments
     `(#:configure-flags (list
                          "--localstatedir=/var"
                          "--sysconfdir=/etc"
                          (string-append "--with-bash-completion-dir="
                                         (assoc-ref %outputs "out")
                                         "/etc/bash_completion.d")
                          (string-append "--with-libgcrypt-prefix="
                                         (assoc-ref %build-inputs
                                                    "libgcrypt")))
       #:parallel-tests? #f           ;work around <http://bugs.gnu.org/21097>
(define-public guix
  ;; Latest version of Guix, which may or may not correspond to a release.
  (let ((version "0.12.0")
        (commit "25a49294caf2386e65fc1b12a2508324be0b1cc2")
        (revision 9))
    (package
      (name "guix")

       #:modules ((guix build gnu-build-system)
                  (guix build utils)
                  (ice-9 popen)
                  (ice-9 rdelim))
      ;; Note: use a very short commit id; with a longer one, the limit on
      ;; hash-bang lines would be exceeded while running the tests.
      (version (if (zero? revision)
                   version
                   (string-append version "-"
                                  (number->string revision)
                                  "." (string-take commit 4))))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://git.savannah.gnu.org/r/guix.git")
                      (commit commit)))
                (sha256
                 (base32
                  "0p4rh0629j89v4ka5dsp70a1xrfhg7sxjjq54p68vw7x5dkann4a"))
                (file-name (string-append "guix-" version "-checkout"))))
      (build-system gnu-build-system)
      (arguments
       `(#:configure-flags (list
                            "--localstatedir=/var"
                            "--sysconfdir=/etc"
                            (string-append "--with-bash-completion-dir="
                                           (assoc-ref %outputs "out")
                                           "/etc/bash_completion.d")
                            (string-append "--with-libgcrypt-prefix="
                                           (assoc-ref %build-inputs
                                                      "libgcrypt"))

       #:phases (modify-phases %standard-phases
                  (add-before
                   'configure 'copy-bootstrap-guile
                   (lambda* (#:key system inputs #:allow-other-keys)
                     (define (boot-guile-version arch)
                       (cond ((string=? "armhf" arch)   "2.0.11")
                             ((string=? "aarch64" arch) "2.0.14")
                             (else "2.0.9")))
                            ;; Set 'DOT_USER_PROGRAM' to the empty string so
                            ;; we don't keep a reference to Graphviz, whose
                            ;; closure is pretty big (too big for the GuixSD
                            ;; installation image.)
                            "ac_cv_path_DOT_USER_PROGRAM=dot")
         #:parallel-tests? #f         ;work around <http://bugs.gnu.org/21097>

                     (define (copy arch)
                       (let ((guile  (assoc-ref inputs
                                                (string-append "boot-guile/"
                                                               arch)))
                             (target (string-append "gnu/packages/bootstrap/"
                                                    arch "-linux/"
                                                    "/guile-"
                                                    (boot-guile-version arch)
                                                    ".tar.xz")))
                         (mkdir-p (dirname target)) ;XXX: eventually unneeded
                         (copy-file guile target)))
         #:modules ((guix build gnu-build-system)
                    (guix build utils)
                    (ice-9 popen)
                    (ice-9 rdelim))

                     (copy "i686")
                     (copy "x86_64")
                     (copy "mips64el")
                     (copy "armhf")
                     (copy "aarch64")
                     #t))
                  (add-after
                   'unpack 'disable-container-tests
                   ;; XXX FIXME: These tests fail within the build container.
                   (lambda _
                     (substitute* "tests/syscalls.scm"
                       (("^\\(test-(assert|equal) \"(clone|setns|pivot-root)\"" all)
                        (string-append "(test-skip 1)\n" all)))
                     (substitute* "tests/containers.scm"
                       (("^\\(test-(assert|equal)" all)
                        (string-append "(test-skip 1)\n" all)))
                     (when (file-exists? "tests/guix-environment-container.sh")
                       (substitute* "tests/guix-environment-container.sh"
                         (("guix environment --version")
                          "exit 77\n")))
                     #t))
                  (add-before 'check 'set-SHELL
                    (lambda _
                      ;; 'guix environment' tests rely on 'SHELL' having a
                      ;; correct value, so set it.
                      (setenv "SHELL" (which "sh"))
                      #t))
                  (add-after 'install 'wrap-program
                   (lambda* (#:key inputs outputs #:allow-other-keys)
                     ;; Make sure the 'guix' command finds GnuTLS and
                     ;; Guile-JSON automatically.
                     (let* ((out    (assoc-ref outputs "out"))
                            (guile  (assoc-ref inputs "guile"))
                            (json   (assoc-ref inputs "guile-json"))
                            (ssh    (assoc-ref inputs "guile-ssh"))
                            (gnutls (assoc-ref inputs "gnutls"))
                            (effective
                             (read-line
                              (open-pipe* OPEN_READ
                                          (string-append guile "/bin/guile")
                                          "-c" "(display (effective-version))")))
                            (path   (string-append
                                     json "/share/guile/site/" effective ":"
                                     ssh "/share/guile/site/" effective ":"
                                     gnutls "/share/guile/site/" effective)))
         #:phases (modify-phases %standard-phases
                    (add-after 'unpack 'bootstrap
                      (lambda _
                        ;; Make sure 'msgmerge' can modify the PO files.
                        (for-each (lambda (po)
                                    (chmod po #o666))
                                  (find-files "." "\\.po$"))

                       (wrap-program (string-append out "/bin/guix")
                         `("GUILE_LOAD_PATH" ":" prefix (,path))
                         `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,path)))
                        (zero? (system* "sh" "bootstrap"))))
                    (add-before
                        'configure 'copy-bootstrap-guile
                      (lambda* (#:key system inputs #:allow-other-keys)
                        (define (boot-guile-version arch)
                          (cond ((string=? "armhf" arch)   "2.0.11")
                                ((string=? "aarch64" arch) "2.0.14")
                                (else "2.0.9")))

                       #t))))))
    (native-inputs `(("pkg-config" ,pkg-config)
                        (define (copy arch)
                          (let ((guile  (assoc-ref inputs
                                                   (string-append "boot-guile/"
                                                                  arch)))
                                (target (string-append "gnu/packages/bootstrap/"
                                                       arch "-linux/"
                                                       "/guile-"
                                                       (boot-guile-version arch)
                                                       ".tar.xz")))
                            (mkdir-p (dirname target)) ;XXX: eventually unneeded
                            (copy-file guile target)))

                     ;; XXX: Keep the development inputs here even though
                     ;; they're unnecessary, just so that 'guix environment
                     ;; guix' always contains them.
                     ("autoconf" ,(autoconf-wrapper))
                     ("automake" ,automake)
                     ("gettext" ,gettext-minimal)
                     ("texinfo" ,texinfo)
                     ("graphviz" ,graphviz)
                     ("help2man" ,help2man)))
    (inputs
     (let ((boot-guile (lambda (arch hash)
                         (origin
                          (method url-fetch)
                          (uri (boot-guile-uri arch))
                          (sha256 hash)))))
       `(("bzip2" ,bzip2)
         ("gzip" ,gzip)
         ("zlib" ,zlib)                           ;for 'guix publish'
                        (copy "i686")
                        (copy "x86_64")
                        (copy "mips64el")
                        (copy "armhf")
                        (copy "aarch64")
                        #t))
                    (add-after
                        'unpack 'disable-container-tests
                      ;; XXX FIXME: These tests fail within the build container.
                      (lambda _
                        (substitute* "tests/syscalls.scm"
                          (("^\\(test-(assert|equal) \"(clone|setns|pivot-root)\"" all)
                           (string-append "(test-skip 1)\n" all)))
                        (substitute* "tests/containers.scm"
                          (("^\\(test-(assert|equal)" all)
                           (string-append "(test-skip 1)\n" all)))
                        (when (file-exists? "tests/guix-environment-container.sh")
                          (substitute* "tests/guix-environment-container.sh"
                            (("guix environment --version")
                             "exit 77\n")))
                        #t))
                    (add-before 'check 'set-SHELL
                      (lambda _
                        ;; 'guix environment' tests rely on 'SHELL' having a
                        ;; correct value, so set it.
                        (setenv "SHELL" (which "sh"))
                        #t))
                    (add-after 'install 'wrap-program
                      (lambda* (#:key inputs outputs #:allow-other-keys)
                        ;; Make sure the 'guix' command finds GnuTLS and
                        ;; Guile-JSON automatically.
                        (let* ((out    (assoc-ref outputs "out"))
                               (guile  (assoc-ref inputs "guile"))
                               (json   (assoc-ref inputs "guile-json"))
                               (ssh    (assoc-ref inputs "guile-ssh"))
                               (gnutls (assoc-ref inputs "gnutls"))
                               (effective
                                (read-line
                                 (open-pipe* OPEN_READ
                                             (string-append guile "/bin/guile")
                                             "-c" "(display (effective-version))")))
                               (path   (string-append
                                        json "/share/guile/site/" effective ":"
                                        ssh "/share/guile/site/" effective ":"
                                        gnutls "/share/guile/site/" effective)))

         ("sqlite" ,sqlite)
         ("libgcrypt" ,libgcrypt)
         ("guile" ,guile-2.0)
                          (wrap-program (string-append out "/bin/guix")
                            `("GUILE_LOAD_PATH" ":" prefix (,path))
                            `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,path)))

         ("boot-guile/i686"
          ,(boot-guile "i686"
                       (base32
                        "0im800m30abgh7msh331pcbjvb4n02smz5cfzf1srv0kpx3csmxp")))
         ("boot-guile/x86_64"
          ,(boot-guile "x86_64"
                       (base32
                        "1w2p5zyrglzzniqgvyn1b55vprfzhgk8vzbzkkbdgl5248si0yq3")))
         ("boot-guile/mips64el"
          ,(boot-guile "mips64el"
                       (base32
                        "0fzp93lvi0hn54acc0fpvhc7bvl0yc853k62l958cihk03q80ilr")))
         ("boot-guile/armhf"
          ,(boot-guile "armhf"
                       (base32
                        "1mi3brl7l58aww34rawhvja84xc7l1b4hmwdmc36fp9q9mfx0lg5")))
         ("boot-guile/aarch64"
          ,(boot-guile "aarch64"
                       (base32
                        "1giy2aprjmn5fp9c4s9r125fljw4wv6ixy5739i5bffw4jgr0f9r"))))))
    (propagated-inputs
     `(("gnutls" ,gnutls)                         ;for 'guix download' & co.
       ("guile-json" ,guile-json)
       ("guile-ssh" ,guile-ssh)))
                          #t))))))
      (native-inputs `(("pkg-config" ,pkg-config)

    (home-page "https://www.gnu.org/software/guix/")
    (synopsis "Functional package manager for installed software packages and versions")
    (description
     "GNU Guix is a functional package manager for the GNU system, and is
                       ;; XXX: Keep the development inputs here even though
                       ;; they're unnecessary, just so that 'guix environment
                       ;; guix' always contains them.
                       ("autoconf" ,(autoconf-wrapper))
                       ("automake" ,automake)
                       ("gettext" ,gettext-minimal)
                       ("texinfo" ,texinfo)
                       ("graphviz" ,graphviz)
                       ("help2man" ,help2man)))
      (inputs
       (let ((boot-guile (lambda (arch hash)
                           (origin
                             (method url-fetch)
                             (uri (boot-guile-uri arch))
                             (sha256 hash)))))
         `(("bzip2" ,bzip2)
           ("gzip" ,gzip)
           ("zlib" ,zlib)                         ;for 'guix publish'

           ("sqlite" ,sqlite)
           ("libgcrypt" ,libgcrypt)
           ("guile" ,guile-2.0)

           ("boot-guile/i686"
            ,(boot-guile "i686"
                         (base32
                          "0im800m30abgh7msh331pcbjvb4n02smz5cfzf1srv0kpx3csmxp")))
           ("boot-guile/x86_64"
            ,(boot-guile "x86_64"
                         (base32
                          "1w2p5zyrglzzniqgvyn1b55vprfzhgk8vzbzkkbdgl5248si0yq3")))
           ("boot-guile/mips64el"
            ,(boot-guile "mips64el"
                         (base32
                          "0fzp93lvi0hn54acc0fpvhc7bvl0yc853k62l958cihk03q80ilr")))
           ("boot-guile/armhf"
            ,(boot-guile "armhf"
                         (base32
                          "1mi3brl7l58aww34rawhvja84xc7l1b4hmwdmc36fp9q9mfx0lg5")))
           ("boot-guile/aarch64"
            ,(boot-guile "aarch64"
                         (base32
                          "1giy2aprjmn5fp9c4s9r125fljw4wv6ixy5739i5bffw4jgr0f9r"))))))
      (propagated-inputs
       `(("gnutls" ,gnutls)                       ;for 'guix download' & co.
         ("guile-json" ,guile-json)
         ("guile-ssh" ,guile-ssh)))

      (home-page "https://www.gnu.org/software/guix/")
      (synopsis "Functional package manager for installed software packages and versions")
      (description
       "GNU Guix is a functional package manager for the GNU system, and is
also a distribution thereof.  It includes a virtual machine image.  Besides
the usual package management features, it also supports transactional
upgrades and roll-backs, per-user profiles, and much more.  It is based on
the Nix package manager.")
    (license gpl3+)
    (properties '((ftp-server . "alpha.gnu.org")))))

(define guix-devel
  ;; Development version of Guix.
  ;;
  ;; Note: use a very short commit id; with a longer one, the limit on
  ;; hash-bang lines would be exceeded while running the tests.
  (let ((commit "25a49294caf2386e65fc1b12a2508324be0b1cc2"))
    (package (inherit guix-release)
      (version (string-append "0.12.0-9." (string-take commit 4)))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      ;; "git://git.sv.gnu.org/guix.git" temporarily
                      ;; unavailable (XXX).
                      (url "http://git.savannah.gnu.org/r/guix.git")
                      (commit commit)))
                (sha256
                 (base32
                  "0p4rh0629j89v4ka5dsp70a1xrfhg7sxjjq54p68vw7x5dkann4a"))
                (file-name (string-append "guix-" version "-checkout"))))
      (arguments
       (substitute-keyword-arguments (package-arguments guix-release)
         ((#:configure-flags flags)
          ;; Set 'DOT_USER_PROGRAM' to the empty string so we don't keep a
          ;; reference to Graphviz, whose closure is pretty big (too big for
          ;; the GuixSD installation image.)
          `(cons "ac_cv_path_DOT_USER_PROGRAM=dot" ,flags))
         ((#:phases phases)
          `(modify-phases ,phases
             (add-after
              'unpack 'bootstrap
              (lambda _
                ;; Make sure 'msgmerge' can modify the PO files.
                (for-each (lambda (po)
                            (chmod po #o666))
                          (find-files "." "\\.po$"))

                (zero? (system* "sh" "bootstrap")))))))))))
      (license gpl3+)
      (properties '((ftp-server . "alpha.gnu.org"))))))

(define-public guix guix-devel)
;; Alias for backward compatibility.
(define-public guix-devel guix)

(define (source-file? file stat)
  "Return true if FILE is likely a source file, false if it is a typical