From 0a059eaee8dd304e286580acf95e51eeda0b970a Mon Sep 17 00:00:00 2001 From: Robin Templeton Date: Tue, 27 Nov 2018 20:32:21 -0500 Subject: [PATCH] gnu: Add arcanist. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/phabricator.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. Signed-off-by: Ludovic Courtès --- gnu/local.mk | 1 + gnu/packages/phabricator.scm | 124 +++++++++++++++++++++++++++++++++++ 2 files changed, 125 insertions(+) create mode 100644 gnu/packages/phabricator.scm diff --git a/gnu/local.mk b/gnu/local.mk index ac3228dbb1..bb152cd108 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -348,6 +348,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/perl-check.scm \ %D%/packages/perl-web.scm \ %D%/packages/photo.scm \ + %D%/packages/phabricator.scm \ %D%/packages/php.scm \ %D%/packages/pkg-config.scm \ %D%/packages/plotutils.scm \ diff --git a/gnu/packages/phabricator.scm b/gnu/packages/phabricator.scm new file mode 100644 index 0000000000..6c94a13114 --- /dev/null +++ b/gnu/packages/phabricator.scm @@ -0,0 +1,124 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2018 Robin Templeton +;;; +;;; 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 phabricator) + #:use-module (gnu packages php) + #:use-module (gnu packages version-control) + #:use-module (guix build-system gnu) + #:use-module (guix git-download) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages)) + +(define-public libphutil + (let ((commit "b29d76e1709ef018cc5edc7c03033fd9fdebc578") + (revision "1")) + (package + (name "libphutil") + (version (git-version "0.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/phacility/libphutil.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "06j84721r9r8624fmil62b5crs2qs0v6rr3cvv2zvkvwhxwrwv1l")))) + (build-system gnu-build-system) + ;; TODO: Unbundle jsonlint and porter-stemmer. + (arguments + '(#:tests? #f + #:phases + (modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (replace 'install + (lambda _ + (let ((lib (string-append %output "/lib/libphutil"))) + (mkdir-p lib) + (copy-recursively "." lib)) + #t))))) + (inputs + `(("php" ,php))) + (home-page "https://github.com/phacility/libphutil") + (synopsis "PHP utility library") + (description + "@code{libphutil} is a collection of utility classes and functions for +PHP.") + ;; Bundled libraries are expat-licensed. + (license (list license:asl2.0 license:expat))))) + +(define-public arcanist + (let ((commit "45a8d22c74a62624e69f5cd6ce901c9ab2658904") + (revision "1")) + (package + (name "arcanist") + (version (git-version "0.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/phacility/arcanist.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "13vswhqy9sap6841y93j4mj71dl27vhcivcn3rzyi0cchkhg2ac9")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f + #:phases + (modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (replace 'install + (lambda _ + (let ((bin (string-append %output "/bin")) + (lib (string-append %output "/lib/arcanist"))) + (mkdir-p lib) + (copy-recursively "." lib) + (mkdir-p bin) + (symlink (string-append lib "/bin/arc") + (string-append bin "/arc")) + (wrap-program (string-append bin "/arc") + `("ARC_PHUTIL_PATH" = + (,(string-append (assoc-ref %build-inputs "libphutil") + "/lib/libphutil"))) + `("PATH" ":" prefix + (,@(map (lambda (i) + (string-append (assoc-ref %build-inputs i) "/bin")) + '("git" "mercurial" "subversion")))))) + #t)) + (add-before 'reset-gzip-timestamps 'make-compressed-files-writable + (lambda _ + (for-each make-file-writable + (find-files %output ".*\\.t?gz$")) + #t))))) + (inputs + `(("php" ,php) + ("libphutil" ,libphutil) + ("git" ,git) + ("mercurial" ,mercurial) + ("subversion" ,subversion))) + (home-page "https://github.com/phacility/arcanist") + (synopsis "Command-line interface for Phabricator") + (description + "Arcanist is the command-line tool for the Phabricator software +development service. It allows you to interact with Phabricator installs to +send code for review, download patches, transfer files, view status, make API +calls, and various other things.") + (license license:asl2.0))))