Merge branch 'master' into staging

This commit is contained in:
Marius Bakke 2017-09-27 21:14:27 +02:00
commit 9f1d112d12
No known key found for this signature in database
GPG Key ID: A2A06DF2A33A54FA
33 changed files with 449 additions and 296 deletions

View File

@ -194,6 +194,7 @@ MODULES += \
guix/import/crate.scm \
guix/import/gem.scm \
guix/import/github.scm \
guix/import/gnome.scm \
guix/import/json.scm \
guix/import/pypi.scm \
guix/import/stackage.scm \

38
README
View File

@ -1,42 +1,42 @@
-*- mode: org -*-
[[http://www.gnu.org/software/guix/][GNU Guix]] (IPA: /ɡiːks/) is a purely functional package manager, and
associated free software distribution, for the [[http://www.gnu.org/gnu/gnu.html][GNU system]]. In addition
[[https://www.gnu.org/software/guix/][GNU Guix]] (IPA: /ɡiːks/) is a purely functional package manager, and
associated free software distribution, for the [[https://www.gnu.org/gnu/gnu.html][GNU system]]. In addition
to standard package management features, Guix supports transactional
upgrades and roll-backs, unprivileged package management, per-user
profiles, and garbage collection.
It provides [[http://www.gnu.org/software/guile/][Guile]] Scheme APIs, including a high-level embedded
It provides [[https://www.gnu.org/software/guile/][Guile]] Scheme APIs, including a high-level embedded
domain-specific languages (EDSLs) to describe how packages are to be
built and composed.
A user-land free software distribution for GNU/Linux comes as part of
Guix.
Guix is based on the [[http://nixos.org/nix/][Nix]] package manager.
Guix is based on the [[https://nixos.org/nix/][Nix]] package manager.
* Requirements
GNU Guix currently depends on the following packages:
- [[http://gnu.org/software/guile/][GNU Guile 2.2.x or 2.0.x]], version 2.0.9 or later
- [[http://gnupg.org/][GNU libgcrypt]]
- [[http://www.gnu.org/software/make/][GNU Make]]
- optionally [[http://savannah.nongnu.org/projects/guile-json/][Guile-JSON]], for the 'guix import pypi' command
- optionally [[http://www.gnutls.org][GnuTLS]] compiled with guile support enabled, for HTTPS support
- [[https://gnu.org/software/guile/][GNU Guile 2.2.x or 2.0.x]], version 2.0.9 or later
- [[https://gnupg.org/][GNU libgcrypt]]
- [[https://www.gnu.org/software/make/][GNU Make]]
- optionally [[https://savannah.nongnu.org/projects/guile-json/][Guile-JSON]], for the 'guix import pypi' command
- optionally [[https://www.gnutls.org][GnuTLS]] compiled with guile support enabled, for HTTPS support
in the 'guix download' command. Note that 'guix import pypi' requires
this functionality.
Unless `--disable-daemon' was passed, the following packages are needed:
- [[http://sqlite.org/][SQLite 3]]
- [[https://sqlite.org/][SQLite 3]]
- [[http://www.bzip.org][libbz2]]
- [[http://gcc.gnu.org][GCC's g++]]
- [[https://gcc.gnu.org][GCC's g++]]
When `--disable-daemon' was passed, you instead need the following:
- [[http://nixos.org/nix/][Nix]]
- [[https://nixos.org/nix/][Nix]]
* Installation
@ -44,7 +44,7 @@ See the manual for the installation instructions, either by running
info -f doc/guix.info "Installation"
or by checking the [[http://www.gnu.org/software/guix/manual/guix.html#Installation][web copy of the manual]].
or by checking the [[https://www.gnu.org/software/guix/manual/guix.html#Installation][web copy of the manual]].
For information on installation from a Git checkout, please see the section
"Building from Git" in the manual.
@ -109,7 +109,7 @@ Join #guix on irc.freenode.net.
* Guix & Nix
GNU Guix is based on [[http://nixos.org/nix/][the Nix package manager]]. It implements the same
GNU Guix is based on [[https://nixos.org/nix/][the Nix package manager]]. It implements the same
package deployment paradigm, and in fact it reuses some of its code.
Yet, different engineering decisions were made for Guix, as described
below.
@ -132,7 +132,7 @@ the store. Guix produces such derivations, which are then interpreted
by the daemon to perform the build. Thus, Guix derivations can use
derivations produced by Nix (and vice versa).
With Nix and the [[http://nixos.org/nixpkgs][Nixpkgs]] distribution, package composition happens at
With Nix and the [[https://nixos.org/nixpkgs][Nixpkgs]] distribution, package composition happens at
the Nix language level, but builders are usually written in Bash.
Conversely, Guix encourages the use of Scheme for both package
composition and builders. Likewise, the core functionality of Nix is
@ -141,13 +141,13 @@ but exposes all the API as Scheme.
* Related software
- [[http://nixos.org][Nix, Nixpkgs, and NixOS]], functional package manager and associated
- [[https://nixos.org][Nix, Nixpkgs, and NixOS]], functional package manager and associated
software distribution, are the inspiration of Guix
- [[http://www.gnu.org/software/stow/][GNU Stow]] builds around the idea of one directory per prefix, and a
- [[https://www.gnu.org/software/stow/][GNU Stow]] builds around the idea of one directory per prefix, and a
symlink tree to create user environments
- [[http://www.pvv.ntnu.no/~arnej/store/storedoc_6.html][STORE]] shares the same idea
- [[https://www.pvv.ntnu.no/~arnej/store/storedoc_6.html][STORE]] shares the same idea
- [[https://live.gnome.org/OSTree/][GNOME's OSTree]] allows bootable system images to be built from a
specified set of packages
- The [[http://www.gnu.org/s/gsrc/][GNU Source Release Collection]] (GSRC) is a user-land software
- The [[https://www.gnu.org/s/gsrc/][GNU Source Release Collection]] (GSRC) is a user-land software
distribution; unlike Guix, it relies on core tools available on the
host system

View File

@ -15414,6 +15414,10 @@ added specifications.
@item @code{port} (default: @code{8081})
Port number used by the HTTP server.
@item --listen=@var{host}
Listen on the network interface for @var{host}. The default is to
accept connections from localhost.
@item @code{specifications} (default: @code{#~'()})
A gexp (@pxref{G-Expressions}) that evaluates to a list of specifications,
where a specification is an association list

View File

@ -552,7 +552,6 @@ dist_patch_DATA = \
%D%/packages/patches/ceph-disable-unittest-throttle.patch \
%D%/packages/patches/ceph-skip-collect-sys-info-test.patch \
%D%/packages/patches/ceph-skip-unittest_blockdev.patch \
%D%/packages/patches/python-acme-dont-use-openssl-rand.patch \
%D%/packages/patches/chicken-CVE-2017-6949.patch \
%D%/packages/patches/chicken-CVE-2017-11343.patch \
%D%/packages/patches/chmlib-inttypes.patch \
@ -587,7 +586,6 @@ dist_patch_DATA = \
%D%/packages/patches/doc++-segfault-fix.patch \
%D%/packages/patches/doxygen-test.patch \
%D%/packages/patches/dvd+rw-tools-add-include.patch \
%D%/packages/patches/e2fsprogs-32bit-quota-warnings.patch \
%D%/packages/patches/elfutils-tests-ptrace.patch \
%D%/packages/patches/elixir-disable-failing-tests.patch \
%D%/packages/patches/einstein-build.patch \
@ -615,7 +613,6 @@ dist_patch_DATA = \
%D%/packages/patches/flint-ldconfig.patch \
%D%/packages/patches/fltk-shared-lib-defines.patch \
%D%/packages/patches/fltk-xfont-on-demand.patch \
%D%/packages/patches/fontforge-svg-modtime.patch \
%D%/packages/patches/foomatic-filters-CVE-2015-8327.patch \
%D%/packages/patches/foomatic-filters-CVE-2015-8560.patch \
%D%/packages/patches/freeimage-CVE-2015-0852.patch \
@ -808,7 +805,6 @@ dist_patch_DATA = \
%D%/packages/patches/libtirpc-CVE-2017-8779.patch \
%D%/packages/patches/libtorrent-rasterbar-boost-compat.patch \
%D%/packages/patches/libtool-skip-tests2.patch \
%D%/packages/patches/libunwind-CVE-2015-3239.patch \
%D%/packages/patches/libunistring-gnulib-multi-core.patch \
%D%/packages/patches/libusb-0.1-disable-tests.patch \
%D%/packages/patches/libvpx-CVE-2016-2818.patch \

View File

@ -187,8 +187,8 @@ their dependencies.")
(license l:gpl3+))))
(define-public cuirass
(let ((commit "87ad259dba7de38b6e3ab954cd7b2f655358d877")
(revision "8"))
(let ((commit "2a4d493e28100b8eca7d23300dd872c9f99e1f16")
(revision "9"))
(package
(name "cuirass")
(version (string-append "0.0.1-" revision "." (string-take commit 7)))
@ -200,7 +200,7 @@ their dependencies.")
(file-name (string-append name "-" version))
(sha256
(base32
"127pvbxbh6b6ar43cdgia9qpzzpldq4wm3igsxb1ycxfsdqnjrnz"))))
"0hi7x25ya8wydrfj9jd9zb351mw8pgxxxwgxxdn5kds7qvhxr26v"))))
(build-system gnu-build-system)
(arguments
'(#:modules ((guix build utils)

View File

@ -242,9 +242,10 @@ format support.")
`(("boost" ,boost)
("glib" ,glib)
("glibmm" ,glibmm)
("qt" ,qt)
("libsigrok" ,libsigrok)
("libsigrokdecode" ,libsigrokdecode)))
("libsigrokdecode" ,libsigrokdecode)
("qtbase" ,qtbase)
("qtsvg" ,qtsvg)))
(build-system cmake-build-system)
(home-page "http://www.sigrok.org/wiki/PulseView")
(synopsis "Qt based logic analyzer, oscilloscope and MSO GUI for sigrok")

View File

@ -396,7 +396,7 @@ and returns a sequence of positioned glyphids from the font.")
(define-public potrace
(package
(name "potrace")
(version "1.14")
(version "1.15")
(source
(origin
(method url-fetch)
@ -404,7 +404,7 @@ and returns a sequence of positioned glyphids from the font.")
"/potrace-" version ".tar.gz"))
(sha256
(base32
"0znr9i0ljb818qiwm22zw63g11a4v08gc5xkh0wbdp6g259vcwnv"))))
"17ajildjp14shsy339xarh1lw1p0k60la08ahl638a73mh23kcx9"))))
(build-system gnu-build-system)
(native-inputs `(("ghostscript" ,ghostscript))) ;for tests
(inputs `(("zlib" ,zlib)))
@ -498,26 +498,14 @@ definitions.")
(define-public fontforge
(package
(name "fontforge")
(version "20160404")
(version "20170731")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/fontforge/fontforge/releases/download/"
version "/fontforge-dist-" version ".tar.gz"))
version "/fontforge-dist-" version ".tar.xz"))
(sha256 (base32
"1kavnhbkzc1hk6f39fynq9s0haama81ddrbld4b5x60d0dbaawvc"))
(modules '((guix build utils)))
(snippet
'(begin
;; Make builds bit-reproducible by using fixed date strings.
(substitute* "configure"
(("^FONTFORGE_MODTIME=.*$")
"FONTFORGE_MODTIME=\"1459819518L\"\n")
(("^FONTFORGE_MODTIME_STR=.*$")
"FONTFORGE_MODTIME_STR=\"20:25 CDT 4-Apr-2016\"\n")
(("^FONTFORGE_VERSIONDATE=.*$")
"FONTFORGE_VERSIONDATE=\"20160404\"\n"))))
(patches (list (search-patch "fontforge-svg-modtime.patch")))))
"08l8h3yvk4v7652jvmd3ls7nf5miybkx2fmkf1mpwwfixpxxw2l4"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
@ -541,20 +529,11 @@ definitions.")
("libxml2" ,libxml2)
("pango" ,pango)
("potrace" ,potrace)
("python" ,python)
("python" ,python-wrapper)
("zlib" ,zlib)))
(arguments
'(#:tests? #f
#:phases
'(#:phases
(modify-phases %standard-phases
(add-after 'build 'build-contrib
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin")))
(and (zero? (system* "make" "-Ccontrib/fonttools"
"CC=gcc" "showttf"))
(begin (install-file "contrib/fonttools/showttf" bin)
#t)))))
(add-after 'install 'set-library-path
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
@ -576,4 +555,4 @@ definitions.")
opentype fonts. You can save fonts in many different outline formats, and
generate bitmaps.")
(license license:gpl3+)
(home-page "http://fontforge.org/")))
(home-page "https://fontforge.github.io/en-US/")))

View File

@ -46,7 +46,7 @@
(define-public lftp
(package
(name "lftp")
(version "4.8.1")
(version "4.8.2")
(source (origin
(method url-fetch)
;; See https://lftp.tech/get.html for mirrors.
@ -58,7 +58,7 @@
"ftp/lftp/lftp-" version ".tar.xz")))
(sha256
(base32
"09vvwn5w3n8ahx57b7n6qvg1abnw9w7mm4d8p381pliab6jxlw77"))))
"176d90amkm1klwjpfpzdsvmjnyri8f74bv4fpip8app0fs25p1sw"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))

View File

@ -5302,7 +5302,7 @@ providing graphical log-ins and managing local and remote displays.")
(define-public libgtop
(package
(name "libgtop")
(version "2.36.0")
(version "2.38.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
@ -5310,7 +5310,7 @@ providing graphical log-ins and managing local and remote displays.")
name "-" version ".tar.xz"))
(sha256
(base32
"0ax17c7nplghxgsf8zl92nmhkbnggj62wwzl7nq00aqb2m6f7gqk"))))
"04mnxgzyb26wqk6qij4iw8cxwl82r8pcsna5dg8vz2j3pdi0wv2g"))))
(build-system gnu-build-system)
(native-inputs
`(("gobject-introspection" ,gobject-introspection)

View File

@ -7,7 +7,7 @@
;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
;;; Copyright © 2016, 2017 ng0 <ng0@infotropique.org>
;;; Copyright © 2016 Christopher Baines <mail@cbaines.net>
;;; Copyright © 2016 Mike Gerwitz <mtg@gnu.org>
;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
@ -822,3 +822,31 @@ qualities. To reconstruct a secret key, you re-enter those
bytes (whether by hand, OCR, QR code, or the like) and paperkey can use
them to transform your existing public key into a secret key.")
(license license:gpl2+)))
(define-public gpa
(package
(name "gpa")
(version "0.9.10")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnupg/gpa/"
name "-" version ".tar.bz2"))
(sha256
(base32
"09xphbi2456qynwqq5n0yh0zdmdi2ggrj3wk4hsyh5lrzlvcrff3"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("gnupg" ,gnupg)
("gpgme" ,gpgme)
("libassuan" ,libassuan)
("libgpg-error" ,libgpg-error)
("gtk+-2" ,gtk+-2)))
(home-page "https://gnupg.org/software/gpa/")
(synopsis "Graphical user interface for GnuPG")
(description
"GPA, the GNU Privacy Assistant, is a graphical user interface for
@uref{https://gnupg.org, GnuPG}. It can be used to encrypt, decrypt, and sign
files, to verify signatures, and to manage the private and public keys.")
(license license:gpl3+)))

View File

@ -27,18 +27,18 @@
(define-public libunwind
(package
(name "libunwind")
(version "1.1")
(version "1.2.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://savannah/libunwind/libunwind-"
version ".tar.gz"))
(sha256
(base32
"16nhx2pahh9d62mvszc88q226q5lwjankij276fxwrm8wb50zzlx"))
(patches (search-patches "libunwind-CVE-2015-3239.patch"))))
"1jsslwkilwrsj959dc8b479qildawz67r8m4lzxm7glcwa8cngiz"))))
(build-system gnu-build-system)
(arguments
;; FIXME: As of glibc 2.17, we get 3 out of 34 test failures.
;; FIXME: As of glibc 2.25, we get 1 out of 34 test failures (2 are
;; expected to fail).
;; Report them upstream.
'(#:tests? #f))
(home-page "http://www.nongnu.org/libunwind")

View File

@ -693,17 +693,16 @@ slabtop, and skill.")
(define-public e2fsprogs
(package
(name "e2fsprogs")
(version "1.43.5")
(version "1.43.6")
(source (origin
(method url-fetch)
(uri (string-append
"mirror://kernel.org/linux/kernel/people/tytso/"
name "/v" version "/"
name "-" version ".tar.xz"))
(patches (search-patches "e2fsprogs-32bit-quota-warnings.patch"))
(sha256
(base32
"05ssjpmy0fpv2ik6ibm1f47wr6794nf0q50r581vygrqvsd3s7r6"))))
"00ilv65dzcgiap435j89xk86shf7rrav3wsik7cahy789qijdcn9"))))
(build-system gnu-build-system)
(inputs `(("util-linux" ,util-linux)))
(native-inputs `(("pkg-config" ,pkg-config)
@ -1566,16 +1565,16 @@ devices. It replaces @code{iwconfig}, which is deprecated.")
(define-public powertop
(package
(name "powertop")
(version "2.8")
(version "2.9")
(source
(origin
(method url-fetch)
(uri (string-append
"https://01.org/sites/default/files/downloads/powertop/powertop-"
"https://01.org/sites/default/files/downloads/powertop/powertop-v"
version ".tar.gz"))
(sha256
(base32
"0nlwazxbnn0k6q5f5b09wdhw0f194lpzkp3l7vxansqhfczmcyx8"))))
"0l4jjlf05li2mc6g8nrss3h435wjhmnqd8m7v3kha3x0x7cbfzxa"))))
(build-system gnu-build-system)
(arguments
'(#:phases
@ -2369,11 +2368,16 @@ country-specific regulations for the wireless spectrum.")
("flex" ,flex)
("bison" ,bison)
("which" ,which)))
(outputs '("lib" ;avoid perl in closure
"out"))
(arguments
`(#:tests? #f ; no 'check' target
#:make-flags (list (string-append "PREFIX=" %output)
(string-append "ETCDIR=" %output "/etc")
(string-append "MANDIR=" %output "/share/man"))
(string-append "ETCDIR=" (assoc-ref %outputs "lib") "/etc")
(string-append "INCLUDEDIR="
(assoc-ref %outputs "lib") "/include")
(string-append "MANDIR=" %output "/share/man")
(string-append "LIBDIR=" (assoc-ref %outputs "lib") "/lib"))
#:phases
(modify-phases %standard-phases
(delete 'configure)
@ -2462,7 +2466,7 @@ SMBus access.")
(base32
"1siplsfgvcxamyqf44h71jx6jdfmvhfm7mh0y1q8ps4zs6pj2zwh"))))
(build-system gnu-build-system)
(inputs `(("lm-sensors" ,lm-sensors)
(inputs `(("lm-sensors" ,lm-sensors "lib")
("gtk" ,gtk+-2)))
(native-inputs `(("pkg-config" ,pkg-config)))
(arguments
@ -3159,7 +3163,7 @@ and copy/paste text in the console and in xterm.")
(define-public btrfs-progs
(package
(name "btrfs-progs")
(version "4.13")
(version "4.13.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/linux/kernel/"
@ -3167,7 +3171,7 @@ and copy/paste text in the console and in xterm.")
"btrfs-progs-v" version ".tar.xz"))
(sha256
(base32
"17m67jm29phfvkmd72lxb1z9nymn9a9pqnja8zfb1mvflsqwbz3m"))))
"1clavvrlkswgicqsm2yfsxqw04lsn8dra0db84jqm6j2apz80kz0"))))
(build-system gnu-build-system)
(outputs '("out"
"static")) ; static versions of the binaries in "out"
@ -3195,8 +3199,9 @@ and copy/paste text in the console and in xterm.")
("libblkid:static" ,util-linux "static")
("libuuid" ,util-linux)
("libuuid:static" ,util-linux "static")
("lzo" ,lzo)
("zlib" ,zlib)
("lzo" ,lzo)))
("zstd" ,zstd)))
(native-inputs `(("pkg-config" ,pkg-config)
("asciidoc" ,asciidoc)
("xmlto" ,xmlto)

View File

@ -3,6 +3,7 @@
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 ng0 <ng0@infotropique.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -26,6 +27,7 @@
#:use-module (guix utils)
#:use-module (guix build-system cmake)
#:use-module (gnu packages)
#:use-module (gnu packages glib)
#:use-module (gnu packages kde-frameworks)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages qt))
@ -188,3 +190,31 @@ desktop environment.")
(description "lxqt-session provides the standard session manager
for the LXQt desktop environment.")
(license lgpl2.1+)))
(define-public lxqt-build-tools
(package
(name "lxqt-build-tools")
(version "0.4.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/lxde/lxqt-build-tools/releases/"
"download/" version "/" name "-" version ".tar.xz"))
(file-name (string-append name "-" version ".tar.xz"))
(sha256
(base32
"1llbrjbgabxlq933a8cpg03b3mdmvd8983csnd4f7vrcj51nv0xh"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f)) ;No tests
(native-inputs
`(("pkg-config" ,pkg-config)
("glib" ,glib)))
(inputs
`(("qtbase" ,qtbase)))
(synopsis "LXQt Build tools")
(description
"Lxqt-build-tools is providing several tools needed to build LXQt
itself as well as other components maintained by the LXQt project.")
(home-page "http://lxqt.org")
(license lgpl2.1+)))

View File

@ -677,7 +677,9 @@ Sega Master System/Mark III, Sega Genesis/Mega Drive, BBC Micro
(("SHELL=/bin/sh") "SHELL=sh")
;; When checking the fontforge version do not consider the
;; version string that's part of the directory.
(("head -n") "tail -n"))
(("head -n") "tail -n")
;; Also allow for SOURCE_DATE_EPOCH = 0 in fontforge.
(("20110222") "19700101"))
(setenv "out" "www")
(setenv "conf" "www")
#t))

View File

@ -3,7 +3,7 @@
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@ -98,14 +98,14 @@ computers over a network.")
(define-public openntpd
(package
(name "openntpd")
(version "6.1p1")
(version "6.2p2")
(source (origin
(method url-fetch)
(uri (string-append
"mirror://openbsd/OpenNTPD/" name "-" version ".tar.gz"))
(sha256
(base32
"1ykx9ga76k5m54h7k5x4ds2clxsyfniss5vmf88pxnrip5bx6if8"))))
"1chghbh1bnwhxdgkqki51w94nwvlyj1a9q8716r4v2h0gc9s822q"))))
(build-system gnu-build-system)
(home-page "http://www.openntpd.org/")
(synopsis "NTP client and server by the OpenBSD Project")

View File

@ -1,46 +0,0 @@
Fix a test failure on 32-bit platforms.
Patch copied from upstream source repository:
https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git/commit/?id=9e31a5696c4b699bf000a07b86601c1fb91c0493
diff --git a/lib/support/mkquota.c b/lib/support/mkquota.c
index 00f3a40..931a839 100644
--- a/lib/support/mkquota.c
+++ b/lib/support/mkquota.c
@@ -50,11 +50,13 @@ static void print_dquot(const char *desc, struct dquot *dq)
{
if (desc)
fprintf(stderr, "%s: ", desc);
- fprintf(stderr, "%u %ld:%ld:%ld %ld:%ld:%ld\n",
- dq->dq_id, dq->dq_dqb.dqb_curspace,
- dq->dq_dqb.dqb_bsoftlimit, dq->dq_dqb.dqb_bhardlimit,
- dq->dq_dqb.dqb_curinodes,
- dq->dq_dqb.dqb_isoftlimit, dq->dq_dqb.dqb_ihardlimit);
+ fprintf(stderr, "%u %lld:%lld:%lld %lld:%lld:%lld\n",
+ dq->dq_id, (long long) dq->dq_dqb.dqb_curspace,
+ (long long) dq->dq_dqb.dqb_bsoftlimit,
+ (long long) dq->dq_dqb.dqb_bhardlimit,
+ (long long) dq->dq_dqb.dqb_curinodes,
+ (long long) dq->dq_dqb.dqb_isoftlimit,
+ (long long) dq->dq_dqb.dqb_ihardlimit);
}
#else
static void print_dquot(const char *desc EXT2FS_ATTR((unused)),
@@ -524,11 +526,11 @@ static int scan_dquots_callback(struct dquot *dquot, void *cb_data)
dq->dq_dqb.dqb_curinodes != dquot->dq_dqb.dqb_curinodes) {
scan_data->usage_is_inconsistent = 1;
fprintf(stderr, "[QUOTA WARNING] Usage inconsistent for ID %u:"
- "actual (%ld, %ld) != expected (%ld, %ld)\n",
- dq->dq_id, dq->dq_dqb.dqb_curspace,
- dq->dq_dqb.dqb_curinodes,
- dquot->dq_dqb.dqb_curspace,
- dquot->dq_dqb.dqb_curinodes);
+ "actual (%lld, %lld) != expected (%lld, %lld)\n",
+ dq->dq_id, (long long) dq->dq_dqb.dqb_curspace,
+ (long long) dq->dq_dqb.dqb_curinodes,
+ (long long) dquot->dq_dqb.dqb_curspace,
+ (long long) dquot->dq_dqb.dqb_curinodes);
}
if (scan_data->update_limits) {

View File

@ -1,35 +0,0 @@
Propagate source font modification time to svg during conversion. Similar to
what upstream commit 95a470e941d9a20fbdaca51334e8b6b9d93cfae4 did for TTF
files.
Submitted upstream at http://github.com/fontforge/fontforge/pull/2696
--- a/fontforge/svg.c
+++ b/fontforge/svg.c
@@ -27,7 +27,6 @@
#include "fontforgevw.h"
#include <unistd.h>
#include <math.h>
-#include <time.h>
#include <locale.h>
#include <utype.h>
#include <chardata.h>
@@ -62,7 +61,6 @@ static int svg_outfontheader(FILE *file, SplineFont *sf,int layer) {
BlueData bd;
char *hash, *hasv, ch;
int minu, maxu, i;
- time_t now;
const char *author = GetAuthor();
memset(&info,0,sizeof(info));
@@ -78,9 +76,8 @@ static int svg_outfontheader(FILE *file, SplineFont *sf,int layer) {
fprintf( file, "\n-->\n" );
}
fprintf( file, "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\">\n" );
- time(&now);
fprintf( file, "<metadata>\nCreated by FontForge %d at %s",
- FONTFORGE_VERSIONDATE_RAW, ctime(&now) );
+ FONTFORGE_VERSIONDATE_RAW, ctime((time_t*)&sf->modificationtime) );
if ( author!=NULL )
fprintf(file," By %s\n", author);
else

View File

@ -1,17 +0,0 @@
Copied from Fedora.
https://bugzilla.redhat.com/show_bug.cgi?id=1232265
http://pkgs.fedoraproject.org/cgit/libunwind.git/tree/libunwind-1.1-fix-CVE-2015-3239.patch
diff -up libunwind-1.1/include/dwarf_i.h.CVE20153239 libunwind-1.1/include/dwarf_i.h
--- libunwind-1.1/include/dwarf_i.h.CVE20153239 2015-07-10 13:38:36.404996748 -0400
+++ libunwind-1.1/include/dwarf_i.h 2015-07-10 13:39:25.050707613 -0400
@@ -20,7 +20,7 @@
extern const uint8_t dwarf_to_unw_regnum_map[DWARF_REGNUM_MAP_LENGTH];
/* REG is evaluated multiple times; it better be side-effects free! */
# define dwarf_to_unw_regnum(reg) \
- (((reg) <= DWARF_REGNUM_MAP_LENGTH) ? dwarf_to_unw_regnum_map[reg] : 0)
+ (((reg) < DWARF_REGNUM_MAP_LENGTH) ? dwarf_to_unw_regnum_map[reg] : 0)
#endif
#ifdef UNW_LOCAL_ONLY

View File

@ -1,28 +0,0 @@
Fix build with PyOpenSSL > 17.2.0.
See <https://github.com/certbot/certbot/issues/5111>.
Patch copied from upstream source repository:
https://github.com/certbot/certbot/commit/f6be07da74c664b57ac8c053585f919c79f9af44
diff --git a/acme/crypto_util.py b/acme/crypto_util.py
index de15284c03..b8fba03488 100644
--- a/acme/crypto_util.py
+++ b/acme/crypto_util.py
@@ -2,6 +2,7 @@
import binascii
import contextlib
import logging
+import os
import re
import socket
import sys
@@ -243,7 +244,7 @@ def gen_ss_cert(key, domains, not_before=None,
"""
assert domains, "Must provide one or more hostnames for the cert."
cert = OpenSSL.crypto.X509()
- cert.set_serial_number(int(binascii.hexlify(OpenSSL.rand.bytes(16)), 16))
+ cert.set_serial_number(int(binascii.hexlify(os.urandom(16)), 16))
cert.set_version(2)
extensions = [

View File

@ -34,6 +34,7 @@
#:use-module (gnu packages crypto)
#:use-module (gnu packages cups)
#:use-module (gnu packages databases)
#:use-module (gnu packages docbook)
#:use-module (gnu packages tls)
#:use-module (gnu packages popt)
#:use-module (gnu packages pkg-config)
@ -42,7 +43,8 @@
#:use-module (gnu packages kerberos)
#:use-module (gnu packages linux)
#:use-module (gnu packages perl)
#:use-module (gnu packages python))
#:use-module (gnu packages python)
#:use-module (gnu packages xml))
(define-public cifs-utils
(package
@ -159,8 +161,19 @@ anywhere.")
"0pap686cl0j5c9v1v09krpqdk416x3851fbcap5ysp1zajrfw7aq"))))
(build-system gnu-build-system)
(arguments
'(#:phases
`(#:phases
(modify-phases %standard-phases
(add-before 'configure 'locate-docbook-stylesheets
(lambda* (#:key inputs #:allow-other-keys)
;; XXX for some reason XML_CATALOG_FILES is not respected.
(substitute* '("buildtools/wafsamba/samba_conftests.py"
"buildtools/wafsamba/wafsamba.py"
"docs-xml/xslt/man.xsl")
(("http://docbook.sourceforge.net/release/xsl/current/")
(string-append (assoc-ref inputs "docbook-xsl")
"/xml/xsl/docbook-xsl-"
,(package-version docbook-xsl) "/")))
#t))
(replace 'configure
;; samba uses a custom configuration script that runs waf.
(lambda* (#:key outputs #:allow-other-keys)
@ -203,7 +216,9 @@ anywhere.")
("tevent" ,tevent)
("tdb" ,tdb)))
(native-inputs
`(("perl" ,perl)
`(("docbook-xsl" ,docbook-xsl) ;for generating manpages
("xsltproc" ,libxslt) ;ditto
("perl" ,perl)
("pkg-config" ,pkg-config)
("python" ,python-2))) ; incompatible with Python 3
(home-page "https://www.samba.org/")

View File

@ -248,6 +248,51 @@ interfaces (GUIs) in the Tcl language.")
utility functions and modules all written in high-level Tcl.")
(license (package-license tcl))))
(define-public tklib
(package
(name "tklib")
(version "0.6")
(source (origin
(method url-fetch)
(uri (string-append "https://core.tcl.tk/tklib/tarball/tklib-"
version ".tar.gz?uuid=tklib-0-6"))
(sha256
(base32
"03y0bzgwbh7nnyqkh8n00bbkq2fyblq39s3bdb6mawna0bbn0wwg"))))
(build-system gnu-build-system)
(native-inputs
`(("tcl" ,tcl)))
(propagated-inputs
`(("tcllib" ,tcllib)
("tk" ,tk))) ; for "wish"
(native-search-paths
(list (search-path-specification
(variable "TCLLIBPATH")
(separator " ")
(files (list (string-append "lib/tklib" version))))))
(home-page "https://www.tcl.tk/software/tklib/")
(synopsis "Tk utility modules for Tcl")
(description "Tklib is a collection of common utility functions and
modules for Tk, all written in high-level Tcl. Examples of provided widgets:
@enumerate
@item @code{chatwidget}
@item @code{datefield}
@item @code{tooltip}
@item @code{cursor}
@item @code{ipentry}
@item @code{tablelist}
@item @code{history}
@item @code{tkpiechart}
@item @code{ico}
@item @code{crosshair}
@item @code{ntext}
@item @code{plotchart}
@item @code{ctext}
@item @code{autosscroll}
@item @code{canvas}
@end enumerate")
(license (package-license tcl))))
(define-public tclxml
(package
(name "tclxml")

View File

@ -486,14 +486,13 @@ netcat implementation that supports TLS.")
(package
(name "python-acme")
;; Remember to update the hash of certbot when updating python-acme.
(version "0.18.1")
(version "0.18.2")
(source (origin
(method url-fetch)
(uri (pypi-uri "acme" version))
(patches (search-patches "python-acme-dont-use-openssl-rand.patch"))
(sha256
(base32
"0ry6vhfkhds28sg232hngwfnkqihsxv9r8w92c6nz45r7w56qk0y"))))
"1xiy8m7501g5l9kpdmyvyz72nfnl72l19qkrf76fyvby7adzm3ki"))))
(build-system python-build-system)
(arguments
`(#:phases
@ -541,7 +540,7 @@ netcat implementation that supports TLS.")
(uri (pypi-uri name version))
(sha256
(base32
"0k3bqfkjxyg0qivs4a6iz6gyqx8li4hgn8m268r72lxgq46ay2mf"))))
"16lw4n7kwnkvh9sz2f97c7ad1wwp33mg5fc332lpy5n17zpfc8h1"))))
(build-system python-build-system)
(arguments
`(,@(substitute-keyword-arguments (package-arguments python-acme)

View File

@ -124,14 +124,14 @@ as well as the classic centralized workflow.")
(name "git")
;; XXX When updating Git, check if the special 'git:src' input to cgit needs
;; to be updated as well.
(version "2.14.1")
(version "2.14.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/software/scm/git/git-"
version ".tar.xz"))
(sha256
(base32
"1iic3wiihxp3l3k6d4z886v3869c3dzgddjxnd5124wy1rnlqwkg"))))
"18f70gfzwqd210806hmf94blcd7yv5h9ka6xqkpd2jhijqwp5sah"))))
(build-system gnu-build-system)
(native-inputs
`(("native-perl" ,perl)
@ -145,7 +145,7 @@ as well as the classic centralized workflow.")
(sha256
(base32
"1whlsiicayalym4hkf01zdiqpw37gdf7c52gw9ki7bv2x3hf3g3y"))))))
"1z05a7hxxndyby3dbj3gaw91sjwmky5d1yph96jmj0fhx78m1lvd"))))))
(inputs
`(("curl" ,curl)
("expat" ,expat)

View File

@ -168,14 +168,14 @@ commands would.")
(define-public i3-wm
(package
(name "i3-wm")
(version "4.14")
(version "4.14.1")
(source (origin
(method url-fetch)
(uri (string-append "https://i3wm.org/downloads/i3-"
version ".tar.bz2"))
(sha256
(base32
"1mm5jazwv4dz3k8vl1lfrcw86agpws5k9lmav1ly51qvmzivsfmf"))))
"1cazmfbbx6n8c81h6x6pdayq3mxs2ml3adz165z8vapkc72kl1nh"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags

View File

@ -13,6 +13,7 @@
;;; Copyright © 2016, 2017 John Darrington <jmd@gnu.org>
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -39,10 +40,12 @@
#:use-module (guix build-system python)
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages anthy)
#:use-module (gnu packages autotools)
#:use-module (gnu packages bison)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages emacs)
#:use-module (gnu packages flex)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
@ -54,6 +57,7 @@
#:use-module (gnu packages gtk)
#:use-module (gnu packages image)
#:use-module (gnu packages libbsd)
#:use-module (gnu packages libedit)
#:use-module (gnu packages linux)
#:use-module (gnu packages llvm)
#:use-module (gnu packages m4)
@ -62,6 +66,7 @@
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages qt)
#:use-module (gnu packages spice)
#:use-module (gnu packages video)
#:use-module (gnu packages xiph)
@ -5982,3 +5987,96 @@ disconnect from these programs and reconnect from the same or another machine,
without losing any state. It can also be used to forward full desktops from
X11 servers, Windows, or macOS.")
(license license:gpl2+)))
(define-public uim
(package
(name "uim")
(version "1.8.6")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/uim/uim/releases/download/uim-"
version "/uim-" version ".tar.bz2"))
(sha256
(base32
"0pr3rfqpxha8p6cxzdjsxbbmmr76riklzw36f68phd1zqw1sh7kv"))))
(build-system gnu-build-system)
(inputs
`(("anthy" ,anthy)
("libedit" ,libedit)
("libxft" ,libxft)
("m17n-lib" ,m17n-lib)))
(native-inputs
`(("emacs" ,emacs-minimal)
("intltool" ,intltool)
("pkg-config" ,pkg-config)))
(arguments
`(#:modules ((guix build gnu-build-system)
(guix build utils)
(guix build emacs-utils))
#:imported-modules (,@%gnu-build-system-modules
(guix build emacs-utils))
#:configure-flags
(list "--with-anthy-utf8"
(string-append "--with-lispdir=" %output
"/share/emacs/site-lisp/guix.d")
;; Set proper runpath
(string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))
#:phases
(modify-phases %standard-phases
;; Set path of uim-el-agent and uim-el-helper-agent executables
(add-after 'configure 'configure-uim-el
(lambda* (#:key outputs #:allow-other-keys)
(substitute* "emacs/uim-var.el"
(("\"(uim-el-agent|uim-el-helper-agent)\"" _ executable)
(string-append "\"" (assoc-ref outputs "out")
"/bin/" executable "\"")))
#t))
;; Generate emacs autoloads for uim.el
(add-after 'install 'make-autoloads
(lambda* (#:key outputs #:allow-other-keys)
(emacs-generate-autoloads
,name (string-append (assoc-ref outputs "out")
"/share/emacs/site-lisp"))
#t)))))
(home-page "https://github.com/uim/uim")
(synopsis "Multilingual input method framework")
(description "Uim is a multilingual input method library and environment.
It provides a simple, easily extensible and high code-quality input method
development platform, and useful input method environment for users of desktop
and embedded platforms.")
(license (list license:lgpl2.1+ ; scm/py.scm, pixmaps/*.{svg,png} (see pixmaps/README)
license:gpl2+ ; scm/pinyin-big5.scm
license:gpl3+ ; scm/elatin-rules.cm
license:public-domain ; scm/input-parse.scm, scm/match.scm
;; gtk2/toolbar/eggtrayicon.{ch},
;; qt3/chardict/kseparator.{cpp,h},
;; qt3/pref/kseparator.{cpp,h}
license:lgpl2.0+
;; pixmaps/*.{svg,png} (see pixmaps/README),
;; all other files
license:bsd-3))))
(define-public uim-gtk
(package
(inherit uim)
(name "uim-gtk")
(inputs
`(("gtk" ,gtk+)
("gtk" ,gtk+-2)
,@(package-inputs uim)))
(synopsis "Multilingual input method framework (GTK+ support)")))
(define-public uim-qt
(package
(inherit uim)
(name "uim-qt")
(inputs
`(("qt" ,qt-4)
,@(package-inputs uim)))
(arguments
(substitute-keyword-arguments (package-arguments uim)
((#:configure-flags configure-flags)
(append configure-flags (list "--with-qt4-immodule"
"--with-qt4")))))
(synopsis "Multilingual input method framework (Qt support)")))

View File

@ -2,6 +2,7 @@
;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -61,6 +62,8 @@
(default "/var/run/cuirass/cuirass.db"))
(port cuirass-configuration-port ;integer (port)
(default 8081))
(host cuirass-configuration-host ;string
(default "localhost"))
(specifications cuirass-configuration-specifications)
;gexp that evaluates to specification-alist
(use-substitutes? cuirass-configuration-use-substitutes? ;boolean
@ -84,6 +87,7 @@
(interval (cuirass-configuration-interval config))
(database (cuirass-configuration-database config))
(port (cuirass-configuration-port config))
(host (cuirass-configuration-host config))
(specs (cuirass-configuration-specifications config))
(use-substitutes? (cuirass-configuration-use-substitutes? config))
(one-shot? (cuirass-configuration-one-shot? config))
@ -100,6 +104,7 @@
#$(scheme-file "cuirass-specs.scm" specs)
"--database" #$database
"--port" #$(number->string port)
"--listen" #$host
"--interval" #$(number->string interval)
#$@(if use-substitutes? '("--use-substitutes") '())
#$@(if one-shot? '("--one-shot") '())

View File

@ -544,11 +544,11 @@ in a loop. See <http://bugs.gnu.org/26931>.")
(>= gid 100))))
;; Last, the job that uses a command; allows us to test whether
;; $PATH is sane. (Note that 'marionette-eval' stringifies objects
;; that don't have a read syntax, hence the string.)
;; $PATH is sane.
(test-equal "root's job with command"
"#<eof>"
(wait-for-file "/root/witness-touch" marionette))
""
(wait-for-file "/root/witness-touch" marionette
#:read '(@ (ice-9 rdelim) read-string)))
(test-end)
(exit (= (test-runner-fail-count (test-runner-current)) 0)))))

View File

@ -127,7 +127,11 @@
"Return a variant of OS where ROOTS are registered as GC roots."
(operating-system
(inherit os)
(services (cons (service gc-root-service-type roots)
;; We use this procedure for the installation OS, which already defines GC
;; roots. Add ROOTS to those.
(services (cons (simple-service 'extra-root
gc-root-service-type roots)
(operating-system-user-services os)))))

View File

@ -67,7 +67,7 @@
#:key source inputs native-inputs outputs system target
(meson (default-meson))
(ninja (default-ninja))
(glib-or-gtk #f)
(glib-or-gtk? #f)
#:allow-other-keys
#:rest arguments)
"Return a bag for NAME."

View File

@ -61,7 +61,6 @@
%gnu-updater
%gnu-ftp-updater
%gnome-updater
%kde-updater
%xorg-updater
%kernel.org-updater))
@ -512,6 +511,9 @@ list available from %GNU-FILE-LIST-URI over HTTP(S)."
(values name+version #f)
(values (match:substring match 1) (match:substring match 2)))))
(define gnome-package?
(url-prefix-predicate "mirror://gnome/"))
(define (pure-gnu-package? package)
"Return true if PACKAGE is a non-Emacs and non-GNOME GNU package. This
excludes AucTeX, for instance, whose releases are now uploaded to
@ -522,70 +524,9 @@ releases are on gnu.org."
(not (gnome-package? package))
(gnu-package? package)))
(define (url-prefix-predicate prefix)
"Return a predicate that returns true when passed a package where one of its
source URLs starts with PREFIX."
(lambda (package)
(define matching-uri?
(match-lambda
((? string? uri)
(string-prefix? prefix uri))
(_
#f)))
(match (package-source package)
((? origin? origin)
(match (origin-uri origin)
((? matching-uri?) #t)
(_ #f)))
(_ #f))))
(define gnu-hosted?
(url-prefix-predicate "mirror://gnu/"))
(define gnome-package?
(url-prefix-predicate "mirror://gnome/"))
(define (latest-gnome-release package)
"Return the latest release of PACKAGE, the name of a GNOME package."
(define %not-dot
(char-set-complement (char-set #\.)))
(define (even-minor-version? version)
(match (string-tokenize version %not-dot)
(((= string->number major) (= string->number minor) . rest)
(and minor (even? minor)))
(_
#t))) ;cross fingers
(define (even-numbered? file)
;; Return true if FILE somehow denotes an even-numbered file name. The
;; trick here is that we want this to match both directories such as
;; "3.18.6" and actual file names such as "gtk+-3.18.6.tar.bz2".
(let-values (((name version) (package-name->name+version file)))
(even-minor-version? (or version name))))
(define upstream-name
;; Some packages like "NetworkManager" have camel-case names.
(package-upstream-name package))
(false-if-ftp-error
(latest-ftp-release upstream-name
#:server "ftp.gnome.org"
#:directory (string-append "/pub/gnome/sources/"
upstream-name)
;; <https://www.gnome.org/gnome-3/source/> explains
;; that odd minor version numbers represent development
;; releases, which we are usually not interested in.
#:keep-file? even-numbered?
;; ftp.gnome.org provides no signatures, only
;; checksums.
#:file->signature (const #f))))
(define (latest-kde-release package)
"Return the latest release of PACKAGE, the name of an KDE.org package."
(let ((uri (string->uri (origin-uri (package-source package)))))
@ -642,13 +583,6 @@ source URLs starts with PREFIX."
(pure-gnu-package? package))))
(latest latest-release*)))
(define %gnome-updater
(upstream-updater
(name 'gnome)
(description "Updater for GNOME packages")
(pred gnome-package?)
(latest latest-gnome-release)))
(define %kde-updater
(upstream-updater
(name 'kde)

View File

@ -321,7 +321,9 @@ Raise an '&http-get-error' condition if downloading fails."
;; Update the cache and return an input port.
(guard (c ((http-get-error? c)
(if (= 304 (http-get-error-code c)) ;"Not Modified"
cache-port
(begin
(utime file) ;update FILE's mtime
cache-port)
(raise c))))
(let ((port (http-fetch uri #:text? text?
#:headers headers)))

112
guix/import/gnome.scm Normal file
View File

@ -0,0 +1,112 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.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 (guix import gnome)
#:use-module (guix upstream)
#:use-module (guix utils)
#:use-module (guix packages)
#:use-module (guix http-client)
#:use-module (json)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-34)
#:use-module (web uri)
#:use-module (ice-9 match)
#:export (%gnome-updater))
;;; Commentary:
;;;
;;; This package provides not an actual importer but simply an updater for
;;; GNOME packages. It grabs package meta-data from 'cache.json' files
;;; available on ftp.gnome.org.
;;;
;;; Code:
(define (jsonish->upstream-source name jsonish)
"Return an <upstream-source> object for package NAME, using JSONISH as the
source for metadata."
(match jsonish
((version . dictionary)
(upstream-source
(package name)
(version version)
(urls (filter-map (lambda (extension)
(match (hash-ref dictionary extension)
(#f
#f)
((? string? relative-url)
(string-append "mirror://gnome/sources/"
name "/" relative-url))))
'("tar.lz" "tar.xz" "tar.bz2" "tar.gz")))))))
(define (latest-gnome-release package)
"Return the latest release of PACKAGE, a GNOME package, or #f if it could
not be determined."
(define %not-dot
(char-set-complement (char-set #\.)))
(define (even-minor-version? version)
(match (string-tokenize version %not-dot)
(((= string->number major) (= string->number minor) . rest)
(and minor (even? minor)))
(_
#t))) ;cross fingers
(define upstream-name
;; Some packages like "NetworkManager" have camel-case names.
(package-upstream-name package))
(guard (c ((http-get-error? c)
(if (= 404 (http-get-error-code c))
#f
(raise c))))
(let* ((port (http-fetch/cached
(string->uri (string-append
"https://ftp.gnome.org/pub/gnome/sources/"
upstream-name "/cache.json"))
;; ftp.gnome.org supports 'if-Modified-Since', so the local
;; cache can expire early.
#:ttl (* 60 10)))
(json (json->scm port)))
(close-port port)
(match json
((4 (? hash-table? releases) _ ...)
(let* ((releases (hash-ref releases upstream-name))
(latest (hash-fold (lambda (key value result)
(cond ((even-minor-version? key)
(match result
(#f
(cons key value))
((newest . _)
(if (version>? key newest)
(cons key value)
result))))
(else
result)))
#f
releases)))
(and latest
(jsonish->upstream-source upstream-name latest))))))))
(define %gnome-updater
(upstream-updater
(name 'gnome)
(description "Updater for GNOME packages")
(pred (url-prefix-predicate "mirror://gnome/"))
(latest latest-gnome-release)))

View File

@ -45,6 +45,7 @@
upstream-source-signature-urls
upstream-source-archive-types
url-prefix-predicate
coalesce-sources
upstream-updater
@ -81,6 +82,24 @@
(signature-urls upstream-source-signature-urls ;#f | list of strings
(default #f)))
(define (url-prefix-predicate prefix)
"Return a predicate that returns true when passed a package where one of its
source URLs starts with PREFIX."
(lambda (package)
(define matching-uri?
(match-lambda
((? string? uri)
(string-prefix? prefix uri))
(_
#f)))
(match (package-source package)
((? origin? origin)
(match (origin-uri origin)
((? matching-uri?) #t)
(_ #f)))
(_ #f))))
(define (upstream-source-archive-types release)
"Return the available types of archives for RELEASE---a list of strings such
as \"gz\" or \"xz\"."