Merge branch 'master' into staging

This commit is contained in:
Marius Bakke 2019-12-11 23:21:27 +01:00
commit 9b601fc211
No known key found for this signature in database
GPG Key ID: A2A06DF2A33A54FA
34 changed files with 814 additions and 274 deletions

View File

@ -1179,6 +1179,7 @@ dist_patch_DATA = \
%D%/packages/patches/ngircd-handle-zombies.patch \
%D%/packages/patches/nm-plugin-path.patch \
%D%/packages/patches/nsis-env-passthru.patch \
%D%/packages/patches/nss-CVE-2019-11745.patch \
%D%/packages/patches/nss-freebl-stubs.patch \
%D%/packages/patches/nss-increase-test-timeout.patch \
%D%/packages/patches/nss-pkgconfig.patch \

View File

@ -629,7 +629,7 @@ would need and has several interesting built-in capabilities.")
(define-public netcat-openbsd
(package
(name "netcat-openbsd")
(version "1.203-2")
(version "1.206-1")
(source (origin
(method git-fetch)
(uri (git-reference
@ -638,7 +638,7 @@ would need and has several interesting built-in capabilities.")
(file-name (git-file-name name version))
(sha256
(base32
"0j85gzbjzs6yrhgabh3zkwzd27qkr5s0zjjczl0hah8q7yhrjk3m"))))
"08r3mmck3s5pbvwyq19wp5g8jqcxza3cm8nkc6jm7rqn4jdydc4z"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no test suite

View File

@ -26,6 +26,7 @@
#:use-module (guix packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages gettext)
#:use-module (gnu packages libevent)
#:use-module (gnu packages linux)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages sphinx)
@ -87,7 +88,7 @@ independently or together to provide resilient infrastructures.")
(define-public libraft
(package
(name "libraft")
(version "0.9.5")
(version "0.9.11")
(home-page "https://github.com/canonical/raft")
(source (origin
(method git-fetch)
@ -96,10 +97,17 @@ independently or together to provide resilient infrastructures.")
(file-name (git-file-name name version))
(sha256
(base32
"1q49f5mmv6nr6dxhnp044xwc6jlczgh0nj0bl6718wiqh28411x0"))))
(arguments '(#:configure-flags '("--disable-uv")))
;; The uv plugin tests fail, if libuv (or the example) is enabled,
;; because setting up the environment requires too much privileges.
"00rsq4z9nykmf7r5rlpv1y6bvckcmg3zv57vh1h681y5pij6cch1"))))
(arguments '(#:configure-flags '("--enable-uv")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'disable-failing-tests
(lambda _
(substitute* "Makefile.am"
((".*test_uv_append.c.*") ""))
#t)))))
(inputs
`(("libuv" ,libuv)))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)

View File

@ -4168,6 +4168,30 @@ supports arbitrary vertex/edge/graph attributes.")
software developed by the Statnet Project.")
(license license:gpl3)))
(define-public r-statcheck
(package
(name "r-statcheck")
(version "1.3.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "statcheck" version))
(sha256
(base32
"0ivybdcrymlsfv6pg6p5bv70qdvgxf2vgp0kf4r0pf2fcvav1mcp"))))
(build-system r-build-system)
(propagated-inputs
`(("r-ggplot2" ,r-ggplot2)
("r-plyr" ,r-plyr)
("r-rmarkdown" ,r-rmarkdown)))
(home-page "https://cran.r-project.org/web/packages/statcheck/")
(synopsis "Extract statistics from articles and recompute p-values")
(description "This package can automatically extract statistical
null-hypothesis significant testing (NHST) results from articles and recompute
the p-values based on the reported test statistic and degrees of freedom to
detect possible inconsistencies.")
(license license:gpl2)))
(define-public r-sna
(package
(name "r-sna")
@ -14695,6 +14719,89 @@ they are often difficult to interpret. Rex allows you to build complex
regular expressions from human readable expressions")
(license license:expat)))
(define-public r-xmlparsedata
(package
(name "r-xmlparsedata")
(version "1.0.3")
(source
(origin
(method url-fetch)
(uri (cran-uri "xmlparsedata" version))
(sha256
(base32
"0gjr3l5z5dp276lchr2649as1rkj56d2mlvbr66yg393zzw50lsh"))))
(properties `((upstream-name . "xmlparsedata")))
(build-system r-build-system)
(home-page "https://github.com/r-lib/xmlparsedata#readme")
(synopsis "Parse data of @code{R} code as an @code{XML} tree")
(description
"This package provides tools to convert the output of
@code{utils::getParseData()} to an @code{XML} tree, that one can search via
@code{XPath}, and is easier to manipulate in general.")
(license license:expat)))
(define-public r-cyclocomp
(package
(name "r-cyclocomp")
(version "1.1.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "cyclocomp" version))
(sha256
(base32
"0gky3svk02wiajw7nfjh30684h3qxili4bvsab0m7b6cggw6bgyd"))))
(properties `((upstream-name . "cyclocomp")))
(build-system r-build-system)
(propagated-inputs
`(("r-callr" ,r-callr)
("r-crayon" ,r-crayon)
("r-desc" ,r-desc)
("r-remotes" ,r-remotes)
("r-withr" ,r-withr)))
(home-page "https://github.com/MangoTheCat/cyclocomp")
(synopsis "Cyclomatic complexity of R code")
(description
"Cyclomatic complexity is a software metric, used to indicate the
complexity of a program. It is a quantitative measure of the number of
linearly independent paths through a program's source code. This package
provides tools to compute this metric.")
(license license:expat)))
(define-public r-lintr
(package
(name "r-lintr")
(version "2.0.0")
(source
(origin
(method url-fetch)
(uri (cran-uri "lintr" version))
(sha256
(base32
"09gbci4v5n4gsfzminly8332fw7faxdi1kkyvpa10dydx02sjcwb"))))
(properties `((upstream-name . "lintr")))
(build-system r-build-system)
(propagated-inputs
`(("r-codetools" ,r-codetools)
("r-crayon" ,r-crayon)
("r-cyclocomp" ,r-cyclocomp)
("r-digest" ,r-digest)
("r-httr" ,r-httr)
("r-jsonlite" ,r-jsonlite)
("r-knitr" ,r-knitr)
("r-rex" ,r-rex)
("r-rstudioapi" ,r-rstudioapi)
("r-stringdist" ,r-stringdist)
("r-testthat" ,r-testthat)
("r-xml2" ,r-xml2)
("r-xmlparsedata" ,r-xmlparsedata)))
(home-page "https://github.com/jimhester/lintr")
(synopsis "Linter for R code")
(description "This package checks adherence to a given style, syntax
errors and possible semantic issues. It supports on the fly checking of R
code edited with @code{RStudio IDE}, @code{Emacs} and @code{Vim}.")
(license license:expat)))
(define-public r-sctransform
(package
(name "r-sctransform")

View File

@ -852,15 +852,16 @@ cannot sign messages in OpenBSD format yet.")
(define-public enchive
(package
(name "enchive")
(version "3.4")
(version "3.5")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/skeeto/" name "/archive/"
version ".tar.gz"))
(sha256
(base32
"17hrxpp4cpn10bk48sfvfjc8hghky34agsnypam1v9f36kbalqfk"))
(file-name (string-append name "-" version ".tar.gz"))))
(method git-fetch)
(uri (git-reference
(url "https://github.com/skeeto/enchive")
(commit version)))
(sha256
(base32
"0fdrfc5l42lj2bvmv9dmkmhmm7qiszwk7cmdvnqad3fs7652g0qa"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; no check target '

View File

@ -19734,6 +19734,54 @@ You can customize: @code{tao-theme-scale-fn}, that returns 16 2-digit numbers;
@code{tao-theme-use-height}.")
(license license:gpl3+))))
(define-public emacs-almost-mono-themes
(let ((commit "c3a85c1a665530a5d830665969725cdba8eceb75")
(revision "0"))
(package
(name "emacs-almost-mono-themes")
(version (git-version "0" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/cryon/almost-mono-themes.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"034k32xkr5ma415hlkbl35z0jxc4sa1inf87hg3y6lrlfl83fyjh"))))
(build-system emacs-build-system)
(home-page "https://github.com/cryon/almost-mono-themes")
(synopsis "Almost monochromatic themes for emacs in a few variants")
(description
"This package provides a collection of almost monochrome Emacs themes:
@code{almost-mono-black} and @code{almost-mono-white}.")
(license license:gpl3+))))
(define-public emacs-quasi-monochrome
(let ((commit "68060dbbc0bbfe4924387392874186c5a29bb434")
(revision "0"))
(package
(name "emacs-quasi-monochrome")
(version (git-version "1.2" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/lbolla/emacs-quasi-monochrome.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"0zp2xr0bjfqrpb0bqczzick1vvbjmipjavrdi70kw6a9caynvq22"))))
(build-system emacs-build-system)
(home-page "https://github.com/lbolla/emacs-quasi-monochrome")
(synopsis "Dark color theme for Emacs")
(description
"This package provides a dark color theme with a black background, high
contrast and few colors.")
(license license:gpl3+))))
(define-public emacs-doom-themes
(package
(name "emacs-doom-themes")

View File

@ -186,7 +186,7 @@ by the b43-open driver of Linux-libre.")
(define-public seabios
(package
(name "seabios")
(version "1.12.1")
(version "1.13.0")
(source
(origin
(method git-fetch)
@ -195,10 +195,10 @@ by the b43-open driver of Linux-libre.")
(commit (string-append "rel-" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1g9y03r5ky58q2g9rhbwfhs42z0zb9f59wfxpwh6zjqa6fyv1r80"))))
(base32 "1n1bd6msfs7xn8844sz2qnm7hb5x2qfl3zb06kp4bx9vdc3i6619"))))
(build-system gnu-build-system)
(native-inputs
`(("python-2" ,python-2)))
`(("python" ,python-wrapper)))
(arguments
`(#:tests? #f ; no check target
#:phases

View File

@ -117,7 +117,7 @@ the Obsidian icon theme.")
(define-public gnome-shell-extension-dash-to-dock
(package
(name "gnome-shell-extension-dash-to-dock")
(version "65")
(version "66")
(source (origin
(method git-fetch)
(uri (git-reference
@ -126,7 +126,7 @@ the Obsidian icon theme.")
version))))
(sha256
(base32
"0ln49l9s0yfl30pi77pz7xlmh63l9vjppi863kry5lay10dsvz47"))
"04krl6rxlp1qc97psraf2kwin7h0mx4c7pnfpi7vhplmvasrwkfh"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
(arguments

View File

@ -27,6 +27,7 @@
(define-module (gnu packages kde)
#:use-module (guix build-system cmake)
#:use-module (guix build-system qt)
#:use-module (guix deprecation)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
@ -37,6 +38,7 @@
#:use-module (gnu packages apr)
#:use-module (gnu packages audio)
#:use-module (gnu packages boost)
#:use-module (gnu packages code)
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
#:use-module (gnu packages documentation)
@ -145,7 +147,7 @@ projects.")
(define-public kdevelop
(package
(name "kdevelop")
(version "5.1.2")
(version "5.4.5")
(source
(origin
(method url-fetch)
@ -154,73 +156,79 @@ projects.")
version ".tar.xz"))
(sha256
(base32
"1iqaq0ilijjigqb34v5wq9in6bnjs0p9cmgbygjmy53xhh3yhm5g"))))
(build-system cmake-build-system)
"08vhbg9ql0402bw3y3xw1kdxhig9sv3ss8g0h4477vy3z17m1h4j"))))
(build-system qt-build-system)
(native-inputs
`(("extra-cmake-modules" ,extra-cmake-modules)
("pkg-config" ,pkg-config)
("shared-mime-info" ,shared-mime-info)
("qttools" ,qttools)))
(inputs
`(("kdevplatform" ,kdevplatform)
("kdevelop-pg-qt" ,kdevelop-pg-qt)
("qtbase" ,qtbase)
("qtdeclarative" ,qtdeclarative)
("qtquickcontrols" ,qtquickcontrols)
("qtwebkit" ,qtwebkit)
`(("boost" ,boost)
("clang" ,clang)
("grantlee" ,grantlee)
("karchive" ,karchive)
("kcmutils" ,kcmutils)
("kconfig" ,kconfig)
("kcrash" ,kcrash)
("kdeclarative" ,kdeclarative)
("kdoctools" ,kdoctools)
("kguiaddons" ,kguiaddons)
("ki18n" ,ki18n)
("kio" ,kio)
("kiconthemes" ,kiconthemes)
("kio" ,kio) ;; not checked as requirement
("kitemmodels" ,kitemmodels)
("kitemviews" ,kitemviews)
("kjobwidgets" ,kjobwidgets)
("knotifyconfig" ,knotifyconfig)
("knotifications" ,knotifications)
("knotifyconfig" ,knotifyconfig)
("kparts" ,kparts)
("kcrash" ,kcrash)
("knewstuff" ,knewstuff)
("krunner" ,krunner)
("kxmlgui" ,kxmlgui)
("libksysguard" ,libksysguard)
("threadweaver" ,threadweaver)
("kservice" ,kservice)
("ktexteditor" ,ktexteditor)
("kwindowsystem" ,kwindowsystem)
("kxmlgui" ,kxmlgui)
("libkomparediff2" ,libkomparediff2)
("oxygen-icons" ,oxygen-icons)
("qtbase" ,qtbase)
("qtdeclarative" ,qtdeclarative)
("qtquickcontrols" ,qtquickcontrols) ;; not checked as requirement
("qtquickcontrols2" ,qtquickcontrols2) ;; not checked as requirement
("qtwebkit" ,qtwebkit)
("threadweaver" ,threadweaver)
;; recommendes
("astyle" ,astyle)
("kdevelop-pg-qt" ,kdevelop-pg-qt)
("libksysguard" ,libksysguard)
;; optional
("apr" ,apr) ; required for subversion support
("apr-util" ,apr-util) ; required for subversion support
("attica" ,attica)
("kconfigwidgets" ,kconfigwidgets)
("knewstuff" ,knewstuff)
("krunner" ,krunner)
;; TODO: OktetaGui, OktetaKastenControllers
("plasma" ,plasma-framework)
("grantlee" ,grantlee)
("libepoxy" ,libepoxy)
("clang" ,clang)
("shared-mime-info" ,shared-mime-info)))
;; TODO: purpose
("sonnet" ,sonnet)
("subversion" ,subversion)))
;; run-time packages - TODO
;; ClazyStandalone
;; Cppcheck
;; heaptrack
;; heaptrack_gui
;; meson
(arguments
`(#:phases
(modify-phases %standard-phases
(delete 'check) ;; there are some issues with the test suite
(add-after 'install 'wrap-executable
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(kdevplatform (assoc-ref inputs "kdevplatform"))
(kio (assoc-ref inputs "kio"))
(kcmutils (assoc-ref inputs "kcmutils"))
(qtquickcontrols (assoc-ref inputs "qtquickcontrols"))
(qtbase (assoc-ref inputs "qtbase"))
(qtdeclarative (assoc-ref inputs "qtdeclarative"))
(qml "/qml"))
(wrap-program (string-append out "/bin/kdevelop")
`("XDG_DATA_DIRS" ":" prefix
,(map (lambda (s) (string-append s "/share"))
(list out kdevplatform kcmutils)))
`("QT_QPA_PLATFORM_PLUGIN_PATH" ":" =
(,(string-append qtbase "/plugins/platforms")))
`("QT_PLUGIN_PATH" ":" prefix
,(map (lambda (s) (string-append s "/lib/plugins"))
(list out kdevplatform kio)))
`("QML2_IMPORT_PATH" ":" prefix
(,(string-append qtquickcontrols qml)
,(string-append qtdeclarative qml))))))))))
`(#:tests? #f ;; there are some issues with the test suite
#:phases
(modify-phases (@ (guix build qt-build-system) %standard-phases)
(add-before 'configure 'add-include-path
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "cmake/modules/FindClang.cmake"
(("^\\s*PATHS \"\\$\\{CLANG_LIBRARY_DIRS\\}\"" line)
(string-append line " " (assoc-ref inputs "clang") "/lib")))
#t)))))
(home-page "https://kdevelop.org")
(synopsis "IDE for C, C++, Python, Javascript and PHP")
(description "The KDevelop IDE provides semantic syntax highlighting, as
@ -233,7 +241,7 @@ software (Git, Subversion, Mercurial, CVS and Bazaar).")
(define-public kdevelop-pg-qt
(package
(name "kdevelop-pg-qt")
(version "2.0.0")
(version "2.2.0")
(source
(origin
(method url-fetch)
@ -241,7 +249,7 @@ software (Git, Subversion, Mercurial, CVS and Bazaar).")
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32 "1av8plqz7hyhrd07avnmn6ryslqlarmxn0pw7swzvb6ddiqp59j4"))))
(base32 "15ja19gg6x7gww4ch12hy585x55ghbkpsiyr8fqiyjk0j6v07hh5"))))
(native-inputs
`(("extra-cmake-modules" ,extra-cmake-modules)))
(inputs
@ -253,77 +261,8 @@ software (Git, Subversion, Mercurial, CVS and Bazaar).")
for some KDevelop language plugins (Ruby, PHP, CSS...).")
(license license:lgpl2.0+)))
(define-public kdevplatform
(package
(name "kdevplatform")
(version "5.1.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kde/stable/kdevelop"
"/" version "/src/kdevplatform-"
version ".tar.xz"))
(sha256
(base32
"0jk6g1kiqpyjy8pca0236b9944gxqnymqv8ny6m8nrraannxs8p6"))))
(build-system cmake-build-system)
(native-inputs
`(("extra-cmake-modules" ,extra-cmake-modules)
("pkg-config" ,pkg-config)))
(inputs
`(("apr" ,apr)
("apr-util" ,apr-util)
("boost" ,boost)
("karchive" ,karchive)
("kconfigwidgets" ,kconfigwidgets)
("kcmutils" ,kcmutils)
("kiconthemes" ,kiconthemes)
("kdeclarative" ,kdeclarative)
("kdoctools" ,kdoctools)
("kguiaddons" ,kguiaddons)
("kinit" ,kinit)
("kitemmodels" ,kitemmodels)
("knewstuff" ,knewstuff)
("knotifications" ,knotifications)
("knotifyconfig" ,knotifyconfig)
("kwindowsystem" ,kwindowsystem)
("kio" ,kio)
("ki18n" ,ki18n)
("kparts" ,kparts)
("kservice" ,kservice)
("grantlee" ,grantlee)
("libkomparediff2" ,libkomparediff2)
("sonnet" ,sonnet)
("threadweaver" ,threadweaver)
("ktexteditor" ,ktexteditor)
("qtbase" ,qtbase)
("qtdeclarative" ,qtdeclarative)
("qtscript" ,qtscript)
("qtwebkit" ,qtwebkit)
("qtx11extras" ,qtx11extras)
("plasma" ,plasma-framework)
("subversion" ,subversion)
("zlib" ,zlib)))
(arguments
`(#:phases
(modify-phases %standard-phases
(delete 'check)
(add-after 'install 'check
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(setenv "CTEST_OUTPUT_ON_FAILURE" "1")
(setenv "QT_PLUGIN_PATH"
(string-append out "/lib/plugins:"
(getenv "QT_PLUGIN_PATH")))
(setenv "XDG_DATA_DIRS"
(string-append out "/share:"
(getenv "XDG_DATA_DIRS")))
(invoke "ctest" "-R" ; almost all tests require a display
"filteringstrategy|kdevvarlengtharray|kdevhash")))))))
(home-page "https://github.com/KDE/kdevplatform")
(synopsis "Framework to build integrated development environments (IDEs)")
(description "KDevPlatform is the basis of KDevelop and contains some
plugins, as well as code to create plugins, or complete applications.")
(license license:gpl3+)))
;; kdevplatform was merged into kdevelop as of 5.2.x
(define-deprecated kdevplatform kdevelop kdevelop)
(define-public krita
(package

View File

@ -35,6 +35,7 @@
;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2019 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
;;; Copyright © 2019 Daniel Schaefer <git@danielschaefer.me>
;;; Copyright © 2019 Diego N. Barbato <dnbarbato@posteo.de>
;;;
;;; This file is part of GNU Guix.
;;;
@ -2522,12 +2523,6 @@ communication over HTTP.")
(home-page "https://github.com/Corvusoft/restbed")
(license license:agpl3+))))
(define fmt-restinio
(package
(inherit fmt)
(arguments
'(#:configure-flags '("-DCMAKE_CXX_FLAGS=-fPIC")))))
(define-public restinio
(package
(name "restinio")
@ -2552,7 +2547,7 @@ communication over HTTP.")
("sobjectizer" ,sobjectizer)))
(propagated-inputs
`(("asio", asio)
("fmt" ,fmt-restinio)
("fmt" ,fmt)
("http-parser", http-parser)))
(arguments
`(#:configure-flags '("-DRESTINIO_INSTALL=on")
@ -2591,7 +2586,7 @@ and targeted primarily for asynchronous processing of HTTP-requests.")
("readline" ,readline)
("jsoncpp" ,jsoncpp)
("openssl" ,openssl)
("fmt" ,fmt-restinio)))
("fmt" ,fmt)))
(propagated-inputs
`(("argon2" ,argon2) ; TODO: Needed for the pkg-config .pc file to work?
("msgpack" ,msgpack))) ;included in several installed headers
@ -2822,3 +2817,33 @@ to be a teaching tool and presents the subnetting results as
easy-to-understand binary values.")
(home-page "http://jodies.de/ipcalc")
(license license:gpl2+)))
(define-public vde2
(package
(name "vde2")
(version "2.3.2")
(source
(origin
(method url-fetch)
(uri "mirror://sourceforge/vde/vde2/2.3.2/vde2-2.3.2.tar.gz")
(sha256
(base32 "14xga0ib6p1wrv3hkl4sa89yzjxv7f1vfqaxsch87j6scdm59pr2"))))
(build-system gnu-build-system)
(arguments
`(#:parallel-build? #f)) ; Build fails if #t.
(inputs
`(("python" ,python)
("libpcap" ,libpcap)
("openssl" ,openssl-1.0))) ; Build fails with 1.1.
(home-page "https://github.com/virtualsquare/vde-2")
(synopsis "Virtual Distributed Ethernet")
(description "VDE is a set of programs to provide virtual software-defined
Ethernet network interface controllers across multiple virtual or
physical, local or remote devices. The VDE architecture provides
virtual counterparts to hardware components such as switches and
cables.")
(license (list license:gpl2
license:lgpl2.1 ; libvdeplug
(license:non-copyleft ; slirpvde
"file://COPYING.slirpvde"
"See COPYING.slirpvde in the distribution.")))))

View File

@ -183,3 +183,11 @@ applications. Applications built with NSS can support SSL v2 and v3, TLS,
PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other
security standards.")
(license license:mpl2.0)))
(define nss/fixed
(package
(inherit nss)
(source (origin
(inherit (package-source nss))
(patches (append (search-patches "nss-CVE-2019-11745.patch")
(origin-patches (package-source nss))))))))

View File

@ -0,0 +1,24 @@
Fix CVE-2019-11745 (Out-of-bounds write when passing an output buffer smaller
than the block size to NSC_EncryptUpdate).
Copied from Debian, equivalent to upstream fix:
<https://hg.mozilla.org/projects/nss/rev/1e22a0c93afe9f46545560c86caedef9dab6cfda>.
# HG changeset patch
# User Craig Disselkoen <cdisselk@cs.ucsd.edu>
# Date 1574189697 25200
# Node ID 60bca7c6dc6dc44579b9b3e0fb62ca3b82d92eec
# Parent 64e55c9f658e2a75f0835d00a8a1cdc2f25c74d6
Bug 1586176 - EncryptUpdate should use maxout not block size. r=franziskus
--- a/nss/lib/softoken/pkcs11c.c
+++ b/nss/lib/softoken/pkcs11c.c
@@ -1285,7 +1285,7 @@ NSC_EncryptUpdate(CK_SESSION_HANDLE hSes
}
/* encrypt the current padded data */
rv = (*context->update)(context->cipherInfo, pEncryptedPart,
- &padoutlen, context->blockSize, context->padBuf,
+ &padoutlen, maxout, context->padBuf,
context->blockSize);
if (rv != SECSuccess) {
return sftk_MapCryptError(PORT_GetError());

View File

@ -174,6 +174,8 @@ different programming languages.")
(base32
"0h148anbaqgch6n69pxsvs1c9wmykgd052wmzgdia7qpz8w6p8dl"))))
(build-system cmake-build-system)
(arguments
'(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")))
(native-inputs
`(("unzip" ,unzip)))
(home-page "http://fmtlib.net/")

View File

@ -11768,19 +11768,41 @@ PNG, JPEG, JPEG2000 and GIF files in pure Python.")
(define-public python-argcomplete
(package
(name "python-argcomplete")
(version "1.7.0")
(version "1.10.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "argcomplete" version))
(sha256
(base32
"11bwiw6j0nilgz81xnw6f1npyga3prp8asjqrm87cdr3ria5l03x"))))
(origin
(method url-fetch)
(uri (pypi-uri "argcomplete" version))
(sha256
(base32
"02jkc44drb0yjz6x28lvg6rj607n8r2irdpdvyylm8xnycn54zx3"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'embed-tool-references
(lambda _
(substitute* "argcomplete/bash_completion.d/python-argcomplete.sh"
((" grep")
(string-append " " (which "grep")))
((" egrep")
(string-append " " (which "egrep")))
(("elif which")
(string-append "elif " (which "which")))
(("\\$\\(which")
(string-append "$(" (which "which"))))
#t)))))
(inputs
`(("grep" ,grep)
("which" ,which)))
(native-inputs
`(("python-pexpect" ,python-pexpect)
`(("python-coverage" ,python-coverage)
("python-flake8" ,python-flake8)
("python-pexpect" ,python-pexpect)
("python-wheel" ,python-wheel)
("tcsh" ,tcsh)
("bash-full" ,bash))) ;full Bash for 'test_file_completion'
("fish" ,fish)
("bash-full" ,bash))) ;full Bash for 'test_file_completion'
(home-page "https://github.com/kislyuk/argcomplete")
(synopsis "Shell tab completion for Python argparse")
(description "argcomplete provides extensible command line tab completion

View File

@ -71,7 +71,7 @@
(define-public libssh
(package
(name "libssh")
(version "0.9.2")
(version "0.9.3")
(source (origin
(method git-fetch)
(uri (git-reference
@ -79,23 +79,13 @@
(commit (string-append "libssh-" version))))
(sha256
(base32
"14g4rvp91skn2hlsjyhkv58vhng65xrf34cfqffixa4al869hzgj"))
"175i3xybg69d5lb078334v6dd3njm743kww8f67ix9w33969rmzf"))
(file-name (git-file-name name version))))
(build-system cmake-build-system)
(outputs '("out" "debug"))
(arguments
'(#:configure-flags '("-DWITH_GCRYPT=ON")
#:phases (modify-phases %standard-phases
(add-before 'configure 'avoid-werror
(lambda _
;; Avoid '-Werror'. Presumably this works fine with
;; gcc@8 on x86_64 but leads to errors with our older
;; compiler.
(substitute* "CompilerChecks.cmake"
(("-Werror=") "-W"))
#t)))
;; TODO: Add 'CMockery' and '-DWITH_TESTING=ON' for the test suite.
#:tests? #f))
(inputs `(("zlib" ,zlib)

View File

@ -531,7 +531,7 @@ everything from small to very large projects with speed and efficiency.")
(define-public libgit2
(package
(name "libgit2")
(version "0.28.3")
(version "0.28.4")
(source (origin
(method git-fetch)
(uri (git-reference
@ -540,7 +540,7 @@ everything from small to very large projects with speed and efficiency.")
(file-name (git-file-name name version))
(sha256
(base32
"07068flm9xi25wmcs65nyfg6a7ikgfv96i2nhgyj5gzs9gljqiz2"))
"171b25aym4q88bidc4c76y4l6jmdwifm3q9zjqsll0wjhlkycfy1"))
(patches (search-patches "libgit2-avoid-python.patch"
"libgit2-mtime-0.patch"))

View File

@ -1454,6 +1454,7 @@ projects while introducing many more.")
(build-system gnu-build-system)
(arguments
`(#:configure-flags (list "--enable-shared"
"--disable-static"
"--as=yasm"
;; Limit size to avoid CVE-2015-1258
"--size-limit=16384x16384"

View File

@ -220,7 +220,7 @@ exec smbd $@")))
("spice" ,spice)
("usbredir" ,usbredir)
("util-linux" ,util-linux)
;; ("vde2" ,vde2)
("vde2" ,vde2)
("virglrenderer" ,virglrenderer)
("zlib" ,zlib)))
(native-inputs `(("gettext" ,gettext-minimal)
@ -268,7 +268,7 @@ server and embedded PowerPC, and S390 guests.")
'("gettext")))
(inputs (fold alist-delete (package-inputs qemu)
'("libusb" "mesa" "sdl2" "spice" "virglrenderer" "gtk+"
"usbredir" "libdrm" "libepoxy" "pulseaudio")))))
"usbredir" "libdrm" "libepoxy" "pulseaudio" "vde2")))))
;; The GRUB test suite fails with later versions of Qemu, so we
;; keep it at 2.10 for now. See

View File

@ -10,6 +10,7 @@
;;; Copyright © 2018 Meiyo Peng <meiyo.peng@gmail.com>
;;; Copyright © 2019 Leo Famulari <leo@famulari.name>
;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -42,6 +43,7 @@
#:use-module (gnu packages compression)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages guile)
#:use-module (gnu packages libevent)
#:use-module (gnu packages linux)
#:use-module (gnu packages nss)
@ -134,7 +136,8 @@ Only \"Universal TUN/TAP device driver support\" is needed in the kernel.")
(base32
"1g41yarz2bl0f73kbjqnywr485ghanbp7nmspklfb0n07yp0z6ak"))))
(build-system gnu-build-system)
(inputs `(("coreutils" ,coreutils)
(inputs `(("guile" ,guile-2.2) ; for the wrapper scripts
("coreutils" ,coreutils)
("grep" ,grep)
("iproute2" ,iproute) ; for ip
("net-tools" ,net-tools) ; for ifconfig, route
@ -177,7 +180,7 @@ Only \"Universal TUN/TAP device driver support\" is needed in the kernel.")
(let ((out (assoc-ref outputs "out")))
(for-each
(lambda (script)
(wrap-program script
(wrap-script (string-append out "/etc/vpnc/" script)
`("PATH" ":" prefix
,(map (lambda (name)
(let ((input (assoc-ref inputs name)))
@ -189,8 +192,9 @@ Only \"Universal TUN/TAP device driver support\" is needed in the kernel.")
"net-tools"
"sed"
"which")))))
(find-files (string-append out "/etc/vpnc/vpnc-script")
"^vpnc-script"))
(list "vpnc-script-ptrtd"
"vpnc-script-sshd"
"vpnc-script"))
#t))))
#:tests? #f)) ; no tests
(home-page "http://git.infradead.org/users/dwmw2/vpnc-scripts.git")

View File

@ -143,6 +143,8 @@ compressed video format.")
(base32
"150047wnllz4r94whb9r73l5qf0z5z3rlhy98bawfbblmkq8mbpa"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("--disable-static")))
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs

View File

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;;
;;; This file is part of GNU Guix.
@ -505,7 +505,7 @@ s-expression corresponding to that package, or #f on failure."
((bioconductor)
;; Retry import from CRAN
(cran->guix-package package-name 'cran))
(else #f)))))))
(else (values #f '()))))))))
(define* (cran-recursive-import package-name #:optional (repo 'cran))
(recursive-import package-name repo

View File

@ -178,21 +178,20 @@ and LICENSE."
(close-port port)
pkg))
(define %dual-license-rx
;; Dual licensing is represented by a string such as "MIT OR Apache-2.0".
;; This regexp matches that.
(make-regexp "^(.*) OR (.*)$"))
(define (string->license string)
(filter-map (lambda (license)
(and (not (string-null? license))
(not (any (lambda (elem) (string=? elem license))
'("AND" "OR" "WITH")))
(or (spdx-string->license license)
'unknown-license!)))
(string-split string (string->char-set " /"))))
(define* (crate->guix-package crate-name #:optional version)
"Fetch the metadata for CRATE-NAME from crates.io, and return the
`package' s-expression corresponding to that package, or #f on failure.
When VERSION is specified, attempt to fetch that version; otherwise fetch the
latest version of CRATE-NAME."
(define (string->license string)
(match (regexp-exec %dual-license-rx string)
(#f (list (spdx-string->license string)))
(m (list (spdx-string->license (match:substring m 1))
(spdx-string->license (match:substring m 2))))))
(define (normal-dependency? dependency)
(eq? (crate-dependency-kind dependency) 'normal))

View File

@ -34,15 +34,16 @@
#:use-module (guix gexp)
#:use-module (guix store)
#:use-module (guix download)
#:use-module (guix sets)
#:use-module (gnu packages)
#:use-module (ice-9 match)
#:use-module (ice-9 rdelim)
#:use-module (ice-9 receive)
#:use-module (ice-9 regex)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-9)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-41)
#:export (factorize-uri
flatten
@ -377,40 +378,53 @@ separated by PRED."
(chr (char-downcase chr)))
name)))
(define (topological-sort nodes
node-dependencies
node-name)
"Perform a breadth-first traversal of the graph rooted at NODES, a list of
nodes, and return the list of nodes sorted in topological order. Call
NODE-DEPENDENCIES to obtain the dependencies of a node, and NODE-NAME to
obtain a node's uniquely identifying \"key\"."
(let loop ((nodes nodes)
(result '())
(visited (set)))
(match nodes
(()
result)
((head . tail)
(if (set-contains? visited (node-name head))
(loop tail result visited)
(let ((dependencies (node-dependencies head)))
(loop (append dependencies tail)
(cons head result)
(set-insert (node-name head) visited))))))))
(define* (recursive-import package-name repo
#:key repo->guix-package guix-name
#:allow-other-keys)
"Generate a stream of package expressions for PACKAGE-NAME and all its
dependencies."
(define (exists? dependency)
(not (null? (find-packages-by-name (guix-name dependency)))))
(define initial-state (list #f (list package-name) (list)))
(define (step state)
(match state
((prev (next . rest) done)
(define (handle? dep)
(and
(not (equal? dep next))
(not (member dep done))
(not (exists? dep))))
(receive (package . dependencies) (repo->guix-package next repo)
(list
(if package package '()) ;; default #f on failure would interrupt
(if package
(lset-union equal? rest (filter handle? (car dependencies)))
rest)
(cons next done))))
((prev '() done)
(list #f '() done))))
"Return a stream of package expressions for PACKAGE-NAME and all its
dependencies, sorted in topological order. For each package,
call (REPO->GUIX-PACKAGE NAME REPO), which should return a package expression
and a list of dependencies; call (GUIX-NAME NAME) to obtain the Guix package
name corresponding to the upstream name."
(define-record-type <node>
(make-node name package dependencies)
node?
(name node-name)
(package node-package)
(dependencies node-dependencies))
;; Generate a lazy stream of package expressions for all unknown
;; dependencies in the graph.
(stream-unfold
;; map: produce a stream element
(match-lambda ((latest queue done) latest))
;; predicate
(match-lambda ((latest queue done) latest))
;; generator: update the queue
step
;; initial state
(step initial-state)))
(define (exists? name)
(not (null? (find-packages-by-name (guix-name name)))))
(define (lookup-node name)
(receive (package dependencies) (repo->guix-package name repo)
(make-node name package dependencies)))
(map node-package
(topological-sort (list (lookup-node package-name))
(lambda (node)
(map lookup-node
(remove exists?
(node-dependencies node))))
node-name)))

View File

@ -27,7 +27,6 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-37)
#:use-module (srfi srfi-41)
#:use-module (ice-9 match)
#:use-module (ice-9 format)
#:export (guix-import-cran))
@ -98,10 +97,8 @@ Import and convert the CRAN package for PACKAGE-NAME.\n"))
(if (assoc-ref opts 'recursive)
;; Recursive import
(map package->definition
(reverse
(stream->list
(cran-recursive-import package-name
(or (assoc-ref opts 'repo) 'cran)))))
(cran-recursive-import package-name
(or (assoc-ref opts 'repo) 'cran)))
;; Single import
(let ((sexp (cran->guix-package package-name
(or (assoc-ref opts 'repo) 'cran))))

View File

@ -28,7 +28,6 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-37)
#:use-module (srfi srfi-41)
#:use-module (ice-9 match)
#:use-module (ice-9 format)
#:export (guix-import-crate))
@ -101,9 +100,7 @@ Import and convert the crate.io package for PACKAGE-NAME.\n"))
`(define-public ,(string->symbol name)
,pkg))
(_ #f))
(reverse
(stream->list
(crate-recursive-import name))))
(crate-recursive-import name))
(let ((sexp (crate->guix-package name version)))
(unless sexp
(leave (G_ "failed to download meta-data for package '~a'~%")

View File

@ -27,7 +27,6 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-37)
#:use-module (srfi srfi-41)
#:use-module (ice-9 match)
#:use-module (ice-9 format)
#:export (guix-import-elpa))
@ -101,10 +100,8 @@ Import the latest package named PACKAGE-NAME from an ELPA repository.\n"))
`(define-public ,(string->symbol name)
,pkg))
(_ #f))
(reverse
(stream->list
(elpa-recursive-import package-name
(or (assoc-ref opts 'repo) 'gnu)))))
(elpa-recursive-import package-name
(or (assoc-ref opts 'repo) 'gnu)))
(let ((sexp (elpa->guix-package package-name (assoc-ref opts 'repo))))
(unless sexp
(leave (G_ "failed to download package '~a'~%") package-name))

View File

@ -26,7 +26,6 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-37)
#:use-module (srfi srfi-41)
#:use-module (ice-9 match)
#:use-module (ice-9 format)
#:export (guix-import-gem))
@ -95,9 +94,7 @@ Import and convert the RubyGems package for PACKAGE-NAME.\n"))
`(define-public ,(string->symbol name)
,pkg))
(_ #f))
(reverse
(stream->list
(gem-recursive-import package-name 'rubygems))))
(gem-recursive-import package-name 'rubygems))
(let ((sexp (gem->guix-package package-name)))
(unless sexp
(leave (G_ "failed to download meta-data for package '~a'~%")

View File

@ -27,7 +27,6 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-37)
#:use-module (srfi srfi-41)
#:use-module (ice-9 match)
#:use-module (ice-9 format)
#:export (guix-import-hackage))
@ -130,9 +129,7 @@ version.\n"))
`(define-public ,(string->symbol name)
,pkg))
(_ #f))
(reverse
(stream->list
(apply hackage-recursive-import arguments))))
(apply hackage-recursive-import arguments))
;; Single import
(apply hackage->guix-package arguments))))
(unless sexp (error-fn))

View File

@ -25,7 +25,6 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-37)
#:use-module (srfi srfi-41)
#:use-module (ice-9 match)
#:use-module (ice-9 format)
#:export (guix-import-opam))
@ -94,9 +93,7 @@ Import and convert the opam package for PACKAGE-NAME.\n"))
`(define-public ,(string->symbol name)
,pkg))
(_ #f))
(reverse
(stream->list
(opam-recursive-import package-name))))
(opam-recursive-import package-name))
;; Single import
(let ((sexp (opam->guix-package package-name)))
(unless sexp

View File

@ -26,7 +26,6 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-37)
#:use-module (srfi srfi-41)
#:use-module (ice-9 match)
#:use-module (ice-9 format)
#:export (guix-import-pypi))
@ -95,9 +94,7 @@ Import and convert the PyPI package for PACKAGE-NAME.\n"))
`(define-public ,(string->symbol name)
,pkg))
(_ #f))
(reverse
(stream->list
(pypi-recursive-import package-name))))
(pypi-recursive-import package-name))
;; Single import
(let ((sexp (pypi->guix-package package-name)))
(unless sexp

View File

@ -27,7 +27,6 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-37)
#:use-module (srfi srfi-41)
#:use-module (ice-9 match)
#:use-module (ice-9 format)
#:export (guix-import-stackage))
@ -110,9 +109,7 @@ Import and convert the LTS Stackage package for PACKAGE-NAME.\n"))
`(define-public ,(string->symbol name)
,pkg))
(_ #f))
(reverse
(stream->list
(apply stackage-recursive-import arguments))))
(apply stackage-recursive-import arguments))
;; Single import
(apply stackage->guix-package arguments))))
(unless sexp (error-fn))

View File

@ -28,7 +28,7 @@
#:use-module (ice-9 match)
#:use-module (srfi srfi-64))
(define test-crate
(define test-foo-crate
"{
\"crate\": {
\"max_version\": \"1.0.0\",
@ -50,7 +50,7 @@
}
}")
(define test-dependencies
(define test-foo-dependencies
"{
\"dependencies\": [
{
@ -60,9 +60,182 @@
]
}")
(define test-root-crate
"{
\"crate\": {
\"max_version\": \"1.0.0\",
\"name\": \"root\",
\"description\": \"summary\",
\"homepage\": \"http://example.com\",
\"repository\": \"http://example.com\",
\"keywords\": [\"dummy\" \"test\"],
\"categories\": [\"test\"]
\"actual_versions\": [
{ \"id\": \"foo\",
\"num\": \"1.0.0\",
\"license\": \"MIT OR Apache-2.0\",
\"links\": {
\"dependencies\": \"/api/v1/crates/root/1.0.0/dependencies\"
}
}
]
}
}")
(define test-root-dependencies
"{
\"dependencies\": [
{
\"crate_id\": \"intermediate-1\",
\"kind\": \"normal\",
},
{
\"crate_id\": \"intermediate-2\",
\"kind\": \"normal\",
}
{
\"crate_id\": \"leaf-alice\",
\"kind\": \"normal\",
},
{
\"crate_id\": \"leaf-bob\",
\"kind\": \"normal\",
},
]
}")
(define test-intermediate-1-crate
"{
\"crate\": {
\"max_version\": \"1.0.0\",
\"name\": \"intermediate-1\",
\"description\": \"summary\",
\"homepage\": \"http://example.com\",
\"repository\": \"http://example.com\",
\"keywords\": [\"dummy\" \"test\"],
\"categories\": [\"test\"]
\"actual_versions\": [
{ \"id\": \"intermediate-1\",
\"num\": \"1.0.0\",
\"license\": \"MIT OR Apache-2.0\",
\"links\": {
\"dependencies\": \"/api/v1/crates/intermediate-1/1.0.0/dependencies\"
}
}
]
}
}")
(define test-intermediate-1-dependencies
"{
\"dependencies\": [
{
\"crate_id\": \"intermediate-2\",
\"kind\": \"normal\",
},
{
\"crate_id\": \"leaf-alice\",
\"kind\": \"normal\",
},
{
\"crate_id\": \"leaf-bob\",
\"kind\": \"normal\",
}
]
}")
(define test-intermediate-2-crate
"{
\"crate\": {
\"max_version\": \"1.0.0\",
\"name\": \"intermediate-2\",
\"description\": \"summary\",
\"homepage\": \"http://example.com\",
\"repository\": \"http://example.com\",
\"keywords\": [\"dummy\" \"test\"],
\"categories\": [\"test\"]
\"actual_versions\": [
{ \"id\": \"intermediate-2\",
\"num\": \"1.0.0\",
\"license\": \"MIT OR Apache-2.0\",
\"links\": {
\"dependencies\": \"/api/v1/crates/intermediate-2/1.0.0/dependencies\"
}
}
]
}
}")
(define test-intermediate-2-dependencies
"{
\"dependencies\": [
{
\"crate_id\": \"leaf-bob\",
\"kind\": \"normal\",
},
]
}")
(define test-leaf-alice-crate
"{
\"crate\": {
\"max_version\": \"1.0.0\",
\"name\": \"leaf-alice\",
\"description\": \"summary\",
\"homepage\": \"http://example.com\",
\"repository\": \"http://example.com\",
\"keywords\": [\"dummy\" \"test\"],
\"categories\": [\"test\"]
\"actual_versions\": [
{ \"id\": \"leaf-alice\",
\"num\": \"1.0.0\",
\"license\": \"MIT OR Apache-2.0\",
\"links\": {
\"dependencies\": \"/api/v1/crates/leaf-alice/1.0.0/dependencies\"
}
}
]
}
}")
(define test-leaf-alice-dependencies
"{
\"dependencies\": []
}")
(define test-leaf-bob-crate
"{
\"crate\": {
\"max_version\": \"1.0.0\",
\"name\": \"leaf-bob\",
\"description\": \"summary\",
\"homepage\": \"http://example.com\",
\"repository\": \"http://example.com\",
\"keywords\": [\"dummy\" \"test\"],
\"categories\": [\"test\"]
\"actual_versions\": [
{ \"id\": \"leaf-bob\",
\"num\": \"1.0.0\",
\"license\": \"MIT OR Apache-2.0\",
\"links\": {
\"dependencies\": \"/api/v1/crates/leaf-bob/1.0.0/dependencies\"
}
}
]
}
}")
(define test-leaf-bob-dependencies
"{
\"dependencies\": []
}")
(define test-source-hash
"")
(define string->license
(@@ (guix import crate) string->license))
(test-begin "crate")
(test-equal "guix-package->crate-name"
@ -79,14 +252,14 @@
(lambda (url . rest)
(match url
("https://crates.io/api/v1/crates/foo"
(open-input-string test-crate))
(open-input-string test-foo-crate))
("https://crates.io/api/v1/crates/foo/1.0.0/download"
(set! test-source-hash
(bytevector->nix-base32-string
(sha256 (string->bytevector "empty file\n" "utf-8"))))
(open-input-string "empty file\n"))
("https://crates.io/api/v1/crates/foo/1.0.0/dependencies"
(open-input-string test-dependencies))
(open-input-string test-foo-dependencies))
(_ (error "Unexpected URL: " url)))))
(match (crate->guix-package "foo")
(('package
@ -111,4 +284,180 @@
(x
(pk 'fail x #f)))))
(test-assert "cargo-recursive-import"
;; Replace network resources with sample data.
(mock ((guix http-client) http-fetch
(lambda (url . rest)
(match url
("https://crates.io/api/v1/crates/root"
(open-input-string test-root-crate))
("https://crates.io/api/v1/crates/root/1.0.0/download"
(set! test-source-hash
(bytevector->nix-base32-string
(sha256 (string->bytevector "empty file\n" "utf-8"))))
(open-input-string "empty file\n"))
("https://crates.io/api/v1/crates/root/1.0.0/dependencies"
(open-input-string test-root-dependencies))
("https://crates.io/api/v1/crates/intermediate-1"
(open-input-string test-intermediate-1-crate))
("https://crates.io/api/v1/crates/intermediate-1/1.0.0/download"
(set! test-source-hash
(bytevector->nix-base32-string
(sha256 (string->bytevector "empty file\n" "utf-8"))))
(open-input-string "empty file\n"))
("https://crates.io/api/v1/crates/intermediate-1/1.0.0/dependencies"
(open-input-string test-intermediate-1-dependencies))
("https://crates.io/api/v1/crates/intermediate-2"
(open-input-string test-intermediate-2-crate))
("https://crates.io/api/v1/crates/intermediate-2/1.0.0/download"
(set! test-source-hash
(bytevector->nix-base32-string
(sha256 (string->bytevector "empty file\n" "utf-8"))))
(open-input-string "empty file\n"))
("https://crates.io/api/v1/crates/intermediate-2/1.0.0/dependencies"
(open-input-string test-intermediate-2-dependencies))
("https://crates.io/api/v1/crates/leaf-alice"
(open-input-string test-leaf-alice-crate))
("https://crates.io/api/v1/crates/leaf-alice/1.0.0/download"
(set! test-source-hash
(bytevector->nix-base32-string
(sha256 (string->bytevector "empty file\n" "utf-8"))))
(open-input-string "empty file\n"))
("https://crates.io/api/v1/crates/leaf-alice/1.0.0/dependencies"
(open-input-string test-leaf-alice-dependencies))
("https://crates.io/api/v1/crates/leaf-bob"
(open-input-string test-leaf-bob-crate))
("https://crates.io/api/v1/crates/leaf-bob/1.0.0/download"
(set! test-source-hash
(bytevector->nix-base32-string
(sha256 (string->bytevector "empty file\n" "utf-8"))))
(open-input-string "empty file\n"))
("https://crates.io/api/v1/crates/leaf-bob/1.0.0/dependencies"
(open-input-string test-leaf-bob-dependencies))
(_ (error "Unexpected URL: " url)))))
(match (crate-recursive-import "root")
;; rust-intermediate-2 has no dependency on the rust-leaf-alice package, so this is a valid ordering
((('package
('name "rust-leaf-alice")
('version (? string? ver))
('source
('origin
('method 'url-fetch)
('uri ('crate-uri "leaf-alice" 'version))
('file-name
('string-append 'name "-" 'version ".tar.gz"))
('sha256
('base32
(? string? hash)))))
('build-system 'cargo-build-system)
('home-page "http://example.com")
('synopsis "summary")
('description "summary")
('license ('list 'license:expat 'license:asl2.0)))
('package
('name "rust-leaf-bob")
('version (? string? ver))
('source
('origin
('method 'url-fetch)
('uri ('crate-uri "leaf-bob" 'version))
('file-name
('string-append 'name "-" 'version ".tar.gz"))
('sha256
('base32
(? string? hash)))))
('build-system 'cargo-build-system)
('home-page "http://example.com")
('synopsis "summary")
('description "summary")
('license ('list 'license:expat 'license:asl2.0)))
('package
('name "rust-intermediate-2")
('version (? string? ver))
('source
('origin
('method 'url-fetch)
('uri ('crate-uri "intermediate-2" 'version))
('file-name
('string-append 'name "-" 'version ".tar.gz"))
('sha256
('base32
(? string? hash)))))
('build-system 'cargo-build-system)
('arguments
('quasiquote
('#:cargo-inputs (("rust-leaf-bob" ('unquote rust-leaf-bob))))))
('home-page "http://example.com")
('synopsis "summary")
('description "summary")
('license ('list 'license:expat 'license:asl2.0)))
('package
('name "rust-intermediate-1")
('version (? string? ver))
('source
('origin
('method 'url-fetch)
('uri ('crate-uri "intermediate-1" 'version))
('file-name
('string-append 'name "-" 'version ".tar.gz"))
('sha256
('base32
(? string? hash)))))
('build-system 'cargo-build-system)
('arguments
('quasiquote
('#:cargo-inputs (("rust-intermediate-2" ('unquote rust-intermediate-2))
("rust-leaf-alice" ('unquote rust-leaf-alice))
("rust-leaf-bob" ('unquote rust-leaf-bob))))))
('home-page "http://example.com")
('synopsis "summary")
('description "summary")
('license ('list 'license:expat 'license:asl2.0)))
('package
('name "rust-root")
('version (? string? ver))
('source
('origin
('method 'url-fetch)
('uri ('crate-uri "root" 'version))
('file-name
('string-append 'name "-" 'version ".tar.gz"))
('sha256
('base32
(? string? hash)))))
('build-system 'cargo-build-system)
('arguments
('quasiquote
('#:cargo-inputs (("rust-intermediate-1" ('unquote rust-intermediate-1))
("rust-intermediate-2" ('unquote rust-intermediate-2))
("rust-leaf-alice" ('unquote rust-leaf-alice))
("rust-leaf-bob" ('unquote rust-leaf-bob))))))
('home-page "http://example.com")
('synopsis "summary")
('description "summary")
('license ('list 'license:expat 'license:asl2.0))))
#t)
(x
(pk 'fail x #f)))))
(test-equal "licenses: MIT OR Apache-2.0"
'(license:expat license:asl2.0)
(string->license "MIT OR Apache-2.0"))
(test-equal "licenses: Apache-2.0 / MIT"
'(license:asl2.0 license:expat)
(string->license "Apache-2.0 / MIT"))
(test-equal "licenses: Apache-2.0 WITH LLVM-exception"
'(license:asl2.0 unknown-license!)
(string->license "Apache-2.0 WITH LLVM-exception"))
(test-equal "licenses: MIT/Apache-2.0 AND BSD-2-Clause"
'(license:expat license:asl2.0 unknown-license!)
(string->license "MIT/Apache-2.0 AND BSD-2-Clause"))
(test-equal "licenses: MIT/Apache-2.0"
'(license:expat license:asl2.0)
(string->license "MIT/Apache-2.0"))
(test-end "crate")

View File

@ -24,7 +24,6 @@
#:use-module (gcrypt hash)
#:use-module (guix tests)
#:use-module ((guix build utils) #:select (delete-file-recursively))
#:use-module (srfi srfi-41)
#:use-module (srfi srfi-64)
#:use-module (ice-9 match))
@ -121,24 +120,23 @@
(values (open-input-string test-bundler-json)
(string-length test-bundler-json)))
(_ (error "Unexpected URL: " url)))))
(match (stream->list (gem-recursive-import "foo"))
(match (gem-recursive-import "foo")
((('package
('name "ruby-foo")
('name "ruby-bar")
('version "1.0.0")
('source
('origin
('method 'url-fetch)
('uri ('rubygems-uri "foo" 'version))
('uri ('rubygems-uri "bar" 'version))
('sha256
('base32
"1a270mlajhrmpqbhxcqjqypnvgrq4pgixpv3w9gwp1wrrapnwrzk"))))
('build-system 'ruby-build-system)
('propagated-inputs
('quasiquote
(("bundler" ('unquote 'bundler))
("ruby-bar" ('unquote 'ruby-bar)))))
('synopsis "A cool gem")
('description "This package provides a cool gem")
(('"bundler" ('unquote 'bundler)))))
('synopsis "Another cool gem")
('description "Another cool gem")
('home-page "https://example.com")
('license ('list 'license:expat 'license:asl2.0)))
('package
@ -157,21 +155,22 @@
('home-page "https://bundler.io/")
('license 'license:expat))
('package
('name "ruby-bar")
('name "ruby-foo")
('version "1.0.0")
('source
('origin
('method 'url-fetch)
('uri ('rubygems-uri "bar" 'version))
('uri ('rubygems-uri "foo" 'version))
('sha256
('base32
"1a270mlajhrmpqbhxcqjqypnvgrq4pgixpv3w9gwp1wrrapnwrzk"))))
('build-system 'ruby-build-system)
('propagated-inputs
('quasiquote
(('"bundler" ('unquote 'bundler)))))
('synopsis "Another cool gem")
('description "Another cool gem")
(("bundler" ('unquote 'bundler))
("ruby-bar" ('unquote 'ruby-bar)))))
('synopsis "A cool gem")
('description "This package provides a cool gem")
('home-page "https://example.com")
('license ('list 'license:expat 'license:asl2.0))))
#t)

View File

@ -24,7 +24,8 @@
#:use-module (guix packages)
#:use-module (guix build-system)
#:use-module (gnu packages)
#:use-module (srfi srfi-64))
#:use-module (srfi srfi-64)
#:use-module (ice-9 match))
(test-begin "import-utils")
@ -41,6 +42,26 @@
'license:lgpl2.0
(license->symbol license:lgpl2.0))
(test-equal "recursive-import"
'((package ;package expressions in topological order
(name "bar"))
(package
(name "foo")
(inputs `(("bar" ,bar)))))
(recursive-import "foo" 'repo
#:repo->guix-package
(match-lambda*
(("foo" 'repo)
(values '(package
(name "foo")
(inputs `(("bar" ,bar))))
'("bar")))
(("bar" 'repo)
(values '(package
(name "bar"))
'())))
#:guix-name identity))
(test-assert "alist->package with simple source"
(let* ((meta '(("name" . "hello")
("version" . "2.10")