Merge branch 'master' into staging
This commit is contained in:
commit
9b601fc211
@ -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 \
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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")
|
||||
|
@ -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 '
|
||||
|
@ -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")
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.")))))
|
||||
|
@ -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))))))))
|
||||
|
24
gnu/packages/patches/nss-CVE-2019-11745.patch
Normal file
24
gnu/packages/patches/nss-CVE-2019-11745.patch
Normal 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());
|
@ -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/")
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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"))
|
||||
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
@ -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")
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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))
|
||||
|
@ -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)))
|
||||
|
@ -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))))
|
||||
|
@ -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'~%")
|
||||
|
@ -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))
|
||||
|
@ -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'~%")
|
||||
|
@ -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))
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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))
|
||||
|
357
tests/crate.scm
357
tests/crate.scm
@ -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")
|
||||
|
@ -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)
|
||||
|
@ -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")
|
||||
|
Loading…
Reference in New Issue
Block a user