Merge branch 'master' into gnome-updates

This commit is contained in:
Mark H Weaver 2016-05-04 11:43:50 -04:00
commit 4e9d04a80b
28 changed files with 1416 additions and 73 deletions

View File

@ -403,6 +403,7 @@ GNU_SYSTEM_MODULES = \
patchdir = $(guilemoduledir)/gnu/packages/patches patchdir = $(guilemoduledir)/gnu/packages/patches
dist_patch_DATA = \ dist_patch_DATA = \
gnu/packages/patches/4store-fix-buildsystem.patch \
gnu/packages/patches/abiword-explictly-cast-bools.patch \ gnu/packages/patches/abiword-explictly-cast-bools.patch \
gnu/packages/patches/abiword-wmf-version-lookup-fix.patch \ gnu/packages/patches/abiword-wmf-version-lookup-fix.patch \
gnu/packages/patches/acl-hurd-path-max.patch \ gnu/packages/patches/acl-hurd-path-max.patch \
@ -640,6 +641,7 @@ dist_patch_DATA = \
gnu/packages/patches/nvi-assume-preserve-path.patch \ gnu/packages/patches/nvi-assume-preserve-path.patch \
gnu/packages/patches/nvi-dbpagesize-binpower.patch \ gnu/packages/patches/nvi-dbpagesize-binpower.patch \
gnu/packages/patches/nvi-db4.patch \ gnu/packages/patches/nvi-db4.patch \
gnu/packages/patches/ocaml-CVE-2015-8869.patch \
gnu/packages/patches/ocaml-findlib-make-install.patch \ gnu/packages/patches/ocaml-findlib-make-install.patch \
gnu/packages/patches/openexr-missing-samples.patch \ gnu/packages/patches/openexr-missing-samples.patch \
gnu/packages/patches/openimageio-boost-1.60.patch \ gnu/packages/patches/openimageio-boost-1.60.patch \
@ -678,7 +680,9 @@ dist_patch_DATA = \
gnu/packages/patches/plink-1.07-unclobber-i.patch \ gnu/packages/patches/plink-1.07-unclobber-i.patch \
gnu/packages/patches/plotutils-libpng-jmpbuf.patch \ gnu/packages/patches/plotutils-libpng-jmpbuf.patch \
gnu/packages/patches/polkit-drop-test.patch \ gnu/packages/patches/polkit-drop-test.patch \
gnu/packages/patches/poppler-CVE-2015-8868.patch \
gnu/packages/patches/portaudio-audacity-compat.patch \ gnu/packages/patches/portaudio-audacity-compat.patch \
gnu/packages/patches/portmidi-modular-build.patch \
gnu/packages/patches/procmail-ambiguous-getline-debian.patch \ gnu/packages/patches/procmail-ambiguous-getline-debian.patch \
gnu/packages/patches/pt-scotch-build-parallelism.patch \ gnu/packages/patches/pt-scotch-build-parallelism.patch \
gnu/packages/patches/pulseaudio-fix-mult-test.patch \ gnu/packages/patches/pulseaudio-fix-mult-test.patch \
@ -788,6 +792,11 @@ dist_patch_DATA = \
gnu/packages/patches/wpa-supplicant-CVE-2015-5314.patch \ gnu/packages/patches/wpa-supplicant-CVE-2015-5314.patch \
gnu/packages/patches/wpa-supplicant-CVE-2015-5315.patch \ gnu/packages/patches/wpa-supplicant-CVE-2015-5315.patch \
gnu/packages/patches/wpa-supplicant-CVE-2015-5316.patch \ gnu/packages/patches/wpa-supplicant-CVE-2015-5316.patch \
gnu/packages/patches/wpa-supplicant-CVE-2016-4476.patch \
gnu/packages/patches/wpa-supplicant-CVE-2016-4477-pt1.patch \
gnu/packages/patches/wpa-supplicant-CVE-2016-4477-pt2.patch \
gnu/packages/patches/wpa-supplicant-CVE-2016-4477-pt3.patch \
gnu/packages/patches/wpa-supplicant-CVE-2016-4477-pt4.patch \
gnu/packages/patches/xdotool-fix-makefile.patch \ gnu/packages/patches/xdotool-fix-makefile.patch \
gnu/packages/patches/xf86-video-ark-remove-mibstore.patch \ gnu/packages/patches/xf86-video-ark-remove-mibstore.patch \
gnu/packages/patches/xf86-video-ast-remove-mibstore.patch \ gnu/packages/patches/xf86-video-ast-remove-mibstore.patch \

View File

@ -874,7 +874,12 @@ commands and their arguments.")
(search-patches "wpa-supplicant-CVE-2015-5310.patch" (search-patches "wpa-supplicant-CVE-2015-5310.patch"
"wpa-supplicant-CVE-2015-5314.patch" "wpa-supplicant-CVE-2015-5314.patch"
"wpa-supplicant-CVE-2015-5315.patch" "wpa-supplicant-CVE-2015-5315.patch"
"wpa-supplicant-CVE-2015-5316.patch")))) "wpa-supplicant-CVE-2015-5316.patch"
"wpa-supplicant-CVE-2016-4476.patch"
"wpa-supplicant-CVE-2016-4477-pt1.patch"
"wpa-supplicant-CVE-2016-4477-pt2.patch"
"wpa-supplicant-CVE-2016-4477-pt3.patch"
"wpa-supplicant-CVE-2016-4477-pt4.patch"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:phases (alist-replace '(#:phases (alist-replace

View File

@ -1535,14 +1535,14 @@ data and settings.")
(define-public edirect (define-public edirect
(package (package
(name "edirect") (name "edirect")
(version "3.50") (version "4.10")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
;; Note: older versions are not retained. (uri (string-append "ftp://ftp.ncbi.nlm.nih.gov/entrez/entrezdirect/"
(uri "ftp://ftp.ncbi.nlm.nih.gov/entrez/entrezdirect/edirect.tar.gz") "versions/2016-05-03/edirect.tar.gz"))
(sha256 (sha256
(base32 (base32
"1cr3gzcs3flmgnnbj5iz93vh9w0fca1ilzi2q82cl63ln3mwvpz0")))) "15zsprak5yh8c1yrz4r1knmb5s8qcmdid4xdhkh3lqcv64l60hli"))))
(build-system perl-build-system) (build-system perl-build-system)
(arguments (arguments
`(#:tests? #f ;no "check" target `(#:tests? #f ;no "check" target

View File

@ -879,4 +879,7 @@ and binaries, plus debugging symbols in the 'debug' output), and Binutils.")
(define-public gcc-toolchain-5 (define-public gcc-toolchain-5
(gcc-toolchain gcc-5)) (gcc-toolchain gcc-5))
(define-public gcc-toolchain-6
(gcc-toolchain gcc-6))
;;; commencement.scm ends here ;;; commencement.scm ends here

View File

@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -166,34 +167,38 @@ may be either a libc package or #f.)"
`(alist-cons-before `(alist-cons-before
'configure 'set-cross-path 'configure 'set-cross-path
(lambda* (#:key inputs #:allow-other-keys) (lambda* (#:key inputs #:allow-other-keys)
;; Add the cross Linux headers to CROSS_CPATH, and remove them ;; Add the cross Linux headers to CROSS_C_*_INCLUDE_PATH,
;; from CPATH. ;; and remove them from C_*INCLUDE_PATH.
(let ((libc (assoc-ref inputs "libc")) (let ((libc (assoc-ref inputs "libc"))
(linux (assoc-ref inputs "xlinux-headers"))) (linux (assoc-ref inputs "xlinux-headers")))
(define (cross? x) (define (cross? x)
;; Return #t if X is a cross-libc or cross Linux. ;; Return #t if X is a cross-libc or cross Linux.
(or (string-prefix? libc x) (or (string-prefix? libc x)
(string-prefix? linux x))) (string-prefix? linux x)))
(let ((cpath (string-append
(setenv "CROSS_CPATH" libc "/include"
(string-append libc "/include:" ":" linux "/include")))
linux "/include")) (for-each (cut setenv <> cpath)
'("CROSS_C_INCLUDE_PATH"
"CROSS_CPLUS_INCLUDE_PATH"
"CROSS_OBJC_INCLUDE_PATH"
"CROSS_OBJCPLUS_INCLUDE_PATH")))
(setenv "CROSS_LIBRARY_PATH" (setenv "CROSS_LIBRARY_PATH"
(string-append libc "/lib")) (string-append libc "/lib"))
(for-each
(let ((cpath (search-path-as-string->list (lambda (var)
(getenv "C_INCLUDE_PATH"))) (and=> (getenv var)
(libpath (search-path-as-string->list (lambda (value)
(getenv "LIBRARY_PATH")))) (let* ((path (search-path-as-string->list value))
(setenv "CPATH" (native-path (list->search-path-as-string
(list->search-path-as-string (remove cross? path) ":")))
(remove cross? cpath) ":")) (setenv var native-path)))))
(for-each unsetenv '("C_INCLUDE_PATH"
'("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH")) "CPLUS_INCLUDE_PATH"
(setenv "LIBRARY_PATH" "OBJC_INCLUDE_PATH"
(list->search-path-as-string "OBJCPLUS_INCLUDE_PATH"
(remove cross? libpath) ":")) "LIBRARY_PATH"))
#t))) #t))
,phases) ,phases)
phases))))))) phases)))))))
@ -259,9 +264,19 @@ GCC that does not target a libc; otherwise, target that libc."
(inputs '()) (inputs '())
;; Only search target inputs, not host inputs. ;; Only search target inputs, not host inputs.
;; Note: See <http://bugs.gnu.org/22186> for why not 'CPATH'.
(search-paths (search-paths
(list (search-path-specification (list (search-path-specification
(variable "CROSS_CPATH") (variable "CROSS_C_INCLUDE_PATH")
(files '("include")))
(search-path-specification
(variable "CROSS_CPLUS_INCLUDE_PATH")
(files '("include")))
(search-path-specification
(variable "CROSS_OBJC_INCLUDE_PATH")
(files '("include")))
(search-path-specification
(variable "CROSS_OBJCPLUS_INCLUDE_PATH")
(files '("include"))) (files '("include")))
(search-path-specification (search-path-specification
(variable "CROSS_LIBRARY_PATH") (variable "CROSS_LIBRARY_PATH")
@ -316,9 +331,13 @@ XBINUTILS and the cross tool chain."
`(alist-cons-before `(alist-cons-before
'configure 'set-cross-linux-headers-path 'configure 'set-cross-linux-headers-path
(lambda* (#:key inputs #:allow-other-keys) (lambda* (#:key inputs #:allow-other-keys)
(let ((linux (assoc-ref inputs "linux-headers"))) (let* ((linux (assoc-ref inputs "linux-headers"))
(setenv "CROSS_CPATH" (cpath (string-append linux "/include")))
(string-append linux "/include")) (for-each (cut setenv <> cpath)
'("CROSS_C_INCLUDE_PATH"
"CROSS_CPLUS_INCLUDE_PATH"
"CROSS_OBJC_INCLUDE_PATH"
"CROSS_OBJCPLUS_INCLUDE_PATH"))
#t)) #t))
,phases)))) ,phases))))

View File

@ -9,6 +9,7 @@
;;; Copyright © 2015 Leo Famulari <leo@famulari.name> ;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Nils Gillmann <niasterisk@grrlz.net> ;;; Copyright © 2016 Nils Gillmann <niasterisk@grrlz.net>
;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -27,8 +28,12 @@
(define-module (gnu packages databases) (define-module (gnu packages databases)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages avahi)
#:use-module (gnu packages bash) #:use-module (gnu packages bash)
#:use-module (gnu packages boost) #:use-module (gnu packages boost)
#:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
#:use-module (gnu packages perl) #:use-module (gnu packages perl)
#:use-module (gnu packages language) #:use-module (gnu packages language)
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
@ -40,9 +45,12 @@
#:use-module (gnu packages check) #:use-module (gnu packages check)
#:use-module (gnu packages algebra) #:use-module (gnu packages algebra)
#:use-module (gnu packages curl) #:use-module (gnu packages curl)
#:use-module (gnu packages cyrus-sasl)
#:use-module (gnu packages gnupg) #:use-module (gnu packages gnupg)
#:use-module (gnu packages python) #:use-module (gnu packages python)
#:use-module (gnu packages pcre) #:use-module (gnu packages pcre)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages rdf)
#:use-module (gnu packages xml) #:use-module (gnu packages xml)
#:use-module (gnu packages bison) #:use-module (gnu packages bison)
#:use-module (gnu packages jemalloc) #:use-module (gnu packages jemalloc)
@ -58,6 +66,51 @@
#:use-module (srfi srfi-26) #:use-module (srfi srfi-26)
#:use-module (ice-9 match)) #:use-module (ice-9 match))
(define-public 4store
(package
(name "4store")
(version "1.1.6")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/garlik/4store/archive/v"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32 "004fmcf1w75zhc1x3zc6kc97j4jqn2v5nhk6yb3z3cpfrhzi9j50"))
(patches (list (search-patch "4store-fix-buildsystem.patch")))))
(build-system gnu-build-system)
(native-inputs
`(("perl" ,perl)
("python" ,python-2)
("autoconf" ,autoconf)
("automake" ,automake)
("gettext" ,gnu-gettext)
("libtool" ,libtool)
("pkg-config" ,pkg-config)))
(inputs
`(("glib" ,glib)
("rasqal" ,rasqal)
("libxml2" ,libxml2)
("raptor2" ,raptor2)
("readline" ,readline)
("avahi" ,avahi)
("pcre" ,pcre)
("cyrus-sasl" ,cyrus-sasl)
("openssl" ,openssl)
("util-linux" ,util-linux)))
(arguments
`(#:phases
(modify-phases %standard-phases
(add-before 'configure 'generate-configure
(lambda _
(zero? (system* "./autogen.sh")))))))
;; http://www.4store.org has been down for a while now.
(home-page "https://github.com/garlik/4store")
(synopsis "Clustered RDF storage and query engine")
(description "4store is a RDF/SPARQL store written in C, supporting
either single machines or networked clusters.")
(license gpl3+)))
(define-public gdbm (define-public gdbm
(package (package
(name "gdbm") (name "gdbm")

View File

@ -2097,7 +2097,7 @@ the chat server psyced with the specific config located at
http://lavachat.symlynx.com/unix/") http://lavachat.symlynx.com/unix/")
(license license:gpl2+))) (license license:gpl2+)))
(define-public redeclipse (define-public red-eclipse
(let ((data-sources (let ((data-sources
'(("acerspyro" "0gxxr6nbac918b49x1cp72nw951hqm5m4iyi2shb1612ly384w8q") '(("acerspyro" "0gxxr6nbac918b49x1cp72nw951hqm5m4iyi2shb1612ly384w8q")
("actors" "1jq9q82m6nx07nwpb5cnpdcwa33jrcgg0j2yir8zk6zpnxdmp0il") ("actors" "1jq9q82m6nx07nwpb5cnpdcwa33jrcgg0j2yir8zk6zpnxdmp0il")
@ -2133,7 +2133,7 @@ http://lavachat.symlynx.com/unix/")
("weapons" "1ghn6nfcnd5lyl8dnj22csldvf9hrb32wjzpab4sjjz3iyv0zmr3") ("weapons" "1ghn6nfcnd5lyl8dnj22csldvf9hrb32wjzpab4sjjz3iyv0zmr3")
("wicked" "0q9badvg6ix5rhl05s83kw2v6a49jpnbkqk4ls89qahaddfagi8g")))) ("wicked" "0q9badvg6ix5rhl05s83kw2v6a49jpnbkqk4ls89qahaddfagi8g"))))
(package (package
(name "redeclipse") (name "red-eclipse")
(version "1.5.3") (version "1.5.3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014, 2015, 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2014, 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
@ -354,6 +354,19 @@ Go. It also includes runtime support libraries for these languages.")
"1ny4smkp5bzs3cp8ss7pl6lk8yss0d9m4av1mvdp72r1x695akxq")) "1ny4smkp5bzs3cp8ss7pl6lk8yss0d9m4av1mvdp72r1x695akxq"))
(patches (search-patches "gcc-5.0-libvtv-runpath.patch")))))) (patches (search-patches "gcc-5.0-libvtv-runpath.patch"))))))
(define-public gcc-6
(package
(inherit gcc-5)
(version "6.1.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gcc/gcc-"
version "/gcc-" version ".tar.bz2"))
(sha256
(base32
"0ld3y4rgimyqgx1nwvzqyl5gr4wzc0ch4akkvsqp3fgbmdfcii09"))
(patches (search-patches "gcc-5.0-libvtv-runpath.patch"))))))
;; Note: When changing the default gcc version, update ;; Note: When changing the default gcc version, update
;; the gcc-toolchain-* definitions accordingly. ;; the gcc-toolchain-* definitions accordingly.
(define-public gcc gcc-4.9) (define-public gcc gcc-4.9)

View File

@ -31,6 +31,7 @@
#:use-module (gnu packages perl) #:use-module (gnu packages perl)
#:use-module (gnu packages pth) #:use-module (gnu packages pth)
#:use-module (gnu packages python) #:use-module (gnu packages python)
#:use-module (gnu packages qt)
#:use-module (gnu packages readline) #:use-module (gnu packages readline)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages databases) #:use-module (gnu packages databases)
@ -568,9 +569,9 @@ including tools for signing keys, keyring analysis, and party preparation.
(license license:gpl2) (license license:gpl2)
(home-page "http://pgp-tools.alioth.debian.org/"))) (home-page "http://pgp-tools.alioth.debian.org/")))
(define-public pinentry (define-public pinentry-tty
(package (package
(name "pinentry") (name "pinentry-tty")
(version "0.9.7") (version "0.9.7")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
@ -580,21 +581,48 @@ including tools for signing keys, keyring analysis, and party preparation.
(base32 (base32
"1cp7wjqr6nx31mdclr61s2h84ijqjl0ph99kgj4vyawpjj1j1633")))) "1cp7wjqr6nx31mdclr61s2h84ijqjl0ph99kgj4vyawpjj1j1633"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments
`(#:configure-flags '("--enable-pinentry-tty")))
(inputs (inputs
`(("ncurses" ,ncurses) `(("ncurses" ,ncurses)
("libassuan" ,libassuan) ("libassuan" ,libassuan)
("libsecret" ,libsecret "out") ("libsecret" ,libsecret "out")))
("gtk+" ,gtk+-2)
("glib" ,glib)))
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("pkg-config" ,pkg-config)))
(home-page "https://gnupg.org/aegypten2/") (home-page "https://gnupg.org/aegypten2/")
(synopsis "GnuPG's interface to passphrase input") (synopsis "GnuPG's interface to passphrase input")
(description (description
"Pinentry provides a console and a GTK+ GUI that allows users to "Pinentry provides a console that allows users to enter a passphrase when
enter a passphrase when `gpg' or `gpg2' is run and needs it.") @code{gpg} or @code{gpg2} is run and needs it.")
(license license:gpl2+))) (license license:gpl2+)))
(define-public pinentry-gtk2
(package
(inherit pinentry-tty)
(name "pinentry-gtk2")
(inputs
`(("gtk+" ,gtk+-2)
("glib" ,glib)
,@(package-inputs pinentry-tty)))
(description
"Pinentry provides a console and a GTK+ GUI that allows users to enter a
passphrase when @code{gpg} or @code{gpg2} is run and needs it.")))
(define-public pinentry-qt
(package
(inherit pinentry-tty)
(name "pinentry-qt")
(inputs
`(("qt" ,qt)
,@(package-inputs pinentry-tty)))
(description
"Pinentry provides a console and a Qt GUI that allows users to enter a
passphrase when @code{gpg} or @code{gpg2} is run and needs it.")))
(define-public pinentry
(package (inherit pinentry-gtk2)
(name "pinentry")))
(define-public paperkey (define-public paperkey
(package (package
(name "paperkey") (name "paperkey")

View File

@ -859,3 +859,193 @@ build process and its dependencies, whereas Make uses Makefile format.")
compression in pure Java. Single-threaded streamed compression and compression in pure Java. Single-threaded streamed compression and
decompression and random access decompression have been fully implemented.") decompression and random access decompression have been fully implemented.")
(license license:public-domain))) (license license:public-domain)))
;; java-hamcrest-core uses qdox version 1.12. We package this version instead
;; of the latest release.
(define-public java-qdox-1.12
(package
(name "java-qdox")
(version "1.12.1")
(source (origin
(method url-fetch)
(uri (string-append "http://central.maven.org/maven2/"
"com/thoughtworks/qdox/qdox/" version
"/qdox-" version "-sources.jar"))
(sha256
(base32
"0hlfbqq2avf5s26wxkksqmkdyk6zp9ggqn37c468m96mjv0n9xfl"))))
(build-system ant-build-system)
(arguments
`(;; Tests require junit
#:tests? #f
#:jar-name "qdox.jar"
#:phases
(modify-phases %standard-phases
(replace 'unpack
(lambda* (#:key source #:allow-other-keys)
(mkdir "src")
(with-directory-excursion "src"
(zero? (system* "jar" "-xf" source)))))
;; At this point we don't have junit, so we must remove the API
;; tests.
(add-after 'unpack 'delete-tests
(lambda _
(delete-file-recursively "src/com/thoughtworks/qdox/junit")
#t)))))
(home-page "http://qdox.codehaus.org/")
(synopsis "Parse definitions from Java source files")
(description
"QDox is a high speed, small footprint parser for extracting
class/interface/method definitions from source files complete with JavaDoc
@code{@tags}. It is designed to be used by active code generators or
documentation tools.")
(license license:asl2.0)))
(define-public java-jarjar
(package
(name "java-jarjar")
(version "1.4")
(source (origin
(method url-fetch)
(uri (string-append
"https://storage.googleapis.com/google-code-archive-downloads/v2/"
"code.google.com/jarjar/jarjar-src-" version ".zip"))
(sha256
(base32
"1v8irhni9cndcw1l1wxqgry013s2kpj0qqn57lj2ji28xjq8ndjl"))))
(build-system ant-build-system)
(arguments
`(;; Tests require junit, which ultimately depends on this package.
#:tests? #f
#:build-target "jar"
#:phases
(modify-phases %standard-phases
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((target (string-append (assoc-ref outputs "out")
"/share/java")))
(install-file (string-append "dist/jarjar-" ,version ".jar")
target))
#t)))))
(native-inputs
`(("unzip" ,unzip)))
(home-page "https://code.google.com/archive/p/jarjar/")
(synopsis "Repackage Java libraries")
(description
"Jar Jar Links is a utility that makes it easy to repackage Java
libraries and embed them into your own distribution. Jar Jar Links includes
an Ant task that extends the built-in @code{jar} task.")
(license license:asl2.0)))
(define-public java-hamcrest-core
(package
(name "java-hamcrest-core")
(version "1.3")
(source (origin
(method url-fetch)
(uri (string-append "https://hamcrest.googlecode.com/files/"
"hamcrest-" version ".tgz"))
(sha256
(base32
"1hi0jv0zrgsf4l25aizxrgvxpsrmdklsmvw0jzwz7zv9s108whn6"))
(modules '((guix build utils)))
(snippet
'(begin
;; Delete bundled jar archives.
(for-each delete-file (find-files "." "\\.jar$"))
#t))))
(build-system ant-build-system)
(arguments
`(#:tests? #f ; Tests require junit
#:make-flags (list (string-append "-Dversion=" ,version))
#:build-target "core"
#:phases
(modify-phases %standard-phases
;; Disable unit tests, because they require junit, which requires
;; hamcrest-core. We also give a fixed value to the "Built-Date"
;; attribute from the manifest for reproducibility.
(add-before 'configure 'patch-build.xml
(lambda _
(substitute* "build.xml"
(("unit-test, ") "")
(("\\$\\{build.timestamp\\}") "guix"))
#t))
;; Java's "getMethods()" returns methods in an unpredictable order.
;; To make the output of the generated code deterministic we must
;; sort the array of methods.
(add-after 'unpack 'make-method-order-deterministic
(lambda _
(substitute* "hamcrest-generator/src/main/java/org/hamcrest/generator/ReflectiveFactoryReader.java"
(("import java\\.util\\.Iterator;" line)
(string-append line "\n"
"import java.util.Arrays; import java.util.Comparator;"))
(("allMethods = cls\\.getMethods\\(\\);" line)
(string-append "_" line
"
private Method[] getSortedMethods() {
Arrays.sort(_allMethods, new Comparator<Method>() {
@Override
public int compare(Method a, Method b) {
return a.toString().compareTo(b.toString());
}
});
return _allMethods;
}
private Method[] allMethods = getSortedMethods();")))))
(add-before 'build 'do-not-use-bundled-qdox
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "build.xml"
(("lib/generator/qdox-1.12.jar")
(string-append (assoc-ref inputs "java-qdox-1.12")
"/share/java/qdox.jar")))
#t))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(install-file (string-append "build/hamcrest-core-"
,version ".jar")
(string-append (assoc-ref outputs "out")
"/share/java")))))))
(native-inputs
`(("java-qdox-1.12" ,java-qdox-1.12)
("java-jarjar" ,java-jarjar)))
(home-page "http://hamcrest.org/")
(synopsis "Library of matchers for building test expressions")
(description
"This package provides a library of matcher objects (also known as
constraints or predicates) allowing @code{match} rules to be defined
declaratively, to be used in other frameworks. Typical scenarios include
testing frameworks, mocking libraries and UI validation rules.")
(license license:bsd-2)))
(define-public java-junit
(package
(name "java-junit")
(version "4.12")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/junit-team/junit/"
"archive/r" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"090dn5v1vs0b3acyaqc0gjf6p8lmd2h24wfzsbq7sly6b214anws"))
(modules '((guix build utils)))
(snippet
'(begin
;; Delete bundled jar archives.
(delete-file-recursively "lib")
#t))))
(build-system ant-build-system)
(arguments
`(#:tests? #f ; no tests
#:jar-name "junit.jar"))
(inputs
`(("java-hamcrest-core" ,java-hamcrest-core)))
(home-page "http://junit.org/")
(synopsis "Test framework for Java")
(description
"JUnit is a simple framework to write repeatable tests for Java projects.
JUnit provides assertions for testing expected results, test fixtures for
sharing common test data, and test runners for running tests.")
(license license:epl1.0)))

View File

@ -1203,11 +1203,31 @@ devices. It replaces 'iwconfig', which is deprecated.")
(base32 (base32
"0nlwazxbnn0k6q5f5b09wdhw0f194lpzkp3l7vxansqhfczmcyx8")))) "0nlwazxbnn0k6q5f5b09wdhw0f194lpzkp3l7vxansqhfczmcyx8"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
;; TODO: Patch some hardcoded "wlan0" in calibrate/calibrate.cpp to
;; allow calibrating the network interface in GuixSD.
(add-after 'unpack 'patch-absolute-file-names
(lambda* (#:key inputs #:allow-other-keys)
(let ((kmod (assoc-ref inputs "kmod")))
(substitute* (find-files "src" "\\.cpp$")
;; Give the right 'modprobe' file name so that essential
;; modules such as msr.ko can be loaded.
(("/sbin/modprobe") (string-append kmod "/bin/modprobe"))
;; These programs are only needed to calibrate, so using
;; relative file names avoids adding extra inputs. When they
;; are missing powertop gracefully handles it.
(("/usr/bin/hcitool") "hcitool")
(("/usr/bin/xset") "xset")
(("/usr/sbin/hciconfig") "hciconfig"))
#t))))))
(inputs (inputs
`(("zlib" ,zlib) `(("kmod" ,kmod)
("pciutils" ,pciutils) ("libnl" ,libnl)
("ncurses" ,ncurses) ("ncurses" ,ncurses)
("libnl" ,libnl))) ("pciutils" ,pciutils)
("zlib" ,zlib)))
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("pkg-config" ,pkg-config)))
(home-page "https://01.org/powertop/") (home-page "https://01.org/powertop/")

View File

@ -59,6 +59,7 @@
#:use-module (gnu packages less) #:use-module (gnu packages less)
#:use-module (gnu packages lisp) #:use-module (gnu packages lisp)
#:use-module (gnu packages gnome) #:use-module (gnu packages gnome)
#:use-module (gnu packages guile)
#:use-module (gnu packages xorg) #:use-module (gnu packages xorg)
#:use-module (gnu packages gl) #:use-module (gnu packages gl)
#:use-module (gnu packages m4) #:use-module (gnu packages m4)
@ -430,6 +431,44 @@ extremely large and complex data collections.")
(license (license:x11-style (license (license:x11-style
"http://www.hdfgroup.org/ftp/HDF5/current/src/unpacked/COPYING")))) "http://www.hdfgroup.org/ftp/HDF5/current/src/unpacked/COPYING"))))
(define-public nlopt
(package
(name "nlopt")
(version "2.4.2")
(source (origin
(method url-fetch)
(uri (string-append "http://ab-initio.mit.edu/nlopt/nlopt-"
version ".tar.gz"))
(sha256
(base32 "12cfkkhcdf4zmb6h7y6qvvdvqjs2xf9sjpa3rl3bq76px4yn76c0"))))
(build-system gnu-build-system)
(arguments
`(;; Shared libraries are not built by default. They are required to
;; build the Guile, Octave, and Python bindings.
#:configure-flags '("--enable-shared")
#:phases
(modify-phases %standard-phases
(add-before 'configure 'set-libnlopt-file-name
(lambda* (#:key outputs #:allow-other-keys)
;; Make sure the Scheme module refers to the library by its
;; absolute file name (we cannot do that from a snippet
;; because the expansion of @libdir@ contains
;; ${exec_prefix}.)
(let ((out (assoc-ref outputs "out")))
(substitute* "swig/nlopt.scm.in"
(("libnlopt")
(string-append out "/lib/libnlopt")))
#t))))))
(inputs `(("guile" ,guile-2.0)))
(native-inputs `(("pkg-config" ,pkg-config)))
(home-page "http://ab-initio.mit.edu/wiki/")
(synopsis "Library for nonlinear optimization")
(description "NLopt is a library for nonlinear optimization, providing a
common interface for a number of different free optimization routines available
online as well as original implementations of various other algorithms.")
(license license:lgpl2.1+)))
;; For a fully featured Octave, users are strongly recommended also to install ;; For a fully featured Octave, users are strongly recommended also to install
;; the following packages: texinfo, less, ghostscript, gnuplot. ;; the following packages: texinfo, less, ghostscript, gnuplot.

View File

@ -91,16 +91,37 @@ keys, no previous conversation is compromised.")
(home-page "https://otr.cypherpunks.ca/") (home-page "https://otr.cypherpunks.ca/")
(license (list lgpl2.1 gpl2)))) (license (list lgpl2.1 gpl2))))
;; These patches together fix https://github.com/bitlbee/bitlbee/pull/55, are
;; already upstream, and should be unnecessary when the next bitlbee comes
;; out.
(define %bitlbee-buddy-nick-change-patch
(origin
(method url-fetch)
(uri "https://github.com/bitlbee/bitlbee/commit/a42fda42.patch")
(sha256
(base32
"1mzjhcdn0rxir5mzgqz9kv142ai38p1iq2lajqx89wb7x0bp51zx"))))
(define %bitlbee-always-use-nicks-patch
(origin
(method url-fetch)
(uri "https://github.com/bitlbee/bitlbee/commit/3320d6d9.patch")
(sha256
(base32
"14d9kb5zdzh5hzakdvrbviz83rix0j2lq9rzb58b2fn92fp8yixd"))))
(define-public bitlbee (define-public bitlbee
(package (package
(name "bitlbee") (name "bitlbee")
(version "3.4.1") (version "3.4.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://get.bitlbee.org/src/bitlbee-" (uri (string-append "https://get.bitlbee.org/src/bitlbee-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 "1qf0ypa9ba5jvsnpg9slmaran16hcc5fnfzbb1sdch1hjhchn2jh")))) (base32 "0mza8lnfwibmklz8hdzg4f7p83hblf4h6fbf7d732kzpvra5bj39"))
(patches
(list %bitlbee-buddy-nick-change-patch
%bitlbee-always-use-nicks-patch))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs `(("pkg-config" ,pkg-config) (native-inputs `(("pkg-config" ,pkg-config)
("check" ,check))) ("check" ,check)))

View File

@ -825,6 +825,13 @@ mixing, FFT scopes, MIDI automation and full scriptability in Scheme.")
(string-prefix? "i686" system))) (string-prefix? "i686" system)))
(substitute* "bristol/Makefile.in" (substitute* "bristol/Makefile.in"
(("-msse -mfpmath=sse") ""))) (("-msse -mfpmath=sse") "")))
#t))
;; We know that Bristol has been linked with JACK and we don't have
;; ldd, so we can just skip this check.
(add-after 'unpack 'do-not-grep-for-jack
(lambda _
(substitute* "bin/startBristol.in"
(("ldd `which bristol` | grep jack") "echo guix"))
#t))))) #t)))))
(inputs (inputs
`(("alsa-lib" ,alsa-lib) `(("alsa-lib" ,alsa-lib)
@ -952,6 +959,70 @@ programming methods as well as for realizing complex systems for large-scale
projects.") projects.")
(license license:bsd-3))) (license license:bsd-3)))
(define-public portmidi
(package
(name "portmidi")
(version "217")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/portmedia/portmidi/"
version "/portmidi-src-" version ".zip"))
(sha256
(base32
"03rfsk7z6rdahq2ihy5k13qjzgx757f75yqka88v3gc0pn9ais88"))
(patches (list (search-patch "portmidi-modular-build.patch")))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ; tests cannot be linked
#:configure-flags
(list "-DPORTMIDI_ENABLE_JAVA=Off"
"-DCMAKE_BUILD_TYPE=Release" ; needed to have PMALSA set
"-DPORTMIDI_ENABLE_TEST=Off"))) ; tests fail linking
(inputs
`(("alsa-lib" ,alsa-lib)))
(native-inputs
`(("unzip" ,unzip)))
(home-page "http://portmedia.sourceforge.net/portmidi/")
(synopsis "Library for MIDI I/O")
(description
"PortMidi is a library supporting real-time input and output of MIDI data
using a system-independent interface.")
(license license:expat)))
(define-public python-pyportmidi
(package
(name "python-pyportmidi")
(version (package-version portmidi))
(source (package-source portmidi))
(build-system python-build-system)
(arguments
`(#:tests? #f ; no tests included
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'enter-dir
(lambda _ (chdir "pm_python") #t))
(add-after 'enter-dir 'fix-setup.py
(lambda _
(substitute* "setup.py"
;; Use Python 3 syntax
(("print (\".*\")" _ text)
(string-append "print(" text ")\n"))
;; TODO.txt and CHANGES.txt don't exist
(("CHANGES =.*") "CHANGES = \"\"\n")
(("TODO =.*") "TODO = \"\"\n"))
#t)))))
(inputs
`(("portmidi" ,portmidi)
("alsa-lib" ,alsa-lib)
("python-cython" ,python-cython)))
(native-inputs
`(("unzip" ,unzip)))
(home-page "http://portmedia.sourceforge.net/portmidi/")
(synopsis "Python bindings to PortMidi")
(description
"This package provides Python bindings to the PortMidi library.")
(license license:expat)))
(define-public frescobaldi (define-public frescobaldi
(package (package
(name "frescobaldi") (name "frescobaldi")
@ -967,8 +1038,10 @@ projects.")
(build-system python-build-system) (build-system python-build-system)
(inputs (inputs
`(("lilypond" ,lilypond) `(("lilypond" ,lilypond)
("portmidi" ,portmidi)
("python-pyqt-4" ,python-pyqt-4) ("python-pyqt-4" ,python-pyqt-4)
("python-ly" ,python-ly) ("python-ly" ,python-ly)
("python-pyportmidi" ,python-pyportmidi)
("poppler" ,poppler) ("poppler" ,poppler)
("python-poppler-qt4" ,python-poppler-qt4) ("python-poppler-qt4" ,python-poppler-qt4)
("python-sip" ,python-sip))) ("python-sip" ,python-sip)))

View File

@ -60,7 +60,8 @@
"/ocaml-" version ".tar.xz")) "/ocaml-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1qwwvy8nzd87hk8rd9sm667nppakiapnx4ypdwcrlnav2dz6kil3")))) "1qwwvy8nzd87hk8rd9sm667nppakiapnx4ypdwcrlnav2dz6kil3"))
(patches (search-patches "ocaml-CVE-2015-8869.patch"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-search-paths (native-search-paths
(list (search-path-specification (list (search-path-specification

View File

@ -0,0 +1,56 @@
This patch sets a fixed version to avoid needing Git and the .git/ folder.
It also removes the creation of "/var/lib/4store", which is not available
during the install phase in GNU Guix.
Patch by Roel Janssen <roel@gnu.org>
*** a/configure.ac Wed Feb 4 19:05:24 2015
--- b/configure.ac Wed Mar 23 11:20:38 2016
***************
*** 2,13 ****
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.50])
! AC_INIT([4store], m4_esyscmd([./version.sh .version]), [http://4store.org/support/], [4store])
AC_CONFIG_SRCDIR([src/backend/backend-intl.h])
! AM_INIT_AUTOMAKE([1.7 std-options -Wall])
AC_CONFIG_HEADERS(4store-config.h)
# Checks for programs.
AC_PROG_LIBTOOL
AC_PROG_AWK
AC_PROG_CC
--- 2,14 ----
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.50])
! AC_INIT([4store], [1.1.6], [http://4store.org/support/], [4store])
AC_CONFIG_SRCDIR([src/backend/backend-intl.h])
! AM_INIT_AUTOMAKE([1.7 std-options foreign -Wall])
AC_CONFIG_HEADERS(4store-config.h)
# Checks for programs.
+ AM_PROG_AR
AC_PROG_LIBTOOL
AC_PROG_AWK
AC_PROG_CC
*** a/src/utilities/Makefile.am Wed Feb 4 19:05:24 2015
--- b/src/utilities/Makefile.am Wed Mar 23 14:05:56 2016
***************
*** 13,20 ****
noinst_PROGRAMS = lex-file-verify 4s-rid
install-data-local:
! mkdir -p $(DESTDIR)@FS_STORE_ROOT@
! chmod 1777 $(DESTDIR)@FS_STORE_ROOT@
4s_backend_destroy_SOURCES = backend-destroy.c
4s_backend_destroy_LDADD = ../common/lib4sintl.a
--- 13,19 ----
noinst_PROGRAMS = lex-file-verify 4s-rid
install-data-local:
! echo "Please create the following directory: " $(DESTDIR)@FS_STORE_ROOT@
4s_backend_destroy_SOURCES = backend-destroy.c
4s_backend_destroy_LDADD = ../common/lib4sintl.a

View File

@ -1,9 +1,23 @@
Search path environment variables for cross-compilers. See the discussion Search path environment variables for cross-compilers. See the discussion
at <http://gcc.gnu.org/ml/gcc/2013-02/msg00124.html>. at <http://gcc.gnu.org/ml/gcc/2013-02/msg00124.html>.
--- gcc-4.7.2/gcc/incpath.c 2012-01-27 00:34:58.000000000 +0100 Note: Touch 'C_INCLUDE_PATH' et al. rather than 'CPATH', as discussed
+++ gcc-4.7.2/gcc/incpath.c 2013-02-12 10:11:27.000000000 +0100 at <http://bugs.gnu.org/22186>.
@@ -452,7 +452,7 @@ register_include_chains (cpp_reader *pfi
--- a/gcc/incpath.c
+++ b/gcc/incpath.c
@@ -461,8 +461,8 @@ register_include_chains (cpp_reader *pfile, const char *sysroot,
int stdinc, int cxx_stdinc, int verbose)
{
static const char *const lang_env_vars[] =
- { "C_INCLUDE_PATH", "CPLUS_INCLUDE_PATH",
- "OBJC_INCLUDE_PATH", "OBJCPLUS_INCLUDE_PATH" };
+ { "CROSS_C_INCLUDE_PATH", "CROSS_CPLUS_INCLUDE_PATH",
+ "CROSS_OBJC_INCLUDE_PATH", "CROSS_OBJCPLUS_INCLUDE_PATH" };
cpp_options *cpp_opts = cpp_get_options (pfile);
size_t idx = (cpp_opts->objc ? 2: 0);
@@ -473,7 +473,7 @@ register_include_chains (cpp_reader *pfile, const char *sysroot,
/* CPATH and language-dependent environment variables may add to the /* CPATH and language-dependent environment variables may add to the
include chain. */ include chain. */
@ -12,20 +26,22 @@ at <http://gcc.gnu.org/ml/gcc/2013-02/msg00124.html>.
add_env_var_paths (lang_env_vars[idx], SYSTEM); add_env_var_paths (lang_env_vars[idx], SYSTEM);
target_c_incpath.extra_pre_includes (sysroot, iprefix, stdinc); target_c_incpath.extra_pre_includes (sysroot, iprefix, stdinc);
diff --git a/gcc/system.h b/gcc/system.h
--- gcc-4.7.2/gcc/system.h 2012-02-17 00:16:28.000000000 +0100 index 42bc509..af3b9ad 100644
+++ gcc-4.7.2/gcc/system.h 2013-02-12 10:22:17.000000000 +0100 --- a/gcc/system.h
@@ -1023,4 +1023,6 @@ helper_const_non_const_cast (const char +++ b/gcc/system.h
#define DEBUG_VARIABLE @@ -1063,4 +1063,6 @@ helper_const_non_const_cast (const char *p)
#endif /* Get definitions of HOST_WIDE_INT and HOST_WIDEST_INT. */
#include "hwint.h"
+#define LIBRARY_PATH_ENV "CROSS_LIBRARY_PATH" +#define LIBRARY_PATH_ENV "CROSS_LIBRARY_PATH"
+ +
#endif /* ! GCC_SYSTEM_H */ #endif /* ! GCC_SYSTEM_H */
diff --git a/gcc/tlink.c b/gcc/tlink.c
--- gcc-4.7.2/gcc/tlink.c 2012-02-11 09:50:23.000000000 +0100 index bc358b8..ad6242f 100644
+++ gcc-4.7.2/gcc/tlink.c 2013-05-23 22:06:19.000000000 +0200 --- a/gcc/tlink.c
@@ -461,7 +461,7 @@ recompile_files (void) +++ b/gcc/tlink.c
@@ -458,7 +458,7 @@ recompile_files (void)
file *f; file *f;
putenv (xstrdup ("COMPILER_PATH=")); putenv (xstrdup ("COMPILER_PATH="));
@ -34,10 +50,11 @@ at <http://gcc.gnu.org/ml/gcc/2013-02/msg00124.html>.
while ((f = file_pop ()) != NULL) while ((f = file_pop ()) != NULL)
{ {
diff --git a/gcc/gcc.c b/gcc/gcc.c
--- gcc-4.7.3/gcc/gcc.c 2013-03-08 08:25:09.000000000 +0100 index adbf0c4..70448c6 100644
+++ gcc-4.7.3/gcc/gcc.c 2013-05-24 08:58:16.000000000 +0200 --- a/gcc/gcc.c
@@ -3726,7 +3726,7 @@ process_command (unsigned int decoded_op +++ b/gcc/gcc.c
@@ -3853,7 +3853,7 @@ process_command (unsigned int decoded_options_count,
} }
temp = getenv (LIBRARY_PATH_ENV); temp = getenv (LIBRARY_PATH_ENV);

View File

@ -0,0 +1,72 @@
Adapted from upstream commit 659615c7b100a89eafe6253e7a5b9d84d0e8df74,
this patch omits the upstream changes to 'Changes' and 'VERSION'.
http://seclists.org/oss-sec/2016/q2/170
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-8869
https://github.com/ocaml/ocaml/commit/659615c7b100a89eafe6253e7a5b9d84d0e8df74
---
byterun/alloc.c | 4 ++--
byterun/intern.c | 2 +-
byterun/str.c | 4 ++--
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/byterun/alloc.c b/byterun/alloc.c
index 96a21bf..0db9947 100644
--- a/byterun/alloc.c
+++ b/byterun/alloc.c
@@ -153,7 +153,7 @@ CAMLexport int caml_convert_flag_list(value list, int *flags)
/* [size] is a [value] representing number of words (fields) */
CAMLprim value caml_alloc_dummy(value size)
{
- mlsize_t wosize = Int_val(size);
+ mlsize_t wosize = Long_val(size);
if (wosize == 0) return Atom(0);
return caml_alloc (wosize, 0);
@@ -169,7 +169,7 @@ CAMLprim value caml_alloc_dummy_function(value size,value arity)
/* [size] is a [value] representing number of floats. */
CAMLprim value caml_alloc_dummy_float (value size)
{
- mlsize_t wosize = Int_val(size) * Double_wosize;
+ mlsize_t wosize = Long_val(size) * Double_wosize;
if (wosize == 0) return Atom(0);
return caml_alloc (wosize, 0);
diff --git a/byterun/intern.c b/byterun/intern.c
index 89d13d1..7b8d049 100644
--- a/byterun/intern.c
+++ b/byterun/intern.c
@@ -291,7 +291,7 @@ static void intern_rec(value *dest)
case OFreshOID:
/* Refresh the object ID */
/* but do not do it for predefined exception slots */
- if (Int_val(Field((value)dest, 1)) >= 0)
+ if (Long_val(Field((value)dest, 1)) >= 0)
caml_set_oo_id((value)dest);
/* Pop item and iterate */
sp--;
diff --git a/byterun/str.c b/byterun/str.c
index 5ad4e29..885772f 100644
--- a/byterun/str.c
+++ b/byterun/str.c
@@ -266,7 +266,7 @@ CAMLprim value caml_string_greaterequal(value s1, value s2)
CAMLprim value caml_blit_string(value s1, value ofs1, value s2, value ofs2,
value n)
{
- memmove(&Byte(s2, Long_val(ofs2)), &Byte(s1, Long_val(ofs1)), Int_val(n));
+ memmove(&Byte(s2, Long_val(ofs2)), &Byte(s1, Long_val(ofs1)), Long_val(n));
return Val_unit;
}
@@ -278,7 +278,7 @@ CAMLprim value caml_fill_string(value s, value offset, value len, value init)
CAMLprim value caml_bitvect_test(value bv, value n)
{
- int pos = Int_val(n);
+ intnat pos = Long_val(n);
return Val_int(Byte_u(bv, pos >> 3) & (1 << (pos & 7)));
}
--
2.7.4

View File

@ -0,0 +1,325 @@
We took this patch from Gentoo to break apart the portmidi build, so that we
can disable the Java parts and cleanly disable the tests which fail to link
(possibly because they are linked before “-lportmidi” is available). The
patch was downloaded from here:
https://gitweb.gentoo.org/repo/gentoo.git/plain/media-libs/portmidi/files/portmidi-217-cmake.patch?id=56bd759df1d0c750a065b8c845e93d5dfa6b549d
--- portmidi/CMakeLists.txt
+++ portmidi/CMakeLists.txt
@@ -9,12 +9,11 @@
set(CMAKE_BUILD_TYPE Release CACHE STRING
"Semicolon-separate list of supported configuration types")
# set default directories but don't override cached values...
- set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CACHEFILE_DIR}/${CMAKE_BUILD_TYPE}
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
CACHE STRING "libraries go here")
- set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CACHEFILE_DIR}/${CMAKE_BUILD_TYPE}
+ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
CACHE STRING "libraries go here")
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY
- ${CMAKE_CACHEFILE_DIR}/${CMAKE_BUILD_TYPE}
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
CACHE STRING "executables go here")
else(UNIX)
@@ -68,10 +67,20 @@
include_directories(pm_common porttime)
add_subdirectory(pm_common)
-add_subdirectory(pm_test)
+option(PORTMIDI_ENABLE_JAVA "Enable Java bindings support" ON)
+option(PORTMIDI_ENABLE_STATIC "Build and install static libraries" OFF)
+option(PORTMIDI_ENABLE_TEST "Build test programs" ON)
+
+if(PORTMIDI_ENABLE_TEST)
+ add_subdirectory(pm_test)
+endif(PORTMIDI_ENABLE_TEST)
add_subdirectory(pm_dylib)
# Cannot figure out how to make an xcode Java application with CMake
-add_subdirectory(pm_java)
+if(PORTMIDI_ENABLE_JAVA)
+ set(JAR_INSTALL_DIR share/java
+ CACHE STRING "Define directory name for jar installation")
+ add_subdirectory(pm_java)
+endif(PORTMIDI_ENABLE_JAVA)
--- portmidi/pm_common/CMakeLists.txt
+++ portmidi/pm_common/CMakeLists.txt
@@ -44,9 +44,6 @@
# first include the appropriate system-dependent file:
if(UNIX)
- # add the -g switch for Linux and Mac OS X (not used in Win32)
- set (CMAKE_C_FLAGS_DEBUG "-g ${CMAKE_C_FLAGS_DEBUG}"
- CACHE STRING "enable extra checks for debugging" FORCE)
if(APPLE)
set(MACSRC pmmacosxcm pmmac readbinaryplist finddefault)
prepend_path(LIBSRC ../pm_mac/ ${MACSRC})
@@ -62,19 +59,23 @@
${COREMIDI_LIB} ${CORESERVICES_LIB}
CACHE INTERNAL "")
- set(JAVAVM_LIB "${FRAMEWORK_PATH}/JavaVM.framework")
- set(JAVA_INCLUDE_PATHS ${JAVAVM_LIB}/Headers)
+ if(PORTMIDI_ENABLE_JAVA)
+ set(JAVAVM_LIB "${FRAMEWORK_PATH}/JavaVM.framework")
+ set(JAVA_INCLUDE_PATHS ${JAVAVM_LIB}/Headers)
+ endif(PORTMIDI_ENABLE_JAVA)
message(STATUS "SYSROOT: " ${CMAKE_OSX_SYSROOT})
else(APPLE)
# LINUX settings...
- include(FindJNI)
- message(STATUS "JAVA_JVM_LIB_PATH is " ${JAVA_JVM_LIB_PATH})
- message(STATUS "JAVA_INCLUDE_PATH is " ${JAVA_INCLUDE_PATH})
- message(STATUS "JAVA_INCLUDE_PATH2 is " ${JAVA_INCLUDE_PATH2})
- message(STATUS "JAVA_JVM_LIBRARY is " ${JAVA_JVM_LIBRARY})
- set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
- # libjvm.so is found relative to JAVA_INCLUDE_PATH:
- set(JAVAVM_LIB ${JAVA_JVM_LIBRARY}/libjvm.so)
+ if(PORTMIDI_ENABLE_JAVA)
+ include(FindJNI)
+ message(STATUS "JAVA_JVM_LIB_PATH is " ${JAVA_JVM_LIB_PATH})
+ message(STATUS "JAVA_INCLUDE_PATH is " ${JAVA_INCLUDE_PATH})
+ message(STATUS "JAVA_INCLUDE_PATH2 is " ${JAVA_INCLUDE_PATH2})
+ message(STATUS "JAVA_JVM_LIBRARY is " ${JAVA_JVM_LIBRARY})
+ set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
+ # libjvm.so is found relative to JAVA_INCLUDE_PATH:
+ set(JAVAVM_LIB ${JAVA_JVM_LIBRARY}/libjvm.so)
+ endif(PORTMIDI_ENABLE_JAVA)
set(LINUXSRC pmlinuxalsa pmlinux finddefault)
prepend_path(LIBSRC ../pm_linux/ ${LINUXSRC})
@@ -88,10 +89,12 @@
# /MD is multithread DLL, /MT is multithread. Change to static:
include(../pm_win/static.cmake)
- include(FindJNI)
+ if(PORTMIDI_ENABLE_JAVA)
+ include(FindJNI)
- set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
- # message(STATUS "JAVA_INCLUDE_PATHS: " ${JAVA_INCLUDE_PATHS})
+ set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
+ # message(STATUS "JAVA_INCLUDE_PATHS: " ${JAVA_INCLUDE_PATHS})
+ endif(PORTMIDI_ENABLE_JAVA)
set(WINSRC pmwin pmwinmm)
prepend_path(LIBSRC ../pm_win/ ${WINSRC})
@@ -99,29 +102,43 @@
set(PM_NEEDED_LIBS winmm.lib)
endif(WIN32)
endif(UNIX)
-set(JNI_EXTRA_LIBS ${PM_NEEDED_LIBS} ${JAVA_JVM_LIBRARY})
+
+if(PORTMIDI_ENABLE_JAVA)
+ set(JNI_EXTRA_LIBS ${PM_NEEDED_LIBS} ${JAVA_JVM_LIBRARY})
+endif(PORTMIDI_ENABLE_JAVA)
# this completes the list of library sources by adding shared code
list(APPEND LIBSRC pmutil portmidi)
# now add the shared files to make the complete list of library sources
-add_library(portmidi-static ${LIBSRC})
-set_target_properties(portmidi-static PROPERTIES OUTPUT_NAME "portmidi_s")
-target_link_libraries(portmidi-static ${PM_NEEDED_LIBS})
-
-# define the jni library
-include_directories(${JAVA_INCLUDE_PATHS})
-
-set(JNISRC ${LIBSRC} ../pm_java/pmjni/pmjni.c)
-add_library(pmjni SHARED ${JNISRC})
-target_link_libraries(pmjni ${JNI_EXTRA_LIBS})
-set_target_properties(pmjni PROPERTIES EXECUTABLE_EXTENSION "jnilib")
+if(PORTMIDI_ENABLE_STATIC)
+ add_library(portmidi-static ${LIBSRC})
+ set_target_properties(portmidi-static PROPERTIES OUTPUT_NAME "portmidi")
+ target_link_libraries(portmidi-static ${PM_NEEDED_LIBS})
+endif(PORTMIDI_ENABLE_STATIC)
+
+if(PORTMIDI_ENABLE_JAVA)
+ # define the jni library
+ include_directories(${JAVA_INCLUDE_PATHS})
+
+ set(JNISRC ${LIBSRC} ../pm_java/pmjni/pmjni.c)
+ add_library(pmjni SHARED ${JNISRC})
+ target_link_libraries(pmjni ${JNI_EXTRA_LIBS})
+ set_target_properties(pmjni PROPERTIES EXECUTABLE_EXTENSION "jnilib")
+endif(PORTMIDI_ENABLE_JAVA)
# install the libraries (Linux and Mac OS X command line)
if(UNIX)
- INSTALL(TARGETS portmidi-static pmjni
- LIBRARY DESTINATION /usr/local/lib
- ARCHIVE DESTINATION /usr/local/lib)
+ if(PORTMIDI_ENABLE_STATIC)
+ INSTALL(TARGETS portmidi-static
+ LIBRARY DESTINATION lib${LIB_SUFFIX}
+ ARCHIVE DESTINATION lib${LIB_SUFFIX})
+ endif(PORTMIDI_ENABLE_STATIC)
+ if(PORTMIDI_ENABLE_JAVA)
+ INSTALL(TARGETS pmjni
+ LIBRARY DESTINATION lib${LIB_SUFFIX}
+ ARCHIVE DESTINATION lib${LIB_SUFFIX})
+ endif(PORTMIDI_ENABLE_JAVA)
# .h files installed by pm_dylib/CMakeLists.txt, so don't need them here
# INSTALL(FILES portmidi.h ../porttime/porttime.h
# DESTINATION /usr/local/include)
--- portmidi/pm_dylib/CMakeLists.txt
+++ portmidi/pm_dylib/CMakeLists.txt
@@ -39,9 +39,6 @@
# first include the appropriate system-dependent file:
if(UNIX)
- # add the -g switch for Linux and Mac OS X (not used in Win32)
- set (CMAKE_C_FLAGS_DEBUG "-g ${CMAKE_C_FLAGS_DEBUG}"
- CACHE STRING "enable extra checks for debugging" FORCE)
if(APPLE)
set(MACSRC pmmacosxcm pmmac readbinaryplist finddefault)
prepend_path(LIBSRC ../pm_mac/ ${MACSRC})
@@ -63,7 +60,8 @@
message(STATUS "SYSROOT: " ${CMAKE_OSX_SYSROOT})
else(APPLE)
# LINUX settings...
- include(FindJNI)
+ if(PORTMIDI_ENABLE_JAVA)
+ include(FindJNI)
# message(STATUS "JAVA_JVM_LIB_PATH is " ${JAVA_JVM_LIB_PATH})
# message(STATUS "JAVA_INCLUDE_PATH is " ${JAVA_INCLUDE_PATH})
# note: should use JAVA_JVM_LIB_PATH, but it is not set properly
@@ -75,11 +73,8 @@
# JAVA_INCLUDE_PATH2; if no, then we need to make both JAVA_INCLUDE_PATH
# and JAVA_INCLUDE_PATH2 set by user (will need clear documentation
# because JAVA_INCLUDE_PATH2 is pretty obscure)
- set(JAVA_INCLUDE_PATH ${JAVA_INCLUDE_PATH-UNKNOWN}
- CACHE STRING "where to find Java SDK include directory")
- set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH}/linux)
- # libjvm.so is found relative to JAVA_INCLUDE_PATH:
- set(JAVAVM_LIB ${JAVA_INCLUDE_PATH}/../jre/lib/i386/client/libjvm.so)
+ set(JAVAVM_LIB ${JAVA_JVM_LIBRARY})
+ endif(PORTMIDI_ENABLE_JAVA)
set(LINUXSRC pmlinuxalsa pmlinux finddefault)
prepend_path(LIBSRC ../pm_linux/ ${LINUXSRC})
@@ -91,13 +86,15 @@
if(WIN32)
# /MDd is multithread debug DLL, /MTd is multithread debug
# /MD is multithread DLL, /MT is multithread
-
- include(FindJNI)
- # note: should use JAVA_JVM_LIB_PATH, but it is not set properly
- set(JAVAVM_LIB ${JAVA_INCLUDE_PATH}/../lib/jvm.lib)
- set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
- # message(STATUS "JAVA_INCLUDE_PATHS: " ${JAVA_INCLUDE_PATHS})
+ if(PORTMIDI_ENABLE_JAVA)
+ include(FindJNI)
+ # note: should use JAVA_JVM_LIB_PATH, but it is not set properly
+ set(JAVAVM_LIB ${JAVA_INCLUDE_PATH}/../lib/jvm.lib)
+
+ set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
+ # message(STATUS "JAVA_INCLUDE_PATHS: " ${JAVA_INCLUDE_PATHS})
+ endif(PORTMIDI_ENABLE_JAVA)
set(WINSRC pmwin pmwinmm)
prepend_path(LIBSRC ../pm_win/ ${WINSRC})
@@ -106,7 +103,10 @@
# message(STATUS "JAVAVM_LIB: " ${JAVAVM_LIB})
endif(WIN32)
endif(UNIX)
+
+if(PORTMIDI_ENABLE_JAVA)
set(JNI_EXTRA_LIBS ${PM_NEEDED_LIBS} ${JAVAVM_LIB})
+endif(PORTMIDI_ENABLE_JAVA)
# this completes the list of library sources by adding shared code
set(SHARED_FILES pmutil portmidi)
@@ -120,8 +120,8 @@
# install the libraries (Linux and Mac OS X command line)
if(UNIX)
INSTALL(TARGETS portmidi-dynamic
- LIBRARY DESTINATION /usr/local/lib
- ARCHIVE DESTINATION /usr/local/lib)
+ LIBRARY DESTINATION lib${LIB_SUFFIX}
+ ARCHIVE DESTINATION lib${LIB_SUFFIX})
INSTALL(FILES ../pm_common/portmidi.h ../porttime/porttime.h
- DESTINATION /usr/local/include)
+ DESTINATION include)
endif(UNIX)
--- portmidi/pm_java/CMakeLists.txt
+++ portmidi/pm_java/CMakeLists.txt
@@ -5,43 +5,24 @@
# java not dealt with in CMake -- see pm_mac/pm_mac.xcodeproj
else(APPLE)
# linux
- set(JPORTMIDICLASS JPortMidi.class JPortMidiException.class
- JPortMidiApi.class)
- set(PMDEFAULTSCLASS PmDefaultsFrame.class PmDefaults.class)
- prepend_path(JPORTMIDICLASS2 jportmidi/ ${JPORTMIDICLASS})
- prepend_path(PMDEFAULTSCLASS2 pmdefaults/ ${PMDEFAULTSCLASS})
- set(PMDEFAULTS_ALL_CLASSES ${JPORTMIDICLASS2} ${PMDEFAULTSCLASS2})
- # message(STATUS "PMDEFAULTS_ALL_CLASSES is " ${PMDEFAULTS_ALL_CLASSES})
- add_custom_command(OUTPUT pmdefaults/PmDefaultsFrame.class
- COMMAND javac -classpath . pmdefaults/PmDefaultsFrame.java
- MAIN_DEPENDENCY pmdefaults/PmDefaultsFrame.java
- DEPENDS pmdefaults/PmDefaults.java
- WORKING_DIRECTORY pm_java)
- add_custom_command(OUTPUT pmdefaults/PmDefaults.class
- COMMAND javac -classpath . pmdefaults/PmDefaults.java
- MAIN_DEPENDENCY pmdefaults/PmDefaults.java
- DEPENDS pmdefaults/PmDefaultsFrame.java
- WORKING_DIRECTORY pm_java)
- add_custom_command(OUTPUT ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/pmdefaults.jar
- COMMAND cp pmdefaults/portmusic_logo.png .
- COMMAND jar cmf pmdefaults/manifest.txt pmdefaults.jar
- pmdefaults/*.class portmusic_logo.png jportmidi/*.class
- COMMAND chmod +x pmdefaults/pmdefaults
- COMMAND cp pmdefaults/pmdefaults ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
- COMMAND mv pmdefaults.jar ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
- COMMAND rm portmusic_logo.png
- MAIN_DEPENDENCY pmdefaults/PmDefaults.class
- DEPENDS ${PMDEFAULTS_ALL_CLASSES}
- WORKING_DIRECTORY pm_java)
- add_custom_target(pmdefaults_target ALL
- DEPENDS ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/pmdefaults.jar)
- # message(STATUS "add_custom_target: pmdefaults.jar")
+ set(JAVA_CLASSES jportmidi pmdefaults)
+ add_custom_command(OUTPUT ${JAVA_CLASSES}
+ COMMAND javac -d ${CMAKE_CURRENT_BINARY_DIR} jportmidi/*.java pmdefaults/*.java
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/pmdefaults.jar
+ DEPENDS ${JAVA_CLASSES}
+ COMMAND jar cmf pmdefaults/manifest.txt ${CMAKE_CURRENT_BINARY_DIR}/pmdefaults.jar
+ -C pmdefaults portmusic_logo.png -C ${CMAKE_CURRENT_BINARY_DIR} jportmidi
+ -C ${CMAKE_CURRENT_BINARY_DIR} pmdefaults
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+ add_custom_target(pmdefaults.jar ALL
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/pmdefaults.jar)
# install the libraries (Linux only)
- INSTALL(FILES ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/pmdefaults.jar
- DESTINATION /usr/share/java)
- INSTALL(PROGRAMS ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/pmdefaults
- DESTINATION /usr/local/bin)
+ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/pmdefaults.jar
+ DESTINATION ${JAR_INSTALL_DIR})
+ INSTALL(PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/pmdefaults/pmdefaults
+ DESTINATION bin)
endif(APPLE)
endif(UNIX)
# In windows, use pm_java/make.bat
--- portmidi/pm_test/CMakeLists.txt
+++ portmidi/pm_test/CMakeLists.txt
@@ -12,8 +12,8 @@
macro(make_a_test name)
add_executable(${name} ${name}.c)
- target_link_libraries(${name} portmidi-static ${PM_NEEDED_LIBS})
- add_dependencies(${name} portmidi-static)
+ target_link_libraries(${name} portmidi ${PM_NEEDED_LIBS})
+ add_dependencies(${name} portmidi)
endmacro(make_a_test)
make_a_test(test)

View File

@ -0,0 +1,82 @@
From ecbb0b3dc122b0d290987cf9c84010bbe53e1022 Mon Sep 17 00:00:00 2001
From: Jouni Malinen <jouni@qca.qualcomm.com>
Date: Fri, 4 Mar 2016 17:20:18 +0200
Subject: [PATCH 1/5] WPS: Reject a Credential with invalid passphrase
WPA/WPA2-Personal passphrase is not allowed to include control
characters. Reject a Credential received from a WPS Registrar both as
STA (Credential) and AP (AP Settings) if the credential is for WPAPSK or
WPA2PSK authentication type and includes an invalid passphrase.
This fixes an issue where hostapd or wpa_supplicant could have updated
the configuration file PSK/passphrase parameter with arbitrary data from
an external device (Registrar) that may not be fully trusted. Should
such data include a newline character, the resulting configuration file
could become invalid and fail to be parsed.
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
---
src/utils/common.c | 12 ++++++++++++
src/utils/common.h | 1 +
src/wps/wps_attr_process.c | 10 ++++++++++
3 files changed, 23 insertions(+)
diff --git a/src/utils/common.c b/src/utils/common.c
index 450e2c6..27b7c02 100644
--- a/src/utils/common.c
+++ b/src/utils/common.c
@@ -697,6 +697,18 @@ int is_hex(const u8 *data, size_t len)
}
+int has_ctrl_char(const u8 *data, size_t len)
+{
+ size_t i;
+
+ for (i = 0; i < len; i++) {
+ if (data[i] < 32 || data[i] == 127)
+ return 1;
+ }
+ return 0;
+}
+
+
size_t merge_byte_arrays(u8 *res, size_t res_len,
const u8 *src1, size_t src1_len,
const u8 *src2, size_t src2_len)
diff --git a/src/utils/common.h b/src/utils/common.h
index 701dbb2..a972240 100644
--- a/src/utils/common.h
+++ b/src/utils/common.h
@@ -488,6 +488,7 @@ const char * wpa_ssid_txt(const u8 *ssid, size_t ssid_len);
char * wpa_config_parse_string(const char *value, size_t *len);
int is_hex(const u8 *data, size_t len);
+int has_ctrl_char(const u8 *data, size_t len);
size_t merge_byte_arrays(u8 *res, size_t res_len,
const u8 *src1, size_t src1_len,
const u8 *src2, size_t src2_len);
diff --git a/src/wps/wps_attr_process.c b/src/wps/wps_attr_process.c
index eadb22f..e8c4579 100644
--- a/src/wps/wps_attr_process.c
+++ b/src/wps/wps_attr_process.c
@@ -229,6 +229,16 @@ static int wps_workaround_cred_key(struct wps_credential *cred)
cred->key_len--;
#endif /* CONFIG_WPS_STRICT */
}
+
+
+ if (cred->auth_type & (WPS_AUTH_WPAPSK | WPS_AUTH_WPA2PSK) &&
+ (cred->key_len < 8 || has_ctrl_char(cred->key, cred->key_len))) {
+ wpa_printf(MSG_INFO, "WPS: Reject credential with invalid WPA/WPA2-Personal passphrase");
+ wpa_hexdump_ascii_key(MSG_INFO, "WPS: Network Key",
+ cred->key, cred->key_len);
+ return -1;
+ }
+
return 0;
}
--
1.9.1

View File

@ -0,0 +1,51 @@
From 73e4abb24a936014727924d8b0b2965edfc117dd Mon Sep 17 00:00:00 2001
From: Jouni Malinen <jouni@qca.qualcomm.com>
Date: Fri, 4 Mar 2016 18:46:41 +0200
Subject: [PATCH 2/5] Reject psk parameter set with invalid passphrase
character
WPA/WPA2-Personal passphrase is not allowed to include control
characters. Reject a passphrase configuration attempt if that passphrase
includes an invalid passphrase.
This fixes an issue where wpa_supplicant could have updated the
configuration file psk parameter with arbitrary data from the control
interface or D-Bus interface. While those interfaces are supposed to be
accessible only for trusted users/applications, it may be possible that
an untrusted user has access to a management software component that
does not validate the passphrase value before passing it to
wpa_supplicant.
This could allow such an untrusted user to inject up to 63 characters of
almost arbitrary data into the configuration file. Such configuration
file could result in wpa_supplicant trying to load a library (e.g.,
opensc_engine_path, pkcs11_engine_path, pkcs11_module_path,
load_dynamic_eap) from user controlled location when starting again.
This would allow code from that library to be executed under the
wpa_supplicant process privileges.
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
---
wpa_supplicant/config.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/wpa_supplicant/config.c b/wpa_supplicant/config.c
index b1c7870..fdd9643 100644
--- a/wpa_supplicant/config.c
+++ b/wpa_supplicant/config.c
@@ -478,6 +478,12 @@ static int wpa_config_parse_psk(const struct parse_data *data,
}
wpa_hexdump_ascii_key(MSG_MSGDUMP, "PSK (ASCII passphrase)",
(u8 *) value, len);
+ if (has_ctrl_char((u8 *) value, len)) {
+ wpa_printf(MSG_ERROR,
+ "Line %d: Invalid passphrase character",
+ line);
+ return -1;
+ }
if (ssid->passphrase && os_strlen(ssid->passphrase) == len &&
os_memcmp(ssid->passphrase, value, len) == 0) {
/* No change to the previously configured value */
--
1.9.1

View File

@ -0,0 +1,82 @@
From 0fe5a234240a108b294a87174ad197f6b5cb38e9 Mon Sep 17 00:00:00 2001
From: Paul Stewart <pstew@google.com>
Date: Thu, 3 Mar 2016 15:40:19 -0800
Subject: [PATCH 3/5] Remove newlines from wpa_supplicant config network
output
Spurious newlines output while writing the config file can corrupt the
wpa_supplicant configuration. Avoid writing these for the network block
parameters. This is a generic filter that cover cases that may not have
been explicitly addressed with a more specific commit to avoid control
characters in the psk parameter.
Signed-off-by: Paul Stewart <pstew@google.com>
---
src/utils/common.c | 11 +++++++++++
src/utils/common.h | 1 +
wpa_supplicant/config.c | 15 +++++++++++++--
3 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/src/utils/common.c b/src/utils/common.c
index 27b7c02..9856463 100644
--- a/src/utils/common.c
+++ b/src/utils/common.c
@@ -709,6 +709,17 @@ int has_ctrl_char(const u8 *data, size_t len)
}
+int has_newline(const char *str)
+{
+ while (*str) {
+ if (*str == '\n' || *str == '\r')
+ return 1;
+ str++;
+ }
+ return 0;
+}
+
+
size_t merge_byte_arrays(u8 *res, size_t res_len,
const u8 *src1, size_t src1_len,
const u8 *src2, size_t src2_len)
diff --git a/src/utils/common.h b/src/utils/common.h
index a972240..d19927b 100644
--- a/src/utils/common.h
+++ b/src/utils/common.h
@@ -489,6 +489,7 @@ const char * wpa_ssid_txt(const u8 *ssid, size_t ssid_len);
char * wpa_config_parse_string(const char *value, size_t *len);
int is_hex(const u8 *data, size_t len);
int has_ctrl_char(const u8 *data, size_t len);
+int has_newline(const char *str);
size_t merge_byte_arrays(u8 *res, size_t res_len,
const u8 *src1, size_t src1_len,
const u8 *src2, size_t src2_len);
diff --git a/wpa_supplicant/config.c b/wpa_supplicant/config.c
index fdd9643..eb97cd5 100644
--- a/wpa_supplicant/config.c
+++ b/wpa_supplicant/config.c
@@ -2699,8 +2699,19 @@ char * wpa_config_get(struct wpa_ssid *ssid, const char *var)
for (i = 0; i < NUM_SSID_FIELDS; i++) {
const struct parse_data *field = &ssid_fields[i];
- if (os_strcmp(var, field->name) == 0)
- return field->writer(field, ssid);
+ if (os_strcmp(var, field->name) == 0) {
+ char *ret = field->writer(field, ssid);
+
+ if (ret && has_newline(ret)) {
+ wpa_printf(MSG_ERROR,
+ "Found newline in value for %s; not returning it",
+ var);
+ os_free(ret);
+ ret = NULL;
+ }
+
+ return ret;
+ }
}
return NULL;
--
1.9.1

View File

@ -0,0 +1,62 @@
From b166cd84a77a6717be9600bf95378a0055d6f5a5 Mon Sep 17 00:00:00 2001
From: Jouni Malinen <jouni@qca.qualcomm.com>
Date: Tue, 5 Apr 2016 23:33:10 +0300
Subject: [PATCH 4/5] Reject SET_CRED commands with newline characters in the
string values
Most of the cred block parameters are written as strings without
filtering and if there is an embedded newline character in the value,
unexpected configuration file data might be written.
This fixes an issue where wpa_supplicant could have updated the
configuration file cred parameter with arbitrary data from the control
interface or D-Bus interface. While those interfaces are supposed to be
accessible only for trusted users/applications, it may be possible that
an untrusted user has access to a management software component that
does not validate the credential value before passing it to
wpa_supplicant.
This could allow such an untrusted user to inject almost arbitrary data
into the configuration file. Such configuration file could result in
wpa_supplicant trying to load a library (e.g., opensc_engine_path,
pkcs11_engine_path, pkcs11_module_path, load_dynamic_eap) from user
controlled location when starting again. This would allow code from that
library to be executed under the wpa_supplicant process privileges.
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
---
wpa_supplicant/config.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/wpa_supplicant/config.c b/wpa_supplicant/config.c
index eb97cd5..69152ef 100644
--- a/wpa_supplicant/config.c
+++ b/wpa_supplicant/config.c
@@ -2896,6 +2896,8 @@ int wpa_config_set_cred(struct wpa_cred *cred, const char *var,
if (os_strcmp(var, "password") == 0 &&
os_strncmp(value, "ext:", 4) == 0) {
+ if (has_newline(value))
+ return -1;
str_clear_free(cred->password);
cred->password = os_strdup(value);
cred->ext_password = 1;
@@ -2946,9 +2948,14 @@ int wpa_config_set_cred(struct wpa_cred *cred, const char *var,
}
val = wpa_config_parse_string(value, &len);
- if (val == NULL) {
+ if (val == NULL ||
+ (os_strcmp(var, "excluded_ssid") != 0 &&
+ os_strcmp(var, "roaming_consortium") != 0 &&
+ os_strcmp(var, "required_roaming_consortium") != 0 &&
+ has_newline(val))) {
wpa_printf(MSG_ERROR, "Line %d: invalid field '%s' string "
"value '%s'.", line, var, value);
+ os_free(val);
return -1;
}
--
1.9.1

View File

@ -0,0 +1,50 @@
From 2a3f56502b52375c3bf113cf92adfa99bad6b488 Mon Sep 17 00:00:00 2001
From: Jouni Malinen <jouni@qca.qualcomm.com>
Date: Tue, 5 Apr 2016 23:55:48 +0300
Subject: [PATCH 5/5] Reject SET commands with newline characters in the
string values
Many of the global configuration parameters are written as strings
without filtering and if there is an embedded newline character in the
value, unexpected configuration file data might be written.
This fixes an issue where wpa_supplicant could have updated the
configuration file global parameter with arbitrary data from the control
interface or D-Bus interface. While those interfaces are supposed to be
accessible only for trusted users/applications, it may be possible that
an untrusted user has access to a management software component that
does not validate the value of a parameter before passing it to
wpa_supplicant.
This could allow such an untrusted user to inject almost arbitrary data
into the configuration file. Such configuration file could result in
wpa_supplicant trying to load a library (e.g., opensc_engine_path,
pkcs11_engine_path, pkcs11_module_path, load_dynamic_eap) from user
controlled location when starting again. This would allow code from that
library to be executed under the wpa_supplicant process privileges.
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
---
wpa_supplicant/config.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/wpa_supplicant/config.c b/wpa_supplicant/config.c
index 69152ef..d9a1603 100644
--- a/wpa_supplicant/config.c
+++ b/wpa_supplicant/config.c
@@ -3764,6 +3764,12 @@ static int wpa_global_config_parse_str(const struct global_parse_data *data,
return -1;
}
+ if (has_newline(pos)) {
+ wpa_printf(MSG_ERROR, "Line %d: invalid %s value with newline",
+ line, data->name);
+ return -1;
+ }
+
tmp = os_strdup(pos);
if (tmp == NULL)
return -1;
--
1.9.1

View File

@ -198,6 +198,7 @@ required structures.")
(package (package
(name "openssl") (name "openssl")
(version "1.0.2g") (version "1.0.2g")
(replacement openssl/fixed)
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (list (string-append "ftp://ftp.openssl.org/source/" (uri (list (string-append "ftp://ftp.openssl.org/source/"
@ -298,6 +299,25 @@ required structures.")
(license license:openssl) (license license:openssl)
(home-page "http://www.openssl.org/"))) (home-page "http://www.openssl.org/")))
(define openssl/fixed
(package
(inherit openssl)
(source
(let ((name "openssl")
(version "1.0.2h"))
(origin
(method url-fetch)
(uri (list (string-append "ftp://ftp.openssl.org/source/"
name "-" version ".tar.gz")
(string-append "ftp://ftp.openssl.org/source/old/"
(string-trim-right version char-set:letter)
"/" name "-" version ".tar.gz")))
(sha256
(base32
"06996ds1rk8xhnyb5y273a7xkcxhggp4bq1g02rab55d7bjhfh0x"))
(patches (search-patches "openssl-runpath.patch"
"openssl-c-rehash-in.patch")))))))
(define-public libressl (define-public libressl
(package (package
(name "libressl") (name "libressl")

View File

@ -3,7 +3,7 @@
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com> ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org> ;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014, 2016 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014, 2016 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
@ -27,7 +27,7 @@
(define-module (gnu packages version-control) (define-module (gnu packages version-control)
#:use-module ((guix licenses) #:use-module ((guix licenses)
#:select (asl2.0 bsd-2 #:select (asl2.0 bsd-2 bsd-3
gpl1+ gpl2 gpl2+ gpl3+ lgpl2.1 gpl1+ gpl2 gpl2+ gpl3+ lgpl2.1
public-domain x11-style)) public-domain x11-style))
#:use-module (guix utils) #:use-module (guix utils)
@ -1012,6 +1012,58 @@ as possible. Resolution of contention for source files, a major headache for
any project with more than one developer, is one of Aegis's major functions.") any project with more than one developer, is one of Aegis's major functions.")
(license gpl3+))) (license gpl3+)))
(define-public reposurgeon
(package
(name "reposurgeon")
(version "3.37")
(source (origin
(method url-fetch)
(uri (string-append "http://www.catb.org/~esr/" name "/"
name "-" version ".tar.xz"))
(sha256
(base32
"14asjg4xy3mhh5z0r3k7c1wv9y803j2zfq32g5q5m95sf7yzygan"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ;no test suite distributed
#:make-flags
(list (string-append "target=" (assoc-ref %outputs "out")))
#:phases
(modify-phases %standard-phases
(delete 'configure)
(add-before 'build 'fix-docbook
(lambda* (#:key inputs #:allow-other-keys)
(substitute* (find-files "." "\\.xml$")
(("docbook/docbookx.dtd")
(string-append (assoc-ref inputs "docbook-xml")
"/xml/dtd/docbook/docbookx.dtd")))
#t))
(add-after 'install 'install-emacs-data
(lambda* (#:key outputs #:allow-other-keys)
(install-file "reposurgeon-mode.el"
(string-append (assoc-ref outputs "out")
"/share/emacs/site-lisp")))))))
(inputs
`(("python" ,python-wrapper)))
(native-inputs
`(("asciidoc" ,asciidoc)
("docbook-xml" ,docbook-xml-4.1.2)
("docbook-xsl" ,docbook-xsl)
("libxml2" ,libxml2)
("xmlto" ,xmlto)))
(home-page "http://www.catb.org/~esr/reposurgeon/")
(synopsis "Edit version-control repository history")
(description "Reposurgeon enables risky operations that version-control
systems don't want to let you do, such as editing past comments and metadata
and removing commits. It works with any version control system that can
export and import Git fast-import streams, including Git, Mercurial, Fossil,
Bazaar, CVS, RCS, and Src. It can also read Subversion dump files directly
and can thus be used to script production of very high-quality conversions
from Subversion to any supported Distributed Version Control System (DVCS).")
;; Most files are distributed under bsd-2, except 'repocutter' which is
;; under bsd-3.
(license (list bsd-2 bsd-3))))
(define-public tig (define-public tig
(package (package
(name "tig") (name "tig")

View File

@ -110,9 +110,7 @@
termios-input-speed termios-input-speed
termios-output-speed termios-output-speed
local-flags local-flags
TCSANOW tcsetattr-action
TCSADRAIN
TCSAFLUSH
tcgetattr tcgetattr
tcsetattr tcsetattr
@ -1059,9 +1057,11 @@ given an integer, returns the list of names of the constants that are or'd."
(define EXTPROC #o0200000)) (define EXTPROC #o0200000))
;; "Actions" values for 'tcsetattr'. ;; "Actions" values for 'tcsetattr'.
(define TCSANOW 0) (define-bits tcsetattr-action
(define TCSADRAIN 1) %unused-tcsetattr-action->symbols
(define TCSAFLUSH 2) (define TCSANOW 0)
(define TCSADRAIN 1)
(define TCSAFLUSH 2))
(define-record-type <termios> (define-record-type <termios>
(termios input-flags output-flags control-flags local-flags (termios input-flags output-flags control-flags local-flags
@ -1107,8 +1107,8 @@ given an integer, returns the list of names of the constants that are or'd."
(define tcsetattr (define tcsetattr
(let ((proc (syscall->procedure int "tcsetattr" (list int int '*)))) (let ((proc (syscall->procedure int "tcsetattr" (list int int '*))))
(lambda (fd actions termios) (lambda (fd actions termios)
"Use TERMIOS for the tty at FD. ACTIONS is one of 'TCSANOW', "Use TERMIOS for the tty at FD. ACTIONS is one of of the values
'TCSADRAIN', or 'TCSAFLUSH'; see tcsetattr(3) for details." produced by 'tcsetattr-action'; see tcsetattr(3) for details."
(define bv (define bv
(make-bytevector sizeof-termios)) (make-bytevector sizeof-termios))

View File

@ -281,7 +281,7 @@
(test-assert "tcsetattr" (test-assert "tcsetattr"
(let ((first (tcgetattr 0))) (let ((first (tcgetattr 0)))
(tcsetattr 0 TCSANOW first) (tcsetattr 0 (tcsetattr-action TCSANOW) first)
(equal? first (tcgetattr 0)))) (equal? first (tcgetattr 0))))
(test-assert "terminal-window-size ENOTTY" (test-assert "terminal-window-size ENOTTY"