Merge branch 'master' into staging
This commit is contained in:
commit
3cb61ca85a
@ -13,6 +13,7 @@
|
||||
# Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
|
||||
# Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
|
||||
# Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
|
||||
# Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
|
||||
#
|
||||
# This file is part of GNU Guix.
|
||||
#
|
||||
@ -124,6 +125,7 @@ MODULES = \
|
||||
guix/build-system/ocaml.scm \
|
||||
guix/build-system/waf.scm \
|
||||
guix/build-system/r.scm \
|
||||
guix/build-system/rakudo.scm \
|
||||
guix/build-system/ruby.scm \
|
||||
guix/build-system/scons.scm \
|
||||
guix/build-system/texlive.scm \
|
||||
@ -164,6 +166,7 @@ MODULES = \
|
||||
guix/build/python-build-system.scm \
|
||||
guix/build/ocaml-build-system.scm \
|
||||
guix/build/r-build-system.scm \
|
||||
guix/build/rakudo-build-system.scm \
|
||||
guix/build/ruby-build-system.scm \
|
||||
guix/build/scons-build-system.scm \
|
||||
guix/build/texlive-build-system.scm \
|
||||
|
@ -28,7 +28,7 @@ Copyright @copyright{} 2015, 2016, 2017 Leo Famulari@*
|
||||
Copyright @copyright{} 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus@*
|
||||
Copyright @copyright{} 2016 Ben Woodcroft@*
|
||||
Copyright @copyright{} 2016, 2017, 2018 Chris Marusich@*
|
||||
Copyright @copyright{} 2016, 2017, 2018 Efraim Flashner@*
|
||||
Copyright @copyright{} 2016, 2017, 2018, 2019 Efraim Flashner@*
|
||||
Copyright @copyright{} 2016 John Darrington@*
|
||||
Copyright @copyright{} 2016, 2017 ng0@*
|
||||
Copyright @copyright{} 2016, 2017, 2018, 2019 Jan Nieuwenhuizen@*
|
||||
@ -6002,6 +6002,24 @@ are run after installation using the R function
|
||||
@code{tools::testInstalledPackage}.
|
||||
@end defvr
|
||||
|
||||
@defvr {Scheme Variable} rakudo-build-system
|
||||
This variable is exported by @code{(guix build-system rakudo)} It
|
||||
implements the build procedure used by @uref{https://rakudo.org/,
|
||||
Rakudo} for @uref{https://perl6.org/, Perl6} packages. It installs the
|
||||
package to @code{/gnu/store/@dots{}/NAME-VERSION/share/perl6} and
|
||||
installs the binaries, library files and the resources, as well as wrap
|
||||
the files under the @code{bin/} directory. Tests can be skipped by
|
||||
passing @code{#f} to the @code{tests?} parameter.
|
||||
|
||||
Which rakudo package is used can be specified with @code{rakudo}.
|
||||
Which perl6-tap-harness package used for the tests can be specified with
|
||||
@code{#:prove6} or removed by passing @code{#f} to the
|
||||
@code{with-prove6?} parameter.
|
||||
Which perl6-zef package used for tests and installing can be specified
|
||||
with @code{#:zef} or removed by passing @code{#f} to the
|
||||
@code{with-zef?} parameter.
|
||||
@end defvr
|
||||
|
||||
@defvr {Scheme Variable} texlive-build-system
|
||||
This variable is exported by @code{(guix build-system texlive)}. It is
|
||||
used to build TeX packages in batch mode with a specified engine. The
|
||||
@ -9290,7 +9308,9 @@ This shows the @emph{reverse} DAG of packages. For example:
|
||||
guix graph --type=reverse-package ocaml
|
||||
@end example
|
||||
|
||||
...@: yields the graph of packages that depend on OCaml.
|
||||
...@: yields the graph of packages that @emph{explicitly} depend on OCaml (if
|
||||
you are also interested in cases where OCaml is an implicit dependency, see
|
||||
@code{reverse-bag} below.)
|
||||
|
||||
Note that for core packages this can yield huge graphs. If all you want
|
||||
is to know the number of packages that depend on a given package, use
|
||||
@ -9324,6 +9344,20 @@ dependencies.
|
||||
@item bag-with-origins
|
||||
Similar to @code{bag}, but also showing origins and their dependencies.
|
||||
|
||||
@item reverse-bag
|
||||
This shows the @emph{reverse} DAG of packages. Unlike @code{reverse-package},
|
||||
it also takes implicit dependencies into account. For example:
|
||||
|
||||
@example
|
||||
guix graph -t reverse-bag dune
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
...@: yields the graph of all packages that depend on Dune, directly or
|
||||
indirectly. Since Dune is an @emph{implicit} dependency of many packages
|
||||
@i{via} @code{dune-build-system}, this shows a large number of packages,
|
||||
whereas @code{reverse-package} would show very few if any.
|
||||
|
||||
@item derivation
|
||||
This is the most detailed representation: It shows the DAG of
|
||||
derivations (@pxref{Derivations}) and plain store items. Compared to
|
||||
|
@ -10,7 +10,7 @@
|
||||
# Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
|
||||
# Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
|
||||
# Copyright © 2016, 2017, 2018, 2019 Alex Vong <alexvong1995@gmail.com>
|
||||
# Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
|
||||
# Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
|
||||
# Copyright © 2016, 2017 Jan Nieuwenhuizen <janneke@gnu.org>
|
||||
# Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
# Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
|
||||
@ -212,6 +212,7 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/packages/gobby.scm \
|
||||
%D%/packages/golang.scm \
|
||||
%D%/packages/gperf.scm \
|
||||
%D%/packages/gpodder.scm \
|
||||
%D%/packages/gprolog.scm \
|
||||
%D%/packages/gps.scm \
|
||||
%D%/packages/graph.scm \
|
||||
@ -364,6 +365,7 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/packages/perl-check.scm \
|
||||
%D%/packages/perl-compression.scm \
|
||||
%D%/packages/perl-web.scm \
|
||||
%D%/packages/perl6.scm \
|
||||
%D%/packages/photo.scm \
|
||||
%D%/packages/phabricator.scm \
|
||||
%D%/packages/php.scm \
|
||||
@ -729,7 +731,6 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/docker-fix-tests.patch \
|
||||
%D%/packages/patches/dovecot-trees-support-dovecot-2.3.patch \
|
||||
%D%/packages/patches/doxygen-test.patch \
|
||||
%D%/packages/patches/dropbear-CVE-2018-15599.patch \
|
||||
%D%/packages/patches/dvd+rw-tools-add-include.patch \
|
||||
%D%/packages/patches/efl-mesa-compat.patch \
|
||||
%D%/packages/patches/elfutils-tests-ptrace.patch \
|
||||
@ -970,6 +971,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/libexif-CVE-2016-6328.patch \
|
||||
%D%/packages/patches/libexif-CVE-2017-7544.patch \
|
||||
%D%/packages/patches/libgcrypt-make-yat2m-reproducible.patch \
|
||||
%D%/packages/patches/libgit2-avoid-python.patch \
|
||||
%D%/packages/patches/libgit2-mtime-0.patch \
|
||||
%D%/packages/patches/libgdata-fix-tests.patch \
|
||||
%D%/packages/patches/libgdata-glib-duplicate-tests.patch \
|
||||
|
@ -6347,6 +6347,28 @@ sequences.")
|
||||
;; STAR is licensed under GPLv3 or later; htslib is MIT-licensed.
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public starlong
|
||||
(package (inherit star)
|
||||
(name "starlong")
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments star)
|
||||
((#:make-flags flags)
|
||||
`(list "STARlong"))
|
||||
((#:phases phases)
|
||||
`(modify-phases ,phases
|
||||
;; Allow extra long sequence reads.
|
||||
(add-after 'unpack 'make-extra-long
|
||||
(lambda _
|
||||
(substitute* "source/IncludeDefine.h"
|
||||
(("(#define DEF_readNameLengthMax ).*" _ match)
|
||||
(string-append match "900000\n")))
|
||||
#t))
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
|
||||
(install-file "STARlong" bin))
|
||||
#t))))))))
|
||||
|
||||
(define-public subread
|
||||
(package
|
||||
(name "subread")
|
||||
|
@ -28,6 +28,7 @@
|
||||
;;; Copyright © 2016, 2017, 2018 Marius Bakke <mbakke@fastmail.com>
|
||||
;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
|
||||
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@ -549,6 +550,27 @@ for every Python test framework. It supports nose, py.test, and unittest.")
|
||||
(define-public python2-parameterized
|
||||
(package-with-python2 python-parameterized))
|
||||
|
||||
(define-public python-minimock
|
||||
(package
|
||||
(name "python-minimock")
|
||||
(version "1.2.8")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "MiniMock" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0k2sxb1ibnyg05iblz7zhbv825f1zk9906rab7883iqgvzmdzpsz"))))
|
||||
(build-system python-build-system)
|
||||
(home-page "https://pypi.org/project/MiniMock")
|
||||
(synopsis "Simple Python library for using mock objects")
|
||||
(description "MiniMock is a simple library for building mock objects with
|
||||
doctest.")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public python2-minimock
|
||||
(package-with-python2 python-minimock))
|
||||
|
||||
(define-public python-mock
|
||||
(package
|
||||
(name "python-mock")
|
||||
|
@ -647,7 +647,7 @@ data on your platform, so the seed itself will be as random as possible.
|
||||
(define-public libb2
|
||||
(package
|
||||
(name "libb2")
|
||||
(version "0.98")
|
||||
(version "0.98.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@ -655,7 +655,7 @@ data on your platform, so the seed itself will be as random as possible.
|
||||
version "/libb2-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0vq39cvwy05754l565xl11rqr2jvjb6ykjzca886vi9vm71y0sg8"))))
|
||||
"0bn7yrzdixdvzm46shbhpkqbr6zyqyxiqn7a7x54ag3mrvfnyqjk"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
|
@ -1031,14 +1031,14 @@ changes.")
|
||||
(define-public tdb
|
||||
(package
|
||||
(name "tdb")
|
||||
(version "1.3.18")
|
||||
(version "1.4.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://www.samba.org/ftp/tdb/tdb-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1drnsdh1w0px35r0y7l7g59yvyr67mvcsdrli4wab0mwi07b8mn1"))))
|
||||
"0d9d2f1c83gmmq30bkfs50yb8399mr9xjjzscma4kyq0ajf75861"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:phases
|
||||
|
@ -146,7 +146,8 @@ and BOOTP/TFTP for network booting of diskless machines.")
|
||||
"/share/man/man1/dig.1"
|
||||
"/share/man/man1/host.1"
|
||||
"/share/man/man1/nslookup.1"
|
||||
"/share/man/man1/nsupdate.1"))))
|
||||
"/share/man/man1/nsupdate.1"))
|
||||
#t))
|
||||
;; When and if guix provides user namespaces for the build process,
|
||||
;; then the following can be uncommented and the subsequent "force-test"
|
||||
;; will not be necessary.
|
||||
@ -156,8 +157,7 @@ and BOOTP/TFTP for network booting of diskless machines.")
|
||||
;; (system "bin/tests/system/ifconfig.sh up")))
|
||||
(replace 'check
|
||||
(lambda _
|
||||
(invoke "make" "force-test")
|
||||
#t)))))
|
||||
(invoke "make" "force-test"))))))
|
||||
(synopsis "An implementation of the Domain Name System")
|
||||
(description "BIND is an implementation of the @dfn{Domain Name System}
|
||||
(DNS) protocols for the Internet. It is a reference implementation of those
|
||||
|
@ -750,7 +750,7 @@ in certain cases. It also enables recursion for anonymous functions.")
|
||||
(define-public emacs-xr
|
||||
(package
|
||||
(name "emacs-xr")
|
||||
(version "1.7")
|
||||
(version "1.9")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@ -758,7 +758,7 @@ in certain cases. It also enables recursion for anonymous functions.")
|
||||
"https://elpa.gnu.org/packages/xr-" version ".tar"))
|
||||
(sha256
|
||||
(base32
|
||||
"099r88s2giv95nkwiim1cx8fy7cvv1pg1701733p4ami82ldsdw0"))))
|
||||
"1mcild3034f4c1x8x05w9q0ps70i1nihvih22cmh3wj4cgllg5w0"))))
|
||||
(build-system emacs-build-system)
|
||||
(home-page "http://elpa.gnu.org/packages/xr.html")
|
||||
(synopsis "Convert string regexp to rx notation")
|
||||
|
79
gnu/packages/gpodder.scm
Normal file
79
gnu/packages/gpodder.scm
Normal file
@ -0,0 +1,79 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
|
||||
;;;
|
||||
;;; 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 <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages gpodder)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix packages)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages check)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages qt))
|
||||
|
||||
(define-public libmygpo-qt
|
||||
(package
|
||||
(name "libmygpo-qt")
|
||||
(version "1.1.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://stefan.derkits.at/files/"
|
||||
"libmygpo-qt/libmygpo-qt." version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1kg18qrq2rsswgzhl65r3mlyx7kpqg4wwnbp4yiv6svvmadmlxl2"))
|
||||
(patches (search-patches "libmygpo-qt-fix-qt-5.11.patch"
|
||||
"libmygpo-qt-missing-qt5-modules.patch"))))
|
||||
(build-system cmake-build-system)
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("qt" ,qtbase)))
|
||||
(arguments
|
||||
`(#:configure-flags '("-DMYGPO_BUILD_TESTS=ON")
|
||||
;; TODO: Enable tests when https://github.com/gpodder/gpodder/issues/446
|
||||
;; is fixed.
|
||||
#:tests? #f))
|
||||
(home-page "http://wiki.gpodder.org/wiki/Libmygpo-qt")
|
||||
(synopsis "Qt/C++ library wrapping the gpodder web service")
|
||||
(description "@code{libmygpo-qt} is a Qt/C++ library wrapping the
|
||||
@url{https://gpodder.net} APIs. It allows applications to discover, manage
|
||||
and track podcasts.")
|
||||
(license license:lgpl2.1+)))
|
||||
|
||||
(define-public python-podcastparser
|
||||
(package
|
||||
(name "python-podcastparser")
|
||||
(version "0.6.4")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "podcastparser" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1ksj1gcmbnm5i43xhpqxbs2mqi6xzawwwkwbh9h6lwa1wxxvv247"))))
|
||||
(native-inputs
|
||||
`(("python-nose" ,python-nose)))
|
||||
(build-system python-build-system)
|
||||
(home-page "http://gpodder.org/podcastparser")
|
||||
(synopsis "Simplified and fast RSS parser Python library")
|
||||
(description "@code{podcastparser} is a library for the gPodder project to
|
||||
provide an easy and reliable way of parsing RSS and Atom-based podcast feeds
|
||||
in Python.")
|
||||
(license license:isc)))
|
@ -5,7 +5,7 @@
|
||||
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
|
||||
;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
@ -170,19 +170,19 @@ script.")
|
||||
(define-public graphicsmagick
|
||||
(package
|
||||
(name "graphicsmagick")
|
||||
(version "1.3.30")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
(list
|
||||
(string-append "mirror://sourceforge/" name "/" name
|
||||
"/" version "/GraphicsMagick-" version ".tar.xz")
|
||||
(string-append "ftp://ftp.graphicsmagick.org/pub/"
|
||||
"GraphicsMagick/" (version-major+minor version)
|
||||
"/GraphicsMagick-" version ".tar.xz")))
|
||||
(sha256
|
||||
(base32
|
||||
"1warar0731xf94r4bn5x1km85rjabl4iq8r0dk3ywmczap3farfr"))))
|
||||
(version "1.3.31")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
(list
|
||||
(string-append "mirror://sourceforge/graphicsmagick/graphicsmagick"
|
||||
"/" version "/GraphicsMagick-" version ".tar.xz")
|
||||
(string-append "ftp://ftp.graphicsmagick.org/pub/"
|
||||
"GraphicsMagick/" (version-major+minor version)
|
||||
"/GraphicsMagick-" version ".tar.xz")))
|
||||
(sha256
|
||||
(base32 "0y22740f25qxsqqqg26xqlfp920dm57b7hrgaqmx7azksrcvnsq9"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
|
@ -149,7 +149,7 @@ digits, is a cardinal or ordinal number.")
|
||||
(define-public perl-lingua-en-tagger
|
||||
(package
|
||||
(name "perl-lingua-en-tagger")
|
||||
(version "0.29")
|
||||
(version "0.30")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@ -157,7 +157,7 @@ digits, is a cardinal or ordinal number.")
|
||||
"Lingua-EN-Tagger-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0dssn101kmpkh2ik1430mj2ikk04849vbpgi60382kvh9xn795na"))))
|
||||
"0nrnkvsf9f0a7lp82sanmy89ms2nqq1lvjqicvsagsvzp513bl5b"))))
|
||||
(build-system perl-build-system)
|
||||
(propagated-inputs
|
||||
`(("perl-memoize-expirelru" ,perl-memoize-expirelru)
|
||||
|
@ -85,7 +85,7 @@ statements and serializes in normalized format.")
|
||||
(define-public perl-software-license
|
||||
(package
|
||||
(name "perl-software-license")
|
||||
(version "0.103013")
|
||||
(version "0.103014")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@ -94,7 +94,7 @@ statements and serializes in normalized format.")
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1wqgh7vdlc966amlrq0b2szz18lnrl9rfh8wlf7v0hqg74vxjh96"))))
|
||||
"128pbm9pf5drakm9bpkifc1zg8f005xabfwzg21nc03m5mhfligb"))))
|
||||
(build-system perl-build-system)
|
||||
(native-inputs
|
||||
`(("perl-try-tiny" ,perl-try-tiny)))
|
||||
|
@ -11,7 +11,7 @@
|
||||
;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
|
||||
;;; Copyright © 2016 Raymond Nicholson <rain1@openmailbox.org>
|
||||
;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
|
||||
;;; Copyright © 2016, 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
|
||||
;;; Copyright © 2016, 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
|
||||
;;; Copyright © 2016, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2016 David Craven <david@craven.ch>
|
||||
;;; Copyright © 2016 John Darrington <jmd@gnu.org>
|
||||
@ -4277,7 +4277,7 @@ Light is the successor of lightscript.")
|
||||
(define-public tlp
|
||||
(package
|
||||
(name "tlp")
|
||||
(version "1.1")
|
||||
(version "1.2.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@ -4287,7 +4287,7 @@ Light is the successor of lightscript.")
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"068hzmh90x600saynbl7iwg1pm0ywldn4jazyxx5y1fixs8s1qbn"))))
|
||||
"0rcp9i0fisdm4h6799ffr696l1vl661fnwb2dij268nlwwmkr90g"))))
|
||||
(inputs `(("bash" ,bash)
|
||||
("dbus" ,dbus)
|
||||
("ethtool" ,ethtool)
|
||||
@ -4317,7 +4317,8 @@ Light is the successor of lightscript.")
|
||||
(setenv "TLP_NO_PMUTILS" "1")
|
||||
(setenv "TLP_SBIN" (string-append out "/bin"))
|
||||
(setenv "TLP_BIN" (string-append out "/bin"))
|
||||
(setenv "TLP_TLIB" (string-append out "/share/tlp-pm"))
|
||||
(setenv "TLP_TLIB" (string-append out "/share/tlp"))
|
||||
(setenv "TLP_FLIB" (string-append out "/share/tlp/func.d"))
|
||||
(setenv "TLP_ULIB" (string-append out "/lib/udev"))
|
||||
(setenv "TLP_CONF" "/etc/tlp")
|
||||
(setenv "TLP_SHCPL"
|
||||
@ -4371,7 +4372,6 @@ Light is the successor of lightscript.")
|
||||
a default configuration already optimized for battery life. Nevertheless,
|
||||
TLP is customizable to fulfil system requirements. TLP settings are applied
|
||||
every time the power supply source is changed.")
|
||||
|
||||
;; 'COPYING' is a custom version that says that one file is GPLv3+ and the
|
||||
;; rest is GPLv2+.
|
||||
(license (list license:gpl2+ license:gpl3+))))
|
||||
|
@ -1127,7 +1127,8 @@ compresses it.")
|
||||
("mime-info" ,shared-mime-info)))
|
||||
(arguments
|
||||
'(#:configure-flags
|
||||
'("--enable-gnutls" "--enable-pgpmime-plugin" "--enable-enchant")
|
||||
'("--enable-gnutls" "--enable-pgpmime-plugin" "--enable-enchant"
|
||||
"--enable-ldap")
|
||||
#:make-flags
|
||||
;; Disable updating icon cache since it's done by the profile hook.
|
||||
;; Conflict with other packages in the profile would be inevitable
|
||||
|
@ -346,3 +346,22 @@ integer library written entirely in C. It's designed to provide an API that is
|
||||
simple to work with that provides fairly efficient routines that build out of
|
||||
the box without configuration.")
|
||||
(license unlicense)))
|
||||
|
||||
(define-public libtommath-1.0
|
||||
(package
|
||||
(inherit libtommath)
|
||||
(version "1.0.1")
|
||||
(outputs '("out"))
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://github.com/libtom/libtommath/releases/"
|
||||
"download/v" version "/ltm-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0sbccdwbkfc680id2fi0x067j23biqcjqilwkk7y9339knrjy0s7"))))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments libtommath)
|
||||
((#:phases phases)
|
||||
`(modify-phases ,phases
|
||||
(delete 'install-static-library)))))))
|
||||
|
@ -88,6 +88,7 @@
|
||||
#:use-module (gnu packages gl)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages gnome)
|
||||
#:use-module (gnu packages gpodder)
|
||||
#:use-module (gnu packages graphics)
|
||||
#:use-module (gnu packages gstreamer)
|
||||
#:use-module (gnu packages gtk)
|
||||
@ -4009,36 +4010,6 @@ OSC connections.")
|
||||
the electronic or dubstep genre.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public libmygpo-qt
|
||||
(package
|
||||
(name "libmygpo-qt")
|
||||
(version "1.1.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://stefan.derkits.at/files/"
|
||||
"libmygpo-qt/libmygpo-qt." version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1kg18qrq2rsswgzhl65r3mlyx7kpqg4wwnbp4yiv6svvmadmlxl2"))
|
||||
(patches (search-patches "libmygpo-qt-fix-qt-5.11.patch"
|
||||
"libmygpo-qt-missing-qt5-modules.patch"))))
|
||||
(build-system cmake-build-system)
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("qt" ,qtbase)))
|
||||
(arguments
|
||||
`(#:configure-flags '("-DMYGPO_BUILD_TESTS=ON")
|
||||
;; TODO: Enable tests when https://github.com/gpodder/gpodder/issues/446
|
||||
;; is fixed.
|
||||
#:tests? #f))
|
||||
(home-page "http://wiki.gpodder.org/wiki/Libmygpo-qt")
|
||||
(synopsis "Qt/C++ library wrapping the gpodder web service")
|
||||
(description "@code{libmygpo-qt} is a Qt/C++ library wrapping the
|
||||
@url{https://gpodder.net} APIs. It allows applications to discover, manage
|
||||
and track podcasts.")
|
||||
(license license:lgpl2.1+)))
|
||||
|
||||
(define-public sonivox-eas
|
||||
(package
|
||||
(name "sonivox-eas")
|
||||
@ -4227,7 +4198,7 @@ compact disc (CDDA) identifiers.")
|
||||
(define-public perl-webservice-musicbrainz
|
||||
(package
|
||||
(name "perl-webservice-musicbrainz")
|
||||
(version "1.0.4")
|
||||
(version "1.0.5")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@ -4235,7 +4206,7 @@ compact disc (CDDA) identifiers.")
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"182z3xjajk6s7k5xm3kssjy3hqx2qbnq4f8864hma098ryy2ph3a"))))
|
||||
"16chs1l58cf000d5kalkyph3p31ci73p1rlyx98mfv10d2cq6fsj"))))
|
||||
(build-system perl-build-system)
|
||||
(arguments
|
||||
;; Tests try to connect to http://musicbrainz.org.
|
||||
|
@ -48,15 +48,14 @@
|
||||
(define-public parallel
|
||||
(package
|
||||
(name "parallel")
|
||||
(version "20190222")
|
||||
(version "20190322")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/parallel/parallel-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"073bj0ji9liq07j6a7y9i4kxfkv06kvavhh7654f2bgfavfbmcc6"))))
|
||||
(base32 "12q0ys0dp019wykx7jcqbrilz8798hgb66k97aj2s2m7xdpw41ym"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
|
@ -1,240 +0,0 @@
|
||||
Fix CVE-2018-15599:
|
||||
|
||||
http://lists.ucc.gu.uwa.edu.au/pipermail/dropbear/2018q3/002108.html
|
||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-15599
|
||||
|
||||
Patch copied from upstream source repository:
|
||||
|
||||
https://github.com/mkj/dropbear/commit/52adbb34c32d3e2e1bcdb941e20a6f81138b8248
|
||||
|
||||
From 52adbb34c32d3e2e1bcdb941e20a6f81138b8248 Mon Sep 17 00:00:00 2001
|
||||
From: Matt Johnston <matt@ucc.asn.au>
|
||||
Date: Thu, 23 Aug 2018 23:43:12 +0800
|
||||
Subject: [PATCH] Wait to fail invalid usernames
|
||||
|
||||
---
|
||||
auth.h | 6 +++---
|
||||
svr-auth.c | 19 +++++--------------
|
||||
svr-authpam.c | 26 ++++++++++++++++++++++----
|
||||
svr-authpasswd.c | 27 ++++++++++++++-------------
|
||||
svr-authpubkey.c | 11 ++++++++++-
|
||||
5 files changed, 54 insertions(+), 35 deletions(-)
|
||||
|
||||
diff --git a/auth.h b/auth.h
|
||||
index da498f5b..98f54683 100644
|
||||
--- a/auth.h
|
||||
+++ b/auth.h
|
||||
@@ -37,9 +37,9 @@ void recv_msg_userauth_request(void);
|
||||
void send_msg_userauth_failure(int partial, int incrfail);
|
||||
void send_msg_userauth_success(void);
|
||||
void send_msg_userauth_banner(const buffer *msg);
|
||||
-void svr_auth_password(void);
|
||||
-void svr_auth_pubkey(void);
|
||||
-void svr_auth_pam(void);
|
||||
+void svr_auth_password(int valid_user);
|
||||
+void svr_auth_pubkey(int valid_user);
|
||||
+void svr_auth_pam(int valid_user);
|
||||
|
||||
#if DROPBEAR_SVR_PUBKEY_OPTIONS_BUILT
|
||||
int svr_pubkey_allows_agentfwd(void);
|
||||
diff --git a/svr-auth.c b/svr-auth.c
|
||||
index c19c0901..edde86bc 100644
|
||||
--- a/svr-auth.c
|
||||
+++ b/svr-auth.c
|
||||
@@ -149,10 +149,8 @@ void recv_msg_userauth_request() {
|
||||
if (methodlen == AUTH_METHOD_PASSWORD_LEN &&
|
||||
strncmp(methodname, AUTH_METHOD_PASSWORD,
|
||||
AUTH_METHOD_PASSWORD_LEN) == 0) {
|
||||
- if (valid_user) {
|
||||
- svr_auth_password();
|
||||
- goto out;
|
||||
- }
|
||||
+ svr_auth_password(valid_user);
|
||||
+ goto out;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -164,10 +162,8 @@ void recv_msg_userauth_request() {
|
||||
if (methodlen == AUTH_METHOD_PASSWORD_LEN &&
|
||||
strncmp(methodname, AUTH_METHOD_PASSWORD,
|
||||
AUTH_METHOD_PASSWORD_LEN) == 0) {
|
||||
- if (valid_user) {
|
||||
- svr_auth_pam();
|
||||
- goto out;
|
||||
- }
|
||||
+ svr_auth_pam(valid_user);
|
||||
+ goto out;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -177,12 +173,7 @@ void recv_msg_userauth_request() {
|
||||
if (methodlen == AUTH_METHOD_PUBKEY_LEN &&
|
||||
strncmp(methodname, AUTH_METHOD_PUBKEY,
|
||||
AUTH_METHOD_PUBKEY_LEN) == 0) {
|
||||
- if (valid_user) {
|
||||
- svr_auth_pubkey();
|
||||
- } else {
|
||||
- /* pubkey has no failure delay */
|
||||
- send_msg_userauth_failure(0, 0);
|
||||
- }
|
||||
+ svr_auth_pubkey(valid_user);
|
||||
goto out;
|
||||
}
|
||||
#endif
|
||||
diff --git a/svr-authpam.c b/svr-authpam.c
|
||||
index 05e4f3e5..d201bc96 100644
|
||||
--- a/svr-authpam.c
|
||||
+++ b/svr-authpam.c
|
||||
@@ -178,13 +178,14 @@ pamConvFunc(int num_msg,
|
||||
* Keyboard interactive would be a lot nicer, but since PAM is synchronous, it
|
||||
* gets very messy trying to send the interactive challenges, and read the
|
||||
* interactive responses, over the network. */
|
||||
-void svr_auth_pam() {
|
||||
+void svr_auth_pam(int valid_user) {
|
||||
|
||||
struct UserDataS userData = {NULL, NULL};
|
||||
struct pam_conv pamConv = {
|
||||
pamConvFunc,
|
||||
&userData /* submitted to pamvConvFunc as appdata_ptr */
|
||||
};
|
||||
+ const char* printable_user = NULL;
|
||||
|
||||
pam_handle_t* pamHandlep = NULL;
|
||||
|
||||
@@ -204,12 +205,23 @@ void svr_auth_pam() {
|
||||
|
||||
password = buf_getstring(ses.payload, &passwordlen);
|
||||
|
||||
+ /* We run the PAM conversation regardless of whether the username is valid
|
||||
+ in case the conversation function has an inherent delay.
|
||||
+ Use ses.authstate.username rather than ses.authstate.pw_name.
|
||||
+ After PAM succeeds we then check the valid_user flag too */
|
||||
+
|
||||
/* used to pass data to the PAM conversation function - don't bother with
|
||||
* strdup() etc since these are touched only by our own conversation
|
||||
* function (above) which takes care of it */
|
||||
- userData.user = ses.authstate.pw_name;
|
||||
+ userData.user = ses.authstate.username;
|
||||
userData.passwd = password;
|
||||
|
||||
+ if (ses.authstate.pw_name) {
|
||||
+ printable_user = ses.authstate.pw_name;
|
||||
+ } else {
|
||||
+ printable_user = "<invalid username>";
|
||||
+ }
|
||||
+
|
||||
/* Init pam */
|
||||
if ((rc = pam_start("sshd", NULL, &pamConv, &pamHandlep)) != PAM_SUCCESS) {
|
||||
dropbear_log(LOG_WARNING, "pam_start() failed, rc=%d, %s",
|
||||
@@ -242,7 +254,7 @@ void svr_auth_pam() {
|
||||
rc, pam_strerror(pamHandlep, rc));
|
||||
dropbear_log(LOG_WARNING,
|
||||
"Bad PAM password attempt for '%s' from %s",
|
||||
- ses.authstate.pw_name,
|
||||
+ printable_user,
|
||||
svr_ses.addrstring);
|
||||
send_msg_userauth_failure(0, 1);
|
||||
goto cleanup;
|
||||
@@ -253,12 +265,18 @@ void svr_auth_pam() {
|
||||
rc, pam_strerror(pamHandlep, rc));
|
||||
dropbear_log(LOG_WARNING,
|
||||
"Bad PAM password attempt for '%s' from %s",
|
||||
- ses.authstate.pw_name,
|
||||
+ printable_user,
|
||||
svr_ses.addrstring);
|
||||
send_msg_userauth_failure(0, 1);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
+ if (!valid_user) {
|
||||
+ /* PAM auth succeeded but the username isn't allowed in for another reason
|
||||
+ (checkusername() failed) */
|
||||
+ send_msg_userauth_failure(0, 1);
|
||||
+ }
|
||||
+
|
||||
/* successful authentication */
|
||||
dropbear_log(LOG_NOTICE, "PAM password auth succeeded for '%s' from %s",
|
||||
ses.authstate.pw_name,
|
||||
diff --git a/svr-authpasswd.c b/svr-authpasswd.c
|
||||
index bdee2aa1..69c7d8af 100644
|
||||
--- a/svr-authpasswd.c
|
||||
+++ b/svr-authpasswd.c
|
||||
@@ -48,22 +48,14 @@ static int constant_time_strcmp(const char* a, const char* b) {
|
||||
|
||||
/* Process a password auth request, sending success or failure messages as
|
||||
* appropriate */
|
||||
-void svr_auth_password() {
|
||||
+void svr_auth_password(int valid_user) {
|
||||
|
||||
char * passwdcrypt = NULL; /* the crypt from /etc/passwd or /etc/shadow */
|
||||
char * testcrypt = NULL; /* crypt generated from the user's password sent */
|
||||
- char * password;
|
||||
+ char * password = NULL;
|
||||
unsigned int passwordlen;
|
||||
-
|
||||
unsigned int changepw;
|
||||
|
||||
- passwdcrypt = ses.authstate.pw_passwd;
|
||||
-
|
||||
-#ifdef DEBUG_HACKCRYPT
|
||||
- /* debugging crypt for non-root testing with shadows */
|
||||
- passwdcrypt = DEBUG_HACKCRYPT;
|
||||
-#endif
|
||||
-
|
||||
/* check if client wants to change password */
|
||||
changepw = buf_getbool(ses.payload);
|
||||
if (changepw) {
|
||||
@@ -73,12 +65,21 @@ void svr_auth_password() {
|
||||
}
|
||||
|
||||
password = buf_getstring(ses.payload, &passwordlen);
|
||||
-
|
||||
- /* the first bytes of passwdcrypt are the salt */
|
||||
- testcrypt = crypt(password, passwdcrypt);
|
||||
+ if (valid_user) {
|
||||
+ /* the first bytes of passwdcrypt are the salt */
|
||||
+ passwdcrypt = ses.authstate.pw_passwd;
|
||||
+ testcrypt = crypt(password, passwdcrypt);
|
||||
+ }
|
||||
m_burn(password, passwordlen);
|
||||
m_free(password);
|
||||
|
||||
+ /* After we have got the payload contents we can exit if the username
|
||||
+ is invalid. Invalid users have already been logged. */
|
||||
+ if (!valid_user) {
|
||||
+ send_msg_userauth_failure(0, 1);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
if (testcrypt == NULL) {
|
||||
/* crypt() with an invalid salt like "!!" */
|
||||
dropbear_log(LOG_WARNING, "User account '%s' is locked",
|
||||
diff --git a/svr-authpubkey.c b/svr-authpubkey.c
|
||||
index aa6087c9..ff481c87 100644
|
||||
--- a/svr-authpubkey.c
|
||||
+++ b/svr-authpubkey.c
|
||||
@@ -79,7 +79,7 @@ static int checkfileperm(char * filename);
|
||||
|
||||
/* process a pubkey auth request, sending success or failure message as
|
||||
* appropriate */
|
||||
-void svr_auth_pubkey() {
|
||||
+void svr_auth_pubkey(int valid_user) {
|
||||
|
||||
unsigned char testkey; /* whether we're just checking if a key is usable */
|
||||
char* algo = NULL; /* pubkey algo */
|
||||
@@ -102,6 +102,15 @@ void svr_auth_pubkey() {
|
||||
keybloblen = buf_getint(ses.payload);
|
||||
keyblob = buf_getptr(ses.payload, keybloblen);
|
||||
|
||||
+ if (!valid_user) {
|
||||
+ /* Return failure once we have read the contents of the packet
|
||||
+ required to validate a public key.
|
||||
+ Avoids blind user enumeration though it isn't possible to prevent
|
||||
+ testing for user existence if the public key is known */
|
||||
+ send_msg_userauth_failure(0, 0);
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
/* check if the key is valid */
|
||||
if (checkpubkey(algo, algolen, keyblob, keybloblen) == DROPBEAR_FAILURE) {
|
||||
send_msg_userauth_failure(0, 0);
|
322
gnu/packages/patches/libgit2-avoid-python.patch
Normal file
322
gnu/packages/patches/libgit2-avoid-python.patch
Normal file
@ -0,0 +1,322 @@
|
||||
This provides a Guile reimplementation of clar's "generate.py".
|
||||
It makes it possible for us to remove Python from libgit2's build-time
|
||||
dependencies.
|
||||
libgit2 is used in order to fetch a lot of sources for guix packages.
|
||||
Both Python2 and Python3 builds acted up in the past.
|
||||
Hence this patch which makes the number of libgit2 dependencies very
|
||||
small.
|
||||
The reimplementation tries to keep as close as possible to the original
|
||||
in both structure and runtime effect. Some things are thus overly
|
||||
convoluted just to make them the same as in the original.
|
||||
|
||||
Both implementations basically do:
|
||||
|
||||
grep -r 'test_.*__.*' . > clar.suite
|
||||
|
||||
It is important that the directory traversal order of the original and
|
||||
the reimplementation stay the same.
|
||||
|
||||
diff -ruN orig/libgit2-0.27.7/tests/CMakeLists.txt libgit2-0.27.7/tests/CMakeLists.txt
|
||||
--- orig/libgit2-0.27.7/tests/CMakeLists.txt 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ libgit2-0.27.7/tests/CMakeLists.txt 2019-03-04 11:13:06.640118979 +0100
|
||||
@@ -1,10 +1,3 @@
|
||||
-FIND_PACKAGE(PythonInterp)
|
||||
-
|
||||
-IF(NOT PYTHONINTERP_FOUND)
|
||||
- MESSAGE(FATAL_ERROR "Could not find a python interpeter, which is needed to build the tests. "
|
||||
- "Make sure python is available, or pass -DBUILD_CLAR=OFF to skip building the tests")
|
||||
-ENDIF()
|
||||
-
|
||||
SET(CLAR_FIXTURES "${CMAKE_CURRENT_SOURCE_DIR}/resources/")
|
||||
SET(CLAR_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
ADD_DEFINITIONS(-DCLAR_FIXTURE_PATH=\"${CLAR_FIXTURES}\")
|
||||
@@ -21,7 +14,7 @@
|
||||
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/clar.suite
|
||||
- COMMAND ${PYTHON_EXECUTABLE} generate.py -o "${CMAKE_CURRENT_BINARY_DIR}" -f -xonline -xstress -xperf .
|
||||
+ COMMAND guile generate.scm -o "${CMAKE_CURRENT_BINARY_DIR}" -f -x online -x stress -x perf .
|
||||
DEPENDS ${SRC_TEST}
|
||||
WORKING_DIRECTORY ${CLAR_PATH}
|
||||
)
|
||||
diff -ruN orig/libgit2-0.27.7/tests/generate.scm libgit2-0.27.7/tests/generate.scm
|
||||
--- orig/libgit2-0.27.7/tests/generate.scm 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ libgit2-0.27.7/tests/generate.scm 2019-03-04 12:18:00.688040975 +0100
|
||||
@@ -0,0 +1,277 @@
|
||||
+;; -*- geiser-scheme-implementation: guile -*-
|
||||
+
|
||||
+;;; Implementation: Danny Milosavljevic <dannym@scratchpost.org>
|
||||
+;;; Based on: Implementation in Python by Vicent Marti.
|
||||
+;;; License: ISC, like the original generate.py in clar.
|
||||
+
|
||||
+(use-modules (ice-9 ftw))
|
||||
+(use-modules (ice-9 regex))
|
||||
+(use-modules (ice-9 getopt-long))
|
||||
+(use-modules (ice-9 rdelim))
|
||||
+(use-modules (ice-9 match))
|
||||
+(use-modules (ice-9 textual-ports))
|
||||
+(use-modules (srfi srfi-1))
|
||||
+
|
||||
+(define (render-callback cb)
|
||||
+ (if cb
|
||||
+ (string-append " { \"" (assoc-ref cb "short-name") "\", &"
|
||||
+ (assoc-ref cb "symbol") " }")
|
||||
+ " { NULL, NULL }"))
|
||||
+
|
||||
+(define (replace needle replacement haystack)
|
||||
+ "Replace all occurences of NEEDLE in HAYSTACK by REPLACEMENT.
|
||||
+NEEDLE is a regular expression."
|
||||
+ (regexp-substitute/global #f needle haystack 'pre replacement 'post))
|
||||
+
|
||||
+(define (skip-comments* text)
|
||||
+ (call-with-input-string
|
||||
+ text
|
||||
+ (lambda (port)
|
||||
+ (let loop ((result '())
|
||||
+ (section #f))
|
||||
+ (define (consume-char)
|
||||
+ (cons (read-char port) result))
|
||||
+ (define (skip-char)
|
||||
+ (read-char port)
|
||||
+ result)
|
||||
+ (match section
|
||||
+ (#f
|
||||
+ (match (peek-char port)
|
||||
+ (#\/ (loop (consume-char) 'almost-in-block-comment))
|
||||
+ (#\" (loop (consume-char) 'in-string-literal))
|
||||
+ (#\' (loop (consume-char) 'in-character-literal))
|
||||
+ ((? eof-object?) result)
|
||||
+ (_ (loop (consume-char) section))))
|
||||
+ ('almost-in-block-comment
|
||||
+ (match (peek-char port)
|
||||
+ (#\* (loop (consume-char) 'in-block-comment))
|
||||
+ (#\/ (loop (consume-char) 'in-line-comment))
|
||||
+ ((? eof-object?) result)
|
||||
+ (_ (loop (consume-char) #f))))
|
||||
+ ('in-line-comment
|
||||
+ (match (peek-char port)
|
||||
+ (#\newline (loop (consume-char) #f))
|
||||
+ ((? eof-object?) result)
|
||||
+ (_ (loop (skip-char) section))))
|
||||
+ ('in-block-comment
|
||||
+ (match (peek-char port)
|
||||
+ (#\* (loop (skip-char) 'almost-out-of-block-comment))
|
||||
+ ((? eof-object?) result)
|
||||
+ (_ (loop (skip-char) section))))
|
||||
+ ('almost-out-of-block-comment
|
||||
+ (match (peek-char port)
|
||||
+ (#\/ (loop (cons (read-char port) (cons #\* result)) #f))
|
||||
+ (#\* (loop (skip-char) 'almost-out-of-block-comment))
|
||||
+ ((? eof-object?) result)
|
||||
+ (_ (loop (skip-char) 'in-block-comment))))
|
||||
+ ('in-string-literal
|
||||
+ (match (peek-char port)
|
||||
+ (#\\ (loop (consume-char) 'in-string-literal-escape))
|
||||
+ (#\" (loop (consume-char) #f))
|
||||
+ ((? eof-object?) result)
|
||||
+ (_ (loop (consume-char) section))))
|
||||
+ ('in-string-literal-escape
|
||||
+ (match (peek-char port)
|
||||
+ ((? eof-object?) result)
|
||||
+ (_ (loop (consume-char) 'in-string-literal))))
|
||||
+ ('in-character-literal
|
||||
+ (match (peek-char port)
|
||||
+ (#\\ (loop (consume-char) 'in-character-literal-escape))
|
||||
+ (#\' (loop (consume-char) #f))
|
||||
+ ((? eof-object?) result)
|
||||
+ (_ (loop (consume-char) section))))
|
||||
+ ('in-character-literal-escape
|
||||
+ (match (peek-char port)
|
||||
+ ((? eof-object?) result)
|
||||
+ (_ (loop (consume-char) 'in-character-literal)))))))))
|
||||
+
|
||||
+(define (skip-comments text)
|
||||
+ (list->string (reverse (skip-comments* text))))
|
||||
+
|
||||
+(define (maybe-only items)
|
||||
+ (match items
|
||||
+ ((a) a)
|
||||
+ (_ #f)))
|
||||
+
|
||||
+(define (Module name path excludes)
|
||||
+ (let* ((clean-name (replace "_" "::" name))
|
||||
+ (enabled (not (any (lambda (exclude)
|
||||
+ (string-prefix? exclude clean-name))
|
||||
+ excludes))))
|
||||
+ (define (parse contents)
|
||||
+ (define (cons-match match prev)
|
||||
+ (cons
|
||||
+ `(("declaration" . ,(match:substring match 1))
|
||||
+ ("symbol" . ,(match:substring match 2))
|
||||
+ ("short-name" . ,(match:substring match 3)))
|
||||
+ prev))
|
||||
+ (let* ((contents (skip-comments contents))
|
||||
+ (entries (fold-matches (make-regexp
|
||||
+ (string-append "^(void\\s+(test_"
|
||||
+ name
|
||||
+ "__(\\w+))\\s*\\(\\s*void\\s*\\))\\s*\\{")
|
||||
+ regexp/newline)
|
||||
+ contents
|
||||
+ '()
|
||||
+ cons-match))
|
||||
+ (entries (reverse entries))
|
||||
+ (callbacks (filter (lambda (entry)
|
||||
+ (match (assoc-ref entry "short-name")
|
||||
+ ("initialize" #f)
|
||||
+ ("cleanup" #f)
|
||||
+ (_ #t)))
|
||||
+ entries)))
|
||||
+ (if (> (length callbacks) 0)
|
||||
+ `(("name" . ,name)
|
||||
+ ("enabled" . ,(if enabled "1" "0"))
|
||||
+ ("clean-name" . ,clean-name)
|
||||
+ ("initialize" . ,(maybe-only (filter-map (lambda (entry)
|
||||
+ (match (assoc-ref entry "short-name")
|
||||
+ ("initialize" entry)
|
||||
+ (_ #f)))
|
||||
+ entries)))
|
||||
+ ("cleanup" . ,(maybe-only (filter-map (lambda (entry)
|
||||
+ (match (assoc-ref entry "short-name")
|
||||
+ ("cleanup" entry)
|
||||
+ (_ #f)))
|
||||
+ entries)))
|
||||
+ ("callbacks" . ,callbacks))
|
||||
+ #f)))
|
||||
+
|
||||
+ (define (refresh path)
|
||||
+ (and (file-exists? path)
|
||||
+ (parse (call-with-input-file path get-string-all))))
|
||||
+ (refresh path)))
|
||||
+
|
||||
+(define (generate-TestSuite path output excludes)
|
||||
+ (define (load)
|
||||
+ (define enter? (const #t))
|
||||
+ (define (leaf file stat result)
|
||||
+ (let* ((module-root (string-drop (dirname file)
|
||||
+ (string-length path)))
|
||||
+ (module-root (filter-map (match-lambda
|
||||
+ ("" #f)
|
||||
+ (a a))
|
||||
+ (string-split module-root #\/))))
|
||||
+ (define (make-module path)
|
||||
+ (let* ((name (string-join (append module-root (list (string-drop-right (basename path) (string-length ".c")))) "_"))
|
||||
+ (name (replace "-" "_" name)))
|
||||
+ (Module name path excludes)))
|
||||
+ (if (string-suffix? ".c" file)
|
||||
+ (let ((module (make-module file)))
|
||||
+ (if module
|
||||
+ (cons module result)
|
||||
+ result))
|
||||
+ result)))
|
||||
+ (define (down dir stat result)
|
||||
+ result)
|
||||
+ (define (up file state result)
|
||||
+ result)
|
||||
+ (define skip (const #f))
|
||||
+ (file-system-fold enter? leaf down up skip error '() path))
|
||||
+
|
||||
+ (define (CallbacksTemplate module)
|
||||
+ (string-append "static const struct clar_func _clar_cb_"
|
||||
+ (assoc-ref module "name") "[] = {\n"
|
||||
+ (string-join (map render-callback
|
||||
+ (assoc-ref module "callbacks"))
|
||||
+ ",\n")
|
||||
+ "\n};\n"))
|
||||
+
|
||||
+ (define (DeclarationTemplate module)
|
||||
+ (string-append (string-join (map (lambda (cb)
|
||||
+ (string-append "extern "
|
||||
+ (assoc-ref cb "declaration")
|
||||
+ ";"))
|
||||
+ (assoc-ref module "callbacks"))
|
||||
+ "\n")
|
||||
+ "\n"
|
||||
+ (if (assoc-ref module "initialize")
|
||||
+ (string-append "extern " (assoc-ref (assoc-ref module "initialize") "declaration") ";\n")
|
||||
+ "")
|
||||
+ (if (assoc-ref module "cleanup")
|
||||
+ (string-append "extern " (assoc-ref (assoc-ref module "cleanup") "declaration") ";\n")
|
||||
+ "")))
|
||||
+
|
||||
+ (define (InfoTemplate module)
|
||||
+ (string-append "
|
||||
+ {
|
||||
+ \"" (assoc-ref module "clean-name") "\",
|
||||
+ " (render-callback (assoc-ref module "initialize")) ",
|
||||
+ " (render-callback (assoc-ref module "cleanup")) ",
|
||||
+ _clar_cb_" (assoc-ref module "name") ", "
|
||||
+ (number->string (length (assoc-ref module "callbacks")))
|
||||
+ ", " (assoc-ref module "enabled") "
|
||||
+ }"))
|
||||
+
|
||||
+ (define (Write data)
|
||||
+ (define (name< module-a module-b)
|
||||
+ (string<? (assoc-ref module-a "name")
|
||||
+ (assoc-ref module-b "name")))
|
||||
+ (define modules (sort (load) name<))
|
||||
+
|
||||
+ (define (suite-count)
|
||||
+ (length modules))
|
||||
+
|
||||
+ (define (callback-count)
|
||||
+ (fold + 0 (map (lambda (entry)
|
||||
+ (length (assoc-ref entry "callbacks")))
|
||||
+ modules)))
|
||||
+
|
||||
+ (define (display-x value)
|
||||
+ (display value data))
|
||||
+
|
||||
+ (for-each (compose display-x DeclarationTemplate) modules)
|
||||
+ (for-each (compose display-x CallbacksTemplate) modules)
|
||||
+
|
||||
+ (display-x "static struct clar_suite _clar_suites[] = {")
|
||||
+ (display-x (string-join (map InfoTemplate modules) ","))
|
||||
+ (display-x "\n};\n")
|
||||
+
|
||||
+ (let ((suite-count-str (number->string (suite-count)))
|
||||
+ (callback-count-str (number->string (callback-count))))
|
||||
+ (display-x "static const size_t _clar_suite_count = ")
|
||||
+ (display-x suite-count-str)
|
||||
+ (display-x ";\n")
|
||||
+
|
||||
+ (display-x "static const size_t _clar_callback_count = ")
|
||||
+ (display-x callback-count-str)
|
||||
+ (display-x ";\n")
|
||||
+
|
||||
+ (display (string-append "Written `clar.suite` ("
|
||||
+ callback-count-str
|
||||
+ " tests in "
|
||||
+ suite-count-str
|
||||
+ " suites)"))
|
||||
+ (newline))
|
||||
+ #t)
|
||||
+
|
||||
+ (call-with-output-file (string-append output "/clar.suite") Write))
|
||||
+
|
||||
+;;; main
|
||||
+
|
||||
+(define (main)
|
||||
+ (define option-spec
|
||||
+ '((force (single-char #\f) (value #f))
|
||||
+ (exclude (single-char #\x) (value #t))
|
||||
+ (output (single-char #\o) (value #t))
|
||||
+ (help (single-char #\h) (value #f))))
|
||||
+
|
||||
+ (define options (getopt-long (command-line) option-spec #:stop-at-first-non-option #t))
|
||||
+ (define args (reverse (option-ref options '() '())))
|
||||
+ (when (> (length args) 1)
|
||||
+ (display "More than one path given\n")
|
||||
+ (exit 1))
|
||||
+
|
||||
+ (if (< (length args) 1)
|
||||
+ (set! args '(".")))
|
||||
+
|
||||
+ (let* ((path (car args))
|
||||
+ (output (option-ref options 'output path))
|
||||
+ (excluded (filter-map (match-lambda
|
||||
+ (('exclude . value) value)
|
||||
+ (_ #f))
|
||||
+ options)))
|
||||
+ (generate-TestSuite path output excluded)))
|
||||
+
|
||||
+(main)
|
@ -51,7 +51,7 @@ endeavor to implement this idea using modern technologies.")
|
||||
(define-public perl-uri-escape
|
||||
(package
|
||||
(name "perl-uri-escape")
|
||||
(version "1.74")
|
||||
(version "1.76")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@ -59,7 +59,7 @@ endeavor to implement this idea using modern technologies.")
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0gfmrpyy075pn2mbshs5599h8m096gjdz2dn8vcivjw9bzs59hm9"))))
|
||||
"0gj1aj18k43kmzc3y1zhj5giinf8rksacf757r475xfna0fqxjdj"))))
|
||||
(build-system perl-build-system)
|
||||
(native-inputs
|
||||
`(("perl-test-needs" ,perl-test-needs)))
|
||||
|
File diff suppressed because it is too large
Load Diff
787
gnu/packages/perl6.scm
Normal file
787
gnu/packages/perl6.scm
Normal file
@ -0,0 +1,787 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;;
|
||||
;;; 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 <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages perl6)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix build-system perl)
|
||||
#:use-module (guix build-system rakudo)
|
||||
#:use-module (gnu packages bdw-gc)
|
||||
#:use-module (gnu packages libevent)
|
||||
#:use-module (gnu packages libffi)
|
||||
#:use-module (gnu packages multiprecision)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages tls))
|
||||
|
||||
(define-public moarvm
|
||||
(package
|
||||
(name "moarvm")
|
||||
(version "2019.03")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://moarvm.org/releases/MoarVM-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"017w1zvr6yl0cgjfc1b3ddlc6vjw9q8p7alw1vvsckw95190xc14"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
;(delete-file-recursively "3rdparty/dynasm") ; JIT
|
||||
(delete-file-recursively "3rdparty/dyncall")
|
||||
(delete-file-recursively "3rdparty/freebsd")
|
||||
(delete-file-recursively "3rdparty/libatomicops")
|
||||
(delete-file-recursively "3rdparty/libuv")
|
||||
(delete-file-recursively "3rdparty/libtommath")
|
||||
(delete-file-recursively "3rdparty/msinttypes")
|
||||
#t))))
|
||||
(build-system perl-build-system)
|
||||
(arguments
|
||||
'(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'configure
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(pkg-config (assoc-ref inputs "pkg-config")))
|
||||
(setenv "LDFLAGS" (string-append "-Wl,-rpath=" out "/lib"))
|
||||
(invoke "perl" "Configure.pl"
|
||||
"--prefix" out
|
||||
"--pkgconfig" (string-append pkg-config "/bin/pkg-config")
|
||||
"--has-libtommath"
|
||||
"--has-libatomic_ops"
|
||||
"--has-libffi"
|
||||
"--has-libuv")))))))
|
||||
(home-page "https://moarvm.org/")
|
||||
;; These should be inputs but moar.h can't find them when building rakudo
|
||||
(propagated-inputs
|
||||
`(("libatomic-ops" ,libatomic-ops)
|
||||
("libtommath" ,libtommath-1.0)
|
||||
("libuv" ,libuv)))
|
||||
(inputs
|
||||
`(("libffi" ,libffi)))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(synopsis "VM for NQP And Rakudo Perl 6")
|
||||
(description
|
||||
"Short for \"Metamodel On A Runtime\", MoarVM is a modern virtual machine
|
||||
built for the Rakudo Perl 6 compiler and the NQP Compiler Toolchain. Highlights
|
||||
include:
|
||||
|
||||
@itemize
|
||||
@item Great Unicode support, with strings represented at grapheme level
|
||||
@item Dynamic analysis of running code to identify hot functions and loops, and
|
||||
perform a range of optimizations, including type specialization and inlining
|
||||
@item Support for threads, a range of concurrency control constructs, and
|
||||
asynchronous sockets, timers, processes, and more
|
||||
@item Generational, parallel, garbage collection
|
||||
@item Support for numerous language features, including first class functions,
|
||||
exceptions, continuations, runtime loading of code, big integers and interfacing
|
||||
with native libraries.
|
||||
@end itemize")
|
||||
(license license:artistic2.0)))
|
||||
|
||||
(define-public nqp
|
||||
(package
|
||||
(name "nqp")
|
||||
(version "2019.03")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://rakudo.perl6.org/downloads/nqp/nqp-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"183zhll13fx416s3hkg4bkvib77kyr857h0nydgrl643fpacxp83"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
(delete-file-recursively "3rdparty") #t))))
|
||||
(build-system perl-build-system)
|
||||
(arguments
|
||||
'(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'patch-source-shebangs 'patch-more-shebangs
|
||||
(lambda _
|
||||
(substitute* '("tools/build/install-jvm-runner.pl.in"
|
||||
"tools/build/gen-js-cross-runner.pl"
|
||||
"tools/build/gen-js-runner.pl"
|
||||
"tools/build/install-js-runner.pl"
|
||||
"tools/build/install-moar-runner.pl"
|
||||
"tools/build/gen-moar-runner.pl"
|
||||
"t/nqp/111-spawnprocasync.t"
|
||||
"t/nqp/113-run-command.t")
|
||||
(("/bin/sh") (which "sh")))
|
||||
#t))
|
||||
(add-after 'unpack 'patch-source-date
|
||||
(lambda _
|
||||
(substitute* "tools/build/gen-version.pl"
|
||||
(("gmtime") "gmtime(0)"))
|
||||
#t))
|
||||
(add-after 'unpack 'remove-failing-test
|
||||
;; One subtest fails for unknown reasons
|
||||
(lambda _
|
||||
(delete-file "t/nqp/019-file-ops.t")
|
||||
#t))
|
||||
(replace 'configure
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(moar (assoc-ref inputs "moarvm")))
|
||||
(invoke "perl" "Configure.pl"
|
||||
"--backends=moar"
|
||||
"--with-moar" (string-append moar "/bin/moar")
|
||||
"--prefix" out)))))))
|
||||
(inputs
|
||||
`(("moarvm" ,moarvm)))
|
||||
(home-page "https://github.com/perl6/nqp")
|
||||
(synopsis "Not Quite Perl")
|
||||
(description "This is \"Not Quite Perl\" -- a lightweight Perl 6-like
|
||||
environment for virtual machines. The key feature of NQP is that it's designed
|
||||
to be a very small environment (as compared with, say, perl6 or Rakudo) and is
|
||||
focused on being a high-level way to create compilers and libraries for virtual
|
||||
machines like MoarVM, the JVM, and others.
|
||||
|
||||
Unlike a full-fledged implementation of Perl 6, NQP strives to have as small a
|
||||
runtime footprint as it can, while still providing a Perl 6 object model and
|
||||
regular expression engine for the virtual machine.")
|
||||
(license license:artistic2.0)))
|
||||
|
||||
(define-public rakudo
|
||||
(package
|
||||
(name "rakudo")
|
||||
(version "2019.03.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://rakudo.perl6.org/downloads/rakudo/rakudo-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1nllf69v8xr6v3kkj7pmryg11n5m3ajfkr7j72pvhrgnjy8lv3r1"))))
|
||||
(build-system perl-build-system)
|
||||
(arguments
|
||||
'(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'patch-source-date
|
||||
(lambda _
|
||||
(substitute* "tools/build/gen-version.pl"
|
||||
(("gmtime") "gmtime(0)"))
|
||||
#t))
|
||||
(add-after 'patch-source-shebangs 'patch-more-shebangs
|
||||
(lambda _
|
||||
(substitute* '("tools/build/create-js-runner.pl"
|
||||
"tools/build/create-moar-runner.p6"
|
||||
"tools/build/create-jvm-runner.pl"
|
||||
"src/core/Proc.pm6")
|
||||
(("/bin/sh") (which "sh")))
|
||||
#t))
|
||||
(replace 'configure
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(nqp (assoc-ref inputs "nqp")))
|
||||
(invoke "perl" "./Configure.pl"
|
||||
"--backend=moar"
|
||||
"--with-nqp" (string-append nqp "/bin/nqp")
|
||||
"--prefix" out))))
|
||||
;; This is the recommended tool for distro maintainers to install perl6
|
||||
;; modules systemwide. See: https://github.com/ugexe/zef/issues/117
|
||||
(add-after 'install 'install-dist-tool
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(dest (string-append out "/share/perl6/tools")))
|
||||
(install-file "tools/install-dist.p6" dest)
|
||||
(substitute* (string-append dest "/install-dist.p6")
|
||||
(("/usr/bin/env perl6")
|
||||
(string-append out "/bin/perl6"))))
|
||||
#t)))))
|
||||
(inputs
|
||||
`(("moarvm" ,moarvm)
|
||||
("nqp" ,nqp)
|
||||
("openssl" ,openssl)))
|
||||
(home-page "https://rakudo.org/")
|
||||
(native-search-paths
|
||||
(list (search-path-specification
|
||||
(variable "PERL6LIB")
|
||||
(separator ",")
|
||||
(files '("share/perl6/lib"
|
||||
"share/perl6/site/lib"
|
||||
"share/perl6/vendor/lib")))))
|
||||
(synopsis "Perl 6 Compiler")
|
||||
(description "Rakudo Perl is a compiler that implements the Perl 6
|
||||
specification and runs on top of several virtual machines.")
|
||||
(license license:artistic2.0)))
|
||||
|
||||
(define-public perl6-grammar-debugger
|
||||
;; Last commit was September 2017
|
||||
(let ((commit "0375008027c8caa216bd869476ce59ae09b2a702")
|
||||
(revision "1"))
|
||||
(package
|
||||
(name "perl6-grammar-debugger")
|
||||
(version (git-version "1.0.1" revision commit))
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/jnthn/grammar-debugger")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0y826z3m276n7ia810hgcb3div67nxmx125m2fzlc16994zd5vm5"))))
|
||||
(build-system rakudo-build-system)
|
||||
(propagated-inputs
|
||||
`(("perl6-terminal-ansicolor" ,perl6-terminal-ansicolor)))
|
||||
(home-page "https://github.com/jnthn/grammar-debugger")
|
||||
(synopsis "Simple tracing and debugging support for Perl 6 grammars")
|
||||
(description "This module provides a simple debugger for grammars. Just
|
||||
@code{use} it: use @code{Grammar::Debugger;} and any grammar in the lexical
|
||||
scope of the use statement will automatically have debugging enabled. The
|
||||
debugger will break execution when you first enter the grammar, and provide a
|
||||
prompt.")
|
||||
(license license:artistic2.0))))
|
||||
|
||||
(define-public perl6-grammar-profiler-simple
|
||||
;; Last commit was June 2017
|
||||
(let ((commit "c0aca5fab323b2974821dabd6b89330c609e0b7d")
|
||||
(revision "1"))
|
||||
(package
|
||||
(name "perl6-grammar-profiler-simple")
|
||||
(version (git-version "0.02" revision commit))
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/perlpilot/Grammar-Profiler-Simple.git")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1qcsa4lmcilp3vp0jng0hrgzyzxin9ayg2wjvkcd0k6h7djx9dff"))))
|
||||
(build-system rakudo-build-system)
|
||||
(arguments '(#:with-zef? #f))
|
||||
(home-page "https://github.com/perlpilot/Grammar-Profiler-Simple")
|
||||
(synopsis "Simple rule profiling for Perl 6 grammars")
|
||||
(description "This module provides a simple profiler for Perl 6 grammars.
|
||||
To enable profiling simply add use @code{Grammar::Profiler::Simple;} to your
|
||||
code. Any grammar in the lexical scope of the use statement will automatically
|
||||
have profiling information collected when the grammar is used.")
|
||||
(license license:artistic2.0))))
|
||||
|
||||
(define-public perl6-json
|
||||
(package
|
||||
(name "perl6-json")
|
||||
(version "1.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/moritz/json")
|
||||
;; The commit where 1.0 was "tagged"
|
||||
(commit "a5ef8c179350dae44ce7fb1abb684fc62c1c2b99")))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1kzryxkqyr129rcckd4jh0dfxdgzv71qx8dpkpm1divbfjyknlay"))))
|
||||
(build-system rakudo-build-system)
|
||||
(arguments '(#:with-zef? #f))
|
||||
(home-page "https://github.com/moritz/json")
|
||||
(synopsis "A minimal JSON (de)serializer")
|
||||
(description "This module is a simple Perl 6 module for serializing and
|
||||
deserializing JSON.")
|
||||
(license license:artistic2.0)))
|
||||
|
||||
(define-public perl6-json-class
|
||||
(package
|
||||
(name "perl6-json-class")
|
||||
(version "0.0.12")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/jonathanstowe/JSON-Class.git")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1zyzajc57j3m8q0nr72h9pw4w2nx92rafywlvysgphc5q9sb8np2"))))
|
||||
(build-system rakudo-build-system)
|
||||
(propagated-inputs
|
||||
`(("perl6-json-marshal" ,perl6-json-marshal)
|
||||
("perl6-json-unmarshal" ,perl6-json-unmarshal)))
|
||||
(native-inputs
|
||||
`(("perl6-json-fast" ,perl6-json-fast)))
|
||||
(home-page "https://github.com/jonathanstowe/JSON-Class")
|
||||
(synopsis "Provide simple serialisation/deserialisation of objects to/from JSON")
|
||||
(description "This is a simple role that provides methods to instantiate a
|
||||
class from a JSON string that (hopefully,) represents it, and to serialise an
|
||||
object of the class to a JSON string. The JSON created from an instance should
|
||||
round trip to a new instance with the same values for the @quot{public
|
||||
attributes}. @quot{Private} attributes (that is ones without accessors,) will
|
||||
be ignored for both serialisation and de-serialisation. The exact behaviour
|
||||
depends on that of @code{JSON::Marshal} and @code{JSON::Unmarshal} respectively.")
|
||||
(license license:artistic2.0)))
|
||||
|
||||
(define-public perl6-json-fast
|
||||
(package
|
||||
(name "perl6-json-fast")
|
||||
(version "0.8")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/timo/json_fast.git")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1fif081gdxdnja14vkj523p9dyzdcdj81lmjv9fvfazvpagb6dg2"))))
|
||||
(build-system rakudo-build-system)
|
||||
(arguments '(#:with-zef? #f))
|
||||
(home-page "https://github.com/timo/json_fast")
|
||||
(synopsis "Perl6 json parser")
|
||||
(description "A naive imperative json parser in pure perl6 (but with direct
|
||||
access to @code{nqp::} ops), to evaluate performance against @code{JSON::Tiny}.
|
||||
It is a drop-in replacement for @code{JSON::Tiny}'s from-json and to-json subs,
|
||||
but it offers a few extra features.")
|
||||
(license license:artistic2.0)))
|
||||
|
||||
(define-public perl6-json-marshal
|
||||
(package
|
||||
(name "perl6-json-marshal")
|
||||
(version "0.0.16")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/jonathanstowe/JSON-Marshal.git")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0qy7j83h6gjzyyv74ncd92cd9h45rv8diaz3vldiv3b6fqwz4c6i"))))
|
||||
(build-system rakudo-build-system)
|
||||
(propagated-inputs
|
||||
`(("perl6-json-fast" ,perl6-json-fast)
|
||||
("perl6-json-name" ,perl6-json-name)))
|
||||
(native-inputs
|
||||
`(("perl6-json-fast" ,perl6-json-fast)))
|
||||
(home-page "https://github.com/jonathanstowe/JSON-Marshal")
|
||||
(synopsis "Simple serialisation of objects to JSON")
|
||||
(description "This library provides a single exported subroutine to create
|
||||
a JSON representation of an object. It should round trip back into an object
|
||||
of the same class using @code{JSON::Unmarshal}.")
|
||||
(license license:artistic2.0)))
|
||||
|
||||
(define-public perl6-json-name
|
||||
(package
|
||||
(name "perl6-json-name")
|
||||
(version "0.0.3")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/jonathanstowe/JSON-Name.git")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"130qwdpbj5qdlsdz05y0rksd79lzbq79scy47n6lnf21b0hz1qjc"))))
|
||||
(build-system rakudo-build-system)
|
||||
(arguments '(#:with-zef? #f))
|
||||
(home-page "https://github.com/jonathanstowe/JSON-Name")
|
||||
(synopsis "Provides a trait to store an alternative JSON Name")
|
||||
(description "This is released as a dependency of @code{JSON::Marshal} and
|
||||
@code{JSON::Unmarshal} in order to save duplication, it is intended to store a
|
||||
separate JSON name for an attribute where the name of the JSON attribute might be
|
||||
changed, either for aesthetic reasons or the name is not a valid Perl identifier.
|
||||
It will of course also be needed in classes thar are going to use
|
||||
@code{JSON::Marshal} or @code{JSON::Unmarshal} for serialisation/de-serialisation.")
|
||||
(license license:artistic2.0)))
|
||||
|
||||
(define-public perl6-json-unmarshal
|
||||
;; Last commit was May 2017
|
||||
(let ((commit "e1b6288c5f3165058f36c0f4e171cdf2dfd640da")
|
||||
(revision "1"))
|
||||
(package
|
||||
(name "perl6-json-unmarshal")
|
||||
(version (git-version "0.0.0" revision commit))
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/tadzik/JSON-Unmarshal.git")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"14azsmzmwdn8k0gqcpvballharcvzylmlyrx2wmv4kpqfnz29fjc"))))
|
||||
(build-system rakudo-build-system)
|
||||
(propagated-inputs
|
||||
`(("perl6-json-fast" ,perl6-json-fast)
|
||||
("perl6-json-name" ,perl6-json-name)))
|
||||
(home-page "https://github.com/tadzik/JSON-Unmarshal")
|
||||
(synopsis "Make JSON from an Object")
|
||||
(description "This library provides a single exported subroutine to
|
||||
create an object from a JSON representation of an object.")
|
||||
(license license:expat))))
|
||||
|
||||
(define-public perl6-license-spdx
|
||||
(package
|
||||
(name "perl6-license-spdx")
|
||||
(version "3.4.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/jonathanstowe/License-SPDX")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0dl263c3fbxk001gm5fisrzqz1dx182ipaa0x2qva2gxvl075xm8"))))
|
||||
(build-system rakudo-build-system)
|
||||
(propagated-inputs
|
||||
`(("perl6-json-class" ,perl6-json-class)))
|
||||
(home-page "https://github.com/jonathanstowe/License-SPDX")
|
||||
(synopsis "Abstraction over the SPDX License List")
|
||||
(description "This provides an abstraction over the SPDX License List as
|
||||
provided in JSON format. Its primary raison d'être is to help the licence
|
||||
checking of @code{Test::META} and to allow for the warning about deprecated
|
||||
licences therein.")
|
||||
(license license:artistic2.0)))
|
||||
|
||||
(define-public perl6-meta6
|
||||
(package
|
||||
(name "perl6-meta6")
|
||||
(version "0.0.23")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/jonathanstowe/META6.git")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1xnlaamfbdlfb2zidim3bbc4mawsrg6qxhxi6gbld46z1cyry1cw"))))
|
||||
(build-system rakudo-build-system)
|
||||
(propagated-inputs
|
||||
`(("perl6-json-class" ,perl6-json-class)))
|
||||
(native-inputs
|
||||
`(("perl6-json-fast" ,perl6-json-fast)))
|
||||
(home-page "https://github.com/jonathanstowe/META6")
|
||||
(synopsis "Do things with Perl 6 [META files]")
|
||||
(description "This provides a representation of the Perl 6 META files
|
||||
specification - the META file data can be read, created, parsed and written in a
|
||||
manner that is conformant with the specification.
|
||||
|
||||
Where they are known about it also makes allowance for @quot{customary} usage in
|
||||
existing software (such as installers and so forth.)
|
||||
|
||||
The intent of this is allow the generation and testing of META files for module
|
||||
authors, so it can provide meta-information whether the attributes are mandatory
|
||||
as per the spec and where known the places that @quot{customary} attributes are
|
||||
used.")
|
||||
(license license:artistic2.0)))
|
||||
|
||||
(define-public perl6-mime-base64
|
||||
(package
|
||||
(name "perl6-mime-base64")
|
||||
(version "1.2.1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/perl6/Perl6-MIME-Base64")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0l67m8mvz3gxml425sd1ggfnhzh4lf754k7w8fngfr453s6lsza1"))))
|
||||
(build-system rakudo-build-system)
|
||||
(arguments '(#:with-zef? #f))
|
||||
(home-page "https://github.com/perl6/Perl6-MIME-Base64")
|
||||
(synopsis "Encoding and decoding Base64 ASCII strings")
|
||||
(description "This Perl 6 module implements encoding and decoding to and
|
||||
from base64.")
|
||||
(license license:artistic2.0)))
|
||||
|
||||
(define-public perl6-oo-monitors
|
||||
(package
|
||||
(name "perl6-oo-monitors")
|
||||
(version "1.1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/jnthn/oo-monitors")
|
||||
;; The commit where 1.1 was "tagged"
|
||||
(commit "494db3a3852854f30a80c9bd1489a7d5e429e7c5")))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1sbw2x54wwjjanghjnc7ipmplaw1srvbrphsdv4ym6cipnbmbj9x"))))
|
||||
(build-system rakudo-build-system)
|
||||
(arguments '(#:with-zef? #f))
|
||||
(home-page "https://github.com/jnthn/oo-monitors")
|
||||
(synopsis "Monitors with condition variables for Perl 6")
|
||||
(description "A monitor provides per-instance mutual exclusion for objects.
|
||||
This means that for a given object instance, only one thread can ever be inside
|
||||
its methods at a time. This is achieved by a lock being associated with each
|
||||
object. The lock is acquired automatically at the entry to each method in the
|
||||
monitor. Condition variables are also supported.")
|
||||
(license license:artistic2.0)))
|
||||
|
||||
(define-public perl6-svg
|
||||
;; Latest commit, basically unchanged since August 2015
|
||||
(let ((commit "07190c0602aa276e5319f06aa0012452dbff3582")
|
||||
(revision "1"))
|
||||
(package
|
||||
(name "perl6-svg")
|
||||
(version (git-version "0.0.0" revision commit))
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/moritz/svg")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0mkjdhg7ajksdn61n8fqhyzfd7ly9myazsvpsm02a5c2q73hdygg"))))
|
||||
(build-system rakudo-build-system)
|
||||
(propagated-inputs
|
||||
`(("perl6-xml-writer" ,perl6-xml-writer)))
|
||||
(home-page "https://github.com/moritz/svg")
|
||||
(synopsis "Perl 6 module to generate SVG")
|
||||
(description "This is a Perl 6 module that makes it easy to write
|
||||
@dfn{Scalable Vector Graphic files} (SVG). Right now it is a shallow wrapper
|
||||
around @code{XML::Writer}, adding only the xmlns attributes that identifies an
|
||||
XML file as SVG.")
|
||||
(license license:artistic2.0))))
|
||||
|
||||
(define-public perl6-svg-plot
|
||||
;; Latest commit
|
||||
(let ((commit "062570a78fd38c3c6baba29dfe2fbb8ca014f4de")
|
||||
(revision "1"))
|
||||
(package
|
||||
(name "perl6-svg-plot")
|
||||
(version (git-version "0.0.0" revision commit))
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/moritz/svg-plot")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"095ga5hbg92jnmczxvhk1hjz14yr334zyf8cph4w5w5frcza44my"))))
|
||||
(build-system rakudo-build-system)
|
||||
(propagated-inputs
|
||||
`(("perl6-svg" ,perl6-svg)))
|
||||
(home-page "https://github.com/moritz/svg-plot")
|
||||
(synopsis "Perl 6 charting and plotting library that produces SVG output")
|
||||
(description "@code{SVG::Plot} is a simple 2D chart plotter for Perl 6.
|
||||
It currently supports bars, stacked bars, lines and points (both equally spaced
|
||||
with optional labels, or xy plots).")
|
||||
(license license:artistic2.0))))
|
||||
|
||||
(define-public perl6-tap-harness
|
||||
(package
|
||||
(name "perl6-tap-harness")
|
||||
(version "0.0.7")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/perl6/tap-harness6.git")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1lig8i0my3fgqvlay9532xslbf3iis2d7wz89gniwvwqffi2kh6r"))))
|
||||
(build-system rakudo-build-system)
|
||||
(arguments
|
||||
'(#:with-zef? #f
|
||||
#:with-prove6? #f
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'check
|
||||
(lambda _
|
||||
(invoke "perl6" "-Ilib" "bin/prove6" "-l" "t"))))))
|
||||
(home-page "https://github.com/perl6/tap-harness6/")
|
||||
(synopsis "TAP harness for perl6")
|
||||
(description "This module provides the @command{prove6} command which runs a
|
||||
TAP based test suite and prints a report. The @command{prove6} command is a
|
||||
minimal wrapper around an instance of this module.")
|
||||
(license license:artistic2.0)))
|
||||
|
||||
(define-public perl6-terminal-ansicolor
|
||||
(package
|
||||
(name "perl6-terminal-ansicolor")
|
||||
(version "0.5")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/tadzik/Terminal-ANSIColor.git")
|
||||
;; The commit where 0.5 was "tagged"
|
||||
(commit "edded4a7116ce11cbc9fb5a83669c7ba119d0212")))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1apm999azkyg5s35gid12wq019aqnvzrkz7qjmipd74mdxgr00x7"))))
|
||||
(build-system rakudo-build-system)
|
||||
(arguments '(#:with-zef? #f))
|
||||
(home-page "https://github.com/tadzik/Terminal-ANSIColor")
|
||||
(synopsis "Colorize terminal output")
|
||||
(description "This is a @code{Terminal::ANSIColor} module for Perl 6.")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public perl6-test-meta
|
||||
(package
|
||||
(name "perl6-test-meta")
|
||||
(version "0.0.14")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/jonathanstowe/Test-META")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1mzrglb7lbiy5h9dlc7dyhvv9gppxmdmpmrv6nzbd695jzr38bri"))))
|
||||
(build-system rakudo-build-system)
|
||||
(propagated-inputs
|
||||
`(("perl6-meta6" ,perl6-meta6)
|
||||
("perl6-uri" ,perl6-uri)))
|
||||
(home-page "https://github.com/jonathanstowe/Test-META")
|
||||
(synopsis "Test a distributions META file")
|
||||
(description "This provides a simple mechanism for module authors to have
|
||||
some confidence that they have a working distribution META description file.")
|
||||
(license license:artistic2.0)))
|
||||
|
||||
(define-public perl6-test-mock
|
||||
(package
|
||||
(name "perl6-test-mock")
|
||||
(version "1.5")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/jnthn/test-mock")
|
||||
;; The commit where 1.5 was "tagged"
|
||||
(commit "6eddb42f73f40b9ac29c14badb41ce4a04d876f2")))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"07yr3qimc8fl29p23562ayj2j9h53madcnf9sgqvgf2kcprh0zd2"))))
|
||||
(build-system rakudo-build-system)
|
||||
(propagated-inputs
|
||||
`(("perl6-oo-monitors" ,perl6-oo-monitors)))
|
||||
(home-page "https://github.com/jnthn/test-mock")
|
||||
(synopsis "Module for simply generating and checking mock objects")
|
||||
(description "@code{Test::Mock} is a module that works alongside the
|
||||
standard Test module to help you write tests when you want to verify what
|
||||
methods are called on an object, while still having calls to undefined methods
|
||||
die. You get started just as normal with the test file, but also add a use
|
||||
statement for @code{Test::Mock}.")
|
||||
(license license:artistic2.0)))
|
||||
|
||||
(define-public perl6-uri
|
||||
(package
|
||||
(name "perl6-uri")
|
||||
(version "0.1.5")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/perl6-community-modules/uri.git")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0h318g75jqn2ckw051g35iqyfxz1mps0jyg5z6pd857y3kacbkpl"))))
|
||||
(build-system rakudo-build-system)
|
||||
(arguments '(#:with-zef? #f))
|
||||
(home-page "https://github.com/perl6-community-modules/uri")
|
||||
(synopsis "URI implementation using Perl 6")
|
||||
(description "A URI implementation using Perl 6 grammars to implement RFC
|
||||
3986 BNF. Currently only implements parsing. Includes @code{URI::Escape} to
|
||||
(un?)escape characters that aren't otherwise allowed in a URI with % and a hex
|
||||
character numbering.")
|
||||
(license license:artistic2.0)))
|
||||
|
||||
(define-public perl6-xml-writer
|
||||
;; Last commit was May 2017
|
||||
(let ((commit "4d30a9d8e06033ca97387971b653817becd5a759")
|
||||
(revision "1"))
|
||||
(package
|
||||
(name "perl6-xml-writer")
|
||||
(version (git-version "0.0.0" revision commit))
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/masak/xml-writer")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1kwrf7akp70kyzw1b90khp71a6hpilihwndy2jsjpffcd4hd4m4z"))))
|
||||
(build-system rakudo-build-system)
|
||||
(arguments '(#:with-zef? #f))
|
||||
(home-page "https://github.com/masak/xml-writer")
|
||||
(synopsis "Perl 6 module to generate XML")
|
||||
(description "@code{XML::Writer} is a module for creating XML in Perl 6.")
|
||||
(license license:artistic2.0))))
|
||||
|
||||
(define-public perl6-zef
|
||||
(package
|
||||
(name "perl6-zef")
|
||||
(version "0.6.7")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/ugexe/zef.git")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"07n7g1xw2c4g860rs890gx85vyhdq0ysgwbrnzw6q905jph2bkv7"))))
|
||||
(build-system rakudo-build-system)
|
||||
(arguments
|
||||
'(#:with-zef? #f
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'check
|
||||
(lambda _
|
||||
(setenv "HOME" "/tmp")
|
||||
(invoke "perl6" "-I." "bin/zef" "--debug"
|
||||
"--tap-harness" "test" "."))))))
|
||||
(home-page "https://github.com/ugexe/zef")
|
||||
(synopsis "Perl6 Module Management")
|
||||
(description "Zef is a Perl 6 package (module) manager. It can be used to
|
||||
download and install Perl 6 modules in your home directory or as a system-wide
|
||||
module.")
|
||||
(license license:artistic2.0)))
|
@ -22,6 +22,7 @@
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (gnu packages node)
|
||||
#:use-module (gnu packages ruby)
|
||||
#:use-module (guix build-system ruby))
|
||||
|
||||
@ -65,6 +66,33 @@ migration.")
|
||||
(home-page "https://github.com/rails/spring")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public ruby-sass-rails
|
||||
(package
|
||||
(name "ruby-sass-rails")
|
||||
(version "5.0.7")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (rubygems-uri "sass-rails" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1wa63sbsimrsf7nfm8h0m1wbsllkfxvd7naph5d1j6pbc555ma7s"))))
|
||||
(build-system ruby-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f)) ; No included tests
|
||||
(propagated-inputs
|
||||
`(("ruby-railties" ,ruby-railties)
|
||||
("ruby-sass" ,ruby-sass)
|
||||
("ruby-sprockets" ,ruby-sprockets)
|
||||
("ruby-sprockets-rails" ,ruby-sprockets-rails)
|
||||
("ruby-tilt" ,ruby-tilt)))
|
||||
(synopsis "Sass adapter for the Rails asset pipeline")
|
||||
(description
|
||||
"This library integrates the SASS stylesheet language into Ruby on
|
||||
Rails.")
|
||||
(home-page "https://github.com/rails/sass-rails")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public ruby-debug-inspector
|
||||
(package
|
||||
(name "ruby-debug-inspector")
|
||||
@ -95,6 +123,59 @@ API.")
|
||||
"https://github.com/banister/debug_inspector")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public ruby-autoprefixer-rails
|
||||
(package
|
||||
(name "ruby-autoprefixer-rails")
|
||||
(version "9.4.7")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (rubygems-uri "autoprefixer-rails" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0fxbfl3xrrjj84n98x24yzxbz4nvm6c492dxj41kkrl9z97ga13i"))))
|
||||
(build-system ruby-build-system)
|
||||
(arguments
|
||||
'(#:test-target "spec"
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'extract-gemspec 'remove-unnecessary-dependencies
|
||||
(lambda _
|
||||
;; Remove the testing of compass, as it's use is deprecated, and
|
||||
;; it's unpackaged for Guix
|
||||
(substitute* "autoprefixer-rails.gemspec"
|
||||
((".*%q<compass>.*") "\n")
|
||||
(("\"spec/compass_spec\\.rb\"\\.freeze, ") ""))
|
||||
(delete-file "spec/compass_spec.rb")
|
||||
|
||||
(substitute* "Gemfile"
|
||||
;; Remove overly strict requirement on sprockets
|
||||
((", '>= 4\\.0\\.0\\.beta1'") "")
|
||||
;; The mini_racer gem isn't packaged yet, and it's not directly
|
||||
;; required, as other backends for ruby-execjs can be used.
|
||||
(("gem 'mini_racer'") "")
|
||||
;; For some reason, this is required for the gems to be picked
|
||||
;; up
|
||||
(("gemspec") "gemspec\ngem 'tzinfo-data'\ngem 'sass'"))
|
||||
#t)))))
|
||||
(native-inputs
|
||||
`(("bundler" ,bundler)
|
||||
("ruby-rails" ,ruby-rails)
|
||||
("ruby-rspec-rails" ,ruby-rspec-rails)
|
||||
;; This is needed for a test, but I'm unsure why
|
||||
("ruby-sass" ,ruby-sass)
|
||||
;; This is used as the ruby-execjs runtime
|
||||
("node" ,node)))
|
||||
(propagated-inputs
|
||||
`(("ruby-execjs" ,ruby-execjs)))
|
||||
(synopsis "Parse CSS and add vendor prefixes to CSS rules")
|
||||
(description
|
||||
"This gem provides Ruby and Ruby on Rails integration with Autoprefixer,
|
||||
which can parse CSS and add vendor prefixes to CSS rules using values from the
|
||||
Can I Use website.")
|
||||
(home-page "https://github.com/ai/autoprefixer-rails")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public ruby-activemodel
|
||||
(package
|
||||
(name "ruby-activemodel")
|
||||
@ -146,6 +227,35 @@ an almost zero-configuration persistence layer for applications.")
|
||||
(home-page "https://rubyonrails.org")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public ruby-rspec-rails
|
||||
(package
|
||||
(name "ruby-rspec-rails")
|
||||
(version "3.8.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (rubygems-uri "rspec-rails" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1pf6n9l4sw1arlax1bdbm1znsvl8cgna2n6k6yk1bi8vz2n73ls1"))))
|
||||
(build-system ruby-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f)) ; No included tests
|
||||
(propagated-inputs
|
||||
`(("ruby-actionpack" ,ruby-actionpack)
|
||||
("ruby-activesupport" ,ruby-activesupport)
|
||||
("ruby-railties" ,ruby-railties)
|
||||
("ruby-rspec-core" ,ruby-rspec-core)
|
||||
("ruby-rspec-expectations" ,ruby-rspec-expectations)
|
||||
("ruby-rspec-mocks" ,ruby-rspec-mocks)
|
||||
("ruby-rspec-support" ,ruby-rspec-support)))
|
||||
(synopsis "Use RSpec to test Ruby on Rails applications")
|
||||
(description
|
||||
"This package provides support for using RSpec to test Ruby on Rails
|
||||
applications, in pace of the default Minitest testing library.")
|
||||
(home-page "https://github.com/rspec/rspec-rails")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public ruby-rails-html-sanitizer
|
||||
(package
|
||||
(name "ruby-rails-html-sanitizer")
|
||||
@ -413,6 +523,62 @@ application bootup, plugins, generators, and Rake tasks.")
|
||||
"https://github.com/rails/sprockets-rails")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public ruby-web-console
|
||||
(package
|
||||
(name "ruby-web-console")
|
||||
(version "3.7.0")
|
||||
(source
|
||||
(origin
|
||||
;; Download from GitHub as test files are not provided in the gem.
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/rails/web-console.git")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0ir999p8cnm3l3zwbgpwxxcq1vwkj8d0d3r24362cyaf4v1rglq2"))))
|
||||
(build-system ruby-build-system)
|
||||
(arguments
|
||||
'(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'patch-Gemfile
|
||||
(lambda _
|
||||
(substitute* "Gemfile"
|
||||
;; Remove the github bit from the Gemfile, so that the Guix
|
||||
;; packages are used.
|
||||
((", github: .*") "\n")
|
||||
;; The usual methods of not loading this group don't work, so
|
||||
;; patch the Gemfile.
|
||||
(("group :development") "[].each")
|
||||
;; tzinfo-data is propagated by ruby-activesupport, but it
|
||||
;; needs to be in the Gemfile to become available.
|
||||
(("group :test do") "group :test do\n gem 'tzinfo-data'"))
|
||||
#t))
|
||||
(add-after 'unpack 'fix-mocha-minitest-require
|
||||
(lambda _
|
||||
(substitute* "test/test_helper.rb"
|
||||
;; This chanegd in recent versions of Mocha
|
||||
(("mocha/minitest") "mocha/mini_test"))
|
||||
#t)))))
|
||||
(propagated-inputs
|
||||
`(("ruby-actionview" ,ruby-actionview)
|
||||
("ruby-activemodel" ,ruby-activemodel)
|
||||
("ruby-bindex" ,ruby-bindex)
|
||||
("ruby-railties" ,ruby-railties)))
|
||||
(native-inputs
|
||||
`(("bundler" ,bundler)
|
||||
("ruby-rails" ,ruby-rails)
|
||||
("ruby-mocha" ,ruby-mocha)
|
||||
("ruby-simplecov" ,ruby-simplecov)))
|
||||
(synopsis "Debugging tool for your Ruby on Rails applications")
|
||||
(description
|
||||
"This package allows you to create an interactive Ruby session in your
|
||||
browser. Those sessions are launched automatically in case of an error and
|
||||
can also be launched manually in any page.")
|
||||
(home-page "https://github.com/rails/web-console")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public ruby-with-advisory-lock
|
||||
(package
|
||||
(name "ruby-with-advisory-lock")
|
||||
|
@ -51,6 +51,7 @@
|
||||
#:use-module (gnu packages maths)
|
||||
#:use-module (gnu packages ncurses)
|
||||
#:use-module (gnu packages networking)
|
||||
#:use-module (gnu packages node)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages python-xyz)
|
||||
#:use-module (gnu packages ragel)
|
||||
@ -446,16 +447,16 @@ notebook).")
|
||||
;; RSpec is the dominant testing library for Ruby projects. Even RSpec's
|
||||
;; dependencies use RSpec for their test suites! To avoid these circular
|
||||
;; dependencies, we disable tests for all of the RSpec-related packages.
|
||||
(define ruby-rspec-support
|
||||
(define-public ruby-rspec-support
|
||||
(package
|
||||
(name "ruby-rspec-support")
|
||||
(version "3.5.0")
|
||||
(version "3.8.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (rubygems-uri "rspec-support" version))
|
||||
(sha256
|
||||
(base32
|
||||
"10vf3k3d472y573mag2kzfsfrf6rv355s13kadnpryk8d36yq5r0"))))
|
||||
"0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609"))))
|
||||
(build-system ruby-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f)) ; avoid dependency cycles
|
||||
@ -467,13 +468,13 @@ notebook).")
|
||||
(define-public ruby-rspec-core
|
||||
(package
|
||||
(name "ruby-rspec-core")
|
||||
(version "3.5.4")
|
||||
(version "3.8.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (rubygems-uri "rspec-core" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1nacs062qbr98fx6czf1vwppn1js956nv2c8vfwj6i65axdfs46i"))))
|
||||
"1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p"))))
|
||||
(build-system ruby-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f)) ; avoid dependency cycles
|
||||
@ -520,13 +521,13 @@ standard diff-like tool.")
|
||||
(define-public ruby-rspec-expectations
|
||||
(package
|
||||
(name "ruby-rspec-expectations")
|
||||
(version "3.5.0")
|
||||
(version "3.8.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (rubygems-uri "rspec-expectations" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0bbqfrb1x8gmwf8x2xhhwvvlhwbbafq4isbvlibxi6jk602f09gs"))))
|
||||
"18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm"))))
|
||||
(build-system ruby-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f)) ; avoid dependency cycles
|
||||
@ -612,13 +613,13 @@ eq(1)\\}}.")
|
||||
(define-public ruby-rspec-mocks
|
||||
(package
|
||||
(name "ruby-rspec-mocks")
|
||||
(version "3.5.0")
|
||||
(version "3.8.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (rubygems-uri "rspec-mocks" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0nl3ksivh9wwrjjd47z5dggrwx40v6gpb3a0gzbp1gs06a5dmk24"))))
|
||||
"06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp"))))
|
||||
(build-system ruby-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f)) ; avoid dependency cycles
|
||||
@ -669,13 +670,13 @@ RSpec tests.")
|
||||
(define-public ruby-rspec
|
||||
(package
|
||||
(name "ruby-rspec")
|
||||
(version "3.5.0")
|
||||
(version "3.8.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (rubygems-uri "rspec" version))
|
||||
(sha256
|
||||
(base32
|
||||
"16g3mmih999f0b6vcz2c3qsc7ks5zy4lj1rzjh8hf6wk531nvc6s"))))
|
||||
"15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3"))))
|
||||
(build-system ruby-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f)) ; avoid dependency cycles
|
||||
@ -1434,6 +1435,39 @@ support.")
|
||||
(home-page "http://www.kuwata-lab.com/erubis/")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public ruby-execjs
|
||||
(package
|
||||
(name "ruby-execjs")
|
||||
(version "2.7.0")
|
||||
(source
|
||||
(origin
|
||||
;; fetch from github as the gem does not contain testing code
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/rails/execjs.git")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0c0vd2mmqq3ar4plbwi2wsbr31vn4h45i19r5km66skydnnbp1y6"))))
|
||||
(build-system ruby-build-system)
|
||||
(native-inputs
|
||||
`(("bundler" ,bundler)
|
||||
;; The test suite tests all the available backends. Currenly, this just
|
||||
;; means the node backend.
|
||||
;;
|
||||
;; PASSED: test:node
|
||||
;; SKIPPED: test:duktape, ;; test:javascriptcore, test:jscript,
|
||||
;; test:miniracer, test:rubyracer, ;; test:rubyrhino, test:v8
|
||||
("node" ,node)))
|
||||
(synopsis "Run JavaScript code from Ruby")
|
||||
(description
|
||||
"ExecJS lets you run JavaScript code from Ruby. It automatically picks a
|
||||
runtime to evaluate your JavaScript program, then returns the result to you as
|
||||
a Ruby object.")
|
||||
(home-page "https://github.com/rails/execjs")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public ruby-orderedhash
|
||||
(package
|
||||
(name "ruby-orderedhash")
|
||||
@ -2818,6 +2852,30 @@ conversion to (X)HTML.")
|
||||
(home-page "https://github.com/vmg/redcarpet")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public ruby-rerun
|
||||
(package
|
||||
(name "ruby-rerun")
|
||||
(version "0.13.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (rubygems-uri "rerun" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1cskvxk8z8vmfail8na7hj91hs0qnvds9nydj04zi3dbddgnbmvz"))))
|
||||
(build-system ruby-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f)) ; No included tests
|
||||
(propagated-inputs
|
||||
`(("ruby-listen" ,ruby-listen)))
|
||||
(synopsis "Run a process, and restart when some monitored files change")
|
||||
(description
|
||||
"Rerun is a tool to launch programs, then monitor the filesystem, and
|
||||
restart the program when any of the monitored files change. It's written in
|
||||
Ruby, but can be used for all programs.")
|
||||
(home-page "https://github.com/alexch/rerun/")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public ruby-mocha
|
||||
(package
|
||||
(name "ruby-mocha")
|
||||
@ -3788,6 +3846,27 @@ rate.")
|
||||
(home-page "https://github.com/paul/progress_bar")
|
||||
(license license:wtfpl2)))
|
||||
|
||||
(define-public ruby-dep
|
||||
(package
|
||||
(name "ruby-dep")
|
||||
(version "1.5.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (rubygems-uri "ruby_dep" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5"))))
|
||||
(build-system ruby-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f)) ; No included tests
|
||||
(synopsis "Creates a version constraint of supported Rubies")
|
||||
(description
|
||||
"This package helps create a version constraint of supported Rubies,
|
||||
suitable for a gemspec file.")
|
||||
(home-page "https://github.com/e2/ruby_dep")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public ruby-progressbar
|
||||
(package
|
||||
(name "ruby-progressbar")
|
||||
@ -4462,33 +4541,50 @@ a native C extension.")
|
||||
(version "3.1.5")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (rubygems-uri "listen" version))
|
||||
;; The gem does not include a Rakefile, so fetch from the Git
|
||||
;; repository.
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/guard/listen.git")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx"))))
|
||||
"1hqmkfa9f2xb5jlvqbafdxjd5ax75jm8gqj5nh3k22xq0kacsvgg"))))
|
||||
(build-system ruby-build-system)
|
||||
(arguments '(#:tests? #f)) ; no tests
|
||||
(arguments
|
||||
`(#:test-target "spec"
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'fix-files-in-gemspec
|
||||
(lambda _
|
||||
(substitute* "listen.gemspec"
|
||||
(("`git ls-files -z`") "`find . -type f -printf '%P\\\\0' |sort -z`"))
|
||||
#t))
|
||||
(add-before 'check 'remove-unnecessary-dependencies'
|
||||
(lambda _
|
||||
(substitute* "Rakefile"
|
||||
;; Rubocop is for code linting, and is unnecessary for running
|
||||
;; the tests.
|
||||
((".*rubocop.*") ""))
|
||||
#t)))))
|
||||
(native-inputs
|
||||
`(("bundler" ,bundler)
|
||||
("ruby-rspec" ,ruby-rspec)))
|
||||
(inputs
|
||||
`(;; ruby-thor is used for the command line interface, and is referenced
|
||||
;; in the wrapper, and therefore just needs to be an input.
|
||||
("ruby-thor" ,ruby-thor)))
|
||||
(propagated-inputs
|
||||
`(("ruby-rb-inotify" ,ruby-rb-inotify)
|
||||
("ruby-rb-fsevent" ,ruby-rb-fsevent)))
|
||||
`(("ruby-rb-fsevent" ,ruby-rb-fsevent)
|
||||
("ruby-rb-inotify" ,ruby-rb-inotify)
|
||||
("ruby-dep" ,ruby-dep)))
|
||||
(synopsis "Listen to file modifications")
|
||||
(description "The Listen gem listens to file modifications and notifies
|
||||
you about the changes.")
|
||||
(home-page "https://github.com/guard/listen")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public ruby-listen-3.0
|
||||
(package
|
||||
(inherit ruby-listen)
|
||||
(version "3.0.8")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (rubygems-uri "listen" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1l0y7hbyfiwpvk172r28hsdqsifq1ls39hsfmzi1vy4ll0smd14i"))))))
|
||||
|
||||
(define-public ruby-loofah
|
||||
(package
|
||||
(name "ruby-loofah")
|
||||
@ -5550,6 +5646,31 @@ boolean expression used by Cucumber.")
|
||||
(home-page "https://github.com/cucumber/tag-expressions-ruby")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public ruby-bindex
|
||||
(package
|
||||
(name "ruby-bindex")
|
||||
(version "0.5.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (rubygems-uri "bindex" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1wvhf4v8sk5x8li03pcc0v0wglmyv7ikvvg05bnms83dfy7s4k8i"))))
|
||||
(build-system ruby-build-system)
|
||||
(arguments
|
||||
'(#:test-target "default"))
|
||||
(native-inputs
|
||||
`(("bundler" ,bundler)
|
||||
("ruby-rake-compiler" ,ruby-rake-compiler)))
|
||||
(synopsis "Provides access for bindings relating to Ruby exceptions")
|
||||
(description
|
||||
"@code{bindex} provides a way to access the bindings that relate to
|
||||
exceptions in Ruby, providing more information about the context in which the
|
||||
exception occurred.")
|
||||
(home-page "https://github.com/gsamokovarov/bindex")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public ruby-bio-logger
|
||||
(package
|
||||
(name "ruby-bio-logger")
|
||||
@ -7710,16 +7831,16 @@ in Jekyll.")
|
||||
(define-public ruby-jekyll-watch
|
||||
(package
|
||||
(name "ruby-jekyll-watch")
|
||||
(version "2.0.0")
|
||||
(version "2.1.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (rubygems-uri "jekyll-watch" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0m7scvj3ki8bmyx5v8pzibpg6my10nycnc28lip98dskf8iakprp"))))
|
||||
"1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv"))))
|
||||
(build-system ruby-build-system)
|
||||
(propagated-inputs
|
||||
`(("ruby-listen-3.0" ,ruby-listen-3.0)))
|
||||
`(("ruby-listen" ,ruby-listen)))
|
||||
(arguments
|
||||
;; No rakefile
|
||||
`(#:tests? #f))
|
||||
|
@ -242,14 +242,14 @@ Desktops into Active Directory environments using the winbind daemon.")
|
||||
(define-public talloc
|
||||
(package
|
||||
(name "talloc")
|
||||
(version "2.1.16")
|
||||
(version "2.2.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://www.samba.org/ftp/talloc/talloc-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1aajda08yf7njgvg6r21ccxlvkarb9bwvf4jqh8yn3871a1zcnqr"))))
|
||||
"1g1fqa37xkjp9lp6lrwxrbfgashcink769ll505zvcwnxx2nlvsw"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:phases
|
||||
@ -309,14 +309,14 @@ destructors. It is the core memory allocator used in Samba.")
|
||||
(define-public tevent
|
||||
(package
|
||||
(name "tevent")
|
||||
(version "0.9.39")
|
||||
(version "0.10.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://www.samba.org/ftp/tevent/tevent-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1rnln76ngd2b8lgqvfa9iscy6jizwycj85nfp9zd46b1c760z3gn"))))
|
||||
"1rm4d9245ya15wyrh9vqn1dnz14l2ic88mr46ykyc6kdrl99dwrk"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:phases
|
||||
@ -345,14 +345,14 @@ many event types, including timers, signals, and the classic file descriptor eve
|
||||
(define-public ldb
|
||||
(package
|
||||
(name "ldb")
|
||||
(version "1.6.2")
|
||||
(version "1.6.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://www.samba.org/ftp/ldb/ldb-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1kiwlra6nfkb5n870k2db41jrm59bq9lxqmil4v7ignblgsdfdwb"))
|
||||
"01livdy3g073bm6xnc8zqnqrxg53sw8q66d1903z62hd6g87whsa"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
|
@ -451,18 +451,17 @@ TCP, not the SSH protocol.")
|
||||
(define-public dropbear
|
||||
(package
|
||||
(name "dropbear")
|
||||
(version "2018.76")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://matt.ucc.asn.au/" name "/releases/"
|
||||
name "-" version ".tar.bz2"))
|
||||
(patches (search-patches "dropbear-CVE-2018-15599.patch"))
|
||||
(sha256
|
||||
(base32
|
||||
"0rgavbzw7jrs5wslxm0dnwx2m409yzxd9hazd92r7kx8xikr3yzj"))))
|
||||
(version "2019.77")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://matt.ucc.asn.au/dropbear/releases/"
|
||||
"dropbear-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32 "13a55fcy2mx2pvsfj6dh9107k4wnbd9ybdyi3w3ivgikwvmph7yr"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments `(#:tests? #f)) ; there is no "make check" or anything similar
|
||||
(arguments `(#:tests? #f)) ; there is no "make check" or anything similar
|
||||
;; TODO: Investigate unbundling libtommath and libtomcrypt or at least
|
||||
;; cherry-picking important bug fixes from them. See <bugs.gnu.org/24674>
|
||||
;; for more information.
|
||||
|
@ -765,7 +765,7 @@ correct OpenSSL include path. It is intended for use in your
|
||||
(define-public perl-crypt-openssl-random
|
||||
(package
|
||||
(name "perl-crypt-openssl-random")
|
||||
(version "0.13")
|
||||
(version "0.15")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@ -774,8 +774,7 @@ correct OpenSSL include path. It is intended for use in your
|
||||
version
|
||||
".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0vmvrb3shrzjzri3qn524dzdasbq8zhhbpc1vmq8sx68n4jhizb0"))))
|
||||
(base32 "1x6ffps8q7mnawmcfq740llzy7i10g3319vap0wiw4d33fm6z1zh"))))
|
||||
(build-system perl-build-system)
|
||||
(native-inputs
|
||||
`(("perl-crypt-openssl-guess" ,perl-crypt-openssl-guess)))
|
||||
|
@ -68,6 +68,7 @@
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages gl)
|
||||
#:use-module (gnu packages groff)
|
||||
#:use-module (gnu packages guile)
|
||||
#:use-module (gnu packages haskell)
|
||||
#:use-module (gnu packages haskell-check)
|
||||
#:use-module (gnu packages haskell-crypto)
|
||||
@ -535,7 +536,8 @@ everything from small to very large projects with speed and efficiency.")
|
||||
(sha256
|
||||
(base32
|
||||
"0swk2dyq5a4p1jn5wvbcsrxckhh808vifxz5y8w663avg541188c"))
|
||||
(patches (search-patches "libgit2-mtime-0.patch"))
|
||||
(patches (search-patches "libgit2-avoid-python.patch"
|
||||
"libgit2-mtime-0.patch"))
|
||||
|
||||
;; Remove bundled software.
|
||||
(snippet '(begin
|
||||
@ -561,10 +563,10 @@ everything from small to very large projects with speed and efficiency.")
|
||||
(lambda _ (invoke "./libgit2_clar" "-v" "-Q"))))))
|
||||
(inputs
|
||||
`(("libssh2" ,libssh2)
|
||||
("http-parser" ,http-parser)
|
||||
("python" ,python-wrapper)))
|
||||
("http-parser" ,http-parser)))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
`(("guile" ,guile-2.2)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(propagated-inputs
|
||||
;; These two libraries are in 'Requires.private' in libgit2.pc.
|
||||
`(("openssl" ,openssl)
|
||||
|
@ -755,14 +755,14 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
|
||||
(define-public ffmpeg
|
||||
(package
|
||||
(name "ffmpeg")
|
||||
(version "4.1.1")
|
||||
(version "4.1.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"11id9pm4azfrhpa4vr2yaw31dzgd55kl1zsxwn24sczx9n14jdrp"))))
|
||||
"0yrl6nij4b1pk1c4nbi80857dsd760gziiss2ls19awq8zj0lpxr"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("fontconfig" ,fontconfig)
|
||||
@ -1132,13 +1132,11 @@ videoformats depend on the configuration flags of ffmpeg.")
|
||||
(substitute* "modules/text_renderer/freetype/text_layout.c"
|
||||
(("# define FRIBIDI_NO_DEPRECATED 1") ""))
|
||||
|
||||
;; Fix build against Qt 5.11.
|
||||
(substitute* "modules/gui/qt/actions_manager.cpp"
|
||||
(("#include <vlc_keys.h>") "#include <vlc_keys.h>
|
||||
#include <QAction>"))
|
||||
(substitute* "modules/gui/qt/components/simple_preferences.cpp"
|
||||
(("#include <QFont>") "#include <QFont>
|
||||
#include <QButtonGroup>"))
|
||||
;; Fix build with libssh2 > 1.8.0:
|
||||
;; <https://trac.videolan.org/vlc/ticket/22060>
|
||||
;; <https://git.videolan.org/?p=vlc.git;a=commit;h=11449b5cd8b415768e010d9b7c1d6ba3cea21f82>
|
||||
(substitute* "modules/access/sftp.c"
|
||||
(("010801") "010900"))
|
||||
#t)))
|
||||
(add-after 'strip 'regenerate-plugin-cache
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
|
@ -35,6 +35,7 @@
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages admin)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages check)
|
||||
#:use-module (gnu packages autotools)
|
||||
@ -118,10 +119,10 @@ Only \"Universal TUN/TAP device driver support\" is needed in the kernel.")
|
||||
(home-page "http://www.unix-ag.uni-kl.de/~massar/vpnc/")))
|
||||
|
||||
(define-public vpnc-scripts
|
||||
(let ((commit "07c3518dd6b8dc424e9c3650a62bed994a4dcbe1"))
|
||||
(let ((commit "1000e0f6dd7d6bff163169a46359211c1fc3a6d2"))
|
||||
(package
|
||||
(name "vpnc-scripts")
|
||||
(version (string-append "20180226." (string-take commit 7)))
|
||||
(version (string-append "20190116." (string-take commit 7)))
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri
|
||||
@ -131,7 +132,7 @@ Only \"Universal TUN/TAP device driver support\" is needed in the kernel.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"02d29nrmnj6kfa889cavqn1pkn9ssb5gyp4lz1v47spwx7abpdi7"))))
|
||||
"1g41yarz2bl0f73kbjqnywr485ghanbp7nmspklfb0n07yp0z6ak"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("coreutils" ,coreutils)
|
||||
("grep" ,grep)
|
||||
@ -517,3 +518,31 @@ retrieving configuration of WireGuard network tunnel interfaces, and a patch
|
||||
that can be applied to a Linux kernel source tree in order to build it with
|
||||
WireGuard support.")
|
||||
(license license:gpl2)))
|
||||
|
||||
(define-public xl2tpd
|
||||
(package
|
||||
(name "xl2tpd")
|
||||
(version "1.3.13")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/xelerance/xl2tpd")
|
||||
(commit (string-append "v" version))))
|
||||
(sha256
|
||||
(base32
|
||||
"1nzkmhi9arwd4smhr07l0sssx46w48z0cblv7xcz25wg4hw86mcd"))
|
||||
(file-name (string-append "xl2tpd-" version "-checkout"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:make-flags (list (string-append "DESTDIR=" %output)
|
||||
"CC=gcc")
|
||||
#:phases (modify-phases %standard-phases
|
||||
(delete 'configure))
|
||||
#:tests? #f)) ;; no tests provided
|
||||
(inputs `(("libpcap" ,libpcap)))
|
||||
(home-page "https://www.xelerance.com/software/xl2tpd/")
|
||||
(synopsis "Layer 2 Tunnelling Protocol Daemon (RFC 2661)")
|
||||
(description
|
||||
"xl2tpd is an implementation of the Layer 2 Tunnelling Protocol (RFC 2661).
|
||||
L2TP allows you to tunnel PPP over UDP.")
|
||||
(license license:gpl2)))
|
||||
|
@ -2266,15 +2266,14 @@ HTTP requests.")
|
||||
(define-public perl-cgi-simple
|
||||
(package
|
||||
(name "perl-cgi-simple")
|
||||
(version "1.15")
|
||||
(version "1.21")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://cpan/authors/id/M/MA/MANWAR/"
|
||||
"CGI-Simple-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"013dcy9k4sj9alkksk5aqz65ryxw0rxgg71c7w666y941gd8n46q"))))
|
||||
(base32 "1wzc2igs4khmj7zfahvs87c24p9ks8hnqhhsyviyiix53xx2y6sg"))))
|
||||
(build-system perl-build-system)
|
||||
(native-inputs
|
||||
`(("perl-io-stringy" ,perl-io-stringy) ; for IO::Scalar
|
||||
@ -2436,15 +2435,14 @@ which can be used to parse directory listings.")
|
||||
(define-public perl-finance-quote
|
||||
(package
|
||||
(name "perl-finance-quote")
|
||||
(version "1.38")
|
||||
(version "1.47")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://cpan.metacpan.org/authors/id/E/EC/ECOCODE/"
|
||||
"Finance-Quote-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0zhqb27y4vdxn476s2kwm9zl2f970yjcyyybnjm9b406krr2fm59"))
|
||||
(base32 "0gzbq85738f299jaw4nj3ljnka380j2y6yspmyl71rgfypqjvbr7"))
|
||||
(patches (search-patches
|
||||
"perl-finance-quote-unuse-mozilla-ca.patch"))))
|
||||
(build-system perl-build-system)
|
||||
@ -2572,15 +2570,14 @@ composed of HTML::Element style components.")
|
||||
(define-public perl-html-lint
|
||||
(package
|
||||
(name "perl-html-lint")
|
||||
(version "2.26")
|
||||
(version "2.32")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://cpan/authors/id/P/PE/PETDANCE/"
|
||||
"HTML-Lint-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"02vi1s4sw3hjnndxd6s91cp54iw5pg8n5kl9v0109dfxzn1n9bnl"))))
|
||||
(base32 "0lk02xpfxcg7ij4dvpsa4wjlzhmiizj0jfr3rwmdpbj69nvc93br"))))
|
||||
(build-system perl-build-system)
|
||||
(propagated-inputs
|
||||
`(("perl-html-parser" ,perl-html-parser)
|
||||
@ -3084,15 +3081,15 @@ select or poll.")
|
||||
(define-public perl-libwww
|
||||
(package
|
||||
(name "perl-libwww")
|
||||
(version "6.35")
|
||||
(version "6.37")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"mirror://cpan/authors/id/E/ET/ETHER/libwww-perl-"
|
||||
"mirror://cpan/authors/id/O/OA/OALDERS/libwww-perl-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0lsrr8r61b67f9wrynkhdhldw5yic4d7cd78zi52q59jgf6mg8nx"))))
|
||||
"04a24cx9gs070rvlwf5kanz03y7nnq9k2nmpr01plnm059iprvf6"))))
|
||||
(build-system perl-build-system)
|
||||
(native-inputs
|
||||
`(("perl-test-fatal" ,perl-test-fatal)
|
||||
@ -3430,7 +3427,7 @@ can say what method it actually meant.")
|
||||
(define-public perl-plack-middleware-removeredundantbody
|
||||
(package
|
||||
(name "perl-plack-middleware-removeredundantbody")
|
||||
(version "0.05")
|
||||
(version "0.07")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@ -3438,8 +3435,7 @@ can say what method it actually meant.")
|
||||
"Plack-Middleware-RemoveRedundantBody-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1n3wm0zi8dnk54jx937asl951lslj3jvw0fry4jpzsibg4f6wrx0"))))
|
||||
(base32 "1hz3kgb5vw4r02gfk9i911f5ykvz55lrsx45bdcllk2bszal3f34"))))
|
||||
(build-system perl-build-system)
|
||||
(propagated-inputs
|
||||
`(("perl-plack" ,perl-plack)))
|
||||
@ -3453,7 +3449,7 @@ required.")
|
||||
(define-public perl-plack-middleware-reverseproxy
|
||||
(package
|
||||
(name "perl-plack-middleware-reverseproxy")
|
||||
(version "0.15")
|
||||
(version "0.16")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@ -3461,8 +3457,7 @@ required.")
|
||||
"Plack-Middleware-ReverseProxy-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1zmsccdy6wr5hxzj07r1nsmaymyibk87p95z0wzknjw10lwmqs9f"))))
|
||||
(base32 "0a512n62pnk5ayj3zdzyj50iy1qi8nwh6ygks2h7nrh7gp9k2jc7"))))
|
||||
(build-system perl-build-system)
|
||||
(native-inputs
|
||||
`(("perl-module-install" ,perl-module-install)))
|
||||
@ -3478,15 +3473,14 @@ and stop fake requests using 'enable_if' directive in your app.psgi.")
|
||||
(define-public perl-plack-test-externalserver
|
||||
(package
|
||||
(name "perl-plack-test-externalserver")
|
||||
(version "0.01")
|
||||
(version "0.02")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://cpan/authors/id/F/FL/FLORA/"
|
||||
"Plack-Test-ExternalServer-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1dbg1p3rgvvbkkpvca5jlc2mzx8iqyiybk88al93pvbca65h1g7h"))))
|
||||
(base32 "1l1yj1l25679x7cbpd27ii7s1f1ajpkspif9xqnl21hczrbmrbsv"))))
|
||||
(build-system perl-build-system)
|
||||
(propagated-inputs
|
||||
`(("perl-plack" ,perl-plack)))
|
||||
@ -3500,15 +3494,14 @@ either mocked HTTP or a locally spawned server.")
|
||||
(define-public perl-test-tcp
|
||||
(package
|
||||
(name "perl-test-tcp")
|
||||
(version "2.06")
|
||||
(version "2.19")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://cpan/authors/id/T/TO/TOKUHIROM/"
|
||||
"Test-TCP-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0acjwm21y2an4f3fasci9qa0isakh9cgp74fk0bzcdi506xmcjbi"))))
|
||||
(base32 "14ahzklq3xgmwj58p9vdcfgpggrmh3nigq5mzqk4wakbb6fjs0fx"))))
|
||||
(build-system perl-build-system)
|
||||
(propagated-inputs
|
||||
`(("perl-test-sharedfork" ,perl-test-sharedfork)))
|
||||
@ -3521,15 +3514,14 @@ either mocked HTTP or a locally spawned server.")
|
||||
(define-public perl-test-www-mechanize
|
||||
(package
|
||||
(name "perl-test-www-mechanize")
|
||||
(version "1.50")
|
||||
(version "1.52")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://cpan/authors/id/P/PE/PETDANCE/"
|
||||
"Test-WWW-Mechanize-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"097pl87vdbxbb56vawzvs6ikrlb8nz3dx223kjjbdn3jlli3jjhg"))))
|
||||
(base32 "1jsywlbxhqw39ij7s8vmgff5vys58vlfaq27072awacnxc65aal4"))))
|
||||
(build-system perl-build-system)
|
||||
(propagated-inputs
|
||||
`(("perl-carp-assert-more" ,perl-carp-assert-more)
|
||||
@ -3764,15 +3756,14 @@ library.")
|
||||
(define-public perl-www-mechanize
|
||||
(package
|
||||
(name "perl-www-mechanize")
|
||||
(version "1.89")
|
||||
(version "1.91")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
|
||||
"WWW-Mechanize-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1mxx362vqiniw8vi6k3j7v9b1s7012irhfcblcz1p6jz9cjqi7mh"))))
|
||||
(base32 "0cb14m1vhaf0mgn2fqwi5hm72xhfi77hpq2g57swgy0w83x7m27b"))))
|
||||
(build-system perl-build-system)
|
||||
(native-inputs ;only for tests
|
||||
`(("perl-cgi" ,perl-cgi)
|
||||
|
@ -1579,7 +1579,7 @@ input from UTF-8 into the locale's encoding.")
|
||||
(define-public mkfontscale
|
||||
(package
|
||||
(name "mkfontscale")
|
||||
(version "1.2.0")
|
||||
(version "1.2.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@ -1588,7 +1588,7 @@ input from UTF-8 into the locale's encoding.")
|
||||
version
|
||||
".tar.bz2"))
|
||||
(sha256
|
||||
(base32 "1gn423m0v1w98df7ni74zrj2rkhsapnqfzr8139l638kkyz7far8"))))
|
||||
(base32 "1ixsnsm2mn0zy9ksdid0lj6irnhvasfik9mz8bbrs5sajzmra16a"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("zlib" ,zlib)
|
||||
|
@ -181,7 +181,7 @@
|
||||
(groups operating-system-groups ; list of user groups
|
||||
(default %base-groups))
|
||||
|
||||
(skeletons operating-system-skeletons ; list of name/monadic value
|
||||
(skeletons operating-system-skeletons ; list of name/file-like value
|
||||
(default (default-skeletons)))
|
||||
(issue operating-system-issue ; string
|
||||
(default %default-issue))
|
||||
@ -199,7 +199,7 @@
|
||||
(name-service-switch operating-system-name-service-switch ; <name-service-switch>
|
||||
(default %default-nss))
|
||||
|
||||
(services operating-system-user-services ; list of monadic services
|
||||
(services operating-system-user-services ; list of services
|
||||
(default %base-services))
|
||||
|
||||
(pam-services operating-system-pam-services ; list of PAM services
|
||||
|
@ -526,7 +526,10 @@ should set REGISTER-CLOSURES? to #f."
|
||||
#$os-drv
|
||||
#:compressor '(#+(file-append gzip "/bin/gzip") "-9n")
|
||||
#:creation-time (make-time time-utc 0 1)
|
||||
#:transformations `((,root-directory -> ""))))))))
|
||||
#:transformations `((,root-directory -> "")))
|
||||
|
||||
;; Make sure the tarball is fully written before rebooting.
|
||||
(sync))))))
|
||||
(expression->derivation-in-linux-vm
|
||||
name build
|
||||
#:make-disk-image? #f
|
||||
|
155
guix/build-system/rakudo.scm
Normal file
155
guix/build-system/rakudo.scm
Normal file
@ -0,0 +1,155 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;;
|
||||
;;; 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 <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (guix build-system rakudo)
|
||||
#:use-module (guix store)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix derivations)
|
||||
#:use-module (guix search-paths)
|
||||
#:use-module (guix build-system)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (ice-9 match)
|
||||
#:export (%rakudo-build-system-modules
|
||||
rakudo-build
|
||||
rakudo-build-system))
|
||||
|
||||
;; Commentary:
|
||||
;;
|
||||
;; Standard build and install procedure for packages using the Rakudo
|
||||
;; build system to be installed as system libraries. This is
|
||||
;; implemented as an extension of `gnu-build-system'.
|
||||
;;
|
||||
;; Code:
|
||||
|
||||
(define %rakudo-build-system-modules
|
||||
;; Build-side modules imported by default.
|
||||
`((guix build rakudo-build-system)
|
||||
,@%gnu-build-system-modules))
|
||||
|
||||
(define (default-rakudo)
|
||||
"Return the default Rakudo package."
|
||||
|
||||
;; Do not use `@' to avoid introducing circular dependencies.
|
||||
(let ((module (resolve-interface '(gnu packages perl6))))
|
||||
(module-ref module 'rakudo)))
|
||||
|
||||
(define (default-prove6)
|
||||
"Return the default perl6-tap-harness package for tests."
|
||||
(let ((module (resolve-interface '(gnu packages perl6))))
|
||||
(module-ref module 'perl6-tap-harness)))
|
||||
|
||||
(define (default-zef)
|
||||
"Return the default perl6-zef package."
|
||||
(let ((module (resolve-interface '(gnu packages perl6))))
|
||||
(module-ref module 'perl6-zef)))
|
||||
|
||||
(define* (lower name
|
||||
#:key source inputs native-inputs outputs
|
||||
system target
|
||||
(rakudo (default-rakudo))
|
||||
(prove6 (default-prove6))
|
||||
(zef (default-zef))
|
||||
(with-prove6? #t)
|
||||
(with-zef? #t)
|
||||
#:allow-other-keys
|
||||
#:rest arguments)
|
||||
"Return a bag for NAME."
|
||||
(define private-keywords
|
||||
'(#:source #:target #:rakudo #:prove6 #:zef #:inputs #:native-inputs))
|
||||
|
||||
(and (not target) ;XXX: no cross-compilation
|
||||
(bag
|
||||
(name name)
|
||||
(system system)
|
||||
(host-inputs `(,@(if source
|
||||
`(("source" ,source))
|
||||
'())
|
||||
,@inputs
|
||||
|
||||
;; Keep the standard inputs of 'gnu-build-system'.
|
||||
,@(standard-packages)))
|
||||
(build-inputs `(("rakudo" ,rakudo)
|
||||
,@(if with-prove6?
|
||||
`(("perl6-tap-harness" ,prove6)
|
||||
,@(if with-zef?
|
||||
`(("perl6-zef" ,zef))
|
||||
'()))
|
||||
'())
|
||||
,@native-inputs))
|
||||
(outputs outputs)
|
||||
(build rakudo-build)
|
||||
(arguments (strip-keyword-arguments private-keywords arguments)))))
|
||||
|
||||
(define* (rakudo-build store name inputs
|
||||
#:key
|
||||
(search-paths '())
|
||||
(tests? #t)
|
||||
(phases '(@ (guix build rakudo-build-system)
|
||||
%standard-phases))
|
||||
(outputs '("out"))
|
||||
(system (%current-system))
|
||||
(guile #f)
|
||||
(with-zef? #t)
|
||||
(with-prove6? #t)
|
||||
(imported-modules %rakudo-build-system-modules)
|
||||
(modules '((guix build rakudo-build-system)
|
||||
(guix build utils))))
|
||||
"Build SOURCE using PERL6, and with INPUTS."
|
||||
(define builder
|
||||
`(begin
|
||||
(use-modules ,@modules)
|
||||
(rakudo-build #:name ,name
|
||||
#:source ,(match (assoc-ref inputs "source")
|
||||
(((? derivation? source))
|
||||
(derivation->output-path source))
|
||||
((source)
|
||||
source)
|
||||
(source
|
||||
source))
|
||||
#:search-paths ',(map search-path-specification->sexp
|
||||
search-paths)
|
||||
#:phases ,phases
|
||||
#:system ,system
|
||||
#:tests? ,tests?
|
||||
#:outputs %outputs
|
||||
#:inputs %build-inputs)))
|
||||
|
||||
(define guile-for-build
|
||||
(match guile
|
||||
((? package?)
|
||||
(package-derivation store guile system #:graft? #f))
|
||||
(#f ; the default
|
||||
(let* ((distro (resolve-interface '(gnu packages commencement)))
|
||||
(guile (module-ref distro 'guile-final)))
|
||||
(package-derivation store guile system #:graft? #f)))))
|
||||
|
||||
(build-expression->derivation store name builder
|
||||
#:system system
|
||||
#:inputs inputs
|
||||
#:modules imported-modules
|
||||
#:outputs outputs
|
||||
#:guile-for-build guile-for-build))
|
||||
|
||||
(define rakudo-build-system
|
||||
(build-system
|
||||
(name 'rakudo)
|
||||
(description "The standard Rakudo build system")
|
||||
(lower lower)))
|
||||
|
||||
;;; rakudo.scm ends here
|
145
guix/build/rakudo-build-system.scm
Normal file
145
guix/build/rakudo-build-system.scm
Normal file
@ -0,0 +1,145 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;;
|
||||
;;; 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 <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (guix build rakudo-build-system)
|
||||
#:use-module ((guix build gnu-build-system) #:prefix gnu:)
|
||||
#:use-module (guix build utils)
|
||||
#:use-module (ice-9 ftw)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:export (%standard-phases
|
||||
rakudo-build))
|
||||
|
||||
;; Commentary:
|
||||
;;
|
||||
;; Builder-side code of the standard Rakudo package build procedure.
|
||||
;;
|
||||
;; Code:
|
||||
|
||||
(define* (check #:key tests? inputs with-prove6? #:allow-other-keys)
|
||||
(if (and tests? (assoc-ref inputs "perl6-tap-harness"))
|
||||
;(if (and tests? with-prove6?)
|
||||
(invoke "prove6" "-I=lib" "t/")
|
||||
(format #t "test suite not run~%"))
|
||||
#t)
|
||||
|
||||
(define* (install #:key inputs outputs with-zef? #:allow-other-keys)
|
||||
"Install a given Perl6 package."
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(perl6 (string-append out "/share/perl6")))
|
||||
(if (assoc-ref inputs "perl6-zef")
|
||||
;(if with-zef?
|
||||
(begin
|
||||
(let ((zef (string-append (assoc-ref inputs "perl6-zef")
|
||||
"/bin/zef")))
|
||||
(setenv "HOME" (getcwd))
|
||||
(mkdir-p perl6)
|
||||
(invoke zef "install" "--verbose" "."
|
||||
;; Don't install any of the following:
|
||||
"--/depends" "--/build-depends" "--/test-depends"
|
||||
(string-append "--install-to=" perl6))
|
||||
(delete-file (string-append perl6 "/repo.lock")))
|
||||
#t)
|
||||
(begin
|
||||
(let ((inst (string-append (assoc-ref inputs "rakudo")
|
||||
"/share/perl6/tools/install-dist.p6")))
|
||||
(setenv "RAKUDO_RERESOLVE_DEPENDENCIES" "0")
|
||||
(setenv "RAKUDO_MODULE_DEBUG" "1") ; be verbose while building
|
||||
(invoke inst (string-append "--to=" perl6) "--for=site"))))))
|
||||
|
||||
(define* (install-libs #:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(lock "lib/.precomp/.lock"))
|
||||
(when (file-exists? lock)
|
||||
(delete-file "lib/.precomp/.lock"))
|
||||
(copy-recursively "lib" (string-append out "/share/perl6/lib"))
|
||||
#t))
|
||||
|
||||
(define* (install-bins #:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(when (file-exists? "bin")
|
||||
(for-each (lambda (file)
|
||||
(install-file file (string-append out "/bin"))
|
||||
(chmod (string-append out "/" file) #o555))
|
||||
(find-files "bin" ".*")))
|
||||
(when (file-exists? "sbin")
|
||||
(for-each (lambda (file)
|
||||
(install-file file (string-append out "/sbin"))
|
||||
(chmod (string-append out "/" file) #o555))
|
||||
(find-files "sbin" ".*")))
|
||||
#t))
|
||||
|
||||
(define* (install-resources #:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(when (file-exists? "resources")
|
||||
(copy-recursively "resources"
|
||||
(string-append out "/share/perl6/resources")))
|
||||
#t))
|
||||
|
||||
(define* (wrap #:key inputs outputs #:allow-other-keys)
|
||||
(define (list-of-files dir)
|
||||
(map (cut string-append dir "/" <>)
|
||||
(or (scandir dir (lambda (f)
|
||||
(let ((s (stat (string-append dir "/" f))))
|
||||
(eq? 'regular (stat:type s)))))
|
||||
'())))
|
||||
|
||||
(define bindirs
|
||||
(append-map (match-lambda
|
||||
((_ . dir)
|
||||
(list (string-append dir "/bin")
|
||||
(string-append dir "/sbin"))))
|
||||
outputs))
|
||||
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(var `("PERL6LIB" "," prefix
|
||||
,(cons (string-append out "/share/perl6/lib,"
|
||||
out "/share/perl6/site/lib,"
|
||||
out "/share/perl6/vendor/lib")
|
||||
(search-path-as-string->list
|
||||
(or (getenv "PERL6LIB") "") #\,)))))
|
||||
(for-each (lambda (dir)
|
||||
(let ((files (list-of-files dir)))
|
||||
(for-each (cut wrap-program <> var)
|
||||
files)))
|
||||
bindirs)
|
||||
#t))
|
||||
|
||||
(define %standard-phases
|
||||
;; No need for 'bootstrap, 'configure or 'build.
|
||||
(modify-phases gnu:%standard-phases
|
||||
(delete 'bootstrap)
|
||||
(delete 'configure)
|
||||
(delete 'build)
|
||||
(replace 'check check)
|
||||
(replace 'install install)
|
||||
(add-before 'install 'install-lib-dir install-libs)
|
||||
(add-after 'install-lib-dir 'install-resources install-resources)
|
||||
(add-after 'install-resources 'install-binaries install-bins)
|
||||
;; needs to be after 'install-binaries and all 'install phases
|
||||
(add-after 'install 'wrap wrap)))
|
||||
|
||||
(define* (rakudo-build #:key inputs (phases %standard-phases)
|
||||
#:allow-other-keys #:rest args)
|
||||
"Build the given Perl6 package, applying all of PHASES in order."
|
||||
(apply gnu:gnu-build
|
||||
#:inputs inputs #:phases phases
|
||||
args))
|
||||
|
||||
;;; rakudo-build-system.scm ends here
|
@ -292,7 +292,7 @@ package in OPAM."
|
||||
(define (opam-package? package)
|
||||
"Return true if PACKAGE is an OCaml package from OPAM"
|
||||
(and
|
||||
(equal? (build-system-name (package-build-system package)) 'ocaml)
|
||||
(member (build-system-name (package-build-system package)) '(dune ocaml))
|
||||
(not (string-prefix? "ocaml4" (package-name package)))))
|
||||
|
||||
(define (latest-release package)
|
||||
|
@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@ -43,6 +43,7 @@
|
||||
%bag-node-type
|
||||
%bag-with-origins-node-type
|
||||
%bag-emerged-node-type
|
||||
%reverse-bag-node-type
|
||||
%derivation-node-type
|
||||
%reference-node-type
|
||||
%referrer-node-type
|
||||
@ -110,11 +111,21 @@ name."
|
||||
;;; Reverse package DAG.
|
||||
;;;
|
||||
|
||||
(define (all-packages) ;XXX: duplicated from (guix scripts refresh)
|
||||
"Return the list of all the distro's packages."
|
||||
(fold-packages (lambda (package result)
|
||||
;; Ignore deprecated packages.
|
||||
(if (package-superseded package)
|
||||
result
|
||||
(cons package result)))
|
||||
'()
|
||||
#:select? (const #t))) ;include hidden packages
|
||||
|
||||
(define %reverse-package-node-type
|
||||
;; For this node type we first need to compute the list of packages and the
|
||||
;; list of back-edges. Since we want to do it only once, we use the
|
||||
;; promises below.
|
||||
(let* ((packages (delay (fold-packages cons '())))
|
||||
(let* ((packages (delay (all-packages)))
|
||||
(back-edges (delay (run-with-store #f ;store not actually needed
|
||||
(node-back-edges %package-node-type
|
||||
(force packages))))))
|
||||
@ -219,6 +230,21 @@ GNU-BUILD-SYSTEM have zero dependencies."
|
||||
bag-node-edges-sans-bootstrap)
|
||||
%store-monad))))
|
||||
|
||||
(define %reverse-bag-node-type
|
||||
;; Type for the reverse traversal of package nodes via the "bag"
|
||||
;; representation, which includes implicit inputs.
|
||||
(let* ((packages (delay (package-closure (all-packages))))
|
||||
(back-edges (delay (run-with-store #f ;store not actually needed
|
||||
(node-back-edges %bag-node-type
|
||||
(force packages))))))
|
||||
(node-type
|
||||
(name "reverse-bag")
|
||||
(description "the reverse DAG of packages, including implicit inputs")
|
||||
(convert nodes-from-package)
|
||||
(identifier bag-node-identifier)
|
||||
(label node-full-name)
|
||||
(edges (lift1 (force back-edges) %store-monad)))))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Derivation DAG.
|
||||
@ -375,6 +401,7 @@ package modules, while attempting to retain user package modules."
|
||||
%bag-node-type
|
||||
%bag-with-origins-node-type
|
||||
%bag-emerged-node-type
|
||||
%reverse-bag-node-type
|
||||
%derivation-node-type
|
||||
%reference-node-type
|
||||
%referrer-node-type
|
||||
|
@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@ -191,6 +191,32 @@ edges."
|
||||
(string=? target (derivation-file-name g)))))
|
||||
edges)))))))))
|
||||
|
||||
(test-assert "reverse bag DAG"
|
||||
(let-values (((dune bap ocaml-base)
|
||||
(values (specification->package "dune")
|
||||
(specification->package "bap")
|
||||
(specification->package "ocaml-base")))
|
||||
((backend nodes+edges) (make-recording-backend)))
|
||||
(run-with-store %store
|
||||
(export-graph (list dune) 'port
|
||||
#:node-type %reverse-bag-node-type
|
||||
#:backend backend))
|
||||
|
||||
(run-with-store %store
|
||||
(mlet %store-monad ((dune-drv (package->derivation dune))
|
||||
(bap-drv (package->derivation bap))
|
||||
(ocaml-base-drv (package->derivation ocaml-base)))
|
||||
;; OCAML-BASE uses 'dune-build-system' so DUNE is a direct dependency.
|
||||
;; BAP is much higher in the stack but it should be there.
|
||||
(let-values (((nodes edges) (nodes+edges)))
|
||||
(return
|
||||
(and (member `(,(derivation-file-name bap-drv)
|
||||
,(package-full-name bap))
|
||||
nodes)
|
||||
(->bool (member (map derivation-file-name
|
||||
(list dune-drv ocaml-base-drv))
|
||||
edges)))))))))
|
||||
|
||||
(test-assert "derivation DAG"
|
||||
(let-values (((backend nodes+edges) (make-recording-backend)))
|
||||
(run-with-store %store
|
||||
|
Loading…
Reference in New Issue
Block a user