Merge branch 'master' into staging

This commit is contained in:
Marius Bakke 2018-12-12 22:00:52 +01:00
commit 12878d12ac
No known key found for this signature in database
GPG Key ID: A2A06DF2A33A54FA
42 changed files with 1249 additions and 210 deletions

View File

@ -329,6 +329,7 @@ SCM_TESTS = \
tests/base16.scm \
tests/base32.scm \
tests/base64.scm \
tests/channels.scm \
tests/cpan.scm \
tests/cpio.scm \
tests/crate.scm \

View File

@ -187,14 +187,14 @@ system.")
(bootloader u-boot-bootloader)
(target #f))))
#:disk-image-size
(* 1024 MiB))))))
(* 1500 MiB))))))
(list (->job 'usb-image
(run-with-store store
(mbegin %store-monad
(set-guile-for-build (default-guile))
(system-disk-image installation-os
#:disk-image-size
(* 1024 MiB)))))
(* 1500 MiB)))))
(->job 'iso9660-image
(run-with-store store
(mbegin %store-monad

View File

@ -3037,6 +3037,39 @@ the new and upgraded packages that are listed, some like @code{my-gimp} and
@code{my-emacs-with-cool-features} might come from
@code{my-personal-packages}, while others come from the Guix default channel.
@cindex dependencies, channels
@cindex meta-data, channels
@subsection Declaring Channel Dependencies
Channel authors may decide to augment a package collection provided by other
channels. They can declare their channel to be dependent on other channels in
a meta-data file @file{.guix-channel}, which is to be placed in the root of
the channel repository.
The meta-data file should contain a simple S-expression like this:
@lisp
(channel
(version 0)
(dependencies
(channel
(name 'some-collection)
(url "https://example.org/first-collection.git"))
(channel
(name 'some-other-collection)
(url "https://example.org/second-collection.git")
(branch "testing"))))
@end lisp
In the above example this channel is declared to depend on two other channels,
which will both be fetched automatically. The modules provided by the channel
will be compiled in an environment where the modules of all these declared
channels are available.
For the sake of reliability and maintainability, you should avoid dependencies
on channels that you don't control, and you should aim to keep the number of
dependencies to a minimum.
@subsection Replicating Guix
@cindex pinning, channels

View File

@ -146,6 +146,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/documentation.scm \
%D%/packages/dunst.scm \
%D%/packages/dvtm.scm \
%D%/packages/easyrpg.scm \
%D%/packages/ebook.scm \
%D%/packages/ed.scm \
%D%/packages/education.scm \
@ -606,7 +607,6 @@ dist_patch_DATA = \
%D%/packages/patches/blast+-fix-makefile.patch \
%D%/packages/patches/blender-newer-ffmpeg.patch \
%D%/packages/patches/boost-fix-icu-build.patch \
%D%/packages/patches/borg-respect-storage-quota.patch \
%D%/packages/patches/byobu-writable-status.patch \
%D%/packages/patches/calibre-no-updates-dialog.patch \
%D%/packages/patches/calibre-use-packaged-feedparser.patch \
@ -1007,6 +1007,7 @@ dist_patch_DATA = \
%D%/packages/patches/openbabel-fix-crash-on-nwchem-output.patch \
%D%/packages/patches/opencascade-oce-glibc-2.26.patch \
%D%/packages/patches/openfoam-4.1-cleanup.patch \
%D%/packages/patches/openjdk-10-idlj-reproducibility.patch \
%D%/packages/patches/openldap-CVE-2017-9287.patch \
%D%/packages/patches/openocd-nrf52.patch \
%D%/packages/patches/opensmtpd-fix-crash.patch \
@ -1051,6 +1052,7 @@ dist_patch_DATA = \
%D%/packages/patches/plink-endian-detection.patch \
%D%/packages/patches/plotutils-libpng-jmpbuf.patch \
%D%/packages/patches/podofo-cmake-3.12.patch \
%D%/packages/patches/polkit-CVE-2018-19788.patch \
%D%/packages/patches/portaudio-audacity-compat.patch \
%D%/packages/patches/portmidi-modular-build.patch \
%D%/packages/patches/postgresql-disable-resolve_symlinks.patch \

View File

@ -2183,7 +2183,7 @@ background file post-processing.")
(define-public supercollider
(package
(name "supercollider")
(version "3.9.3")
(version "3.10.0")
(source (origin
(method url-fetch)
(uri (string-append
@ -2192,7 +2192,7 @@ background file post-processing.")
"/SuperCollider-" version "-Source-linux.tar.bz2"))
(sha256
(base32
"1d8ixfl100jvlialxdizp8wqsl1mp5pi2bam25vp97bhjd59cfdr"))))
"16j9psa32czx1p1y2vvq0qf2ib0ngrfc604vx35n2b4llyika84v"))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags '("-DSYSTEM_BOOST=on" "-DSYSTEM_YAMLCPP=on"
@ -2230,13 +2230,13 @@ background file post-processing.")
;; https://github.com/supercollider/supercollider/issues/1736
(add-after 'rm-bundled-libs 'disable-broken-tests
(lambda _
(substitute* "testsuite/supernova/CMakeLists.txt"
(substitute* "testsuite/server/supernova/CMakeLists.txt"
(("server_test.cpp")
"")
(("perf_counter_test.cpp")
""))
(delete-file "testsuite/supernova/server_test.cpp")
(delete-file "testsuite/supernova/perf_counter_test.cpp")
(delete-file "testsuite/server/supernova/server_test.cpp")
(delete-file "testsuite/server/supernova/perf_counter_test.cpp")
(substitute* "testsuite/CMakeLists.txt"
(("add_subdirectory\\(sclang\\)")
""))

View File

@ -491,15 +491,14 @@ detection, and lossless compression.")
(define-public borg
(package
(name "borg")
(version "1.1.7")
(version "1.1.8")
(source
(origin
(method url-fetch)
(uri (pypi-uri "borgbackup" version))
(patches (search-patches "borg-respect-storage-quota.patch"))
(sha256
(base32
"1p3zia62vyg9vadkdjzzkzbj4dmgijr7ix5lmhfbxpwy5q9imdgp"))
"0qqvcscn1l4y83x4sh3izdpmr8zq38j8chjkpfq4q4d01i470hqb"))
(modules '((guix build utils)))
(snippet
'(begin

View File

@ -317,6 +317,8 @@ menu to select one of the installed operating systems.")
(home-page "https://www.syslinux.org")
(synopsis "Lightweight Linux bootloader")
(description "Syslinux is a lightweight Linux bootloader.")
;; The Makefile specifically targets i386 and x86_64 using nasm.
(supported-systems '("i686-linux" "x86_64-linux"))
(license (list license:gpl2+
license:bsd-3 ; gnu-efi/*
license:bsd-4 ; gnu-efi/inc/* gnu-efi/lib/*

View File

@ -2,6 +2,7 @@
;;; Copyright © 2014 John Darrington <jmd@gnu.org>
;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@ -25,6 +26,7 @@
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages admin)
#:use-module (gnu packages algebra)
#:use-module (gnu packages compression)
#:use-module (gnu packages perl))
@ -102,3 +104,41 @@ any small or embedded system.")
(home-page "https://www.busybox.net")
;; Some files are gplv2+
(license gpl2)))
(define-public toybox
(package
(name "toybox")
(version "0.7.8")
(source (origin
(method url-fetch)
(uri (string-append
"https://landley.net/toybox/downloads/toybox-"
version ".tar.gz"))
(sha256
(base32
"1mlqv5hsvy8ii6m698hq6rc316klwv44jlr034knwg6bk1lf2qj9"))))
(build-system gnu-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
(add-before 'configure 'set-environment-variables
(lambda _
(setenv "CC" (which "gcc"))
(setenv "HOSTCC" (which "gcc"))
#t))
(replace 'configure
(lambda _ (invoke "make" "defconfig")))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(invoke "make"
(string-append "PREFIX=" out)
"install")))))
#:test-target "tests"))
(native-inputs `(("bc" ,bc)))
(synopsis "Many common UNIX utilities in a single executable")
(description "ToyBox combines tiny versions of many common UNIX utilities
into a single small executable. It provides a fairly complete environment for
any small or embedded system.")
(home-page "https://landley.net/toybox/")
(license bsd-2)))

View File

@ -1414,6 +1414,30 @@ normally the case.")
(define-public python2-pytest-subtesthack
(package-with-python2 python-pytest-subtesthack))
(define-public python-pytest-sugar
(package
(name "python-pytest-sugar")
(version "0.9.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pytest-sugar" version))
(sha256
(base32
"1asq7yc4g8bx2sn7yy974mhc9ywvaihasjab4inkirdwn9s7mn7w"))))
(build-system python-build-system)
(propagated-inputs
`(("python-packaging" ,python-packaging)
("python-pytest" ,python-pytest)
("python-termcolor" ,python-termcolor)))
(home-page "https://pivotfinland.com/pytest-sugar/")
(synopsis "Plugin for pytest that changes the default look and feel")
(description
"@code{pytest-sugar} is a plugin for py.test that changes the default
look and feel of py.test, using a progress bar and showing failures and errors
instantly.")
(license license:bsd-3)))
(define-public python-hypothesis
(package
(name "python-hypothesis")

121
gnu/packages/easyrpg.scm Normal file
View File

@ -0,0 +1,121 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages easyrpg)
#:use-module (guix packages)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages audio)
#:use-module (gnu packages compression)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages gtk)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages image)
#:use-module (gnu packages mp3)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages sdl)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xiph)
#:use-module (gnu packages xml))
(define-public liblcf
(package
(name "liblcf")
(version "0.5.4")
(source (origin
(method url-fetch)
(uri (string-append
"https://easyrpg.org/downloads/player/" version
"/liblcf-" version ".tar.gz"))
(sha256
(base32
"1k99bcw5c23801jk3mbz5sj5h18x46w1qxrkknhwhfgqzpvxhwrs"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
(propagated-inputs
;; Required by 'liblcf.pc'.
`(("expat" ,expat)
("icu" ,icu4c)))
(home-page "https://easyrpg.org/")
(synopsis "Library to handle RPG Maker 2000 and 2003 game data")
(description
"@code{liblcf} is a library to handle RPG Maker 2000 and 2003 game data.
It can read and write LCF and XML files.")
;; It includes a copy of Boost Preprocessor Cat and Stringize (boost-1.0):
;; src/boost/preprocessor/config.hpp
;; src/boost/preprocessor/cat.hpp
;; src/boost/preprocessor/stringize.hpp
;; and a copy of inih (bsd-3):
;; src/ini.h
;; src/ini.cpp
;; src/inireader.h
;; src/inireader.cpp
;; TODO: Unbundle them.
(license license:expat)))
(define-public easyrpg-player
(package
(name "easyrpg-player")
(version "0.5.4")
(source (origin
(method url-fetch)
(uri (string-append
"https://easyrpg.org/downloads/player/" version
"/easyrpg-player-" version ".tar.gz"))
(sha256
(base32
"0w0idr61slg5828j1q31c1kh1h0ryp8psc006y06jph5pp3qgm48"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags
(list (string-append "--with-bash-completion-dir="
%output "/etc/bash_completion.d/"))))
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("freetype" ,freetype)
("harfbuzz" ,harfbuzz)
("liblcf" ,liblcf)
("libpng" ,libpng)
("libsndfile" ,libsndfile)
("libvorbis" ,libvorbis)
("libxmp" ,libxmp)
("mpg123" ,mpg123)
("opusfile" ,opusfile)
("pixman" ,pixman)
("sdl2-mixer" ,sdl2-mixer)
("sdl2" ,sdl2)
("speexdsp" ,speexdsp)
;; ("wildmidi" ,wildmidi) ; TODO: package it
("zlib" ,zlib)))
(home-page "https://easyrpg.org/")
(synopsis "Play RPG Maker 2000 and 2003 games")
(description
"EasyRPG Player is a game interpreter to play RPG Maker 2000, 2003 and
EasyRPG games. It uses the LCF parser library (liblcf) to read RPG Maker game
data.")
;; It bundles FMMidi YM2608 FM synthesizer emulator (bsd-3):
;; src/midisynth.h
;; src/midisynth.cpp
;; and PicoJSON JSON parser/serializer (bsd-2):
;; src/picojson.h
;; TODO: Unbundle them.
(license license:gpl3+)))

View File

@ -4807,7 +4807,7 @@ indentation (space indentation only).
(define-public emacs-elpy
(package
(name "emacs-elpy")
(version "1.26.0")
(version "1.27.0")
(source (origin
(method git-fetch)
(uri (git-reference
@ -4816,7 +4816,7 @@ indentation (space indentation only).
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"0wynzp5xmrgiggmam82n6lfaiqmfl4n3ccpsgnh86r6pbsmssxjk"))))
"1b76y0kzk7s9ya8k9bpsgn31i9l0rxs4iz6lg7snhjgh03k0ssgv"))))
(build-system emacs-build-system)
(arguments
`(#:include (cons* "^elpy/[^/]+\\.py$" "^snippets\\/" %default-include)
@ -5214,26 +5214,28 @@ target will call @code{compile} on it.")
(define-public emacs-cider
(package
(name "emacs-cider")
(version "0.15.1")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/clojure-emacs/cider/archive/v"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1j5hlmi14ypszv1f9nvq0jjlz7i742flg0ny3055l7i4x089xx6g"))))
(version "0.18.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/clojure-emacs/cider.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"1m9kc88vga3q5d731qnpngnsa0n57pf21k3hll20rw8rggrx4vdn"))))
(build-system emacs-build-system)
(arguments
'(#:exclude ; Don't exclude 'cider-test.el'.
'("^\\.dir-locals\\.el$" "^test/")))
(propagated-inputs
`(("emacs-clojure-mode" ,emacs-clojure-mode)
("emacs-sesman" ,emacs-sesman)
("emacs-spinner" ,emacs-spinner)
("emacs-pkg-info" ,emacs-pkg-info)
("emacs-queue" ,emacs-queue)))
(home-page "https://cider.readthedocs.org/")
(home-page "https://cider.readthedocs.io/")
(synopsis "Clojure development environment for Emacs")
(description
"CIDER (Clojure Interactive Development Environment that Rocks) aims to
@ -12737,3 +12739,29 @@ Emacs.")
rooms. It also provides an API which allows Emacs to seamlessly create
RPC channels with users and other software.")
(license license:gpl3+))))
(define-public emacs-sesman
(package
(name "emacs-sesman")
(version "0.3.3")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/vspinu/sesman.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"0r32f8ma9ddczxrrdz0nadp14j3zmk10q1ch02gb82synkx3xdra"))))
(build-system emacs-build-system)
(arguments
`(#:tests? #t
#:test-command '("make" "test")))
(home-page "https://github.com/vspinu/sesman")
(synopsis "Session manager for Emacs based IDEs")
(description "Sesman provides facilities for session management and
interactive session association with the current contexts (project, directory,
buffers). While sesman can be used to manage arbitrary sessions, it primary
targets the Emacs based IDEs (CIDER, ESS, Geiser, Robe, SLIME etc.)")
(license license:gpl3+)))

View File

@ -622,7 +622,7 @@ languages, plus Greek and Cyrillic.")
(define-public font-gnu-unifont
(package
(name "font-gnu-unifont")
(version "11.0.02")
(version "11.0.03")
(source (origin
(method url-fetch)
(uri (string-append
@ -630,16 +630,14 @@ languages, plus Greek and Cyrillic.")
version ".tar.gz"))
(sha256
(base32
"1di8i44c163b9l5f08jcrjfijnqz0j7p7hpfvf8dcms6cm6s4wvy"))))
"171zhm52c4rzpn19qcq4n9nyfbcjl38v50zslhvgpjdcmc5jvhav"))))
(build-system gnu-build-system)
(outputs '("out" ; TrueType version
"pcf" ; PCF (bitmap) version
"psf" ; PSF (console) version
"bin" ; Utilities to manipulate '.hex' format
))
(outputs '("out" ; TrueType version
"pcf" ; PCF (bitmap) version
"psf" ; PSF (console) version
"bin")) ; Utilities to manipulate '.hex' format
(arguments
'(#:parallel-build? #f ; parallel build fails
#:tests? #f ; no check target
'(#:tests? #f ; no check target
#:phases
(modify-phases %standard-phases
(replace

View File

@ -652,6 +652,8 @@ etc.")
(uri (string-append "https://github.com/liballeg/allegro5/releases"
"/download/" version "/allegro-"
version ".tar.gz"))
(patches (search-patches
"allegro-fix-compilation-mesa-18.2.5-and-later.patch"))
(sha256
(base32
"1w9a5yqi5q03b2qvmx5ff90paz0xbr9cy7i7f0xiqa65ava66q9l"))))

View File

@ -2306,7 +2306,7 @@ world}, @uref{http://evolonline.org, Evol Online} and
(define openttd-engine
(package
(name "openttd-engine")
(version "1.7.1")
(version "1.8.0")
(source
(origin (method url-fetch)
(uri (string-append "http://binaries.openttd.org/releases/"
@ -2323,7 +2323,7 @@ world}, @uref{http://evolonline.org, Evol Online} and
"02d1xmb75yv4x6rfnvxk3vvq4l3lvvwr2pfsdzn7lzalic51ziqh")))))
(sha256
(base32
"0dhv5bbbg1dmmq7fi3xss0a9jq2rqgb5sf9fsqzlsjcdm590j6b1"))
"0zq8xdg0k92p3s4j9x76591zaqz7k9ra69q008m209vdfffjvly2"))
(modules '((guix build utils)))
(snippet
;; The DOS port contains proprietary software.
@ -2353,7 +2353,7 @@ world}, @uref{http://evolonline.org, Evol Online} and
configure-flags))))))))
(native-inputs `(("pkg-config" ,pkg-config)))
(inputs
`(("allegro" ,allegro-4)
`(("allegro" ,allegro)
("fontconfig" ,fontconfig)
("freetype" ,freetype)
("icu4c" ,icu4c)

View File

@ -62,6 +62,7 @@
#:use-module (gnu packages gl)
#:use-module (gnu packages assembly)
#:use-module (gnu packages rust)
#:use-module (gnu packages llvm)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages video)
#:use-module (gnu packages xiph)
@ -506,16 +507,38 @@ security standards.")
(search-patch "icecat-use-system-media-libs.patch")
(mozilla-patch "icecat-bug-1464061.patch" "d28761dbff18" "1f58rzwx4s1af66fdwn9lgkcd1ksmq8kn8imvf78p90jqi24h7b4")
(mozilla-patch "icecat-bug-1479853.patch" "4faeb696dd06" "12891xx9c15s6kby6d3zk64v5nqgaq7sw597zv1fkd3a6x69hlva")
(mozilla-patch "icecat-bug-1488295.patch" "12ba39f69876" "1piyq44f0xa0a9z2748aqwpaziaxwp61d86gyhalbyag8lcxfb3p")
(mozilla-patch "icecat-bug-1500011.patch" "a0adabeedf26" "0f5wazha3zxzhy2j8f93hx62l9p02b1p40vi07qah3ar67h4ccj9")
(mozilla-patch "icecat-bug-1503082.patch" "19604eb26230" "1wqxgph4z14ijhk2j2m4av5p6gx72d02lzz83q6yy0k065kw8psb")
(mozilla-patch "icecat-bug-1499861.patch" "98737ab09270" "0fyl6wv0jxcxpkfpsff46y93k49n8lrw0k7c1p45g8da015dx27a")
(mozilla-patch "icecat-bug-1504452.patch" "1cf7d80355d5" "19jp4x32vyxam54d1r9fm7jwf6krhhf3xazfqmxb9aw4iwdil7dl")
(mozilla-patch "icecat-bug-1494752.patch" "c264774b8913" "1hxyi131x8jwawrq90cgkph833iv9ixrdrgzl1r978gbzwq10xz2")
(mozilla-patch "icecat-CVE-2018-17466.patch" "12ba39f69876" "1piyq44f0xa0a9z2748aqwpaziaxwp61d86gyhalbyag8lcxfb3p")
(mozilla-patch "icecat-CVE-2018-18498.patch" "a0adabeedf26" "0f5wazha3zxzhy2j8f93hx62l9p02b1p40vi07qah3ar67h4ccj9")
(mozilla-patch "icecat-CVE-2018-12405-pt01.patch" "19604eb26230" "1wqxgph4z14ijhk2j2m4av5p6gx72d02lzz83q6yy0k065kw8psb")
(mozilla-patch "icecat-CVE-2018-18492.patch" "98737ab09270" "0fyl6wv0jxcxpkfpsff46y93k49n8lrw0k7c1p45g8da015dx27a")
(mozilla-patch "icecat-CVE-2018-18493.patch" "1cf7d80355d5" "19jp4x32vyxam54d1r9fm7jwf6krhhf3xazfqmxb9aw4iwdil7dl")
(mozilla-patch "icecat-CVE-2018-12405-pt02.patch" "c264774b8913" "1hxyi131x8jwawrq90cgkph833iv9ixrdrgzl1r978gbzwq10xz2")
(mozilla-patch "icecat-bug-1477773.patch" "ec13fda7c9b0" "0zj7aylgw55g0y7plaafn5gq8jwcsdr1bpdxacs0hq914nm8zy9z")
(mozilla-patch "icecat-bug-1500759.patch" "5e1a9644aeef" "1qimrpgyrd8zkiri7w57j0aymk20y9b34am5w7rvr6qj1lhrbfla")
(mozilla-patch "icecat-CVE-2018-12405-pt03.patch" "5e1a9644aeef" "1qimrpgyrd8zkiri7w57j0aymk20y9b34am5w7rvr6qj1lhrbfla")
(mozilla-patch "icecat-bug-1485655.patch" "9055726e2d89" "1pppxr94zqh6zmi2mn1ih21qap09vk5ivbhnwxqr8iszvygjg44g")
(mozilla-patch "icecat-bug-1410214.patch" "9e641345e2ef" "0542xss2jdb8drh4g50cfy32l300x69dyywgx3dqs03vgr3qplxy")))
(mozilla-patch "icecat-bug-1410214.patch" "9e641345e2ef" "0542xss2jdb8drh4g50cfy32l300x69dyywgx3dqs03vgr3qplxy")
(mozilla-patch "icecat-CVE-2018-12405-pt04.patch" "6398541ec302" "1c2yi7mkg3d5afxsgj9fp3zq8yhkmphrll5d60d5xsdv88kqqiyf")
(mozilla-patch "icecat-bug-1496736.patch" "3bed863ee656" "038k7jk3yp16410crwfdvhyb2vis49c6bplrfr83v51885cqldar")
(mozilla-patch "icecat-bug-1498765.patch" "a08c8493ba19" "0bwg4vg03j962lb9q8ihpiy4rmygykf1q9ij8x7h34q7hg43yjya")
(mozilla-patch "icecat-CVE-2018-12405-pt05.patch" "ee204e26690e" "1scs45xhlr1mwv6x2q6n22363f42by8cjmifqwzlikggs21f5mcq")
(mozilla-patch "icecat-bug-1507035.patch" "cec8b58ab3fe" "1f131ibpkrhsa44l822hnm5qgvapbs3i9pj25iimdwvr933winz8")
(mozilla-patch "icecat-bug-1501680.patch" "282c6bb81562" "1zgw7l5zmni8468y3f6cip1nlw63cfdd9vv9b00cbrgy96d1q2cp")
(mozilla-patch "icecat-bug-1500310.patch" "b3a439a26186" "0mrjxcmrlv04fyl36dwxk97dw08g2hlikvw2hfa1l0y8zsc4bgw8")
(mozilla-patch "icecat-bug-1500366.patch" "abd59256c4e3" "1jgwh2v4kwb6kf2h7mwf128w1k1jj119bfhlgqpmn9ami35wpzf3")
(mozilla-patch "icecat-bug-1493080.patch" "a7cabf306d05" "1n7wv67rcaz8wj31jc77ssjdj3kb61gdg7pigj828c5z2cgns1k5")
(mozilla-patch "icecat-CVE-2018-12405-pt06.patch" "8bbf80948b50" "1nvc69zgz9nvbw1pwxkil1fx4cxxpr6bsjrpp6l2kv7jhgax1bqk")
(mozilla-patch "icecat-bug-1507564.patch" "60619cc47b10" "09fanqr08kqgraw4xp7y2az4jc7ia8nn200rqjfj20vmkyjz97j3")
(mozilla-patch "icecat-bug-1507730.patch" "dd0f01818b9c" "14ziq1bm72n58xrvsgzpjj5z6ifpvi70r5jfhbkbj69mf4y4cx2z")
(mozilla-patch "icecat-CVE-2018-12405-pt07.patch" "a73a46ddc848" "1bvvyav3xyn6rgn6haicinxn0dasl9dyc1i37fyb7wr5wcpahybs")
(mozilla-patch "icecat-CVE-2018-18494.patch" "a72ec8e21577" "095zghmwdcbaid5426p9vpl757d8sfbsvgn201bjm7nhm03m4z7i")
(mozilla-patch "icecat-CVE-2018-12405-pt08.patch" "b6d0fc61fd0b" "0059avawxi4s4747plybjsjq8j2h4z7amw05p28xyg95a2njwnaa")
(mozilla-patch "icecat-bug-1499028.patch" "a62ede2dd3bc" "0ikmnibni8bdvpr9p42wskyyic08vzqdz5qr028bqzyg5119gily")
(mozilla-patch "icecat-bug-1426574.patch" "0db86656655b" "0kmccb4ccdzbzncwklx7w1bg7r61zwl2wnfp67vl27hm9xykbck7")
(mozilla-patch "icecat-CVE-2018-12405-pt09.patch" "20e31905de62" "0b5a441645wy3q4asaygvdq0inrxmxrh33cpgdp6ngflq9p2i6h0")
(mozilla-patch "icecat-CVE-2018-12405-pt10.patch" "c2832f98fe51" "0b4jfjfdyrihwjdfavd54hn9kdg2f017lmfr7mj2llp71flxwwj7")
(mozilla-patch "icecat-bug-1511495.patch" "d428d2b8f585" "1f9xs0bjhbphvkv60cnvz34sr2rv38jzvi47wh3nablg41yjpdrk")))
(modules '((guix build utils)))
(snippet
'(begin
@ -620,6 +643,8 @@ security standards.")
;; Icecat 60 checkes for rust>=1.24
`(("rust" ,rust-1.24)
("cargo" ,rust-1.24 "cargo")
("llvm" ,llvm-3.9.1)
("clang" ,clang-3.9.1)
("perl" ,perl)
("python" ,python-2) ; Python 3 not supported
("python2-pysqlite" ,python2-pysqlite)
@ -639,7 +664,7 @@ security standards.")
#:imported-modules ,%cargo-build-system-modules ;for `generate-checksums'
#:configure-flags '("--enable-default-toolkit=cairo-gtk3"
#:configure-flags `("--enable-default-toolkit=cairo-gtk3"
"--with-distribution-id=org.gnu"
@ -653,14 +678,25 @@ security standards.")
"--disable-eme"
"--disable-gconf"
;; Stylo requires LLVM/clang. For now, disable it.
"--disable-stylo"
;; Building with debugging symbols takes ~5GiB, so
;; disable it.
"--disable-debug"
"--disable-debug-symbols"
;; Clang is needed to build Stylo, Mozilla's new
;; CSS engine. We must specify the clang paths
;; manually, because otherwise the Mozilla build
;; system looks in the directories returned by
;; llvm-config --bindir and llvm-config --libdir,
;; which return paths in the llvm package where
;; clang is not found.
,(string-append "--with-clang-path="
(assoc-ref %build-inputs "clang")
"/bin/clang")
,(string-append "--with-libclang-path="
(assoc-ref %build-inputs "clang")
"/lib")
;; Hack to work around missing
;; "unofficial" branding in icecat.
"--enable-official-branding"
@ -754,6 +790,20 @@ security standards.")
(generate-checksums dir null-file)))
(find-files "third_party/rust" ".cargo-checksum.json")))
#t))
(add-before 'configure 'augment-CPLUS_INCLUDE_PATH
(lambda* (#:key build inputs #:allow-other-keys)
;; Here, we add additional entries to CPLUS_INCLUDE_PATH, to work
;; around a problem that otherwise occurs when attempting to
;; build Stylo, which requires Rust and Clang. Without these
;; additional entries, errors occur during the build indicating
;; that the <cstddef> and "c++config.h" headers cannot be found.
;; Note that the 'build' keyword argument contains the GNU
;; triplet, e.g. "x86_64-unknown-linux-gnu".
(let ((gcc (assoc-ref inputs "gcc")))
(setenv "CPLUS_INCLUDE_PATH"
(string-append gcc "/include/c++" ":"
gcc "/include/c++/" build ":"
(getenv "CPLUS_INCLUDE_PATH"))))))
(replace
'configure
;; configure does not work followed by both "SHELL=..." and
@ -770,6 +820,7 @@ security standards.")
(setenv "SHELL" bash)
(setenv "CONFIG_SHELL" bash)
(setenv "AUTOCONF" (which "autoconf")) ; must be autoconf-2.13
(setenv "CC" "gcc") ; apparently needed when Stylo is enabled
(mkdir "../build")
(chdir "../build")
(format #t "build directory: ~s~%" (getcwd))

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -20,9 +20,13 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (gnu packages gtk)
#:use-module (gnu packages libusb)
#:use-module (gnu packages pkg-config)
#:use-module (guix build-system cmake))
#:use-module (gnu packages python)
#:use-module (gnu packages xml)
#:use-module (guix build-system cmake)
#:use-module (guix build-system python))
(define-public rtl-sdr
(package
@ -50,3 +54,30 @@
cheap software defined radio, since the chip allows transferring the raw I/Q
samples to the host. @code{rtl-sdr} provides drivers for this purpose.")
(license license:gpl2+)))
(define-public chirp
(package
(name "chirp")
(version "20181205")
(source
(origin
(method url-fetch)
(uri (string-append "https://trac.chirp.danplanet.com/chirp_daily/daily-"
version "/chirp-daily-" version ".tar.gz"))
(sha256
(base32
"1cp280b95j39xaxs50zn55jigg7pyfpm9n098hmsyxrplqn8z43c"))))
(build-system python-build-system)
(inputs
`(("python2-libxml2" ,python2-libxml2)
("python2-pygtk" ,python2-pygtk)
("python2-pyserial" ,python2-pyserial)))
(arguments
`(#:python ,python-2))
(home-page "https://chirp.danplanet.com")
(synopsis "Cross-radio programming tool")
(description "Chirp is a cross-radio programming tool. It supports a
growing list of radios across several manufacturers and allows transferring of
memory contents between them.")
(license (list license:gpl3+
license:lgpl3+)))) ; chirp/elib_intl.py

View File

@ -20,6 +20,7 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix git-download)
#:use-module (guix download)
#:use-module (guix build-system go)
#:use-module (gnu packages golang))
@ -210,3 +211,29 @@ powerful and simple.")
(description "A subtool for the @command{gx} package manager for packages
written in Go.")
(license license:expat)))
(define-public go-ipfs
(package
(name "go-ipfs")
(version "0.4.18")
(source
(origin
(method url-fetch)
(uri (string-append
"https://dist.ipfs.io/go-ipfs/v" version
"/go-ipfs-source.tar.gz"))
(sha256
(base32
"19hfgbyn5sr1bw0cwm3gsjz0w3b3vh3mmkax1906raah30lavj1x"))))
(build-system go-build-system)
(arguments
'(#:unpack-path "github.com/ipfs/go-ipfs"
#:import-path "github.com/ipfs/go-ipfs/cmd/ipfs"))
(home-page "https://ipfs.io")
(synopsis "Go implementation of IPFS, a peer-to-peer hypermedia protocol")
(description "IPFS is a global, versioned, peer-to-peer filesystem. It
combines good ideas from Git, BitTorrent, Kademlia, SFS, and the Web. It is
like a single bittorrent swarm, exchanging git objects. IPFS provides an
interface as simple as the HTTP web, but with permanence built in. You can
also mount the world at @code{/ipfs}.")
(license license:expat)))

View File

@ -1820,6 +1820,8 @@ new Date();"))
(sha256
(base32
"0zywq2203b4hx4jms9vbwvjcj1d3k2v3qpx4s33729fkpmid97r4"))
(patches (search-patches
"openjdk-10-idlj-reproducibility.patch"))
(modules '((guix build utils)))
(snippet
`(begin

View File

@ -400,8 +400,8 @@ It has been modified to remove all non-free binary blobs.")
;; supports qemu "virt" machine and possibly a large number of ARM boards.
;; See : https://wiki.debian.org/DebianKernel/ARMMP.
(define %linux-libre-version "4.19.7")
(define %linux-libre-hash "1fj038hz6b7g9gdiw9kggydryf8dvrdsfn81snns9bn5b01yp67n")
(define %linux-libre-version "4.19.8")
(define %linux-libre-hash "1rmgf3sbcyb47s3sagac7zrrpznq0vlcbzjzlzir95biy7lbswb3")
(define %linux-libre-4.19-patches
(list %boot-logo-patch
@ -423,8 +423,8 @@ It has been modified to remove all non-free binary blobs.")
#:patches %linux-libre-4.19-patches
#:configuration-file kernel-config))
(define %linux-libre-4.14-version "4.14.86")
(define %linux-libre-4.14-hash "1w98drq4ns2awwrbbkd6vy9fh219w8bfjfni5zndfycs5yh5hg65")
(define %linux-libre-4.14-version "4.14.87")
(define %linux-libre-4.14-hash "1013h3qbsq76vlhrbl3gci25jbwydzm7k0bg08fbq42qrhjq92ak")
(define-public linux-libre-4.14
(make-linux-libre %linux-libre-4.14-version
@ -433,8 +433,8 @@ It has been modified to remove all non-free binary blobs.")
#:configuration-file kernel-config))
(define-public linux-libre-4.9
(make-linux-libre "4.9.143"
"0vg6hs7vc09riyki8lyy73p3ghl6k9q4xfv7dals4s9q61i6b6d6"
(make-linux-libre "4.9.144"
"1jckikf1j294gr3sf43bfy3h34q3yqbqgqbj9l0px427h3n2vgkk"
%intel-compatible-systems
#:configuration-file kernel-config))

View File

@ -84,8 +84,8 @@
,lisp))))
(define-public gcl
(let ((commit "5956140b1083e2302a59d7ce2054b0b7c2cbb417")
(revision "1")) ;Guix package revision
(let ((commit "d3335e2b3deb63f930eb0328e9b05377744c9512")
(revision "2")) ;Guix package revision
(package
(name "gcl")
(version (string-append "2.6.12-" revision "."
@ -98,7 +98,7 @@
(commit commit)))
(file-name (string-append "gcl-" version "-checkout"))
(sha256
(base32 "0mwclf2879mh3d9xqkqhghf58lwy7srsnsq9x0f1cc6j302sy4hb"))))
(base32 "05v86lhvsby05nzvcd3c4k0wljvgdgd0i6arzd2fx1yd67dl6fgj"))))
(build-system gnu-build-system)
(arguments
`(#:parallel-build? #f ; The build system seems not to be thread safe.

View File

@ -1068,7 +1068,7 @@ which can add many functionalities to the base client.")
(define-public msmtp
(package
(name "msmtp")
(version "1.8.0")
(version "1.8.1")
(source
(origin
(method url-fetch)
@ -1076,7 +1076,7 @@ which can add many functionalities to the base client.")
"/msmtp-" version ".tar.xz"))
(sha256
(base32
"1k9wwlapkxk9ql3xq05y6vwn6ziqk9b1v8lyhj1866qd02zhqwxx"))))
"1nm4vizrnrrnknc4mc8nr7grz9q76m1vraa0hsl5rfm34gnsg8ph"))))
(build-system gnu-build-system)
(inputs
`(("libsecret" ,libsecret)

View File

@ -1775,7 +1775,7 @@ scientific applications modeled by partial differential equations.")
("mumps" ,mumps-openmpi)
("openmpi" ,openmpi)
("scalapack" ,scalapack)
("scotch" ,pt-scotch)
("scotch" ,pt-scotch32)
,@(package-inputs petsc)))
(arguments
(substitute-keyword-arguments (package-arguments petsc)

View File

@ -93,6 +93,7 @@
#:use-module (guix build-system meson)
#:use-module (guix build-system perl)
#:use-module (guix build-system python)
#:use-module (guix build-system trivial)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
@ -588,6 +589,12 @@ was initially a fork of xmpppy, but uses non-blocking sockets.")
`(#:test-target "test_nogui"
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'add-plugin-dirs
(lambda _
(substitute* "gajim/common/configpaths.py"
(("_paths\\['PLUGINS_USER'\\]")
"_paths['PLUGINS_USER'],os.getenv('GAJIM_PLUGIN_PATH')"))
#t))
(add-after 'install 'wrap-gi-typelib-path
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
@ -625,6 +632,18 @@ was initially a fork of xmpppy, but uses non-blocking sockets.")
(,(string-append (assoc-ref inputs "gtk+")
"/share/glib-2.0/schemas"))))
#t)))))
(native-search-paths
(list (search-path-specification
(variable "GAJIM_PLUGIN_PATH")
(separator #f) ;single entry
(files '("share/gajim/plugins")))
;; Gajim needs to use the propagated inputs of its plugins.
(search-path-specification
(variable "PYTHONPATH")
(files (list (string-append
"lib/python"
(version-major+minor (package-version python))
"/site-packages"))))))
(native-inputs
`(("intltool" ,intltool)
("python-docutils" ,python-docutils)
@ -636,7 +655,6 @@ was initially a fork of xmpppy, but uses non-blocking sockets.")
("gtkspell3" ,gtkspell3)
("hicolor-icon-theme" ,hicolor-icon-theme)
("libsecret" ,libsecret)
("python-axolotl" ,python-axolotl)
("python-cssutils" ,python-cssutils)
("python-dbus" ,python-dbus)
("python-gnupg" ,python-gnupg)
@ -657,6 +675,41 @@ transformation; audio and video conferences; file transfer; TLS, GPG and
end-to-end encryption support; XML console.")
(license license:gpl3)))
(define-public gajim-omemo
(package
(name "gajim-omemo")
(version "2.6.23")
(source (origin
(method url-fetch/zipbomb)
(uri (string-append
"https://ftp.gajim.org/plugins_releases/omemo_"
version ".zip"))
(sha256
(base32
"134zbscbcnhx4smad0ryvx3ngkqlsspafqf0kk8y2d3vcd9bf3pa"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
#:builder
(begin
(use-modules (guix build utils))
(let* ((out (assoc-ref %outputs "out"))
(share (in-vicinity out "share/gajim/plugins"))
(source (assoc-ref %build-inputs "source")))
(mkdir-p share)
(copy-recursively source share)
#t))))
(propagated-inputs
`(("python-axolotl" ,python-axolotl)))
(home-page
"https://dev.gajim.org/gajim/gajim-plugins/wikis/OmemoGajimPlugin")
(synopsis "Gajim OMEMO plugin")
(description
"This package provides the Gajim OMEMO plugin. OMEMO is an XMPP
Extension Protocol (XEP) for secure multi-client end-to-end encryption based
on Axolotl and PEP.")
(license license:gpl3+)))
(define-public dino
;; The only release tarball is for version 0.0, but it is very old and fails
;; to build.

View File

@ -28,7 +28,7 @@
(define-public mtools
(package
(name "mtools")
(version "4.0.21")
(version "4.0.23")
(source
(origin
(method url-fetch)
@ -36,7 +36,7 @@
version ".tar.bz2"))
(sha256
(base32
"1kybydx74qgbwpnjvjn49msf8zipchl43d4cq8zzwcyvfkdzw7h2"))))
"1qwfxzr964fasxlzhllahk8mzh7c82s808wvly95dsqsflkdp27i"))))
(build-system gnu-build-system)
(home-page "https://www.gnu.org/software/mtools/")
(synopsis "Access MS-DOS disks without mounting")

View File

@ -3942,9 +3942,9 @@ OSC connections.")
(lambda* (#:key inputs #:allow-other-keys)
(with-directory-excursion "faust"
(delete-file "main.cpp")
(zero? (system* "faust" "-i"
"-a" "lv2synth.cpp"
"-o" "main.cpp" "main.dsp"))))))))
(invoke "faust" "-i"
"-a" "lv2synth.cpp"
"-o" "main.cpp" "main.dsp")))))))
(inputs
`(("boost" ,boost)
("lv2" ,lv2)

View File

@ -0,0 +1,41 @@
Fixes compilation with Mesa >= 18.2.5.
Taken from upstream:
https://github.com/liballeg/allegro5/commit/a40d30e21802ecf5c9382cf34af9b01bd3781e47
diff --git a/include/allegro5/allegro_opengl.h b/include/allegro5/allegro_opengl.h
index 0f86a6768..652dd024e 100644
--- a/include/allegro5/allegro_opengl.h
+++ b/include/allegro5/allegro_opengl.h
@@ -103,10 +103,14 @@
/* HACK: Prevent both Mesa and SGI's broken headers from screwing us */
#define __glext_h_
+#define __gl_glext_h_
#define __glxext_h_
+#define __glx_glxext_h_
#include <GL/gl.h>
#undef __glext_h_
+#undef __gl_glext_h_
#undef __glxext_h_
+#undef __glx_glxext_h_
#endif /* ALLEGRO_MACOSX */
diff --git a/include/allegro5/opengl/GLext/glx_ext_defs.h b/include/allegro5/opengl/GLext/glx_ext_defs.h
index 49c502091..fba8aea5d 100644
--- a/include/allegro5/opengl/GLext/glx_ext_defs.h
+++ b/include/allegro5/opengl/GLext/glx_ext_defs.h
@@ -1,7 +1,9 @@
/* HACK: Prevent both Mesa and SGI's broken headers from screwing us */
#define __glxext_h_
+#define __glx_glxext_h_
#include <GL/glx.h>
#undef __glxext_h_
+#undef __glx_glxext_h_
#ifndef GLX_VERSION_1_3
#define _ALLEGRO_GLX_VERSION_1_3
--
2.20.0

View File

@ -1,32 +0,0 @@
Make sure the client respects the storage quota set by the server:
https://github.com/borgbackup/borg/issues/4093
Patch copied from upstream source repository:
https://github.com/borgbackup/borg/commit/975cc33206e0e3644626fb7204c34d2157715b61
From 975cc33206e0e3644626fb7204c34d2157715b61 Mon Sep 17 00:00:00 2001
From: Manu <manu@snapdragon.cc>
Date: Wed, 3 Oct 2018 23:47:36 +0800
Subject: [PATCH] Add storage_quota for forced_result if set by serve command.
---
src/borg/archiver.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/borg/archiver.py b/src/borg/archiver.py
index 916725e7..279194c1 100644
--- a/src/borg/archiver.py
+++ b/src/borg/archiver.py
@@ -4276,6 +4276,7 @@ def get_args(self, argv, cmd):
result.restrict_to_paths = forced_result.restrict_to_paths
result.restrict_to_repositories = forced_result.restrict_to_repositories
result.append_only = forced_result.append_only
+ result.storage_quota = forced_result.storage_quota
return result
def parse_args(self, args=None):
--
2.19.1

View File

@ -0,0 +1,36 @@
From a0a0c6a43b88d946f2b5484892cf0209bd7c0e68 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?G=C3=A1bor=20Boskovits?= <boskovits@gmail.com>
Date: Sat, 8 Dec 2018 21:25:31 +0100
Subject: [PATCH] Make idlj respect SOURCE_DATE_EPOCH.
---
.../sun/tools/corba/se/idl/toJavaPortable/Util.java | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/src/java.corba/share/classes/com/sun/tools/corba/se/idl/toJavaPortable/Util.java b/src/java.corba/share/classes/com/sun/tools/corba/se/idl/toJavaPortable/Util.java
index 7397619f2..583d6b8e4 100644
--- a/src/java.corba/share/classes/com/sun/tools/corba/se/idl/toJavaPortable/Util.java
+++ b/src/java.corba/share/classes/com/sun/tools/corba/se/idl/toJavaPortable/Util.java
@@ -1146,7 +1146,18 @@ public class Util extends com.sun.tools.corba.se.idl.Util
else
formatter.setTimeZone (java.util.TimeZone.getDefault ());
- stream.println ("* " + formatter.format (new Date ()));
+ try {
+ String epoch = System.getenv("SOURCE_DATE_EPOCH");
+ if(epoch != null) {
+ long unixTime = Long.parseLong(epoch);
+ stream.println ("* " + formatter.format (new Date (unixTime*1000L)));
+ } else {
+ stream.println ("* " + formatter.format (new Date ()));
+ }
+ } catch (Exception e) {
+ //in case of error fall back to default
+ stream.println ("* " + formatter.format (new Date ()));
+ }
// <daz>
///////////////
--
2.19.2

View File

@ -0,0 +1,197 @@
Fix CVE-2018-19788:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-19788
https://gitlab.freedesktop.org/polkit/polkit/issues/74
Patch copied from upstream source repository:
https://gitlab.freedesktop.org/polkit/polkit/commit/2cb40c4d5feeaa09325522bd7d97910f1b59e379
From 2cb40c4d5feeaa09325522bd7d97910f1b59e379 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Date: Mon, 3 Dec 2018 10:28:58 +0100
Subject: [PATCH] Allow negative uids/gids in PolkitUnixUser and Group objects
(uid_t) -1 is still used as placeholder to mean "unset". This is OK, since
there should be no users with such number, see
https://systemd.io/UIDS-GIDS#special-linux-uids.
(uid_t) -1 is used as the default value in class initialization.
When a user or group above INT32_MAX is created, the numeric uid or
gid wraps around to negative when the value is assigned to gint, and
polkit gets confused. Let's accept such gids, except for -1.
A nicer fix would be to change the underlying type to e.g. uint32 to
not have negative values. But this cannot be done without breaking the
API, so likely new functions will have to be added (a
polkit_unix_user_new variant that takes a unsigned, and the same for
_group_new, _set_uid, _get_uid, _set_gid, _get_gid, etc.). This will
require a bigger patch.
Fixes https://gitlab.freedesktop.org/polkit/polkit/issues/74.
---
src/polkit/polkitunixgroup.c | 15 +++++++++++----
src/polkit/polkitunixprocess.c | 12 ++++++++----
src/polkit/polkitunixuser.c | 13 ++++++++++---
3 files changed, 29 insertions(+), 11 deletions(-)
diff --git a/src/polkit/polkitunixgroup.c b/src/polkit/polkitunixgroup.c
index c57a1aa..309f689 100644
--- a/src/polkit/polkitunixgroup.c
+++ b/src/polkit/polkitunixgroup.c
@@ -71,6 +71,7 @@ G_DEFINE_TYPE_WITH_CODE (PolkitUnixGroup, polkit_unix_group, G_TYPE_OBJECT,
static void
polkit_unix_group_init (PolkitUnixGroup *unix_group)
{
+ unix_group->gid = -1; /* (git_t) -1 is not a valid GID under Linux */
}
static void
@@ -100,11 +101,14 @@ polkit_unix_group_set_property (GObject *object,
GParamSpec *pspec)
{
PolkitUnixGroup *unix_group = POLKIT_UNIX_GROUP (object);
+ gint val;
switch (prop_id)
{
case PROP_GID:
- unix_group->gid = g_value_get_int (value);
+ val = g_value_get_int (value);
+ g_return_if_fail (val != -1);
+ unix_group->gid = val;
break;
default:
@@ -131,9 +135,9 @@ polkit_unix_group_class_init (PolkitUnixGroupClass *klass)
g_param_spec_int ("gid",
"Group ID",
"The UNIX group ID",
- 0,
+ G_MININT,
G_MAXINT,
- 0,
+ -1,
G_PARAM_CONSTRUCT |
G_PARAM_READWRITE |
G_PARAM_STATIC_NAME |
@@ -166,9 +170,10 @@ polkit_unix_group_get_gid (PolkitUnixGroup *group)
*/
void
polkit_unix_group_set_gid (PolkitUnixGroup *group,
- gint gid)
+ gint gid)
{
g_return_if_fail (POLKIT_IS_UNIX_GROUP (group));
+ g_return_if_fail (gid != -1);
group->gid = gid;
}
@@ -183,6 +188,8 @@ polkit_unix_group_set_gid (PolkitUnixGroup *group,
PolkitIdentity *
polkit_unix_group_new (gint gid)
{
+ g_return_val_if_fail (gid != -1, NULL);
+
return POLKIT_IDENTITY (g_object_new (POLKIT_TYPE_UNIX_GROUP,
"gid", gid,
NULL));
diff --git a/src/polkit/polkitunixprocess.c b/src/polkit/polkitunixprocess.c
index 972b777..b02b258 100644
--- a/src/polkit/polkitunixprocess.c
+++ b/src/polkit/polkitunixprocess.c
@@ -159,9 +159,14 @@ polkit_unix_process_set_property (GObject *object,
polkit_unix_process_set_pid (unix_process, g_value_get_int (value));
break;
- case PROP_UID:
- polkit_unix_process_set_uid (unix_process, g_value_get_int (value));
+ case PROP_UID: {
+ gint val;
+
+ val = g_value_get_int (value);
+ g_return_if_fail (val != -1);
+ polkit_unix_process_set_uid (unix_process, val);
break;
+ }
case PROP_START_TIME:
polkit_unix_process_set_start_time (unix_process, g_value_get_uint64 (value));
@@ -239,7 +244,7 @@ polkit_unix_process_class_init (PolkitUnixProcessClass *klass)
g_param_spec_int ("uid",
"User ID",
"The UNIX user ID",
- -1,
+ G_MININT,
G_MAXINT,
-1,
G_PARAM_CONSTRUCT |
@@ -303,7 +308,6 @@ polkit_unix_process_set_uid (PolkitUnixProcess *process,
gint uid)
{
g_return_if_fail (POLKIT_IS_UNIX_PROCESS (process));
- g_return_if_fail (uid >= -1);
process->uid = uid;
}
diff --git a/src/polkit/polkitunixuser.c b/src/polkit/polkitunixuser.c
index 8bfd3a1..234a697 100644
--- a/src/polkit/polkitunixuser.c
+++ b/src/polkit/polkitunixuser.c
@@ -72,6 +72,7 @@ G_DEFINE_TYPE_WITH_CODE (PolkitUnixUser, polkit_unix_user, G_TYPE_OBJECT,
static void
polkit_unix_user_init (PolkitUnixUser *unix_user)
{
+ unix_user->uid = -1; /* (uid_t) -1 is not a valid UID under Linux */
unix_user->name = NULL;
}
@@ -112,11 +113,14 @@ polkit_unix_user_set_property (GObject *object,
GParamSpec *pspec)
{
PolkitUnixUser *unix_user = POLKIT_UNIX_USER (object);
+ gint val;
switch (prop_id)
{
case PROP_UID:
- unix_user->uid = g_value_get_int (value);
+ val = g_value_get_int (value);
+ g_return_if_fail (val != -1);
+ unix_user->uid = val;
break;
default:
@@ -144,9 +148,9 @@ polkit_unix_user_class_init (PolkitUnixUserClass *klass)
g_param_spec_int ("uid",
"User ID",
"The UNIX user ID",
- 0,
+ G_MININT,
G_MAXINT,
- 0,
+ -1,
G_PARAM_CONSTRUCT |
G_PARAM_READWRITE |
G_PARAM_STATIC_NAME |
@@ -182,6 +186,7 @@ polkit_unix_user_set_uid (PolkitUnixUser *user,
gint uid)
{
g_return_if_fail (POLKIT_IS_UNIX_USER (user));
+ g_return_if_fail (uid != -1);
user->uid = uid;
}
@@ -196,6 +201,8 @@ polkit_unix_user_set_uid (PolkitUnixUser *user,
PolkitIdentity *
polkit_unix_user_new (gint uid)
{
+ g_return_val_if_fail (uid != -1, NULL);
+
return POLKIT_IDENTITY (g_object_new (POLKIT_TYPE_UNIX_USER,
"uid", uid,
NULL));
--
2.18.1

View File

@ -429,6 +429,7 @@ using the DjVuLibre library.")
(inputs
`(("jbig2dec" ,jbig2dec)
("libjpeg" ,libjpeg)
("mujs", mujs)
("mupdf" ,mupdf)
("openjpeg" ,openjpeg)
("openssl" ,openssl)
@ -438,7 +439,18 @@ using the DjVuLibre library.")
`(#:tests? #f ; package does not contain tests
#:configure-flags (list (string-append "-Dplugindir="
(assoc-ref %outputs "out")
"/lib/zathura"))))
"/lib/zathura")
"-Dlink-external=true")
#:phases
(modify-phases %standard-phases
(add-before 'configure 'add-mujs-to-dependencies
(lambda _
;; Add mujs to the 'build_dependencies'.
(substitute* "meson.build"
(("^ libopenjp2 = dependency.*" x)
(string-append x " mujs = cc.find_library('mujs')\n"))
(("^ libopenjp2")
" libopenjp2, mujs")))))))
(home-page "https://pwmt.org/projects/zathura-pdf-mupdf/")
(synopsis "PDF support for zathura (mupdf backend)")
(description "The zathura-pdf-mupdf plugin adds PDF support to zathura

View File

@ -49,6 +49,7 @@
(uri (string-append
"https://www.freedesktop.org/software/polkit/releases/"
name "-" version ".tar.gz"))
(patches (search-patches "polkit-CVE-2018-19788.patch"))
(sha256
(base32
"0c91y61y4gy6p91cwbzg32dhavw4b7fflg370rimqhdxpzdfr1rg"))

View File

@ -908,6 +908,29 @@ version identifier.")
(define-public python2-semantic-version
(package-with-python2 python-semantic-version))
(define-public python-serpent
(package
(name "python-serpent")
(version "1.27")
(source
(origin
(method url-fetch)
(uri (pypi-uri "serpent" version))
(sha256
(base32
"04p9dsrm5pv8vhk3flvih55kgvlzpi38hlaykdiakddmgwqw93bg"))))
(build-system python-build-system)
(home-page "https://github.com/irmen/Serpent")
(synopsis "Serializer for literal Python expressions")
(description
"Serpent provides ast.literal_eval() compatible object tree
serialization. It serializes an object tree into bytes (utf-8 encoded string)
that can be decoded and then passed as-is to ast.literal_eval() to rebuild it
as the original object tree. As such it is safe to send serpent data to other
machines over the network for instance (because only safe literals are
encoded).")
(license license:expat)))
(define-public python-setuptools
(package
(name "python-setuptools")
@ -1048,6 +1071,32 @@ for additional processing.")
(define-public python2-capturer
(package-with-python2 python-capturer))
(define-public python-case
(package
(name "python-case")
(version "1.5.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "case" version))
(sha256
(base32
"1cagg06vfph864s6l5jb0zqliwxh647bki8j6lf4a4qrv40jnhs8"))))
(build-system python-build-system)
(propagated-inputs
`(("python-mock" ,python-mock)
("python-nose" ,python-nose)
("python-six" ,python-six)
("python-unittest2" ,python-unittest2)))
(native-inputs
`(("python-coverage" ,python-coverage)))
(home-page "https://github.com/celery/case")
(synopsis "Unittest utilities and convenience methods")
(description
"The @code{case} package provides utilities on top of unittest, including
some helpful Python 2 compatibility convenience methods.")
(license license:bsd-3)))
(define-public python-verboselogs
(package
(name "python-verboselogs")
@ -2268,6 +2317,30 @@ object.")
(define-public python2-pyyaml
(package-with-python2 python-pyyaml))
(define-public python-vine
(package
(name "python-vine")
(version "1.1.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "vine" version))
(sha256
(base32
"0wkskb2hb494v9gixqnf4bl972p4ibcmxdykzpwjlfa5picns4aj"))))
(build-system python-build-system)
(native-inputs
`(("python-pytest" ,python-pytest)
("python-case" ,python-case)))
(home-page "https://github.com/celery/vine")
(synopsis "Promises for Python")
(description
"@code{vine} provides a special implementation of promises in that it can
be used both for \"promise of a value\" and lazy evaluation. The biggest
upside for this is that everything in a promise can also be a promise,
e.g. filters, callbacks and errbacks can all be promises.")
(license license:bsd-3)))
(define-public python-virtualenv
(package
(name "python-virtualenv")
@ -8196,18 +8269,21 @@ and provides a uniform API regardless of which JSON implementation is used.")
(define-public python-amqp
(package
(name "python-amqp")
(version "1.4.9")
(version "2.3.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "amqp" version))
(sha256
(base32
"06n6q0kxhjnbfz3vn8x9yz09lwmn1xi9d6wxp31h5jbks0b4vsid"))))
"1sv600dgqwpimr6i1g59y9hpn50mc236gdqkr7zin13kvlpx0g87"))))
(build-system python-build-system)
(native-inputs
`(("python-nose" ,python-nose)
`(("python-case" ,python-case)
("python-pytest-sugar" ,python-pytest-sugar)
("python-mock" ,python-mock)))
(propagated-inputs
`(("python-vine" ,python-vine)))
(home-page "https://github.com/celery/py-amqp")
(synopsis
"Low-level AMQP client for Python (fork of amqplib)")
@ -8261,23 +8337,26 @@ applications.")
(define-public python-kombu
(package
(name "python-kombu")
(version "3.0.37")
(version "4.2.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "kombu" version))
(sha256
(base32
"0l16chb314gpq2v7fh94a22c30lcv6w3ylmhsa60bldlcq6a0r70"))))
"15k8f7mzqr049sg9vi48m19vjykviafk3f0p5xzgw9by0x0kyxjj"))))
(build-system python-build-system)
(native-inputs
`(("python-mock" ,python-mock)
("python-nose" ,python-nose)))
("python-case" ,python-case)
("python-pyro4" ,python-pyro4)
("python-pytest-sugar" ,python-pytest-sugar)
("python-pytz" ,python-pytz)))
(propagated-inputs
`(("python-anyjson" ,python-anyjson)
("python-amqp" ,python-amqp)
("python-redis" ,python-redis)))
(home-page "http://kombu.readthedocs.org")
(home-page "https://kombu.readthedocs.io")
(synopsis "Message passing library for Python")
(description "The aim of Kombu is to make messaging in Python as easy as
possible by providing an idiomatic high-level interface for the AMQ protocol,
@ -8303,17 +8382,18 @@ RabbitMQ messaging server is the most popular implementation.")
(define-public python-billiard
(package
(name "python-billiard")
(version "3.3.0.23")
(version "3.5.0.5")
(source
(origin
(method url-fetch)
(uri (pypi-uri "billiard" version))
(sha256
(base32
"02wxsc6bhqvzh8j6w758kvgqbnj14l796mvmrcms8fgfamd2lak9"))))
"03msmapj3s5zgqk87d646mafz7a01h5bm2wijalgpi0s80ks5na2"))))
(build-system python-build-system)
(native-inputs
`(("python-nose" ,python-nose)))
`(("python-case" ,python-case)
("python-pytest" ,python-pytest)))
(home-page "https://github.com/celery/billiard")
(synopsis
"Python multiprocessing fork with improvements and bugfixes")
@ -8337,31 +8417,35 @@ Python 2.4 and 2.5, and will draw its fixes/improvements from python-trunk.")
(define-public python-celery
(package
(name "python-celery")
(version "3.1.24")
(version "4.2.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "celery" version))
(sha256
(base32
"0yh2prhdnx2dgkb67a5drj12hh2zvzx5f611p7mqqg01ydghif4r"))))
"0y66rz7z8dfcgs3s0qxmdddlaq57bzbgxgfz896nbp14grkv9nkp"))))
(build-system python-build-system)
(arguments
`(#:phases
'(;; TODO The tests fail with Python 3.7
;; https://github.com/celery/celery/issues/4849
#:tests? #f
#:phases
(modify-phases %standard-phases
;; These tests break with Python 3.5:
;; https://github.com/celery/celery/issues/2897#issuecomment-253066295
(replace 'check
(add-after 'unpack 'patch-requirements
(lambda _
(zero?
(system* "nosetests" "--exclude=^test_safe_to_remove.*")))))))
(substitute* "requirements/test.txt"
(("pytest>=3\\.0,<3\\.3")
"pytest>=3.0"))
#t)))))
(native-inputs
`(("python-nose" ,python-nose)))
`(("python-case" ,python-case)
("python-pytest" ,python-pytest)))
(propagated-inputs
`(("python-pytz" ,python-pytz)
("python-billiard" ,python-billiard)
("python-kombu" ,python-kombu)))
(home-page "http://celeryproject.org")
(home-page "https://celeryproject.org")
(synopsis "Distributed Task Queue")
(description "Celery is an asynchronous task queue/job queue based on
distributed message passing. It is focused on real-time operation, but
@ -9226,6 +9310,13 @@ graphviz.")
(setenv "CPATH"
(string-append greenlet "/" python)))))
#t))
(add-before 'check 'skip-timer-test
(lambda _
;; XXX: Skip 'TestTimerResolution', which appears to be
;; unreliable.
(substitute* "src/greentest/test__core_timer.py"
(("not greentest.RUNNING_ON_CI") "False"))
#t))
(replace 'check
(lambda _
;; Make sure the build directory is on PYTHONPATH.
@ -9266,17 +9357,6 @@ to provide a high-level synchronous API on top of the libev event loop.")
(strip-python2-variant python-gevent))))
(package
(inherit base)
(arguments
(substitute-keyword-arguments (package-arguments base)
((#:phases phases)
`(modify-phases ,phases
(add-before 'check 'skip-timer-test
(lambda _
;; XXX: Skip 'TestTimerResolution', which appears to be
;; unreliable.
(substitute* "src/greentest/test__core_timer.py"
(("not greentest.RUNNING_ON_CI") "False"))
#t))))))
(native-inputs `(,@(package-native-inputs python-gevent)
("python-mock" ,python2-mock))))))
@ -9841,20 +9921,25 @@ characters, mouse support, and auto suggestions.")
(define-public python-jedi
(package
(name "python-jedi")
(version "0.12.1")
(version "0.13.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "jedi" version))
(sha256
(base32
"1h8ypnjisn57kiv1zqrkj1im6sbfnhxllqaa8znh39qkd47ys2dl"))))
"0j11q42g5vjkyhhjpyy8nb0gdxs78m3rpjai7p1hvgpyl9rkyjdp"))))
(build-system python-build-system)
(arguments
`(#:phases
`( ;; Many tests are failing with Python 3.7.x as of version 0.13.1 (see:
;; https://github.com/davidhalter/jedi/issues/1263)
#:tests? #f
#:phases
(modify-phases %standard-phases
(replace 'check (lambda _
(invoke "py.test" "-vv"))))))
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(invoke "py.test" "-vv")))))))
(native-inputs
`(("python-pytest" ,python-pytest)
("python-docopt" ,python-docopt)))
@ -13258,6 +13343,28 @@ such as figshare or Zenodo.")
(define-public python2-semver
(package-with-python2 python-semver))
(define-public python-pyro4
(package
(name "python-pyro4")
(version "4.74")
(source
(origin
(method url-fetch)
(uri (pypi-uri "Pyro4" version))
(sha256
(base32
"0pzp7c6q3vvkxq0wy9lr6wd5wky40sajz69g697i5rb2q497pvc9"))))
(build-system python-build-system)
(propagated-inputs
`(("python-serpent" ,python-serpent)))
(home-page "https://pyro4.readthedocs.io")
(synopsis "Distributed object middleware for Python")
(description
"Pyro enables you to build applications in which objects can talk to each
other over the network. You can just use normal Python method calls to call
objects on other machines, also known as remote procedure calls (RPC).")
(license license:expat)))
(define-public python2-pyro
(package
(name "python2-pyro")

View File

@ -191,6 +191,8 @@ safety and thread safety guarantees.")
(source (rust-source version "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm"
#:patches '("rust-1.19-mrustc.patch")))
(outputs '("out" "cargo"))
(properties '((timeout . 72000) ;20 hours
(max-silent-time . 18000))) ;5 hours (for armel)
(arguments
`(#:imported-modules ,%cargo-build-system-modules ;for `generate-checksums'
#:modules ((guix build utils) (ice-9 match) (guix build gnu-build-system))
@ -427,6 +429,7 @@ safety and thread safety guarantees.")
(package
(inherit base-rust)
(outputs '("out" "doc" "cargo"))
(properties '())
(arguments
(substitute-keyword-arguments (package-arguments rust-1.19)
((#:phases phases)

View File

@ -51,6 +51,7 @@
#:use-module (gnu packages tex)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages web)
#:use-module (gnu packages xml))
(define-public ccid
@ -307,3 +308,36 @@ and other operations. It includes a library and a command-line tool.")
;; license for that one file. Please see it for details. The vast
;; majority of files are licensed under bsd-2.
(license license:bsd-2)))
(define-public yubikey-personalization
(package
(name "yubikey-personalization")
(version "1.19.0")
(source (origin
(method url-fetch)
(uri (string-append
"https://developers.yubico.com/" name
"/Releases/ykpers-" version ".tar.gz"))
(sha256
(base32
"104lc0nnqdr365fa7c4vrq67rxp1dp8idndsh9jlhnj9dnhszj1b"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags (list (string-append "--with-udevrulesdir="
(assoc-ref %outputs "out")
"/lib/udev/rules.d"))))
(inputs
`(("json-c" ,json-c)
("libusb" ,libusb)
;; The library "libyubikey" is also known as "yubico-c".
("libyubikey" ,libyubikey)))
(native-inputs
`(("pkg-config" ,pkg-config)
("eudev" ,eudev)))
(home-page "https://developers.yubico.com/yubikey-personalization/")
(synopsis "Library and tools to personalize YubiKeys")
(description
"The YubiKey Personalization package contains a C library and command
line tools for personalizing YubiKeys. You can use these to set an AES key,
retrieve a YubiKey's serial number, and so forth.")
(license license:bsd-2)))

View File

@ -529,13 +529,13 @@ netcat implementation that supports TLS.")
(package
(name "python-acme")
;; Remember to update the hash of certbot when updating python-acme.
(version "0.28.0")
(version "0.29.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "acme" version))
(sha256
(base32
"11dvcbdifn5d02p4k5li8r6r39bl3p5ap9p3zjwvasm24hf2yz5z"))))
"0z5l966b1asbcdzl77bmywf22c1q0xill00jj7qyml9wx2nh7qm2"))))
(build-system python-build-system)
(arguments
`(#:phases
@ -586,7 +586,7 @@ netcat implementation that supports TLS.")
(uri (pypi-uri name version))
(sha256
(base32
"02h959qkq7z0s13ivgf7jyl3gnc55wcck6n546k0kh155bpf5qri"))))
"14i6yrcb9s7ygy99gccfc8jscymi24xb72s5lgg9b2y40z909ikg"))))
(build-system python-build-system)
(arguments
`(,@(substitute-keyword-arguments (package-arguments python-acme)

View File

@ -4,7 +4,7 @@
;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2017, 2018 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
;;;
@ -162,7 +162,7 @@ networks.")
(define-public onionshare
(package
(name "onionshare")
(version "0.9.2")
(version "1.3.1")
(source
(origin
(method git-fetch)
@ -172,7 +172,7 @@ networks.")
(file-name (git-file-name name version))
(sha256
(base32
"1nzr6m3jp04p1i8b652s27zv0xhybl3zwcn5r6l9h0f7d7x4iglv"))))
"02zic4cxwrcfdg22dq9c2rzni3l18wynjxd38scc59s37vlw7w2r"))))
(build-system python-build-system)
(arguments
`(#:phases
@ -181,55 +181,24 @@ networks.")
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(onionshare (string-append out "/share/onionshare")))
(substitute* "onionshare/strings.py"
;; correct the locale directory
(("helpers.get_resource_path\\('locale'\\)")
(string-append "'" onionshare "/locale'")))
(substitute* "onionshare/helpers.py"
;; correct the location of version.txt
(("get_resource_path\\('version.txt'\\)")
(string-append "'" onionshare "/version.txt'"))
(("get_resource_path\\('wordlist.txt'\\)")
(string-append "'" onionshare "/wordlist.txt'")))
(substitute* "onionshare/web.py"
;; fix the location of the html files
(("helpers.get_resource_path\\('html/denied.html'\\)")
(string-append "'" onionshare "/html/denied.html'"))
(("helpers.get_resource_path\\('html/404.html'\\)")
(string-append "'" onionshare "/html/404.html'"))
(("helpers.get_resource_path\\('html/index.html'\\)")
(string-append "'" onionshare "/html/index.html'")))
(substitute* "onionshare_gui/file_selection.py"
;; fancy box image in the GUI
(("helpers.get_resource_path\\('images/drop_files.png'\\)")
(string-append "'" onionshare "/images/drop_files.png'")))
(substitute* "onionshare_gui/server_status.py"
(("helpers.get_resource_path\\('images/server_stopped.png'\\)")
(string-append "'" onionshare "/images/server_stopped.png'"))
(("helpers.get_resource_path\\('images/server_working.png'\\)")
(string-append "'" onionshare "/images/server_working.png'"))
(("helpers.get_resource_path\\('images/server_started.png'\\)")
(string-append "'" onionshare "/images/server_started.png'")))
(substitute* "onionshare_gui/onionshare_gui.py"
;; for the icon on the GUI
(("helpers.get_resource_path\\('images/logo.png'\\)")
(string-append "'" onionshare "/images/logo.png'")))
(substitute* '("setup.py" "onionshare/helpers.py")
(substitute* '("setup.py" "onionshare/common.py")
(("sys.prefix,") (string-append "'" out "',")))
(substitute* "setup.py"
;; for the nautilus plugin
(("/usr/share/nautilus") "share/nautilus"))
#t)))
(substitute* "install/onionshare.desktop"
(("/usr") out))
#t)))
(delete 'check)
(add-before 'strip 'tests
;; After all the patching we run the tests after installing.
;; This is also a known issue:
;; https://github.com/micahflee/onionshare/issues/284
(lambda _
(invoke "nosetests" "test")
(invoke "pytest" "test")
#t)))))
(native-inputs
`(("python-nose" ,python-nose)))
`(("python-pytest" ,python-pytest)))
(inputs
`(("python-flask" ,python-flask)
("python-nautilus" ,python-nautilus)

View File

@ -146,14 +146,14 @@ as well as the classic centralized workflow.")
(name "git")
;; XXX When updating Git, check if the special 'git-source' input to cgit
;; needs to be updated as well.
(version "2.19.2")
(version "2.20.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/software/scm/git/git-"
version ".tar.xz"))
(sha256
(base32
"1scbggzghkzzfqg4ky3qh7h9w87c3zya4ls5disz7dbx56is7sgw"))))
"07yq186wb3wqvvmzhhsca57m979p7jprkk4h2a516jz1fd87755w"))))
(build-system gnu-build-system)
(native-inputs
`(("native-perl" ,perl)
@ -166,7 +166,7 @@ as well as the classic centralized workflow.")
version ".tar.xz"))
(sha256
(base32
"1sqhllkabylm46paswg0j54fiar44fmcdmkjkysmjn2gj6hqpz95"))))
"141n20migxaazy0vfkivjk6bzazi3ydyq7qkf6wmkg186l4amgbr"))))
;; For subtree documentation.
("asciidoc" ,asciidoc)
("docbook-xsl" ,docbook-xsl)

View File

@ -1496,7 +1496,7 @@ audio, images) from the Web. It can use either mpv or vlc for playback.")
(define-public youtube-viewer
(package
(name "youtube-viewer")
(version "3.4.1")
(version "3.5.0")
(source (origin
(method git-fetch)
(uri (git-reference
@ -1505,7 +1505,7 @@ audio, images) from the Web. It can use either mpv or vlc for playback.")
(file-name (git-file-name name version))
(sha256
(base32
"0axgb95lx81psgrb2a5rfdd8gl4mhsrzf41jas6l58d1xkaj54ri"))))
"1s7hv2a46cx2nbdykrijqfh8hdkf3zqn6q8sg3ajnnc5agaspyrg"))))
(build-system perl-build-system)
(native-inputs
`(("perl-module-build" ,perl-module-build)))
@ -3264,3 +3264,23 @@ API. It includes bindings for Python, Ruby, and other languages.")
helps you create the film you have always dreamed of. Easily add sub-titles,
transitions, and effects and then export your film to many common formats.")
(license license:gpl3+)))
(define-public dav1d
(package
(name "dav1d")
(version "0.1.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://downloads.videolan.org/pub/videolan/"
"dav1d/" version "/dav1d-" version ".tar.xz"))
(sha256
(base32
"0dw0liday8cbyrirhm6bgzhxg4cdy66nspfkdlq338gdsfqcvrsc"))))
(build-system meson-build-system)
(native-inputs `(("nasm" ,nasm)))
(home-page "https://code.videolan.org/videolan/dav1d")
(synopsis "AV1 decoder")
(description "dav1d is a new AV1 cross-platform decoder, and focused on
speed and correctness.")
(license license:bsd-2)))

View File

@ -1604,7 +1604,15 @@ failed to register public key '~a': ~a~%" key status)))))))
'())
#$@(if tmpdir
(list (string-append "TMPDIR=" tmpdir))
'()))
'())
;; Make sure we run in a UTF-8 locale so that 'guix
;; offload' correctly restores nars that contain UTF-8
;; file names such as 'nss-certs'. See
;; <https://bugs.gnu.org/32942>.
(string-append "GUIX_LOCPATH="
#$glibc-utf8-locales "/lib/locale")
"LC_ALL=en_US.utf8")
#:log-file #$log-file))
(stop #~(make-kill-destructor))))))

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -27,6 +28,7 @@
#:use-module (guix store)
#:use-module (guix i18n)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-2)
#:use-module (srfi srfi-9)
#:use-module (srfi srfi-11)
#:autoload (guix self) (whole-package)
@ -73,7 +75,6 @@
(commit channel-commit (default #f))
(location channel-location
(default (current-source-location)) (innate)))
;; TODO: Add a way to express dependencies among channels.
(define %default-channels
;; Default list of channels.
@ -93,6 +94,12 @@
(commit channel-instance-commit)
(checkout channel-instance-checkout))
(define-record-type <channel-metadata>
(channel-metadata version dependencies)
channel-metadata?
(version channel-metadata-version)
(dependencies channel-metadata-dependencies))
(define (channel-reference channel)
"Return the \"reference\" for CHANNEL, an sexp suitable for
'latest-repository-commit'."
@ -100,20 +107,90 @@
(#f `(branch . ,(channel-branch channel)))
(commit `(commit . ,(channel-commit channel)))))
(define (latest-channel-instances store channels)
(define (read-channel-metadata instance)
"Return a channel-metadata record read from the channel INSTANCE's
description file, or return #F if the channel instance does not include the
file."
(let* ((source (channel-instance-checkout instance))
(meta-file (string-append source "/.guix-channel")))
(and (file-exists? meta-file)
(and-let* ((raw (call-with-input-file meta-file read))
(version (and=> (assoc-ref raw 'version) first))
(dependencies (or (assoc-ref raw 'dependencies) '())))
(channel-metadata
version
(map (lambda (item)
(let ((get (lambda* (key #:optional default)
(or (and=> (assoc-ref item key) first) default))))
(and-let* ((name (get 'name))
(url (get 'url))
(branch (get 'branch "master")))
(channel
(name name)
(branch branch)
(url url)
(commit (get 'commit))))))
dependencies))))))
(define (channel-instance-dependencies instance)
"Return the list of channels that are declared as dependencies for the given
channel INSTANCE."
(match (read-channel-metadata instance)
(#f '())
(($ <channel-metadata> version dependencies)
dependencies)))
(define* (latest-channel-instances store channels #:optional (previous-channels '()))
"Return a list of channel instances corresponding to the latest checkouts of
CHANNELS."
(map (lambda (channel)
(format (current-error-port)
(G_ "Updating channel '~a' from Git repository at '~a'...~%")
(channel-name channel)
(channel-url channel))
(let-values (((checkout commit)
(latest-repository-commit store (channel-url channel)
#:ref (channel-reference
channel))))
(channel-instance channel commit checkout)))
channels))
CHANNELS and the channels on which they depend. PREVIOUS-CHANNELS is a list
of previously processed channels."
;; Only process channels that are unique, or that are more specific than a
;; previous channel specification.
(define (ignore? channel others)
(member channel others
(lambda (a b)
(and (eq? (channel-name a) (channel-name b))
(or (channel-commit b)
(not (or (channel-commit a)
(channel-commit b))))))))
;; Accumulate a list of instances. A list of processed channels is also
;; accumulated to decide on duplicate channel specifications.
(match (fold (lambda (channel acc)
(match acc
((#:channels previous-channels #:instances instances)
(if (ignore? channel previous-channels)
acc
(begin
(format (current-error-port)
(G_ "Updating channel '~a' from Git repository at '~a'...~%")
(channel-name channel)
(channel-url channel))
(let-values (((checkout commit)
(latest-repository-commit store (channel-url channel)
#:ref (channel-reference
channel))))
(let ((instance (channel-instance channel commit checkout)))
(let-values (((new-instances new-channels)
(latest-channel-instances
store
(channel-instance-dependencies instance)
previous-channels)))
`(#:channels
,(append (cons channel new-channels)
previous-channels)
#:instances
,(append (cons instance new-instances)
instances))))))))))
`(#:channels ,previous-channels #:instances ())
channels)
((#:channels channels #:instances instances)
(let ((instance-name (compose channel-name channel-instance-channel)))
;; Remove all earlier channel specifications if they are followed by a
;; more specific one.
(values (delete-duplicates instances
(lambda (a b)
(eq? (instance-name a) (instance-name b))))
channels)))))
(define* (checkout->channel-instance checkout
#:key commit
@ -235,8 +312,21 @@ INSTANCES."
(lambda (instance)
(if (eq? instance core-instance)
(return core)
(build-channel-instance instance
(cons core dependencies))))
(match (channel-instance-dependencies instance)
(()
(build-channel-instance instance
(cons core dependencies)))
(channels
(mlet %store-monad ((dependencies-derivation
(latest-channel-derivation
;; %default-channels is used here to
;; ensure that the core channel is
;; available for channels declared as
;; dependencies.
(append channels %default-channels))))
(build-channel-instance instance
(cons dependencies-derivation
(cons core dependencies))))))))
instances)))
(define (whole-package-for-legacy name modules)

View File

@ -179,24 +179,24 @@ specified with `--select'.\n"))
(let* ((packages (fold-packages cons '()))
(total (length packages)))
(define covered
(fold (lambda (updater covered)
(let ((matches (count (upstream-updater-predicate updater)
packages)))
(define uncovered
(fold (lambda (updater uncovered)
(let ((matches (filter (upstream-updater-predicate updater)
packages)))
;; TRANSLATORS: The parenthetical expression here is rendered
;; like "(42% coverage)" and denotes the fraction of packages
;; covered by the given updater.
(format #t (G_ " - ~a: ~a (~2,1f% coverage)~%")
(upstream-updater-name updater)
(G_ (upstream-updater-description updater))
(* 100. (/ matches total)))
(+ covered matches)))
0
(* 100. (/ (length matches) total)))
(lset-difference eq? uncovered matches)))
packages
(force %updaters)))
(newline)
(format #t (G_ "~2,1f% of the packages are covered by these updaters.~%")
(* 100. (/ covered total))))
(* 100. (/ (- total (length uncovered)) total))))
(exit 0))
(define (warn-no-updater package)

139
tests/channels.scm Normal file
View File

@ -0,0 +1,139 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (test-channels)
#:use-module (guix channels)
#:use-module ((guix build syscalls) #:select (mkdtemp!))
#:use-module (guix tests)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-64)
#:use-module (ice-9 match))
(test-begin "channels")
(define* (make-instance #:key
(name 'fake)
(commit "cafebabe")
(spec #f))
(define instance-dir (mkdtemp! "/tmp/checkout.XXXXXX"))
(and spec
(with-output-to-file (string-append instance-dir "/.guix-channel")
(lambda _ (format #t "~a" spec))))
((@@ (guix channels) channel-instance)
name commit instance-dir))
(define instance--boring (make-instance))
(define instance--no-deps
(make-instance #:spec
'(channel
(version 0)
(dependencies
(channel
(name test-channel)
(url "https://example.com/test-channel"))))))
(define instance--simple
(make-instance #:spec
'(channel
(version 0)
(dependencies
(channel
(name test-channel)
(url "https://example.com/test-channel"))))))
(define instance--with-dupes
(make-instance #:spec
'(channel
(version 0)
(dependencies
(channel
(name test-channel)
(url "https://example.com/test-channel"))
(channel
(name test-channel)
(url "https://example.com/test-channel")
(commit "abc1234"))
(channel
(name test-channel)
(url "https://example.com/test-channel-elsewhere"))))))
(define read-channel-metadata
(@@ (guix channels) read-channel-metadata))
(test-equal "read-channel-metadata returns #f if .guix-channel does not exist"
#f
(read-channel-metadata instance--boring))
(test-assert "read-channel-metadata returns <channel-metadata>"
(every (@@ (guix channels) channel-metadata?)
(map read-channel-metadata
(list instance--no-deps
instance--simple
instance--with-dupes))))
(test-assert "read-channel-metadata dependencies are channels"
(let ((deps ((@@ (guix channels) channel-metadata-dependencies)
(read-channel-metadata instance--simple))))
(match deps
(((? channel? dep)) #t)
(_ #f))))
(test-assert "latest-channel-instances includes channel dependencies"
(let* ((channel (channel
(name 'test)
(url "test")))
(test-dir (channel-instance-checkout instance--simple)))
(mock ((guix git) latest-repository-commit
(lambda* (store url #:key ref)
(match url
("test" (values test-dir 'whatever))
(_ (values "/not-important" 'not-important)))))
(let ((instances (latest-channel-instances #f (list channel))))
(and (eq? 2 (length instances))
(lset= eq?
'(test test-channel)
(map (compose channel-name channel-instance-channel)
instances)))))))
(test-assert "latest-channel-instances excludes duplicate channel dependencies"
(let* ((channel (channel
(name 'test)
(url "test")))
(test-dir (channel-instance-checkout instance--with-dupes)))
(mock ((guix git) latest-repository-commit
(lambda* (store url #:key ref)
(match url
("test" (values test-dir 'whatever))
(_ (values "/not-important" 'not-important)))))
(let ((instances (latest-channel-instances #f (list channel))))
(and (eq? 2 (length instances))
(lset= eq?
'(test test-channel)
(map (compose channel-name channel-instance-channel)
instances))
;; only the most specific channel dependency should remain,
;; i.e. the one with a specified commit.
(find (lambda (instance)
(and (eq? (channel-name
(channel-instance-channel instance))
'test-channel)
(eq? (channel-commit
(channel-instance-channel instance))
'abc1234)))
instances))))))
(test-end "channels")