Merge branch 'master' into core-updates

master
Mark H Weaver 2016-10-12 09:28:14 -04:00
commit abcf4858cd
No known key found for this signature in database
GPG Key ID: 7CEF29847562C516
101 changed files with 4580 additions and 2832 deletions

View File

@ -30,10 +30,10 @@ Ludovic Courtès <ludo@gnu.org> <ludovic.courtes@inria.fr>
Mathieu Lirzin <mthl@gnu.org> <mthl@openmailbox.org>
Mathieu Lirzin <mthl@gnu.org> <mathieu.lirzin@openmailbox.org>
Nikita Karetnikov <nikita@karetnikov.org> <nikita.karetnikov@gmail.com>
ng0 <ngillmann@runbox.com> <ng0@we.make.ritual.n0.is>
ng0 <ngillmann@runbox.com> <niasterisk@grrlz.net>
ng0 <ngillmann@runbox.com> <ng@niasterisk.space>
ng0 <ngillmann@runbox.com> <ng0@libertad.pw>
ng0 <ng0@we.make.ritual.n0.is> <ngillmann@runbox.com>
ng0 <ng0@we.make.ritual.n0.is> <niasterisk@grrlz.net>
ng0 <ng0@we.make.ritual.n0.is> <ng@niasterisk.space>
ng0 <ng0@we.make.ritual.n0.is> <ng0@libertad.pw>
Pjotr Prins <pjotr.public01@thebird.nl>
Pjotr Prins <pjotr.public01@thebird.nl> <pjotr.public12@thebird.nl>
Raimon Grau <raimonster@gmail.com> <raimon@3scale.net>

View File

@ -63,6 +63,7 @@ MODULES = \
guix/build-system/ant.scm \
guix/build-system/cmake.scm \
guix/build-system/emacs.scm \
guix/build-system/asdf.scm \
guix/build-system/glib-or-gtk.scm \
guix/build-system/gnu.scm \
guix/build-system/haskell.scm \
@ -84,6 +85,7 @@ MODULES = \
guix/build/download.scm \
guix/build/cmake-build-system.scm \
guix/build/emacs-build-system.scm \
guix/build/asdf-build-system.scm \
guix/build/git.scm \
guix/build/hg.scm \
guix/build/glib-or-gtk-build-system.scm \
@ -106,6 +108,7 @@ MODULES = \
guix/build/syscalls.scm \
guix/build/gremlin.scm \
guix/build/emacs-utils.scm \
guix/build/lisp-utils.scm \
guix/build/graft.scm \
guix/build/bournish.scm \
guix/build/qt-utils.scm \

View File

@ -2697,7 +2697,7 @@ one @i{via} its @code{Requires} field.
Another example where @code{propagated-inputs} is useful is for languages
that lack a facility to record the run-time search path akin to the
@code{RUNPATH} of ELF files; this includes Guile, Python, Perl, GHC, and
@code{RUNPATH} of ELF files; this includes Guile, Python, Perl, and
more. To ensure that libraries written in those languages can find
library code they depend on at run time, run-time dependencies must be
listed in @code{propagated-inputs} rather than @code{inputs}.
@ -2967,6 +2967,63 @@ that should be run during the @code{build} phase. By default the
@end defvr
@defvr {Scheme Variable} asdf-build-system/source
@defvrx {Scheme Variable} asdf-build-system/sbcl
@defvrx {Scheme Variable} asdf-build-system/ecl
These variables, exported by @code{(guix build-system asdf)}, implement
build procedures for Common Lisp packages using
@url{https://common-lisp.net/project/asdf/, ``ASDF''}. ASDF is a system
definition facility for Common Lisp programs and libraries.
The @code{asdf-build-system/source} system installs the packages in
source form, and can be loaded using any common lisp implementation, via
ASDF. The others, such as @code{asdf-build-system/sbcl}, install binary
systems in the format which a particular implementation understands.
These build systems can also be used to produce executable programs, or
lisp images which contain a set of packages pre-loaded.
The build system uses naming conventions. For binary packages, the
package itself as well as its run-time dependencies should begin their
name with the lisp implementation, such as @code{sbcl-} for
@code{asdf-build-system/sbcl}. Beginning the input name with this
prefix will allow the build system to encode its location into the
resulting library, so that the input can be found at run-time.
If dependencies are used only for tests, it is convenient to use a
different prefix in order to avoid having a run-time dependency on such
systems. For example,
@example
(define-public sbcl-bordeaux-threads
(package
...
(native-inputs `(("tests:cl-fiveam" ,sbcl-fiveam)))
...))
@end example
Additionally, the corresponding source package should be labeled using
the same convention as python packages (see @ref{Python Modules}), using
the @code{cl-} prefix.
For binary packages, each system should be defined as a Guix package.
If one package @code{origin} contains several systems, package variants
can be created in order to build all the systems. Source packages,
which use @code{asdf-build-system/source}, may contain several systems.
In order to create executable programs and images, the build-side
procedures @code{build-program} and @code{build-image} can be used.
They should be called in a build phase after the @code{create-symlinks}
phase, so that the system which was just built can be used within the
resulting image. @code{build-program} requires a list of Common Lisp
expressions to be passed as the @code{#:entry-program} argument.
If the system is not defined within its own @code{.asd} file of the same
name, then the @code{#:asd-file} parameter should be used to specify
which file the system is defined in.
@end defvr
@defvr {Scheme Variable} cmake-build-system
This variable is exported by @code{(guix build-system cmake)}. It
implements the build procedure for packages using the

View File

@ -111,6 +111,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/education.scm \
%D%/packages/elf.scm \
%D%/packages/elixir.scm \
%D%/packages/embedded.scm \
%D%/packages/emacs.scm \
%D%/packages/enchant.scm \
%D%/packages/engineering.scm \
@ -128,6 +129,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/fltk.scm \
%D%/packages/fonts.scm \
%D%/packages/fontutils.scm \
%D%/packages/fpga.scm \
%D%/packages/freedesktop.scm \
%D%/packages/freeipmi.scm \
%D%/packages/ftp.scm \
@ -477,6 +479,7 @@ dist_patch_DATA = \
%D%/packages/patches/clang-libc-search-path.patch \
%D%/packages/patches/clang-3.8-libc-search-path.patch \
%D%/packages/patches/clucene-pkgconfig.patch \
%D%/packages/patches/clx-remove-demo.patch \
%D%/packages/patches/cmake-fix-tests.patch \
%D%/packages/patches/cpio-CVE-2016-2037.patch \
%D%/packages/patches/cpufrequtils-fix-aclocal.patch \
@ -570,27 +573,17 @@ dist_patch_DATA = \
%D%/packages/patches/gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch \
%D%/packages/patches/gtkglext-disable-disable-deprecated.patch \
%D%/packages/patches/hdf5-config-date.patch \
%D%/packages/patches/hdf-eos5-build-shared.patch \
%D%/packages/patches/hdf-eos5-remove-gctp.patch \
%D%/packages/patches/hdf-eos5-fix-szip.patch \
%D%/packages/patches/hdf-eos5-fortrantests.patch \
%D%/packages/patches/higan-remove-march-native-flag.patch \
%D%/packages/patches/hop-bigloo-4.0b.patch \
%D%/packages/patches/hop-linker-flags.patch \
%D%/packages/patches/hydra-disable-darcs-test.patch \
%D%/packages/patches/hypre-doc-tables.patch \
%D%/packages/patches/hypre-ldflags.patch \
%D%/packages/patches/icecat-avoid-bundled-includes.patch \
%D%/packages/patches/icecat-CVE-2016-2818-pt1.patch \
%D%/packages/patches/icecat-CVE-2016-2818-pt2.patch \
%D%/packages/patches/icecat-CVE-2016-2818-pt3.patch \
%D%/packages/patches/icecat-CVE-2016-2818-pt4.patch \
%D%/packages/patches/icecat-CVE-2016-2818-pt5.patch \
%D%/packages/patches/icecat-CVE-2016-2818-pt6.patch \
%D%/packages/patches/icecat-CVE-2016-2818-pt7.patch \
%D%/packages/patches/icecat-CVE-2016-2818-pt8.patch \
%D%/packages/patches/icecat-CVE-2016-2818-pt9.patch \
%D%/packages/patches/icecat-CVE-2016-2819.patch \
%D%/packages/patches/icecat-CVE-2016-2821.patch \
%D%/packages/patches/icecat-CVE-2016-2824.patch \
%D%/packages/patches/icecat-CVE-2016-2828.patch \
%D%/packages/patches/icecat-CVE-2016-2831.patch \
%D%/packages/patches/icecat-avoid-bundled-libraries.patch \
%D%/packages/patches/icu4c-CVE-2014-6585.patch \
%D%/packages/patches/icu4c-CVE-2015-1270.patch \
%D%/packages/patches/icu4c-CVE-2015-4760.patch \
@ -656,6 +649,7 @@ dist_patch_DATA = \
%D%/packages/patches/libtiff-oob-write-in-nextdecode.patch \
%D%/packages/patches/libtool-skip-tests2.patch \
%D%/packages/patches/libunwind-CVE-2015-3239.patch \
%D%/packages/patches/libupnp-CVE-2016-6255.patch \
%D%/packages/patches/libvpx-CVE-2016-2818.patch \
%D%/packages/patches/libwmf-CAN-2004-0941.patch \
%D%/packages/patches/libwmf-CVE-2006-3376.patch \
@ -787,6 +781,9 @@ dist_patch_DATA = \
%D%/packages/patches/python-paste-remove-website-test.patch \
%D%/packages/patches/python-paste-remove-timing-test.patch \
%D%/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \
%D%/packages/patches/qemu-CVE-2016-8576.patch \
%D%/packages/patches/qemu-CVE-2016-8577.patch \
%D%/packages/patches/qemu-CVE-2016-8578.patch \
%D%/packages/patches/qt4-ldflags.patch \
%D%/packages/patches/quickswitch-fix-dmenu-check.patch \
%D%/packages/patches/rapicorn-isnan.patch \
@ -875,15 +872,6 @@ dist_patch_DATA = \
%D%/packages/patches/wordnet-CVE-2008-2149.patch \
%D%/packages/patches/wordnet-CVE-2008-3908-pt1.patch \
%D%/packages/patches/wordnet-CVE-2008-3908-pt2.patch \
%D%/packages/patches/wpa-supplicant-CVE-2015-5310.patch \
%D%/packages/patches/wpa-supplicant-CVE-2015-5314.patch \
%D%/packages/patches/wpa-supplicant-CVE-2015-5315.patch \
%D%/packages/patches/wpa-supplicant-CVE-2015-5316.patch \
%D%/packages/patches/wpa-supplicant-CVE-2016-4476.patch \
%D%/packages/patches/wpa-supplicant-CVE-2016-4477-pt1.patch \
%D%/packages/patches/wpa-supplicant-CVE-2016-4477-pt2.patch \
%D%/packages/patches/wpa-supplicant-CVE-2016-4477-pt3.patch \
%D%/packages/patches/wpa-supplicant-CVE-2016-4477-pt4.patch \
%D%/packages/patches/xdotool-fix-makefile.patch \
%D%/packages/patches/xf86-video-ark-remove-mibstore.patch \
%D%/packages/patches/xf86-video-ast-remove-mibstore.patch \

View File

@ -862,7 +862,7 @@ commands and their arguments.")
(define-public wpa-supplicant-minimal
(package
(name "wpa-supplicant-minimal")
(version "2.5")
(version "2.6")
(source (origin
(method url-fetch)
(uri (string-append
@ -871,17 +871,7 @@ commands and their arguments.")
".tar.gz"))
(sha256
(base32
"05mkp5bx1c3z7h5biddsv0p49gkrq9ksany3anp4wdiv92p5prfc"))
(patches
(search-patches "wpa-supplicant-CVE-2015-5310.patch"
"wpa-supplicant-CVE-2015-5314.patch"
"wpa-supplicant-CVE-2015-5315.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"))))
"0l0l5gz3d5j9bqjsbjlfcv4w4jwndllp9fmyai4x9kg6qhs6v4xl"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-replace

View File

@ -87,7 +87,7 @@ systems in a FITS image header.")
(define-public gnuastro
(package
(name "gnuastro")
(version "0.1")
(version "0.2")
(source
(origin
(method url-fetch)
@ -95,14 +95,14 @@ systems in a FITS image header.")
version ".tar.gz"))
(sha256
(base32
"105s007kw8l3jwwhvh8k9lgbpfbf7sqh2wpxmvpv3qdr6nh9lnjg"))))
"0099g7zqg1gr9y94ybhyjgx9pkn9zv4rj1xb00fkybfw8w6ij9iv"))))
(inputs
`(("cfitsio" ,cfitsio)
("gsl" ,gsl)
("libjpeg" ,libjpeg-8)
("wcslib" ,wcslib)))
(build-system gnu-build-system)
(home-page "http://www.gnu.org/software/gnuastro")
(home-page "https://www.gnu.org/software/gnuastro")
(synopsis "Astronomical data manipulation programs")
(description "The GNU Astronomy Utilities (Gnuastro) is a suite of
programs for the manipulation and analysis of astronomical data.")

View File

@ -40,6 +40,7 @@
#:use-module (gnu packages autotools)
#:use-module (gnu packages avahi)
#:use-module (gnu packages boost)
#:use-module (gnu packages backup)
#:use-module (gnu packages base)
#:use-module (gnu packages bison)
#:use-module (gnu packages check)
@ -179,7 +180,7 @@ streams from live audio.")
(define-public ardour
(package
(name "ardour")
(version "5.3")
(version "5.4")
(source (origin
(method git-fetch)
(uri (git-reference
@ -193,10 +194,10 @@ streams from live audio.")
"libs/ardour/revision.cc"
(lambda (port)
(format port "#include \"ardour/revision.h\"
namespace ARDOUR { const char* revision = \"5.3\" ; }"))))
namespace ARDOUR { const char* revision = \"5.4\" ; }"))))
(sha256
(base32
"0xdyc3syxg4drg7rafadhlrn6nycg169ay6q5xhga19kcwy6qmqm"))
"1yrg0d86k9fqw7lmzjglilbadb4cjqxqkf6ii4bjs6rihj6b0qrf"))
(file-name (string-append name "-" version))))
(build-system waf-build-system)
(arguments
@ -242,6 +243,7 @@ namespace ARDOUR { const char* revision = \"5.3\" ; }"))))
("readline" ,readline)
("redland" ,redland)
("rubberband" ,rubberband)
("libarchive" ,libarchive)
("taglib" ,taglib)
("python-rdflib" ,python-rdflib)))
(native-inputs
@ -336,6 +338,37 @@ tools (analyzer, mono/stereo tools, crossovers).")
;; The plugins are released under LGPLv2.1+
(license (list license:lgpl2.1+ license:gpl2+))))
(define-public infamous-plugins
(package
(name "infamous-plugins")
(version "0.2.02")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/ssj71/infamousPlugins/"
"archive/v" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0qm3ak07vc1l3f5c3c2lq9gkfknlxwn8ks03cysw1pk8hj7dwnv6"))))
(build-system cmake-build-system)
;; There are no tests
(arguments `(#:tests? #f))
(inputs
`(("cairo" ,cairo)
("fftwf" ,fftwf)
("lv2" ,lv2)
("ntk" ,ntk)
("zita-resampler" ,zita-resampler)))
(native-inputs
`(("pkg-config" ,pkg-config)))
(home-page "http://ssj71.github.io/infamousPlugins")
(synopsis "LV2 plugins for live use")
(description
"The infamous plugins are a collection of LV2 audio plugins for live
performances. The plugins include a cellular automaton synthesizer, an
envelope follower, distortion effects, tape effects and more.")
(license license:gpl2+)))
(define-public csound
(package
(name "csound")

View File

@ -31,7 +31,7 @@
(define-public autogen
(package
(name "autogen")
(version "5.18.10")
(version "5.18.12")
(source
(origin
(method url-fetch)
@ -39,7 +39,7 @@
"/autogen-" version ".tar.xz"))
(sha256
(base32
"0j61mf3qab5ya7w5xsp7xalrby00cv92g462bxffl104ql18w92f"))))
"1n5zq4872sakvz9c7ncsdcfp0z8rsybsxvbmhkpbd19ii0pacfxy"))))
(build-system gnu-build-system)
(native-inputs `(("perl" ,perl) ;for doc generator mdoc
("pkg-config" ,pkg-config)))
@ -55,8 +55,9 @@
(append (find-files "agen5/test" "\\.test$")
(find-files "autoopts/test" "\\.(test|in)$"))
(("/bin/sh") sh)
(("/usr/bin/tr") "tr"))))))))
(home-page "http://www.gnu.org/software/autogen/")
(("/usr/bin/tr") "tr"))
#t))))))
(home-page "https://www.gnu.org/software/autogen/")
(synopsis "Automated program generator")
(description
"AutoGen is a program to ease the maintenance of programs that contain

View File

@ -238,7 +238,7 @@ without modification.")
(define-public bash-completion
(package
(name "bash-completion")
(version "2.3")
(version "2.4")
(source (origin
(method url-fetch)
(uri (string-append
@ -246,7 +246,7 @@ without modification.")
version "/" name "-" version ".tar.xz"))
(sha256
(base32
"1sg82nmsr00ig37skln2qvmi8mgbxgdvycm3ygzs8gbz66pq3q5j"))
"1xlhd09sb2w3bw8qaypxgkr0782w082mcbx8zf7yzjgy0996pxy0"))
(patches
(search-patches "bash-completion-directories.patch"))))
(build-system gnu-build-system)
@ -279,7 +279,7 @@ without modification.")
(description
"This package provides extensions that allow Bash to provide adapted
completion for many common commands.")
(home-page "http://bash-completion.alioth.debian.org/")
(home-page "https://github.com/scop/bash-completion")
(license gpl2+)))
(define-public bash-tap

View File

@ -1972,7 +1972,25 @@ trees (phylogenies) and characters.")
(let ((base (package-with-python2 (strip-python2-variant python-dendropy))))
(package
(inherit base)
;; Do not use same source as 'python-dendropy' because the patched
;; failing tests do not occur on Python 2.
(source
(origin
(method url-fetch)
(uri (pypi-uri "DendroPy" (package-version base)))
(sha256
(base32
"1jfz7gp18wph311w1yygbvjanb3n5mdqal439bb6myw41dwb5m63"))))
(arguments
`(#:python ,python-2
#:phases
(modify-phases %standard-phases
(replace 'check
;; There is currently a test failure that only happens on some
;; systems, and only using "setup.py test"
(lambda _ (zero? (system* "nosetests")))))))
(native-inputs `(("python2-setuptools" ,python2-setuptools)
("python2-nose" ,python2-nose)
,@(package-native-inputs base))))))
@ -2019,7 +2037,7 @@ identify enrichments with functional annotations of the genome.")
(define-public diamond
(package
(name "diamond")
(version "0.8.22")
(version "0.8.23")
(source (origin
(method url-fetch)
(uri (string-append
@ -2028,7 +2046,7 @@ identify enrichments with functional annotations of the genome.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0lbqa07c5z8pr4dvdrc14rqc4311kq69j1ldry9glfc8hg3x1kd1"))))
"0xpcq3fbk4c52xbpgyk5brl58rljvl83bg8nkxy8vs00pxanm7i2"))))
(build-system cmake-build-system)
(arguments
'(#:tests? #f ; no "check" target
@ -5576,7 +5594,7 @@ track. The database is exposed as a @code{TxDb} object.")
(define-public vsearch
(package
(name "vsearch")
(version "2.1.2")
(version "2.3.0")
(source
(origin
(method url-fetch)
@ -5586,7 +5604,7 @@ track. The database is exposed as a @code{TxDb} object.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1zzfj6ydsfzljyswlwqknpp8s2cf31vimi1aqf9ljsbagjyizc58"))
"1r8fk3whkil348y5hfsd4r56qjmchhq4nxm6s7ra5rlisw0mf9fy"))
(modules '((guix build utils)))
(snippet
'(begin
@ -6929,6 +6947,38 @@ elegans (Worm) as provided by UCSC (ce6, May 2008) and stored in Biostrings
objects.")
(license license:artistic2.0)))
(define-public r-bsgenome-celegans-ucsc-ce10
(package
(name "r-bsgenome-celegans-ucsc-ce10")
(version "1.4.0")
(source (origin
(method url-fetch)
;; We cannot use bioconductor-uri here because this tarball is
;; located under "data/annotation/" instead of "bioc/".
(uri (string-append "http://www.bioconductor.org/packages/"
"release/data/annotation/src/contrib/"
"BSgenome.Celegans.UCSC.ce10_"
version ".tar.gz"))
(sha256
(base32
"1zaym97jk4npxk14ifvwz2rvhm4zx9xgs33r9vvx9rlynp0gydrk"))))
(properties
`((upstream-name . "BSgenome.Celegans.UCSC.ce10")))
(build-system r-build-system)
;; As this package provides little more than a very large data file it
;; doesn't make sense to build substitutes.
(arguments `(#:substitutable? #f))
(propagated-inputs
`(("r-bsgenome" ,r-bsgenome)))
(home-page
"http://www.bioconductor.org/packages/BSgenome.Celegans.UCSC.ce10/")
(synopsis "Full genome sequences for Worm")
(description
"This package provides full genome sequences for Caenorhabditis
elegans (Worm) as provided by UCSC (ce10, Oct 2010) and stored in Biostrings
objects.")
(license license:artistic2.0)))
(define-public r-bsgenome-dmelanogaster-ucsc-dm3
(package
(name "r-bsgenome-dmelanogaster-ucsc-dm3")

View File

@ -171,6 +171,7 @@ successful, or false to signal an error."
;; XXX: This one is used bare-bones, without a libc, so add a case
;; here just so we can keep going.
((string=? system "arm-eabi") "no-ld.so")
((string=? system "xtensa-elf") "no-ld.so")
((string=? system "avr") "no-ld.so")
((string=? system "i686-mingw") "no-ld.so")

View File

@ -84,13 +84,13 @@ data units.")
(define-public khal
(package
(name "khal")
(version "0.8.3")
(version "0.8.4")
(source (origin
(method url-fetch)
(uri (pypi-uri "khal" version))
(sha256
(base32
"1qryqs5d8jsl7j22pjjfkfdi4m8m3nn3n44b890pq85xkw599ihy"))))
"03vy4dp9n43w51mwqjjy08dr5nj7wxqnb085visz3j43vzm42p1f"))))
(build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases

View File

@ -29,7 +29,7 @@
(define-public ccache
(package
(name "ccache")
(version "3.3.1")
(version "3.3.2")
(source
(origin
(method url-fetch)
@ -37,7 +37,7 @@
version ".tar.xz"))
(sha256
(base32
"1ij1p8arz72fw67gx65ngb7jmg30ynjxk7i8dmikjxkdri4pmn66"))))
"0c25l78hi36682l9cyxca78i8sdkmgmv9afip1s21y6q4g5qaxlh"))))
(build-system gnu-build-system)
(native-inputs `(("perl" ,perl) ;for test.sh
("which" ,(@ (gnu packages base) which))))

View File

@ -73,7 +73,7 @@
(define-public nss-certs
(package
(name "nss-certs")
(version "3.26")
(version "3.27.1")
(source (origin
(method url-fetch)
(uri (let ((version-with-underscores
@ -84,7 +84,7 @@
"nss-" version ".tar.gz")))
(sha256
(base32
"0r65s5q8kk0vr48s0zr8xi610k7h072lgkkpp4z6jlxr19bkly4i"))))
"0sraxk26swlgl7rl742rkfp5k251v5z3lqw9k8ikin0cjfhkfdpx"))))
(build-system gnu-build-system)
(outputs '("out"))
(native-inputs

View File

@ -26,6 +26,7 @@
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages python)
#:use-module (guix utils)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
@ -155,14 +156,15 @@ multi-paradigm automated test framework for C++ and Objective-C.")
(define-public cmocka
(package
(name "cmocka")
(version "1.0.1")
(version "1.1.0")
(source (origin
(method url-fetch)
(uri (string-append "https://cmocka.org/files/1.0/cmocka-"
(uri (string-append "https://cmocka.org/files/"
(version-major+minor version) "/cmocka-"
version ".tar.xz"))
(sha256
(base32
"0fvm6rdalqcxckbddch8ycdw6n2ckldblv117n09chi2l7bm0q5k"))))
"0c0k8ax16fgh39nsva09q4jsh83g9nxihkwj9d5666763fzx6q79"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f)) ; No test target
@ -178,13 +180,13 @@ format.")
(define-public cppcheck
(package
(name "cppcheck")
(version "1.72")
(version "1.76")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/danmar/cppcheck/archive/"
version ".tar.gz"))
(sha256
(base32 "0zxaixhqi4vmj7xj56gzadggcbjhbjjm6abyr86qlan23sg98667"))
(base32 "14d0ikcmq1xcqy9f1vq1jbn5ifl0jiy3rycqdcg7v8hil48m59z8"))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system cmake-build-system)
(home-page "http://cppcheck.sourceforge.net")

View File

@ -12,6 +12,7 @@
;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
;;;
;;; This file is part of GNU Guix.
;;;
@ -34,11 +35,13 @@
#:use-module (gnu packages avahi)
#:use-module (gnu packages bash)
#:use-module (gnu packages boost)
#:use-module (gnu packages crypto)
#:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
#:use-module (gnu packages perl)
#:use-module (gnu packages language)
#:use-module (gnu packages linux)
#:use-module (gnu packages tcl)
#:use-module (gnu packages tls)
#:use-module (gnu packages compression)
#:use-module (gnu packages ncurses)
@ -541,32 +544,32 @@ is in the public domain.")
(define-public tdb
(package
(name "tdb")
(version "1.3.9")
(version "1.3.11")
(source (origin
(method url-fetch)
(uri (string-append "https://www.samba.org/ftp/tdb/tdb-"
version ".tar.gz"))
(sha256
(base32
"1ll4q17scax1arg12faj8p25jq1f7q9irc3pwla0ziymwqkgf0bi"))))
"0i1l38h0vyck6zkcj4fn2l03spadlmyr1qa1xpdp9dy2ccbm3s1r"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-replace
'configure
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
;; The 'configure' script is a wrapper for Waf and
;; doesn't recognize things like '--enable-fast-install'.
(zero? (system* "./configure"
(string-append "--prefix=" out)))))
%standard-phases)))
'(#:phases
(modify-phases %standard-phases
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
;; The 'configure' script is a wrapper for Waf and
;; doesn't recognize things like '--enable-fast-install'.
(zero? (system* "./configure"
(string-append "--prefix=" out)))))))))
(native-inputs
`(;; TODO: Build the documentation.
;; ("docbook-xsl" ,docbook-xsl)
;; ("libxml2" ,libxml2)
;; ("libxslt" ,libxslt)
("python" ,python-2))) ;for the Waf build system
(home-page "http://tdb.samba.org/")
(home-page "https://tdb.samba.org/")
(synopsis "Trivial database")
(description
"TDB is a Trivial Database. In concept, it is very much like GDBM,
@ -951,14 +954,14 @@ similar to BerkeleyDB, LevelDB, etc.")
(define-public redis
(package
(name "redis")
(version "3.2.3")
(version "3.2.4")
(source (origin
(method url-fetch)
(uri (string-append "http://download.redis.io/releases/redis-"
version".tar.gz"))
(sha256
(base32
"05az2g3gna5lkhh6x1a5m6yardbiig1l4ysggldlk5if8ww9qkk7"))))
"1wb9jd692a0y52bkkxr6815kk4g039mirjdrvqx24265lv2l5l1a"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; tests related to master/slave and replication fail
@ -966,6 +969,7 @@ similar to BerkeleyDB, LevelDB, etc.")
(delete 'configure))
#:make-flags `("CC=gcc"
"MALLOC=libc"
"LDFLAGS=-ldl"
,(string-append "PREFIX="
(assoc-ref %outputs "out")))))
(synopsis "Key-value cache and store")
@ -1154,3 +1158,53 @@ can autogenerate peewee models using @code{pwiz}, a model generator.")
(define-public python2-peewee
(package-with-python2 python-peewee))
(define-public sqlcipher
(package
(name "sqlcipher")
(version "3.3.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/sqlcipher/" name
"/archive/v" version ".tar.gz"))
(sha256
(base32 "1gv58dlbpzrmznly52yqbxgvii0ib88zr3aszla1bsypwjr6flff"))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system gnu-build-system)
(inputs
`(("libcrypto" ,openssl)
("libtcl8.6" ,tcl))) ; required for running the tests
(native-inputs
`(("tcl" ,tcl)))
(arguments
'(#:configure-flags
'("--enable-tempstore=yes"
"CFLAGS=-DSQLITE_HAS_CODEC -DSQLITE_ENABLE_FTS3"
"LDFLAGS=-lcrypto -ltcl8.6"
"--disable-tcl")
;; tests cannot be run from the Makefile
;; see: <https://github.com/sqlcipher/sqlcipher/issues/172>
#:test-target "testfixture"
#:phases
(modify-phases %standard-phases
(add-before 'check 'build-test-runner
(assoc-ref %standard-phases 'check))
(replace 'check
(lambda _
(zero?
(system* "./testfixture" "test/crypto.test")))))))
(home-page "https://www.zetetic.net/sqlcipher/")
(synopsis
"Library providing transparent encryption of SQLite database files")
(description "SQLCipher is an implementation of SQLite, extended to
provide transparent 256-bit AES encryption of database files. Pages are
encrypted before being written to disk and are decrypted when read back. Its
well suited for protecting embedded application databases and for mobile
development.")
;; The source files
;; src/{crypto.c,crypto_impl.c,crypto.h,crypto_cc.c,crypto_libtomcrypt.c},
;; src/{crypto_openssl.c,sqlcipher.h}, tool/crypto-speedtest.tcl,
;; test/crypto.test are licensed under a 3-clause BSD license. All other
;; source files are in the public domain.
(license (list license:public-domain license:bsd-3))))

View File

@ -52,13 +52,13 @@ clients.")
(define-public vdirsyncer
(package
(name "vdirsyncer")
(version "0.12.1")
(version "0.13.1")
(source (origin
(method url-fetch)
(uri (pypi-uri name version))
(sha256
(base32
"1y3xpl83p4y1m5ks44drhwpygzwbjwhraycrhxlkhwk8bhnsifrz"))))
"1c4kipcc7dx1rn5j1a1x7wckz09mm9ihwakf3ramwn1y78q5zanb"))))
(build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Efraim Flashner <efraim@flasher.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@ -26,7 +27,7 @@
(define-public dejagnu
(package
(name "dejagnu")
(version "1.5.3")
(version "1.6")
(source
(origin
(method url-fetch)
@ -34,50 +35,48 @@
version ".tar.gz"))
(sha256
(base32
"069z3qrdv35cm2sbnfr5yjzplrqj9f61cchxis7j9mm19hv8x6q9"))))
"0qypaakd2065jgpcv84zcsibl8gph3p334gb2qdmhsrbirhlmdh0"))))
(build-system gnu-build-system)
(inputs `(("expect" ,expect)))
(arguments
'(#:phases (alist-replace
'check
(lambda _
;; Note: The test-suite *requires* /dev/pts among the
;; `build-chroot-dirs' of the build daemon when
;; building in a chroot. See
;; <http://thread.gmane.org/gmane.linux.distributions.nixos/1036>
;; for details.
(if (and (directory-exists? "/dev/pts")
(directory-exists? "/proc"))
(begin
;; Provide `runtest' with a log name, otherwise
;; it tries to run `whoami', which fails when in
;; a chroot.
(setenv "LOGNAME" "guix-builder")
'(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda _
;; Note: The test-suite *requires* /dev/pts among the
;; `build-chroot-dirs' of the build daemon when
;; building in a chroot. See
;; <http://thread.gmane.org/gmane.linux.distributions.nixos/1036>
;; for details.
(if (and (directory-exists? "/dev/pts")
(directory-exists? "/proc"))
(begin
;; Provide `runtest' with a log name, otherwise it
;; tries to run `whoami', which fails when in a chroot.
(setenv "LOGNAME" "guix-builder")
;; The test-suite needs to have a non-empty stdin:
;; <http://lists.gnu.org/archive/html/bug-dejagnu/2003-06/msg00002.html>.
(zero?
(system "make check < /dev/zero")))
(begin
(display "test suite cannot be run, skipping\n")
#t)))
(alist-cons-after
'install 'post-install
(lambda* (#:key inputs outputs #:allow-other-keys)
;; Use the right `expect' binary.
(let ((out (assoc-ref outputs "out"))
(expect (assoc-ref inputs "expect")))
(substitute* (string-append out "/bin/runtest")
(("^mypath.*$" all)
(string-append all
"export PATH="
expect "/bin:$PATH\n")))))
%standard-phases))))
;; The test-suite needs to have a non-empty stdin:
;; <http://lists.gnu.org/archive/html/bug-dejagnu/2003-06/msg00002.html>.
(zero?
(system "make check < /dev/zero")))
(begin
(display "test suite cannot be run, skipping\n")
#t))))
(add-after 'install 'post-install
(lambda* (#:key inputs outputs #:allow-other-keys)
;; Use the right `expect' binary.
(let ((out (assoc-ref outputs "out"))
(expect (assoc-ref inputs "expect")))
(substitute* (string-append out "/bin/runtest")
(("^mypath.*$" all)
(string-append all
"export PATH="
expect "/bin:$PATH\n")))))))))
(home-page
"http://www.gnu.org/software/dejagnu/")
"https://www.gnu.org/software/dejagnu/")
(synopsis "GNU software testing framework")
(description
"DejaGnu is a framework for testing software. In effect, it serves as
a front-end for all tests written for a program. Thus, each program can have
multiple test suites, which are then all managed by a single harness.")
(license gpl2+)))
(license gpl3+)))

View File

@ -266,14 +266,14 @@ editor (without an X toolkit)" )
(define-public geiser
(package
(name "geiser")
(version "0.8.1")
(version "0.9")
(source (origin
(method url-fetch)
(uri (string-append "mirror://savannah/geiser/" version
"/geiser-" version ".tar.gz"))
(sha256
(base32
"163zh8qf1q8l485d94a51a9xixirj8r2xvrbgxyw06vkaqrz5qvc"))))
"1n772ysl1dmn0vy3gk230ymyjm14h93zw99y6h2rqp1ixy7v43dm"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-cons-after
@ -298,34 +298,8 @@ metadata.")
(license license:bsd-3)))
(define-public geiser-next
;; Geiser's upcoming version supports guile-next, and 0.8.1 does not.
;; When the next Geiser release comes out, we can remove this.
(let ((commit "2e335695fc1a4a0b520b50deb761b958194cbec4"))
(package
(inherit geiser)
(name "geiser-next")
(version (string-append "0.8.1-1"
(string-take commit 7)))
(source (origin
(method git-fetch)
(uri (git-reference
(url "git://git.sv.gnu.org/geiser.git")
(commit commit)))
(sha256
(base32
"00rmpn8zncq1fiah5m12l26z0s28bh7ql63kxdvksqdgfrisnmgf"))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("texinfo" ,texinfo)
,@(package-native-inputs geiser)))
(arguments
(substitute-keyword-arguments (package-arguments geiser)
((#:phases phases)
`(modify-phases ,phases
(add-after 'unpack 'autogen
(lambda _
(zero? (system* "sh" "autogen.sh")))))))))))
;; This has become "geiser".
(deprecated-package "geiser-next" geiser))
(define-public paredit
(package
@ -424,7 +398,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
(define-public emacs-with-editor
(package
(name "emacs-with-editor")
(version "2.5.2")
(version "2.5.6")
(source (origin
(method url-fetch)
(uri (string-append
@ -433,7 +407,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0k57f2wqng7510nzyzgjgbapplia23l3zrphl816nfm4s58sy1ka"))))
"14vypqj3wqym5yd0nggfm1xdgq5hv1kwxkg6i8ymlpxcdfxj45w7"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-dash" ,emacs-dash)))
@ -2156,7 +2130,7 @@ dark background.")
(define-public emacs-smartparens
(package
(name "emacs-smartparens")
(version "1.7.1")
(version "1.8.0")
(source (origin
(method url-fetch)
(uri (string-append
@ -2165,7 +2139,7 @@ dark background.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1b47ppkzsj8j8a2p0bmvq05rhm2d2lsm3wlc0sg542r4zr6nji8s"))))
"0xsqiklg0q4w6gj0js1hvsz4lkypvcx6c9kzb1mz232gwlqx1azw"))))
(build-system emacs-build-system)
(propagated-inputs `(("emacs-dash" ,emacs-dash)))
(home-page "https://github.com/Fuco1/smartparens")
@ -2185,15 +2159,16 @@ well as completely new features.")
(define-public emacs-hl-todo
(package
(name "emacs-hl-todo")
(version "1.7.0")
(version "1.7.1")
(source (origin
(method url-fetch)
(uri (string-append
"https://raw.githubusercontent.com/tarsius/hl-todo/"
version "/hl-todo.el"))
(file-name (string-append "hl-todo-" version ".el"))
(sha256
(base32
"18zydm43zajlglhgr0bhdkd4pln27amd063k2ql6p1mvyam3j8ia"))))
"0flhz9vy8w1vvwwji92pi5k4659hl368bakj2qf2zfd26z8x583h"))))
(build-system emacs-build-system)
(home-page "https://github.com/tarsius/hl-todo")
(synopsis "Emacs mode to highlight TODO and similar keywords")
@ -2258,7 +2233,7 @@ fully-functional one.")
(define-public emacs-hydra
(package
(name "emacs-hydra")
(version "0.13.0")
(version "0.13.6")
(source
(origin
(method url-fetch)
@ -2267,7 +2242,7 @@ fully-functional one.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"19ynkjlg3jj7x90xxbz885324h6nkxmzlb2c2c95xkr20zckn0lk"))))
"0575vh858gm35p57s49dy6pc2ij46dmj9zaa4z0cp98sqra3j3l0"))))
(build-system emacs-build-system)
(home-page "https://github.com/abo-abo/hydra")
(synopsis "Make Emacs bindings that stick around")

165
gnu/packages/embedded.scm Normal file
View File

@ -0,0 +1,165 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages embedded)
#:use-module (guix utils)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix svn-download)
#:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages cross-base)
#:use-module (gnu packages flex)
#:use-module (gnu packages perl)
#:use-module (gnu packages texinfo))
;; We must not use the released GCC sources here, because the cross-compiler
;; does not produce working binaries. Instead we take the very same SVN
;; revision from the branch that is used for a release of the "GCC ARM
;; embedded" project on launchpad.
;; See https://launchpadlibrarian.net/218827644/release.txt
(define-public gcc-arm-none-eabi-4.9
(let ((xgcc (cross-gcc "arm-none-eabi"
(cross-binutils "arm-none-eabi")))
(revision "1")
(svn-revision 227977))
(package (inherit xgcc)
(version (string-append (package-version xgcc) "-"
revision "." (number->string svn-revision)))
(source
(origin
(method svn-fetch)
(uri (svn-reference
(url "svn://gcc.gnu.org/svn/gcc/branches/ARM/embedded-4_9-branch/")
(revision svn-revision)))
(file-name (string-append "gcc-arm-embedded-" version "-checkout"))
(sha256
(base32
"113r98kygy8rrjfv2pd3z6zlfzbj543pq7xyq8bgh72c608mmsbr"))
(patches (origin-patches (package-source xgcc)))))
(native-inputs
`(("flex" ,flex)
,@(package-native-inputs xgcc)))
(arguments
(substitute-keyword-arguments (package-arguments xgcc)
((#:phases phases)
`(modify-phases ,phases
(add-after 'unpack 'fix-genmultilib
(lambda _
(substitute* "gcc/genmultilib"
(("#!/bin/sh") (string-append "#!" (which "sh"))))
#t))))
((#:configure-flags flags)
;; The configure flags are largely identical to the flags used by the
;; "GCC ARM embedded" project.
`(append (list "--enable-multilib"
"--with-newlib"
"--with-multilib-list=armv6-m,armv7-m,armv7e-m"
"--with-host-libstdcxx=-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm"
"--enable-plugins"
"--disable-decimal-float"
"--disable-libffi"
"--disable-libgomp"
"--disable-libmudflap"
"--disable-libquadmath"
"--disable-libssp"
"--disable-libstdcxx-pch"
"--disable-nls"
"--disable-shared"
"--disable-threads"
"--disable-tls")
(delete "--disable-multilib" ,flags)))))
(native-search-paths
(list (search-path-specification
(variable "CROSS_C_INCLUDE_PATH")
(files '("arm-none-eabi/include")))
(search-path-specification
(variable "CROSS_CPLUS_INCLUDE_PATH")
(files '("arm-none-eabi/include")))
(search-path-specification
(variable "CROSS_LIBRARY_PATH")
(files '("arm-none-eabi/lib"))))))))
(define-public newlib-arm-none-eabi
(package
(name "newlib")
(version "2.4.0")
(source (origin
(method url-fetch)
(uri (string-append "ftp://sourceware.org/pub/newlib/newlib-"
version ".tar.gz"))
(sha256
(base32
"01i7qllwicf05vsvh39qj7qp5fdifpvvky0x95hjq39mbqiksnsl"))))
(build-system gnu-build-system)
(arguments
`(#:out-of-source? #t
;; The configure flags are identical to the flags used by the "GCC ARM
;; embedded" project.
#:configure-flags '("--target=arm-none-eabi"
"--enable-newlib-io-long-long"
"--enable-newlib-register-fini"
"--disable-newlib-supplied-syscalls"
"--disable-nls")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-references-to-/bin/sh
(lambda _
(substitute* '("libgloss/arm/cpu-init/Makefile.in"
"libgloss/arm/Makefile.in"
"libgloss/libnosys/Makefile.in"
"libgloss/Makefile.in")
(("/bin/sh") (which "sh")))
#t)))))
(native-inputs
`(("xbinutils" ,(cross-binutils "arm-none-eabi"))
("xgcc" ,gcc-arm-none-eabi-4.9)
("texinfo" ,texinfo)))
(home-page "http://www.sourceware.org/newlib/")
(synopsis "C library for use on embedded systems")
(description "Newlib is a C library intended for use on embedded
systems. It is a conglomeration of several library parts that are easily
usable on embedded products.")
(license (license:non-copyleft
"https://www.sourceware.org/newlib/COPYING.NEWLIB"))))
(define-public newlib-nano-arm-none-eabi
(package (inherit newlib-arm-none-eabi)
(name "newlib-nano")
(arguments
(substitute-keyword-arguments (package-arguments newlib-arm-none-eabi)
;; The configure flags are identical to the flags used by the "GCC ARM
;; embedded" project. They optimize newlib for use on small embedded
;; systems with limited memory.
((#:configure-flags flags)
''("--target=arm-none-eabi"
"--enable-multilib"
"--disable-newlib-supplied-syscalls"
"--enable-newlib-reent-small"
"--disable-newlib-fvwrite-in-streamio"
"--disable-newlib-fseek-optimization"
"--disable-newlib-wide-orient"
"--enable-newlib-nano-malloc"
"--disable-newlib-unbuf-stream-opt"
"--enable-lite-exit"
"--enable-newlib-global-atexit"
"--enable-newlib-nano-formatted-io"
"--disable-nls"))))
(synopsis "Newlib variant for small systems with limited memory")))

View File

@ -704,18 +704,11 @@ symbols unable to be displayed properly.")
(package
(name "font-un")
(version "1.0.2-080608")
;; The upstream server at kldp.net is serving us broken MIME.
;; See <http://bugs.gnu.org/22908>.
(source (origin
(method url-fetch)
(uri (list
(string-append
"http://krosos.sdf.org/static/unix/"
"un-fonts-core-" version ".tar.gz")
;; XXX: The upstream server at kldp.net
(string-append
"https://kldp.net/projects/unfonts/download/4695?filename="
"un-fonts-core-" version ".tar.gz")))
(uri (string-append
"https://kldp.net/unfonts/release/2607-"
"un-fonts-core-" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
@ -838,22 +831,15 @@ glyph designs, not just an added slant.")
"unzip")
"/bin"))
(font-dir (string-append %output
"/share/fonts/truetype"))
(doc-dir (string-append %output "/share/doc/"
,name "-" ,version)))
"/share/fonts/truetype")))
(setenv "PATH" PATH)
(system* "unzip" (assoc-ref %build-inputs "source"))
(mkdir-p font-dir)
(mkdir-p doc-dir)
(for-each (lambda (ttf)
(copy-file ttf
(string-append font-dir "/" ttf)))
(find-files "." "\\.ttf$"))
(for-each (lambda (doc)
(copy-file doc
(string-append doc-dir "/" doc)))
(find-files "." "\\.txt$"))))))
(find-files "." "\\.ttf$"))))))
(native-inputs
`(("source" ,source)
("unzip" ,unzip)))

View File

@ -465,7 +465,7 @@ smooth contours with constant curvature at the spline joins.")
(define-public libuninameslist
(package
(name "libuninameslist")
(version "0.5.20150701")
(version "20160701")
(source
(origin
(method url-fetch)
@ -474,17 +474,16 @@ smooth contours with constant curvature at the spline joins.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1j6147l100rppw7axlrkdx0p35fax6bz2zh1xgpg7a3b4pmqaj3v"))))
"12xxb301a66dh282pywpy00wxiaq5z8z20qm3pr2vql04r2g8d0x"))))
(build-system gnu-build-system)
(native-inputs `(("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)))
(arguments
`(#:phases (alist-cons-after
'unpack 'bootstrap
(lambda _
(zero? (system* "autoreconf" "-vi")))
%standard-phases)))
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'bootstrap
(lambda _ (zero? (system* "autoreconf" "-vi")))))))
(synopsis "Unicode names and annotation list")
(description
"LibUniNamesList holds www.unicode.org Nameslist.txt data which can be

311
gnu/packages/fpga.scm Normal file
View File

@ -0,0 +1,311 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages fpga)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system cmake)
#:use-module (gnu packages)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages tcl)
#:use-module (gnu packages readline)
#:use-module (gnu packages python)
#:use-module (gnu packages bison)
#:use-module (gnu packages flex)
#:use-module (gnu packages gtk)
#:use-module (gnu packages libffi)
#:use-module (gnu packages zip)
#:use-module (gnu packages perl)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages gperf)
#:use-module (gnu packages gawk)
#:use-module (gnu packages version-control)
#:use-module (gnu packages libftdi))
(define-public abc
(let ((commit "5ae4b975c49c")
(revision "1"))
(package
(name "abc")
(version (string-append "0.0-" revision "-" (string-take commit 9)))
(source (origin
(method url-fetch)
(uri
(string-append "https://bitbucket.org/alanmi/abc/get/" commit ".zip"))
(file-name (string-append name "-" version "-checkout.zip"))
(sha256
(base32
"1syygi1x40rdryih3galr4q8yg1w5bvdzl75hd27v1xq0l5bz3d0"))))
(build-system gnu-build-system)
(native-inputs
`(("unzip" ,unzip)))
(inputs
`(("readline" ,readline)))
(arguments
`(#:tests? #f ; no check target
#:phases
(modify-phases %standard-phases
(delete 'configure)
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(out-bin (string-append out "/bin")))
(install-file "abc" out-bin)))))))
(home-page "http://people.eecs.berkeley.edu/~alanmi/abc/")
(synopsis "Sequential logic synthesis and formal verification")
(description "ABC is a program for sequential logic synthesis and
formal verification.")
(license
(license:non-copyleft "https://fedoraproject.org/wiki/Licensing:MIT#Modern_Variants")))))
(define-public iverilog
(package
(name "iverilog")
(version "10.1.1")
(source (origin
(method url-fetch)
(uri
(string-append "ftp://ftp.icarus.com/pub/eda/verilog/v10/"
"verilog-" version ".tar.gz"))
(sha256
(base32
"1nnassxvq30rnn0r2p85rkb2zwxk97p109y13x3vr365wzgpbapx"))))
(build-system gnu-build-system)
(native-inputs
`(("flex" ,flex)
("bison" ,bison)
("ghostscript" ,ghostscript))) ; ps2pdf
(home-page "http://iverilog.icarus.com/")
(synopsis "FPGA Verilog simulation and synthesis tool")
(description "Icarus Verilog is a Verilog simulation and synthesis tool.
It operates as a compiler, compiling source code written in Verilog
(IEEE-1364) into some target format.
For batch simulation, the compiler can generate an intermediate form
called vvp assembly.
This intermediate form is executed by the ``vvp'' command.
For synthesis, the compiler generates netlists in the desired format.")
;; GPL2 only because of:
;; - ./driver/iverilog.man.in
;; - ./iverilog-vpi.man.in
;; - ./tgt-fpga/iverilog-fpga.man
;; - ./vvp/vvp.man.in
;; Otherwise would be GPL2+.
;; You have to accept both GPL2 and LGPL2.1+.
(license (list license:gpl2 license:lgpl2.1+))))
(define-public yosys
(package
(name "yosys")
(version "0.6")
(source (origin
(method url-fetch)
(uri
(string-append "https://github.com/cliffordwolf/yosys/archive/"
name "-" version ".tar.gz"))
(sha256
(base32
"02j0c0m9dfyjccynalf0aggj6gy20k7iphpkg5cn6sdirlkv8gmx"))
(file-name (string-append name "-" version "-checkout.tar.gz"))
(modules '((guix build utils)))
(snippet
'(substitute* "Makefile"
(("ABCREV = .*") "ABCREV = default\n")))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
#:make-flags (list "CC=gcc"
"CXX=g++"
(string-append "PREFIX=" %output))
#:phases
(modify-phases %standard-phases
(replace 'configure
(lambda* (#:key inputs (make-flags '()) #:allow-other-keys)
(zero? (apply system* "make" "config-gcc" make-flags))))
(add-after 'configure 'prepare-abc
(lambda* (#:key inputs #:allow-other-keys)
(let* ((sourceabc (assoc-ref inputs "abc"))
(sourcebin (string-append sourceabc "/bin"))
(source (string-append sourcebin "/abc")))
(mkdir-p "abc")
(call-with-output-file "abc/Makefile"
(lambda (port)
(format port ".PHONY: all\nall:\n\tcp -f abc abc-default\n")))
(copy-file source "abc/abc")
(zero? (system* "chmod" "+w" "abc/abc")))))
(add-before 'check 'fix-iverilog-references
(lambda* (#:key inputs native-inputs #:allow-other-keys)
(let* ((xinputs (or native-inputs inputs))
(xdirname (assoc-ref xinputs "iverilog"))
(iverilog (string-append xdirname "/bin/iverilog")))
(substitute* '("./manual/CHAPTER_StateOfTheArt/synth.sh"
"./manual/CHAPTER_StateOfTheArt/validate_tb.sh"
"./techlibs/ice40/tests/test_bram.sh"
"./techlibs/ice40/tests/test_ffs.sh"
"./techlibs/xilinx/tests/bram1.sh"
"./techlibs/xilinx/tests/bram2.sh"
"./tests/bram/run-single.sh"
"./tests/realmath/run-test.sh"
"./tests/simple/run-test.sh"
"./tests/techmap/mem_simple_4x1_runtest.sh"
"./tests/tools/autotest.sh"
"./tests/vloghtb/common.sh")
(("if ! which iverilog") "if ! true")
(("iverilog ") (string-append iverilog " "))
(("iverilog_bin=\".*\"") (string-append "iverilog_bin=\""
iverilog "\"")))
#t))))))
;; TODO add xdot [patch the path to it here] as soon as I find out where it is.
(native-inputs
`(("pkg-config" ,pkg-config)
("python" ,python)
("bison" ,bison)
("flex" ,flex)
("gawk" , gawk) ; for the tests and "make" progress pretty-printing
("tcl" ,tcl) ; tclsh for the tests
("iverilog" ,iverilog))) ; for the tests
(inputs
`(("tcl" ,tcl)
("readline" ,readline)
("libffi" ,libffi)
("abc" ,abc)))
(home-page "http://www.clifford.at/yosys/")
(synopsis "FPGA Verilog RTL synthesizer")
(description "Yosys synthesizes Verilog-2005.")
(license license:isc)))
(define-public icestorm
(let ((commit "12b2295c9087d94b75e374bb205ae4d76cf17e2f")
(revision "1"))
(package
(name "icestorm")
(version (string-append "0.0-" revision "-" (string-take commit 9)))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/cliffordwolf/icestorm.git")
(commit commit)))
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"1mmzlqvap6w8n4qzv3idvy51arkgn03692ssplwncy3akjrbsd2b"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no unit tests that don't need an FPGA exist.
#:make-flags (list "CC=gcc" "CXX=g++"
(string-append "PREFIX=" (assoc-ref %outputs "out")))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'remove-usr-local
(lambda _
(substitute* "iceprog/Makefile"
(("-I/usr/local/include") "")
(("-L/usr/local/lib") ""))
#t))
(delete 'configure))))
(inputs
`(("libftdi" ,libftdi)))
(native-inputs
`(("python-3" ,python)
("pkg-config" ,pkg-config)))
(home-page "http://www.clifford.at/icestorm/")
(synopsis "Project IceStorm - Lattice iCE40 FPGAs bitstream tools")
(description "Project IceStorm - Lattice iCE40 FPGAs Bitstream Tools.
Includes the actual FTDI connector.")
(license license:isc))))
(define-public arachne-pnr
(let ((commit "52e69ed207342710080d85c7c639480e74a021d7")
(revision "1"))
(package
(name "arachne-pnr")
(version (string-append "0.0-" revision "-" (string-take commit 9)))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/cseed/arachne-pnr.git")
(commit commit)))
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"15bdw5yxj76lxrwksp6liwmr6l1x77isf4bs50ys9rsnmiwh8c3w"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
#:phases (modify-phases %standard-phases
(replace 'configure
(lambda* (#:key outputs inputs #:allow-other-keys)
(substitute* '("Makefile")
(("DESTDIR = .*") (string-append "DESTDIR = "
(assoc-ref outputs "out")
"\n"))
(("ICEBOX = .*") (string-append "ICEBOX = "
(assoc-ref inputs "icestorm")
"/share/icebox\n")))
(substitute* '("./tests/fsm/generate.py"
"./tests/combinatorial/generate.py")
(("#!/usr/bin/python") "#!/usr/bin/python2"))
#t)))))
(inputs
`(("icestorm" ,icestorm)))
(native-inputs
`(("git" ,git) ; for determining its own version string
("yosys" ,yosys) ; for tests
("perl" ,perl) ; for shasum
("python-2" ,python-2))) ; for tests
(home-page "https://github.com/cseed/arachne-pnr")
(synopsis "Place-and-Route tool for FPGAs")
(description "Arachne-PNR is a Place-and-Route Tool For FPGAs.")
(license license:gpl2))))
(define-public gtkwave
(package
(name "gtkwave")
(version "3.3.76")
(source (origin
(method url-fetch)
(uri (string-append "http://gtkwave.sourceforge.net/"
name "-" version ".tar.gz"))
(sha256
(base32
"1vlvavszb1jwwiixiagld88agjrjg0ix8qa4xnxj4ziw0q87jbmn"))))
(build-system gnu-build-system)
(native-inputs
`(("gperf" ,gperf)
("pkg-config" ,pkg-config)))
(inputs
`(("tcl" ,tcl)
("tk" ,tk)
("gtk+-2" ,gtk+-2)))
(arguments
`(#:configure-flags
(list (string-append "--with-tcl="
(assoc-ref %build-inputs "tcl")
"/lib")
(string-append "--with-tk="
(assoc-ref %build-inputs "tk")
"/lib"))))
(synopsis "Waveform viewer for FPGA simulator trace files")
(description "This package is a waveform viewer for FPGA
simulator trace files (FST).")
(home-page "http://gtkwave.sourceforge.net/")
;; Exception against free government use in tcl_np.c and tcl_np.h
(license (list license:gpl2+ license:expat license:tcl/tk))))

View File

@ -28,19 +28,19 @@
(define-public freeipmi
(package
(name "freeipmi")
(version "1.5.3")
(version "1.5.4")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/freeipmi/freeipmi-"
version ".tar.gz"))
(sha256
(base32
"0s4q7imc4r3g9lkd92bnvw70679q83b0irrlw895i5nc05dj4djx"))))
"1m8zvnyjyjap07vvc5z90nyghabbb6bjcyyc7qswj66qsmssf135"))))
(build-system gnu-build-system)
(inputs
`(("readline" ,readline)
("libgcrypt" ,libgcrypt)))
(home-page "http://www.gnu.org/software/freeipmi/")
(home-page "https://www.gnu.org/software/freeipmi/")
(synopsis "Platform management, including sensor and power monitoring")
(description
"GNU FreeIPMI is a collection of in-band and out-of-band IPMI software

View File

@ -179,8 +179,10 @@ scriptable with Guile.")
(source
(origin
(method url-fetch)
(uri (string-append "http://abbaye-for-linux.googlecode.com/files/"
"abbaye-for-linux-src-" version ".tar.gz"))
(uri (string-append "https://storage.googleapis.com/"
"google-code-archive-downloads/v2/code.google.com/"
"abbaye-for-linux/abbaye-for-linux-src-"
version ".tar.gz"))
(sha256
(base32
"1wgvckgqa2084rbskxif58wbb83xbas8s1i8s7d57xbj08ryq8rk"))))
@ -427,7 +429,7 @@ exec ~a/bin/freedink -refdir ~a/share/dink\n"
(define-public xboard
(package
(name "xboard")
(version "4.9.0")
(version "4.9.1")
(source
(origin
(method url-fetch)
@ -435,14 +437,15 @@ exec ~a/bin/freedink -refdir ~a/share/dink\n"
".tar.gz"))
(sha256
(base32
"1av6r3s5vyclwf3c9i1pkr2442ryrf4ixhhf2i44a4j1xyhlp5jb"))))
"1mkh36xnnacnz9r00b5f9ld9309k32jv6mcavklbdnca8bl56bib"))))
(build-system gnu-build-system)
(inputs
`(("gtk+" ,gtk+-2)
("librsvg" ,librsvg)))
(native-inputs `(("texinfo" ,texinfo)
("pkg-config" ,pkg-config)))
(home-page "http://www.gnu.org/software/xboard")
(native-inputs
`(("texinfo" ,texinfo)
("pkg-config" ,pkg-config)))
(home-page "https://www.gnu.org/software/xboard")
(synopsis "Graphical user interface for chess programs")
(description "GNU XBoard is a graphical board for all varieties of chess,
including international chess, xiangqi (Chinese chess), shogi (Japanese chess)
@ -2784,12 +2787,11 @@ auto mapper with a VT100 map display.")
(source
(origin (method url-fetch)
(uri (string-append
"https://github.com/sgimenez/laby/tarball/"
name "-" version))
(file-name (string-append name "-" version ".tar.gz"))
"https://github.com/sgimenez/laby/archive/"
name "-" version ".tar.gz"))
(sha256
(base32
"113ip48308ps3lsw427xswgx3wdanils43nyal9n4jr6bcx1bj2j"))
"0gyrfa95l1qka7gbjf7l6mk7mbfvph00l0c995ia272qdw7rjhyf"))
(patches (search-patches "laby-make-install.patch"))))
(build-system gnu-build-system)
(inputs

View File

@ -565,6 +565,13 @@ as the 'native-search-paths' field."
(string-append line " -Wl,-rpath=$(libdir)"))
(("libgcj(_bc)?_la_LDFLAGS =" ldflags _)
(string-append ldflags " -Wl,-rpath=$(libdir)")))))
(add-after
'unpack 'patch-testsuite
;; dejagnu-1.6 removes the 'absolute' command
(lambda _
(substitute* "libjava/testsuite/lib/libjava.exp"
(("absolute") "file normalize"))
#t))
(add-after
'install 'install-javac-and-javap-wrappers
(lambda _

View File

@ -37,14 +37,14 @@
(define-public gdb
(package
(name "gdb")
(version "7.11.1")
(version "7.12")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gdb/gdb-"
version ".tar.xz"))
(sha256
(base32
"0w7wi1llznlqdqk2lmzygz2xylb2c9mh580s9i0rypkmwfj6s8g9"))))
"152g2qa8337cxif3lkvabjcxfd9jphfb2mza8f1p2c4bjk2z6kw3"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; FIXME "make check" fails on single-processor systems.
@ -95,7 +95,7 @@
(native-inputs
`(("texinfo" ,texinfo)
("pkg-config" ,pkg-config)))
(home-page "http://www.gnu.org/software/gdb/")
(home-page "https://www.gnu.org/software/gdb/")
(synopsis "The GNU debugger")
(description
"GDB is the GNU debugger. With it, you can monitor what a program is

View File

@ -5094,6 +5094,7 @@ software that do not provide their own configuration interface.")
("gvfs" ,gvfs)
("hicolor-icon-theme" ,hicolor-icon-theme)
("nautilus" ,nautilus)
("pinentry-gnome3" ,pinentry-gnome3)
("pulseaudio" ,pulseaudio)
("shared-mime-info" ,shared-mime-info)
("totem" ,totem)

View File

@ -7,7 +7,8 @@
;;; Copyright © 2015, 2016 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 Nils Gillmann <ng0@libertad.pw>
;;; Copyright © 2016 Christopher Baines <mail@cbaines.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -606,7 +607,7 @@ including tools for signing keys, keyring analysis, and party preparation.
(synopsis "GnuPG's interface to passphrase input")
(description
"Pinentry provides a console that allows users to enter a passphrase when
@code{gpg} or @code{gpg2} is run and needs it.")
@code{gpg} is run and needs it.")
(license license:gpl2+)))
(define-public pinentry-gtk2
@ -619,7 +620,23 @@ including tools for signing keys, keyring analysis, and party preparation.
,@(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.")))
passphrase when @code{gpg} is run and needs it.")))
(define-public pinentry-gnome3
(package
(inherit pinentry-tty)
(name "pinentry-gnome3")
(inputs
`(("gtk+" ,gtk+-2)
("gcr" ,gcr)
("glib" ,glib)
,@(package-inputs pinentry-tty)))
(arguments
`(#:configure-flags '("--enable-pinentry-gnome3")))
(description
"Pinentry provides a console and a GUI designed for use with GNOME@tie{}3
that allows users to enter a passphrase when required by @code{gpg} or other
software.")))
(define-public pinentry-qt
(package
@ -632,7 +649,7 @@ passphrase when @code{gpg} or @code{gpg2} is run and needs it.")))
`(#:configure-flags '("CXXFLAGS=-std=gnu++11")))
(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.")))
passphrase when @code{gpg} is run and needs it.")))
(define-public pinentry
(package (inherit pinentry-gtk2)

View File

@ -28,6 +28,7 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages base)
#:use-module (gnu packages databases)
#:use-module (gnu packages glib)
#:use-module (gnu packages gstreamer)
@ -185,7 +186,7 @@ in the Mozilla clients.")
(define-public nss
(package
(name "nss")
(version "3.26")
(version "3.27.1")
(source (origin
(method url-fetch)
(uri (let ((version-with-underscores
@ -196,7 +197,7 @@ in the Mozilla clients.")
"nss-" version ".tar.gz")))
(sha256
(base32
"0r65s5q8kk0vr48s0zr8xi610k7h072lgkkpp4z6jlxr19bkly4i"))
"0sraxk26swlgl7rl742rkfp5k251v5z3lqw9k8ikin0cjfhkfdpx"))
;; Create nss.pc and nss-config.
(patches (search-patches "nss-pkgconfig.patch"))))
(build-system gnu-build-system)
@ -290,38 +291,71 @@ PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other security
standards.")
(license license:mpl2.0)))
(define (mozilla-patch file-name changeset hash)
"Return an origin for CHANGESET from the mozilla-esr45 repository."
(origin
(method url-fetch)
(uri (string-append "https://hg.mozilla.org/releases/mozilla-esr45/raw-rev/"
changeset))
(sha256 (base32 hash))
(file-name file-name)))
(define-public icecat
(package
(name "icecat")
(version "38.8.0-gnu2")
(version "45.3.0-gnu1-beta")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/gnuzilla/"
version "/"
name "-" version ".tar.bz2"))
(uri (list (string-append "mirror://gnu/gnuzilla/" version "/"
name "-" version ".tar.bz2")
;; XXX Temporary URI for 45.3 beta release.
;; Remove when no longer needed.
(string-append "http://jenkins.trisquel.info/icecat/binaries/"
"icecat-45.3.0-gnu1.tar.bz2")))
(sha256
(base32
"1yb7a1zsqpra9cgq8hrzrbm5v31drb9367cwvwiksz0ngqy342hb"))
(patches (search-patches
"icecat-avoid-bundled-includes.patch"
"icecat-CVE-2016-2818-pt1.patch"
"icecat-CVE-2016-2818-pt2.patch"
"icecat-CVE-2016-2818-pt3.patch"
"icecat-CVE-2016-2818-pt4.patch"
"icecat-CVE-2016-2818-pt5.patch"
"icecat-CVE-2016-2818-pt6.patch"
"icecat-CVE-2016-2818-pt7.patch"
"icecat-CVE-2016-2818-pt8.patch"
"icecat-CVE-2016-2818-pt9.patch"
"icecat-CVE-2016-2819.patch"
"icecat-CVE-2016-2821.patch"
"icecat-CVE-2016-2824.patch"
"icecat-CVE-2016-2828.patch"
"icecat-CVE-2016-2831.patch"))
"1hk5lwaqm8nkfm43sq521mzyrx0x3iiwvlcy62m7cq7grz9wixp6"))
(patches
`(,(search-patch "icecat-avoid-bundled-libraries.patch")
,(mozilla-patch "icecat-CVE-2016-5250.patch" "6711ccb0184e" "1p0s91rw1j7ib6hy9gh5p0l33rja32rfgygh29jw4wq1hxfql8rk")
,(mozilla-patch "icecat-CVE-2016-5257-pt1.patch" "b08f28db372e" "0fmifimavawbff700rzjibsnr16am6902gp965scvi1iy78754ia")
,(mozilla-patch "icecat-CVE-2016-5257-pt2.patch" "a49fd7eb57ba" "1dyh0pjdmf64sjbj1x0mdjwfispacx9yny1kx9nzpf85myryr640")
,(mozilla-patch "icecat-CVE-2016-5257-pt3.patch" "9707c3423a1e" "12nn8av0akza4ml1is9mfy8f7368mrkxsl32ly97r4irzh0iryh1")
,(mozilla-patch "icecat-CVE-2016-5257-pt4.patch" "9d632865560a" "1msp1wqv0c317wqkm82hd9ajbg4a5mcr8pld5j8cx37ccv7f21g3")
,(mozilla-patch "icecat-CVE-2016-5257-pt5.patch" "90697781ec9f" "1h6gcrw5ykf7r59phxqkhpfs7jsgzqn509qm43sj7mbpcvqvk5mg")
,(mozilla-patch "icecat-CVE-2016-5257-pt6.patch" "dd9eb81853b9" "1lyqnn40sayziych8gqd5aj7il3zajf318y8ddj8dzz3c8id5dzc")
,(mozilla-patch "icecat-CVE-2016-5257-pt7.patch" "d91fc76079e0" "022lhixa8dxa6ny9a4bh2di282i0lhyq0glqr9n4q3r8msfmf0ba")
,(mozilla-patch "icecat-CVE-2016-5257-pt8.patch" "3e37ba5e0867" "1w8lncxaayq4xndhyp1hwlv00zggbayljq6rlypb8kdwgzfpi77w")
,(mozilla-patch "icecat-CVE-2016-5257-pt9.patch" "3c4958a98908" "16bc6ai5qddnpm3yw24lry5s7i05xs0ycixzxiir4wmcgwcaayiy")
,(mozilla-patch "icecat-CVE-2016-5261.patch" "bc2f5467b33d" "0i4b8ydmqg4blx541f56g9qrlm7gp6ih4cs7ixbds724cwk83b9f")
,(mozilla-patch "icecat-CVE-2016-5270.patch" "7cd50d56bb61" "15nbp5axr59mczxgf37nli37jbw0jdknmxz7z71772pzjd2z07r9")
,(mozilla-patch "icecat-CVE-2016-5272.patch" "6e43a01fee3c" "025xp1wdnz1gc5l2rsgbrwsh1pbysjiyfgz0g6rvr390r7ag1n74")
,(mozilla-patch "icecat-CVE-2016-5274.patch" "10c9453407de" "1wqh6hj0dpa7r3hhlyrflcv3r3cg0xq4rb0zvhysi6l7lwb8q51r")
,(mozilla-patch "icecat-CVE-2016-5276.patch" "fc818ab03f15" "1q64ipl172dcmyy9p8p3l3ljpdh1q1jg48lai0qn2xgknl7sdpks")
,(mozilla-patch "icecat-CVE-2016-5277.patch" "7b668c5cec92" "1qmchn6qifgjakzac6i4hgnivy062pzgz9p1l11c1m3an1rh0isg")
,(mozilla-patch "icecat-CVE-2016-5278.patch" "fd5052e343df" "1nzmzlnsz61w9aw4mjvgmlkz88aqv1w858rr0mbv07hwyrljfi84")
,(mozilla-patch "icecat-CVE-2016-5280.patch" "30673bc9730b" "1qz1684v1rp86ngadcaqd68iqf472flnrnk971ryg4fbsyy8g1za")
,(mozilla-patch "icecat-CVE-2016-5281-pt1.patch" "61405f1fd1df" "1fgmq67arwsl1nrl133fcb5cz6jbbcfjvbv8cd8cadhapin971a7")
,(mozilla-patch "icecat-CVE-2016-5281-pt2.patch" "7776b6ec7b92" "1f7k8f4lk7nyghwajsxf6nb7yvzsaw3jwpa3316znsva12m548mn")
,(mozilla-patch "icecat-CVE-2016-5284-pt1.patch" "55e768767416" "1gg7m12njbkn1jqf2gp2y7zd9ik3xhqkjb7znczna4l438h7ki83")
,(mozilla-patch "icecat-CVE-2016-5284-pt2.patch" "3c42249975a5" "0gnanndkmhsp49rldv4kh0smkdcs7616v46hn567kfw8yfwqvnli")
,(mozilla-patch "icecat-CVE-2016-5284-pt3.patch" "126e5d574811" "13gr08bzqy23adz0ciihb7cy9wdnkcn71i77a3y5b5apm6k54mwi")
,(mozilla-patch "icecat-CVE-2016-5284-pt4.patch" "7b8bd7aae1a8" "0mq5gpq6ni8czfcs1rif4is0igh0054aw41ga0jqkq58g7lavkrf")
,(mozilla-patch "icecat-CVE-2016-5284-pt5.patch" "0799490f4e6f" "1ypv6i48nabbhcqbach8fbgz9bmnhm7q5z9dnfid44z8g54l3f33")
,(mozilla-patch "icecat-CVE-2016-5284-pt6.patch" "fc990e4ae8bc" "1s2cj505ajwwiy4xvn5zlmyzqpgahxmqqvis0a6xm6mjbjh02gm4")
,(mozilla-patch "icecat-bug-1251088.patch" "5ffa912ed83e" "0v5lpv3c89c2d4y5acn0kyijv096axdnrvaj5ya5yypzfcaqxv24")
,(mozilla-patch "icecat-bug-1292590.patch" "d4b5b8f3e373" "0w8cxn6ryhgxryy8k8i06yw4mknv509ns9ff1avd0hmgxa83mcdp")
,(mozilla-patch "icecat-bug-1298169.patch" "adce603ae36d" "0mgs85cwx61bk17r7npl311l4m8yn4667wyhgjmm2ajiys6nn0yl")
,(mozilla-patch "icecat-bug-1301496.patch" "97268426bb6f" "1z7hg796cgag025gm9pp2szz7w870s7naagdri1dlsilj797v8hr")
,(mozilla-patch "icecat-bug-1299519.patch" "fc055950b6b8" "05iml5k3rzc653jk4imd111sh18625jxfxkcj12kjdihl0gdr4x4")
,(mozilla-patch "icecat-bug-1303710.patch" "6f845c23565b" "01dlbnmpsnwr448fajs276y62gl03r74k1hxnwsg6ihwhnfdvn5a")
,(mozilla-patch "icecat-bug-1301343.patch" "e5d51ca7a3c0" "0hshcz24hc6pkz5pcqxhajm17ibwrlfn1s00frfnpjjy56vacfz0")
,(mozilla-patch "icecat-bug-1299686.patch" "576f1725a57e" "1lic9d3r8r1vcniw1g3ca71390lw3dmwjsw55dp6z96hyjbcq3fd")))
(modules '((guix build utils)))
(snippet
'(begin
(use-modules (ice-9 ftw))
;; Remove bundled libraries that we don't use, since they may
;; contain unpatched security flaws, they waste disk space and
;; network bandwidth, and may cause confusion.
@ -358,6 +392,12 @@ standards.")
"gfx/cairo"
"js/src/ctypes/libffi"
"db/sqlite3"))
;; Delete .pyc files, typically present in icecat source tarballs
(for-each delete-file (find-files "." "\\.pyc$"))
;; Delete obj-* directories, found in icecat-45.3.0-gnu1-beta
(for-each delete-file-recursively
(scandir "." (lambda (name)
(string-prefix? "obj-" name))))
#t))))
(build-system gnu-build-system)
(inputs
@ -391,7 +431,21 @@ standards.")
("mit-krb5" ,mit-krb5)
("nspr" ,nspr)
("nss" ,nss)
("sqlite" ,sqlite)
;; XXX Work around the fact that our 'sqlite' package was not built
;; with -DSQLITE_ENABLE_DBSTAT_VTAB.
("sqlite" ,(package
(inherit sqlite)
(arguments
`(#:configure-flags
;; Add -DSQLITE_SECURE_DELETE, -DSQLITE_ENABLE_UNLOCK_NOTIFY and
;; -DSQLITE_ENABLE_DBSTAT_VTAB to CFLAGS. GNU Icecat will refuse
;; to use the system SQLite unless these options are enabled.
(list (string-append "CFLAGS=-O2 -DSQLITE_SECURE_DELETE "
"-DSQLITE_ENABLE_UNLOCK_NOTIFY "
"-DSQLITE_ENABLE_DBSTAT_VTAB"))))))
;;("sqlite" ,sqlite)
("startup-notification" ,startup-notification)
("unzip" ,unzip)
("yasm" ,yasm)
@ -401,7 +455,8 @@ standards.")
`(("perl" ,perl)
("python" ,python-2) ; Python 3 not supported
("python2-pysqlite" ,python2-pysqlite)
("pkg-config" ,pkg-config)))
("pkg-config" ,pkg-config)
("which" ,which)))
(arguments
`(#:tests? #f ; no check target
#:out-of-source? #t ; must be built outside of the source directory
@ -432,6 +487,11 @@ standards.")
"--disable-debug"
"--disable-debug-symbols"
;; Temporary hack to work around missing
;; "unofficial" branding in
;; icecat-45.3.0-gnu1-beta.
"--enable-official-branding"
;; Avoid bundled libraries.
"--with-system-zlib"
"--with-system-bz2"
@ -597,5 +657,4 @@ features built-in privacy-protecting features.")
(properties
`((ftp-directory . "/gnu/gnuzilla")
(cpe-name . "firefox_esr")
(cpe-version . ,(string-drop-right version
(string-length "-gnu1")))))))
(cpe-version . ,(first (string-split version #\-)))))))

View File

@ -219,6 +219,7 @@ without requiring the source code to be rewritten.")
(snippet '(for-each delete-file
(find-files "prebuilt" "\\.go$")))))
(synopsis "Snapshot of what will become version 2.2 of GNU Guile")
(properties '((timeout . 72000))) ; 20 hours
(native-search-paths
(list (search-path-specification
(variable "GUILE_LOAD_PATH")

View File

@ -1170,12 +1170,10 @@ version 1.3).")
(build-system haskell-build-system)
(inputs
`(("ghc-blaze-builder" ,ghc-blaze-builder)
("ghc-directory" ,ghc-directory)
("ghc-network" ,ghc-network)
("ghc-random" ,ghc-random)
("ghc-stm" ,ghc-stm)
("ghc-text" ,ghc-text)
("ghc-transformers" ,ghc-transformers)
("ghc-zlib" ,ghc-zlib)))
(native-inputs
`(("ghc-quickcheck" ,ghc-quickcheck)
@ -6320,6 +6318,204 @@ definition lists, tables, and other features. A compatibility mode is
provided for those who need a drop-in replacement for Markdown.pl.")
(license license:gpl2+)))
(define-public ghc-hs-bibutils
(package
(name "ghc-hs-bibutils")
(version "5.5")
(source
(origin
(method url-fetch)
(uri (string-append
"https://hackage.haskell.org/package/hs-bibutils/hs-bibutils-"
version ".tar.gz"))
(sha256
(base32
"0pf5lh179rw9jkmw16ss3kiwydlj6zgfk868mjl5s57kx55z7ycm"))))
(build-system haskell-build-system)
(inputs `(("ghc-syb" ,ghc-syb)))
(home-page "https://hackage.haskell.org/package/hs-bibutils")
(synopsis "Haskell bindings to bibutils")
(description
"This package provides Haskell bindings to @code{bibutils}, a library
that interconverts between various bibliography formats using a common
MODS-format XML intermediate.")
(license license:gpl2+)))
(define-public ghc-rfc5051
(package
(name "ghc-rfc5051")
(version "0.1.0.3")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/rfc5051/"
"rfc5051-" version ".tar.gz"))
(sha256
(base32
"0av4c3qvwbkbzrjrrg601ay9pds7wscqqp2lc2z78mv2lllap3g3"))))
(build-system haskell-build-system)
(home-page "http://hackage.haskell.org/package/rfc5051")
(synopsis "Simple unicode collation as per RFC5051")
(description
"This library implements @code{unicode-casemap}, the simple, non
locale-sensitive unicode collation algorithm described in RFC 5051. Proper
unicode collation can be done using @code{text-icu}, but that is a big
dependency that depends on a large C library, and @code{rfc5051} might be
better for some purposes.")
(license license:bsd-3)))
(define-public ghc-conduit-extra
(package
(name "ghc-conduit-extra")
(version "1.1.13.2")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/"
"conduit-extra/conduit-extra-"
version ".tar.gz"))
(sha256
(base32
"108vsn9dpsfwvar7nssw6wkqy26rxlf3p4ran6swa5xh8l6d5k4z"))))
(build-system haskell-build-system)
(inputs
`(("ghc-conduit" ,ghc-conduit)
("ghc-exceptions" ,ghc-exceptions)
("ghc-monad-control" ,ghc-monad-control)
("ghc-text" ,ghc-text)
("ghc-transformers-base" ,ghc-transformers-base)
("ghc-async" ,ghc-async)
("ghc-attoparsec" ,ghc-attoparsec)
("ghc-blaze-builder" ,ghc-blaze-builder)
("ghc-network" ,ghc-network)
("ghc-primitive" ,ghc-primitive)
("ghc-resourcet" ,ghc-resourcet)
("ghc-stm" ,ghc-stm)
("ghc-streaming-commons" ,ghc-streaming-commons)
("ghc-hspec" ,ghc-hspec)
("ghc-bytestring-builder" ,ghc-bytestring-builder)
("ghc-quickcheck" ,ghc-quickcheck)))
(native-inputs
`(("hspec-discover" ,hspec-discover)))
(home-page "http://github.com/snoyberg/conduit")
(synopsis "Conduit adapters for common libraries")
(description
"The @code{conduit} package itself maintains relative small dependencies.
The purpose of this package is to collect commonly used utility functions
wrapping other library dependencies, without depending on heavier-weight
dependencies. The basic idea is that this package should only depend on
@code{haskell-platform} packages and @code{conduit}.")
(license license:expat)))
(define-public ghc-xml-types
(package
(name "ghc-xml-types")
(version "0.3.6")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/xml-types/"
"xml-types-" version ".tar.gz"))
(sha256
(base32
"1jgqxsa9p2q3h6nymbfmvhldqrqlwrhrzmwadlyc0li50x0d8dwr"))))
(build-system haskell-build-system)
(inputs `(("ghc-text" ,ghc-text)))
(home-page "https://john-millikin.com/software/haskell-xml/")
(synopsis "Basic types for representing XML")
(description "This package provides basic types for representing XML
documents.")
(license license:expat)))
(define-public ghc-xml-conduit
(package
(name "ghc-xml-conduit")
(version "1.3.5")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/xml-conduit/"
"xml-conduit-" version ".tar.gz"))
(sha256
(base32
"10yw8jiksw21jgwqjjd1ixflavcblisgkp9qq3ba05vadc35lqr5"))))
(build-system haskell-build-system)
(inputs
`(("ghc-conduit" ,ghc-conduit)
("ghc-conduit-extra" ,ghc-conduit-extra)
("ghc-resourcet" ,ghc-resourcet)
("ghc-text" ,ghc-text)
("ghc-xml-types" ,ghc-xml-types)
("ghc-attoparsec" ,ghc-attoparsec)
("ghc-blaze-builder" ,ghc-blaze-builder)
("ghc-blaze-markup" ,ghc-blaze-markup)
("ghc-blaze-html" ,ghc-blaze-html)
("ghc-data-default" ,ghc-data-default)
("ghc-monad-control" ,ghc-monad-control)
("ghc-hspec" ,ghc-hspec)
("ghc-hunit" ,ghc-hunit)))
(home-page "http://github.com/snoyberg/xml")
(synopsis "Utilities for dealing with XML with the conduit package")
(description
"This package provides pure-Haskell utilities for dealing with XML with
the @code{conduit} package.")
(license license:expat)))
(define-public ghc-pandoc-citeproc
(package
(name "ghc-pandoc-citeproc")
(version "0.10")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/"
"pandoc-citeproc/pandoc-citeproc-"
version ".tar.gz"))
(sha256
(base32
"00mprphppk51ylsrkg817mbk23f9fsfvkwzbys9qqbcjbrxi2r94"))))
(build-system haskell-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
;; Tests need to be run after installation.
(delete 'check)
(add-after 'install 'post-install-check
(assoc-ref %standard-phases 'check)))))
(inputs
`(("ghc-mtl" ,ghc-mtl)
("ghc-pandoc-types" ,ghc-pandoc-types)
("ghc-pandoc" ,ghc-pandoc)
("ghc-tagsoup" ,ghc-tagsoup)
("ghc-aeson" ,ghc-aeson)
("ghc-text" ,ghc-text)
("ghc-vector" ,ghc-vector)
("ghc-xml-conduit" ,ghc-xml-conduit)
("ghc-unordered-containers" ,ghc-unordered-containers)
("ghc-data-default" ,ghc-data-default)
("ghc-setenv" ,ghc-setenv)
("ghc-split" ,ghc-split)
("ghc-yaml" ,ghc-yaml)
("ghc-hs-bibutils" ,ghc-hs-bibutils)
("ghc-rfc5051" ,ghc-rfc5051)
("ghc-syb" ,ghc-syb)
("ghc-parsec" ,ghc-parsec)
("ghc-old-locale" ,ghc-old-locale)
("ghc-aeson-pretty" ,ghc-aeson-pretty)
("ghc-attoparsec" ,ghc-attoparsec)
("ghc-temporary" ,ghc-temporary)))
(home-page "https://github.com/jgm/pandoc-citeproc")
(synopsis "Library for using pandoc with citeproc")
(description
"The @code{pandoc-citeproc} library exports functions for using the
citeproc system with pandoc. It relies on @code{citeproc-hs}, a library for
rendering bibliographic reference citations into a variety of styles using a
macro language called @dfn{Citation Style Language} (CSL). This package also
contains an executable @code{pandoc-citeproc}, which works as a pandoc filter,
and also has a mode for converting bibliographic databases a YAML format
suitable for inclusion in pandoc YAML metadata.")
(license license:bsd-3)))
(define-public ghc-union-find
(package
(name "ghc-union-find")

View File

@ -636,12 +636,15 @@ graphics image formats like PNG, BMP, JPEG, TIFF and others.")
"/lib/python2.7/site-packages")
;; OpenEXR is not enabled by default.
"-DWITH_OPENEXR=1"
;; Fix rounding error on 32-bit machines
"-DCMAKE_C_FLAGS=-ffloat-store"
;; The header files of ilmbase are not found when included
;; by the header files of openexr, and an explicit flag
;; needs to be set.
(string-append "-DCMAKE_CXX_FLAGS=-I"
(assoc-ref %build-inputs "ilmbase")
"/include/OpenEXR"))))
"/include/OpenEXR"
" -ffloat-store"))))
(synopsis "Computer vision library")
(description
"VIGRA stands for Vision with Generic Algorithms. It is an image

View File

@ -3,7 +3,7 @@
;;; Copyright © 2014 Kevin Lemonnier <lemonnierk@ulrar.net>
;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
;;; Copyright © 2016 ng0 <ngillmann@runbox.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -26,6 +26,7 @@
#:use-module (guix packages)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python)
#:use-module (gnu packages)
#:use-module (gnu packages aspell)
#:use-module (gnu packages autogen)
@ -48,7 +49,8 @@
#:use-module (gnu packages python)
#:use-module (gnu packages qt)
#:use-module (gnu packages tcl)
#:use-module (gnu packages tls))
#:use-module (gnu packages tls)
#:use-module (gnu packages web))
(define-public quassel
(package
@ -291,3 +293,39 @@ and extensible with plugins and scripts.")
(description
"sic is a simple IRC client, even more minimalistic than ii.")
(license license:expat)))
(define-public limnoria
(package
(name "limnoria")
(version "2016.08.07")
(source
(origin
(method url-fetch)
(uri (pypi-uri "limnoria" version))
(sha256
(base32
"0w1d98hfhn4iqrczam7zahhqsvxa79n3xfcrm4jwkg5lba4f9ccm"))))
(build-system python-build-system)
(inputs
`(("python-pytz" ,python-pytz)
("python-chardet" ,python-chardet)
("python-dateutil" ,python-dateutil)
("python-gnupg" ,python-gnupg)
("python-feedparser" ,python-feedparser)
("python-sqlalchemy" ,python-sqlalchemy)
("python-socksipy-branch" ,python-socksipy-branch)
("python-ecdsa" ,python-ecdsa)))
(native-inputs
`(("python-mock" ,python-mock)))
;; Despite the existence of a test folder there is no test phase.
;; We need to package https://github.com/ProgVal/irctest and write
;; our own testphase.
(arguments
`(#:tests? #f))
(home-page "https://github.com/ProgVal/Limnoria")
(synopsis "Modified version of Supybot (an IRC bot and framework)")
(description
"Modified version of Supybot with Python 3 and IRCv3 support,
embedded web server, translations (fr, fi, it, hu, de), and many
other enhancements and bug fixes.")
(license license:bsd-3)))

View File

@ -17,6 +17,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages libupnp)
#:use-module (gnu packages)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
@ -31,6 +32,7 @@
(method url-fetch)
(uri (string-append "mirror://sourceforge/pupnp/pupnp/libUPnP%20"
version "/" name "-" version ".tar.bz2"))
(patches (search-patches "libupnp-CVE-2016-6255.patch"))
(sha256
(base32
"0qrsdsb1qm85hc4jy04qph895613d148f0x1mmk6z99y3q43fdgf"))))

View File

@ -34,6 +34,7 @@
(define-module (gnu packages linux)
#:use-module (gnu packages)
#:use-module (gnu packages acl)
#:use-module (gnu packages admin)
#:use-module (gnu packages algebra)
#:use-module (gnu packages attr)
@ -321,14 +322,14 @@ It has been modified to remove all non-free binary blobs.")
(define %intel-compatible-systems '("x86_64-linux" "i686-linux"))
(define-public linux-libre
(make-linux-libre "4.8"
"0fnax2qb597zg2gchab9n9fn7551vccmqfcvq5k3ckz24y50yknm"
(make-linux-libre "4.8.1"
"0l57ab8v52nvx4d898qfvkl7c6zlrm7qd080z6jg0bg0adn4w5lf"
%intel-compatible-systems
#:configuration-file kernel-config))
(define-public linux-libre-4.4
(make-linux-libre "4.4.23"
"07akixpxlcrpfsadnppyk2hbggqf7j2hzlkg56k0yh3dhyglxv86"
(make-linux-libre "4.4.24"
"1wg1d9rq29612psr5v4krabx7nv1y1gzfshq7wpx6i1lpqf3lill"
%intel-compatible-systems
#:configuration-file kernel-config))
@ -339,8 +340,8 @@ It has been modified to remove all non-free binary blobs.")
#:configuration-file kernel-config))
;; Avoid rebuilding kernel variants when there is a minor version bump.
(define %linux-libre-version "4.7.6")
(define %linux-libre-hash "0716lpzq3w2pdc0nrrx06gqzdfzhkrjq7g37v4ws9wjlzak8hkvy")
(define %linux-libre-version "4.8.1")
(define %linux-libre-hash "0l57ab8v52nvx4d898qfvkl7c6zlrm7qd080z6jg0bg0adn4w5lf")
(define-public linux-libre-arm-generic
(make-linux-libre %linux-libre-version
@ -1657,14 +1658,14 @@ time.")
(define-public lvm2
(package
(name "lvm2")
(version "2.02.109")
(version "2.02.166")
(source (origin
(method url-fetch)
(uri (string-append "ftp://sources.redhat.com/pub/lvm2/releases/LVM2."
version ".tgz"))
(sha256
(base32
"1rv5ivg0l1w3nwzwdkqixm96h5bzg7ib4rr196ysb2lw42jmpjbv"))
"150v0mawd2swdvypcmkjd3h3s4n5i1220h6sxx94a8jvp1kb0871"))
(modules '((guix build utils)))
(snippet
'(begin
@ -1683,16 +1684,27 @@ time.")
(inputs
`(("udev" ,eudev)))
(arguments
'(#:phases (alist-cons-after
'configure 'set-makefile-shell
(lambda _
;; Use 'sh', not 'bash', so that '. lib/utils.sh' works as
;; expected.
(setenv "SHELL" (which "sh"))
'(#:phases
(modify-phases %standard-phases
(add-after 'configure 'set-makefile-shell
(lambda _
;; Use 'sh', not 'bash', so that '. lib/utils.sh' works as
;; expected.
(setenv "SHELL" (which "sh"))
;; Replace /bin/sh with the right file name.
(patch-makefile-SHELL "make.tmpl"))
%standard-phases)
;; Replace /bin/sh with the right file name.
(patch-makefile-SHELL "make.tmpl")
#t))
(add-before 'strip 'make-objects-writable
(lambda* (#:key outputs #:allow-other-keys)
;; Make compiled objects writable so they can be stripped.
(let ((out (assoc-ref outputs "out")))
(for-each (lambda (file)
(chmod file #o755))
(append
(find-files (string-append out "/lib"))
(find-files (string-append out "/sbin"))))
#t))))
#:configure-flags (list (string-append "--sysconfdir="
(assoc-ref %outputs "out")
@ -2996,3 +3008,35 @@ and other hardware errors on x86 systems. It can also perform user-defined
tasks, such as bringing bad pages off-line, when configurable error thresholds
are exceeded.")
(license license:gpl2)))
(define-public mtd-utils
(package
(name "mtd-utils")
(version "1.5.2")
(source (origin
(method url-fetch)
(uri (string-append
"ftp://ftp.infradead.org/pub/mtd-utils/"
"mtd-utils-" version ".tar.bz2"))
(sha256
(base32
"007lhsd8yb34l899r4m37whhzdw815cz4fnjbpnblfha524p7dax"))))
(inputs
`(("acl" ,acl)
("libuuid" ,util-linux)
("lzo", lzo)
("zlib" ,zlib)))
(build-system gnu-build-system)
(arguments
`(#:test-target "tests"
#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
#:phases (modify-phases %standard-phases
(delete 'configure))))
(synopsis "MTD Flash Storage Utilities")
(description "This package provides utilities for testing, partitioning, etc
of flash storage.")
(home-page "http://www.linux-mtd.infradead.org/")
(license
(list license:gpl2 ; Almost everything is gpl2 or gpl2+
license:mpl1.1 ; All ftl* files
license:expat)))) ; libiniparser

View File

@ -33,6 +33,8 @@
#:use-module (guix git-download)
#:use-module (guix utils)
#:use-module (guix build-system gnu)
#:use-module (guix build-system asdf)
#:use-module (guix build-system trivial)
#:use-module (gnu packages base)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages bdw-gc)
@ -47,6 +49,17 @@
#:use-module (ice-9 match)
#:use-module (srfi srfi-1))
(define (asdf-substitutions lisp)
;; Prepend XDG_DATA_DIRS/LISP-bundle-systems to ASDF's
;; 'default-system-source-registry'.
`((("\\(,dir \"systems/\"\\)\\)")
(format #f
"(,dir \"~a-bundle-systems\")))
,@(loop :for dir :in (xdg-data-dirs \"common-lisp/\")
:collect `(:directory (,dir \"systems\"))"
,lisp))))
(define-public gcl
(package
(name "gcl")
@ -112,7 +125,12 @@ interface to the Tk widget system.")
"https://common-lisp.net/project/ecl/static/files/release/"
name "-" version ".tgz"))
(sha256
(base32 "16ab8qs3awvdxy8xs8jy82v8r04x4wr70l9l2j45vgag18d2nj1d"))))
(base32 "16ab8qs3awvdxy8xs8jy82v8r04x4wr70l9l2j45vgag18d2nj1d"))
(modules '((guix build utils)))
(snippet
;; Add ecl-bundle-systems to 'default-system-source-registry'.
`(substitute* "contrib/asdf/asdf.lisp"
,@(asdf-substitutions name)))))
(build-system gnu-build-system)
;; src/configure uses 'which' to confirm the existence of 'gzip'.
(native-inputs `(("which" ,which)))
@ -153,6 +171,10 @@ interface to the Tk widget system.")
`("LIBRARY_PATH" suffix ,library-directories)
`("LD_LIBRARY_PATH" suffix ,library-directories)))))
(add-after 'wrap 'check (assoc-ref %standard-phases 'check)))))
(native-search-paths
(list (search-path-specification
(variable "XDG_DATA_DIRS")
(files '("share")))))
(home-page "http://ecls.sourceforge.net/")
(synopsis "Embeddable Common Lisp")
(description "ECL is an implementation of the Common Lisp language as
@ -226,7 +248,12 @@ an interpreter, a compiler, a debugger, and much more.")
(uri (string-append "mirror://sourceforge/sbcl/sbcl/" version "/sbcl-"
version "-source.tar.bz2"))
(sha256
(base32 "0fjdqnb2rsm2vi9794ywp27jr239ddvzc4xfr0dk49jd4v7p2kc5"))))
(base32 "0fjdqnb2rsm2vi9794ywp27jr239ddvzc4xfr0dk49jd4v7p2kc5"))
(modules '((guix build utils)))
(snippet
;; Add sbcl-bundle-systems to 'default-system-source-registry'.
`(substitute* "contrib/asdf/asdf.lisp"
,@(asdf-substitutions name)))))
(build-system gnu-build-system)
(outputs '("out" "doc"))
;; Bootstrap with CLISP.
@ -315,6 +342,10 @@ an interpreter, a compiler, a debugger, and much more.")
#t))))
;; No 'check' target, though "make.sh" (build phase) runs tests.
#:tests? #f))
(native-search-paths
(list (search-path-specification
(variable "XDG_DATA_DIRS")
(files '("share")))))
(home-page "http://www.sbcl.org/")
(synopsis "Common Lisp implementation")
(description "Steel Bank Common Lisp (SBCL) is a high performance Common
@ -492,3 +523,552 @@ simple, elegant Scheme dialect. It is a lisp-1 with lexical scope.
The core is 12 builtin special forms and 33 builtin functions.")
(home-page "https://github.com/JeffBezanson/femtolisp")
(license license:bsd-3))))
(define-public sbcl-alexandria
(let ((revision "1")
(commit "926a066611b7b11cb71e26c827a271e500888c30"))
(package
(name "sbcl-alexandria")
(version (string-append "0.0.0-" revision "." (string-take commit 7)))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.common-lisp.net/alexandria/alexandria.git")
(commit commit)))
(sha256
(base32
"18yncicdkh294j05rhgm23gzi36y9qy6vrfba8vg69jrxjp1hx8l"))
(file-name (string-append "alexandria-" version "-checkout"))))
(build-system asdf-build-system/sbcl)
(synopsis "Collection of portable utilities for Common Lisp")
(description
"Alexandria is a collection of portable utilities. It does not contain
conceptual extensions to Common Lisp. It is conservative in scope, and
portable between implementations.")
(home-page "https://common-lisp.net/project/alexandria/")
(license license:public-domain))))
(define-public cl-alexandria
(sbcl-package->cl-source-package sbcl-alexandria))
(define-public ecl-alexandria
(sbcl-package->ecl-package sbcl-alexandria))
(define-public sbcl-fiveam
(package
(name "sbcl-fiveam")
(version "1.2")
(source
(origin
(method url-fetch)
(uri (string-append
"https://github.com/sionescu/fiveam/archive/v"
version ".tar.gz"))
(sha256
(base32 "0f48pcbhqs3wwwzjl5nk57d4hcbib4l9xblxc66b8c2fhvhmhxnv"))
(file-name (string-append "fiveam-" version ".tar.gz"))))
(inputs `(("sbcl-alexandria" ,sbcl-alexandria)))
(build-system asdf-build-system/sbcl)
(synopsis "Common Lisp testing framework")
(description "FiveAM is a simple (as far as writing and running tests
goes) regression testing framework. It has been designed with Common Lisp's
interactive development model in mind.")
(home-page "https://common-lisp.net/project/fiveam/")
(license license:bsd-3)))
(define-public cl-fiveam
(sbcl-package->cl-source-package sbcl-fiveam))
(define-public ecl-fiveam
(sbcl-package->ecl-package sbcl-fiveam))
(define-public sbcl-bordeaux-threads
(package
(name "sbcl-bordeaux-threads")
(version "0.8.5")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/sionescu/bordeaux-threads/archive/v"
version ".tar.gz"))
(sha256
(base32 "10ryrcx832fwqdawb6jmknymi7wpdzhi30qzx7cbrk0cpnka71w2"))
(file-name
(string-append "bordeaux-threads-" version ".tar.gz"))))
(inputs `(("sbcl-alexandria" ,sbcl-alexandria)))
(native-inputs `(("tests:cl-fiveam" ,sbcl-fiveam)))
(build-system asdf-build-system/sbcl)
(synopsis "Portable shared-state concurrency library for Common Lisp")
(description "BORDEAUX-THREADS is a proposed standard for a minimal
MP/Threading interface. It is similar to the CLIM-SYS threading and lock
support.")
(home-page "https://common-lisp.net/project/bordeaux-threads/")
(license license:x11)))
(define-public cl-bordeaux-threads
(sbcl-package->cl-source-package sbcl-bordeaux-threads))
(define-public ecl-bordeaux-threads
(sbcl-package->ecl-package sbcl-bordeaux-threads))
(define-public sbcl-trivial-gray-streams
(let ((revision "1")
(commit "0483ade330508b4b2edeabdb47d16ec9437ee1cb"))
(package
(name "sbcl-trivial-gray-streams")
(version (string-append "0.0.0-" revision "." (string-take commit 7)))
(source
(origin
(method git-fetch)
(uri
(git-reference
(url "https://github.com/trivial-gray-streams/trivial-gray-streams.git")
(commit commit)))
(sha256
(base32 "0m3rpf2x0zmdk3nf1qfa01j6a55vj7gkwhyw78qslcgbjlgh8p4d"))
(file-name
(string-append "trivial-gray-streams-" version "-checkout"))))
(build-system asdf-build-system/sbcl)
(synopsis "Compatibility layer for Gray streams implementations")
(description "Gray streams is an interface proposed for inclusion with
ANSI CL by David N. Gray. The proposal did not make it into ANSI CL, but most
popular CL implementations implement it. This package provides an extremely
thin compatibility layer for gray streams.")
(home-page "http://www.cliki.net/trivial-gray-streams")
(license license:x11))))
(define-public cl-trivial-gray-streams
(sbcl-package->cl-source-package sbcl-trivial-gray-streams))
(define-public ecl-trivial-gray-streams
(sbcl-package->ecl-package sbcl-trivial-gray-streams))
(define-public sbcl-flexi-streams
(package
(name "sbcl-flexi-streams")
(version "1.0.12")
(source
(origin
(method url-fetch)
(uri (string-append
"https://github.com/edicl/flexi-streams/archive/v"
version ".tar.gz"))
(sha256
(base32 "16grnxvs7vqm5s6myf8a5s7vwblzq1kgwj8i7ahz8vwvihm9gzfi"))
(file-name (string-append "flexi-streams-" version ".tar.gz"))))
(build-system asdf-build-system/sbcl)
(inputs `(("sbcl-trivial-gray-streams" ,sbcl-trivial-gray-streams)))
(synopsis "Implementation of virtual bivalent streams for Common Lisp")
(description "Flexi-streams is an implementation of \"virtual\" bivalent
streams that can be layered atop real binary or bivalent streams and that can
be used to read and write character data in various single- or multi-octet
encodings which can be changed on the fly. It also supplies in-memory binary
streams which are similar to string streams.")
(home-page "http://weitz.de/flexi-streams/")
(license license:bsd-3)))
(define-public cl-flexi-streams
(sbcl-package->cl-source-package sbcl-flexi-streams))
(define-public ecl-flexi-streams
(sbcl-package->ecl-package sbcl-flexi-streams))
(define-public sbcl-cl-ppcre
(package
(name "sbcl-cl-ppcre")
(version "2.0.11")
(source
(origin
(method url-fetch)
(uri (string-append
"https://github.com/edicl/cl-ppcre/archive/v"
version ".tar.gz"))
(sha256
(base32 "1i7daxf0wnydb0pgwiym7qh2wy70n14lxd6dyv28sy0naa8p31gd"))
(file-name (string-append "cl-ppcre-" version ".tar.gz"))))
(build-system asdf-build-system/sbcl)
(native-inputs `(("tests:cl-flexi-streams" ,sbcl-flexi-streams)))
(synopsis "Portable regular expression library for Common Lisp")
(description "CL-PPCRE is a portable regular expression library for Common
Lisp, which is compatible with perl. It is pretty fast, thread-safe, and
compatible with ANSI-compliant Common Lisp implementations.")
(home-page "http://weitz.de/cl-ppcre/")
(license license:bsd-2)))
(define-public cl-ppcre
(sbcl-package->cl-source-package sbcl-cl-ppcre))
(define-public ecl-cl-ppcre
(sbcl-package->ecl-package sbcl-cl-ppcre))
(define-public sbcl-clx
(let ((revision "1")
(commit "1c62774b03c1cf3fe6e5cb532df8b14b44c96b95"))
(package
(name "sbcl-clx")
(version (string-append "0.0.0-" revision "." (string-take commit 7)))
(source
(origin
(method git-fetch)
(uri
(git-reference
(url "https://github.com/sharplispers/clx.git")
(commit commit)))
(sha256
(base32 "0qffag03ns52kwq9xjns2qg1yr0bf3ba507iwq5cmx5xz0b0rmjm"))
(file-name (string-append "clx-" version "-checkout"))
(patches
(list
(search-patch "clx-remove-demo.patch")))
(modules '((guix build utils)))
(snippet
'(begin
;; These removed files cause the compiled system to crash when
;; loading.
(delete-file-recursively "demo")
(delete-file "test/trapezoid.lisp")
(substitute* "clx.asd"
(("\\(:file \"trapezoid\"\\)") ""))))))
(build-system asdf-build-system/sbcl)
(arguments
'(#:special-dependencies '("sb-bsd-sockets")))
(home-page "http://www.cliki.net/portable-clx")
(synopsis "X11 client library for Common Lisp")
(description "CLX is an X11 client library for Common Lisp. The code was
originally taken from a CMUCL distribution, was modified somewhat in order to
make it compile and run under SBCL, then a selection of patches were added
from other CLXes around the net.")
(license license:x11))))
(define-public cl-clx
(sbcl-package->cl-source-package sbcl-clx))
(define-public ecl-clx
(sbcl-package->ecl-package sbcl-clx))
(define-public sbcl-stumpwm
(package
(name "sbcl-stumpwm")
(version "0.9.9")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/stumpwm/stumpwm/archive/"
version ".tar.gz"))
(sha256
(base32 "1fqabij4zcsqg1ywgdv2irp1ys23dwc8ms9ai55lb2i47hgv7z3x"))
(file-name (string-append "stumpwm-" version ".tar.gz"))))
(build-system asdf-build-system/sbcl)
(inputs `(("sbcl-cl-ppcre" ,sbcl-cl-ppcre)
("sbcl-clx" ,sbcl-clx)))
(outputs '("out" "bin"))
(arguments
'(#:special-dependencies '("sb-posix")
#:phases
(modify-phases %standard-phases
(add-after 'create-symlinks 'build-program
(lambda* (#:key lisp outputs inputs #:allow-other-keys)
(build-program
lisp
(string-append (assoc-ref outputs "bin") "/bin/stumpwm")
#:inputs inputs
#:entry-program '((stumpwm:stumpwm) 0))))
(add-after 'build-program 'create-desktop-file
(lambda* (#:key outputs lisp binary? #:allow-other-keys)
(let ((output (or (assoc-ref outputs "bin")
(assoc-ref outputs "out")))
(xsessions "/share/xsessions"))
(mkdir-p (string-append output xsessions))
(with-output-to-file
(string-append output xsessions
"/stumpwm.desktop")
(lambda _
(format #t
"[Desktop Entry]~@
Name=stumpwm~@
Comment=The Stump Window Manager~@
Exec=~a/bin/stumpwm~@
TryExec=~@*~a/bin/stumpwm~@
Icon=~@
Type=Application~%"
output)))
#t))))))
(synopsis "Window manager written in Common Lisp")
(description "Stumpwm is a window manager written entirely in Common Lisp.
It attempts to be highly customizable while relying entirely on the keyboard
for input. These design decisions reflect the growing popularity of
productive, customizable lisp based systems.")
(home-page "http://github.com/stumpwm/stumpwm")
(license license:gpl2+)
(properties `((ecl-variant . ,(delay ecl-stumpwm))))))
(define-public cl-stumpwm
(sbcl-package->cl-source-package sbcl-stumpwm))
(define-public ecl-stumpwm
(let ((base (sbcl-package->ecl-package sbcl-stumpwm)))
(package
(inherit base)
(outputs '("out"))
(arguments '()))))
(define sbcl-slynk-boot0
(let ((revision "1")
(commit "5706cd45d484a4f25795abe8e643509d31968aa2"))
(package
(name "sbcl-slynk")
(version (string-append "1.0.0-beta-" revision "." (string-take commit 7)))
(source
(origin
(method git-fetch)
(uri
(git-reference
(url "https://github.com/joaotavora/sly.git")
(commit commit)))
(sha256
(base32 "0h4gg3sndl2bf6jdnx9nrf14p9hhi43hagrl0f4v4l11hczl8w81"))
(file-name (string-append "slynk-" version "-checkout"))
(modules '((guix build utils)
(ice-9 ftw)))
(snippet
'(begin
;; Move the contribs into the main source directory for easier
;; access
(substitute* "slynk/slynk.asd"
(("\\.\\./contrib")
"contrib")
(("\\(defsystem :slynk-util")
"(defsystem :slynk-util :depends-on (:slynk)"))
(substitute* "contrib/slynk-trace-dialog.lisp"
(("\\(slynk::reset-inspector\\)") ; Causes problems on load
"nil"))
(substitute* "contrib/slynk-profiler.lisp"
(("slynk:to-line")
"slynk-pprint-to-line"))
(rename-file "contrib" "slynk/contrib")
;; Move slynk's contents into the base directory for easier
;; access
(for-each
(lambda (file)
(unless (string-prefix? "." file)
(rename-file (string-append "slynk/" file)
(string-append "./" (basename file)))))
(scandir "slynk"))))))
(build-system asdf-build-system/sbcl)
(arguments
`(#:tests? #f)) ; No test suite
(synopsis "Common Lisp IDE for Emacs")
(description "SLY is a fork of SLIME. It also features a completely
redesigned REPL based on Emacs's own full-featured comint.el, live code
annotations, and a consistent interactive button interface. Everything can be
copied to the REPL. One can create multiple inspectors with independent
history.")
(home-page "https://github.com/joaotavora/sly")
(license license:public-domain)
(properties `((cl-source-variant . ,(delay cl-slynk)))))))
(define-public cl-slynk
(sbcl-package->cl-source-package sbcl-slynk-boot0))
(define ecl-slynk-boot0
(sbcl-package->ecl-package sbcl-slynk-boot0))
(define sbcl-slynk-arglists
(package
(inherit sbcl-slynk-boot0)
(name "sbcl-slynk-arglists")
(inputs `(("sbcl-slynk" ,sbcl-slynk-boot0)))
(arguments
`(#:asd-file "slynk.asd"
,@(package-arguments sbcl-slynk-boot0)))))
(define ecl-slynk-arglists
(sbcl-package->ecl-package sbcl-slynk-arglists))
(define sbcl-slynk-util
(package
(inherit sbcl-slynk-arglists)
(name "sbcl-slynk-util")))
(define ecl-slynk-util
(sbcl-package->ecl-package sbcl-slynk-util))
(define sbcl-slynk-fancy-inspector
(package
(inherit sbcl-slynk-arglists)
(name "sbcl-slynk-fancy-inspector")
(inputs `(("sbcl-slynk-util" ,sbcl-slynk-util)
,@(package-inputs sbcl-slynk-arglists)))))
(define ecl-slynk-fancy-inspector
(sbcl-package->ecl-package sbcl-slynk-fancy-inspector))
(define sbcl-slynk-package-fu
(package
(inherit sbcl-slynk-arglists)
(name "sbcl-slynk-package-fu")))
(define ecl-slynk-package-fu
(sbcl-package->ecl-package sbcl-slynk-package-fu))
(define sbcl-slynk-mrepl
(package
(inherit sbcl-slynk-arglists)
(name "sbcl-slynk-mrepl")))
(define ecl-slynk-mrepl
(sbcl-package->ecl-package sbcl-slynk-mrepl))
(define sbcl-slynk-trace-dialog
(package
(inherit sbcl-slynk-arglists)
(name "sbcl-slynk-trace-dialog")))
(define ecl-slynk-trace-dialog
(sbcl-package->ecl-package sbcl-slynk-trace-dialog))
(define sbcl-slynk-profiler
(package
(inherit sbcl-slynk-arglists)
(name "sbcl-slynk-profiler")))
(define ecl-slynk-profiler
(sbcl-package->ecl-package sbcl-slynk-profiler))
(define sbcl-slynk-stickers
(package
(inherit sbcl-slynk-arglists)
(name "sbcl-slynk-stickers")))
(define ecl-slynk-stickers
(sbcl-package->ecl-package sbcl-slynk-stickers))
(define sbcl-slynk-indentation
(package
(inherit sbcl-slynk-arglists)
(name "sbcl-slynk-indentation")))
(define ecl-slynk-indentation
(sbcl-package->ecl-package sbcl-slynk-indentation))
(define sbcl-slynk-retro
(package
(inherit sbcl-slynk-arglists)
(name "sbcl-slynk-retro")))
(define ecl-slynk-retro
(sbcl-package->ecl-package sbcl-slynk-retro))
(define slynk-systems
'("slynk"
"slynk-util"
"slynk-arglists"
"slynk-fancy-inspector"
"slynk-package-fu"
"slynk-mrepl"
"slynk-profiler"
"slynk-trace-dialog"
"slynk-stickers"
"slynk-indentation"
"slynk-retro"))
(define-public sbcl-slynk
(package
(inherit sbcl-slynk-boot0)
(inputs
`(("slynk" ,sbcl-slynk-boot0)
("slynk-util" ,sbcl-slynk-util)
("slynk-arglists" ,sbcl-slynk-arglists)
("slynk-fancy-inspector" ,sbcl-slynk-fancy-inspector)
("slynk-package-fu" ,sbcl-slynk-package-fu)
("slynk-mrepl" ,sbcl-slynk-mrepl)
("slynk-profiler" ,sbcl-slynk-profiler)
("slynk-trace-dialog" ,sbcl-slynk-trace-dialog)
("slynk-stickers" ,sbcl-slynk-stickers)
("slynk-indentation" ,sbcl-slynk-indentation)
("slynk-retro" ,sbcl-slynk-retro)))
(native-inputs `(("sbcl" ,sbcl)))
(build-system trivial-build-system)
(source #f)
(outputs '("out" "image"))
(arguments
`(#:modules ((guix build union)
(guix build utils)
(guix build lisp-utils))
#:builder
(begin
(use-modules (ice-9 match)
(srfi srfi-1)
(guix build union)
(guix build lisp-utils))
(union-build
(assoc-ref %outputs "out")
(filter-map
(match-lambda
((name . path)
(if (string-prefix? "slynk" name) path #f)))
%build-inputs))
(prepend-to-source-registry
(string-append (assoc-ref %outputs "out") "//"))
(build-image "sbcl"
(string-append
(assoc-ref %outputs "image")
"/bin/slynk")
#:inputs %build-inputs
#:dependencies ',slynk-systems))))))
(define-public ecl-slynk
(package
(inherit sbcl-slynk)
(name "ecl-slynk")
(inputs
(map (match-lambda
((name pkg . _)
(list name (sbcl-package->ecl-package pkg))))
(package-inputs sbcl-slynk)))
(native-inputs '())
(outputs '("out"))
(arguments
'(#:modules ((guix build union))
#:builder
(begin
(use-modules (ice-9 match)
(guix build union))
(match %build-inputs
(((names . paths) ...)
(union-build (assoc-ref %outputs "out")
paths))))))))
(define-public sbcl-stumpwm+slynk
(package
(inherit sbcl-stumpwm)
(name "sbcl-stumpwm-with-slynk")
(outputs '("out"))
(native-inputs
`(("stumpwm" ,sbcl-stumpwm)
("slynk" ,sbcl-slynk)))
(arguments
(substitute-keyword-arguments (package-arguments sbcl-stumpwm)
((#:phases phases)
`(modify-phases ,phases
(replace 'build-program
(lambda* (#:key lisp inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(program (string-append out "/bin/stumpwm")))
(build-program lisp program
#:inputs inputs
#:entry-program '((stumpwm:stumpwm) 0)
#:dependencies '("stumpwm"
,@slynk-systems))
;; Remove unneeded file.
(delete-file (string-append out "/bin/stumpwm-exec.fasl"))
#t)))
(delete 'copy-source)
(delete 'build)
(delete 'check)
(delete 'link-dependencies)
(delete 'cleanup)
(delete 'create-symlinks)))))))

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -33,14 +34,15 @@
(define-public lynx
(package
(name "lynx")
(version "2.8.8rel.2")
(version "2.8.9dev.9")
(source (origin
(method url-fetch)
(uri (string-append
"http://invisible-mirror.net/archives/lynx/tarballs"
"/lynx" version ".tar.bz2"))
(sha256
(base32 "1rxysl08acqll5b87368f04kckl8sggy1qhnq59gsxyny1ffg039"))))
(base32
"1m72ga89hywm097kazcm8w6sqrfjnl83gh31pkbhk4zhzhfpzxgh"))))
(build-system gnu-build-system)
(native-inputs `(("pkg-config" ,pkg-config)
("perl" ,perl)))
@ -53,19 +55,21 @@
("gzip" ,gzip)
("bzip2" ,bzip2)))
(arguments
`(#:configure-flags '("--with-pkg-config"
"--with-screen=ncurses"
"--with-zlib"
"--with-bzlib"
"--with-gnutls"
;; "--with-socks5" ; XXX TODO
"--enable-widec"
"--enable-ascii-ctypes"
"--enable-local-docs"
"--enable-htmlized-cfg"
"--enable-gzip-help"
"--enable-nls"
"--enable-ipv6")
`(#:configure-flags
(let ((gnutls (assoc-ref %build-inputs "gnutls")))
`("--with-pkg-config"
"--with-screen=ncurses"
"--with-zlib"
"--with-bzlib"
,(string-append "--with-gnutls=" gnutls)
;; "--with-socks5" ; XXX TODO
"--enable-widec"
"--enable-ascii-ctypes"
"--enable-local-docs"
"--enable-htmlized-cfg"
"--enable-gzip-help"
"--enable-nls"
"--enable-ipv6"))
#:tests? #f ; no check target
#:phases (alist-replace
'install

View File

@ -302,7 +302,7 @@ and corrections. It is based on a Bayesian filter.")
(define-public offlineimap
(package
(name "offlineimap")
(version "7.0.7")
(version "7.0.8")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/OfflineIMAP/offlineimap/"
@ -310,7 +310,7 @@ and corrections. It is based on a Bayesian filter.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1719xnw0xah5knypd5vrpsxi337576q1r8axpziw8wa7zms7abl0"))))
"0smxh5ag3cbn92kp49jq950j5m2pivs9kr04prpd1lw62hy7gnhr"))))
(build-system python-build-system)
(inputs `(("python2-pysqlite" ,python2-pysqlite)
("python2-six" ,python2-six)))

View File

@ -134,7 +134,7 @@ the traditional flat-text whatis databases.")
(define-public man-pages
(package
(name "man-pages")
(version "4.06")
(version "4.08")
(source (origin
(method url-fetch)
(uri
@ -147,7 +147,7 @@ the traditional flat-text whatis databases.")
"man-pages-" version ".tar.xz")))
(sha256
(base32
"0vv056k9yyf05dqal9m2pq3pv9c8lnp7i5rjxvcnic6aq7vyrafb"))))
"1d32ki8nkwd2xiln619jihqn7s15ydrg7386n4hxq530sys7svic"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-delete 'configure %standard-phases)

View File

@ -14,6 +14,7 @@
;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
;;;
;;; This file is part of GNU Guix.
;;;
@ -483,6 +484,42 @@ extremely large and complex data collections.")
(license (license:x11-style
"http://www.hdfgroup.org/ftp/HDF5/current/src/unpacked/COPYING"))))
(define-public hdf-eos5
(package
(name "hdf-eos5")
(version "1.15")
(source (origin
(method url-fetch)
(uri (string-append "ftp://edhs1.gsfc.nasa.gov\
/edhs/hdfeos5/latest_release/HDF-EOS5." version ".tar.Z"))
(sha256
(base32
"1p83333nzzy8rn5chxlm0hrkjjnhh2w1ji8ac0f9q4xzg838i58i"))
(patches (search-patches "hdf-eos5-build-shared.patch"
"hdf-eos5-remove-gctp.patch"
"hdf-eos5-fix-szip.patch"
"hdf-eos5-fortrantests.patch"))))
(native-inputs
`(("gfortran" ,gfortran)))
(build-system gnu-build-system)
(inputs
`(("hdf5" ,hdf5)
("zlib" ,zlib)
("gctp" ,gctp)))
(arguments
`(#:configure-flags '("--enable-install-include" "--enable-shared"
"CC=h5cc -Df2cFortran" "LIBS=-lgctp")
#:parallel-tests? #f))
(synopsis "HDF5-based data format for NASA's Earth Observing System")
(description
"HDF-EOS5 is a software library built on HDF5 to support the construction
of data structures used in NASA's Earth Observing System (Grid, Point and
Swath).")
(home-page "http://www.hdfeos.org/software/library.php#HDF-EOS5")
;; Source files carry a permissive license header.
(license (license:non-copyleft home-page))))
(define-public hdf5-parallel-openmpi
(package (inherit hdf5)
(name "hdf5-parallel-openmpi")

View File

@ -6,6 +6,7 @@
;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 ng0 <ngillmann@runbox.com>
;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
;;;
;;; This file is part of GNU Guix.
;;;
@ -32,6 +33,7 @@
#:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system python)
#:use-module (gnu packages)
#:use-module (gnu packages aidc)
#:use-module (gnu packages autotools)
#:use-module (gnu packages avahi)
#:use-module (gnu packages check)
@ -166,14 +168,14 @@ identi.ca and status.net).")
(define-public hexchat
(package
(name "hexchat")
(version "2.12.1")
(version "2.12.2")
(source (origin
(method url-fetch)
(uri (string-append "https://dl.hexchat.net/hexchat/hexchat-"
version ".tar.xz"))
(sha256
(base32
"0svwz9ldrry1sn35jywgpacjj1cf3xl3k74ynwn8rjvxs73b00aj"))))
"1xnclfbrgbkqndxygi5f27q00jd7yy54jbd1061jmhxa6wzpibbd"))))
(build-system gnu-build-system)
(native-inputs `(("pkg-config" ,pkg-config)
("intltool" ,intltool)))
@ -661,6 +663,58 @@ protocols.")
instant messenger with audio and video chat capabilities.")
(home-page "http://utox.org/")
(license license:gpl3)))
(define-public qtox
(package
(name "qtox")
(version "1.5.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/qTox/qTox/archive/v"
version ".tar.gz"))
(sha256
(base32 "0y15mc39x54k1kz36cw9412kl1p1p6nzlx97gagv4gg3vybfhbjv"))
(file-name (string-append name "-" version ".tar.gz"))))
(inputs
`(("ffmpeg" ,ffmpeg)
("glib" ,glib)
("gtk+" ,gtk+-2)
("libsodium" ,libsodium)
("libtoxcore" ,libtoxcore)
("libvpx" ,libvpx)
("libxscrnsaver" ,libxscrnsaver)
("libx11" ,libx11)
("openal" ,openal)
("qrencode" ,qrencode)
("qt" ,qt)
("sqlcipher" ,sqlcipher)))
(native-inputs
`(("pkg-config" ,pkg-config)
("qmake" ,qt)))
(build-system gnu-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-reproducibility-issues
(lambda _
(substitute* "src/main.cpp"
(("__DATE__") "\"\"")
(("__TIME__") "\"\"")
(("TIMESTAMP") "\"\""))
#t))
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
(zero?
(system* "qmake"
(string-append "PREFIX="
(assoc-ref outputs "out")))))))))
(home-page "https://qtox.github.io/")
(synopsis "Tox chat client using Qt")
(description "qTox is a Tox client that follows the Tox design
guidelines. It provides an easy to use application that allows you to
connect with friends and family without anyone else listening in.")
(license license:gpl3+)))
(define-public pybitmessage
(package

View File

@ -1318,14 +1318,14 @@ browser.")
(define-public drumstick
(package
(name "drumstick")
(version "1.0.2")
(version "1.1.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/drumstick/"
version "/drumstick-" version ".tar.bz2"))
(sha256
(base32
"0l47gy9yywrc860db5g3wdqg8yc8qdb2lqq6wvw1dfim5j0vbail"))))
"13pkfqrav30bbcddgf1imd7jk6lpqbxkz1qv31718pdl446jq7df"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ; no test target
@ -1457,7 +1457,7 @@ capabilities, custom envelopes, effects, etc.")
(define-public yoshimi
(package
(name "yoshimi")
(version "1.3.8.2")
(version "1.4.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/yoshimi/"
@ -1465,7 +1465,7 @@ capabilities, custom envelopes, effects, etc.")
"/yoshimi-" version ".tar.bz2"))
(sha256
(base32
"0wl4ln6v1nkkx56kfah23chyrhga2vi93i82g0s200c4s4184xr8"))))
"133sx42wb66g803pcrgdwph40wh94knvab3yfqkgm0001jv4v14y"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ; there are no tests
@ -1485,7 +1485,17 @@ capabilities, custom envelopes, effects, etc.")
(("-msse -msse2 -mfpmath=sse") "")
(("-march=(athlon64|core2)" flag)
(string-append flag " -msse -msse2 -mfpmath=sse")))
#t)))))
#t))
;; Yoshimi tries to find ncurses with pkg-config, but our ncurses
;; package does not install .pc files.
(add-after 'unpack 'find-ncurses
(lambda _
(substitute* "src/CMakeLists.txt"
(("LIBNCURSES REQUIRED") "LIBNCURSES")
(("NCURSES REQUIRED") "NCURSES")
(("FATAL_ERROR \"libncurses") "STATUS \"libncurses")
(("\\$\\{NCURSES_LIBRARIES\\}") "ncurses"))
#t)))))
(inputs
`(("boost" ,boost)
("fftwf" ,fftwf)
@ -1575,6 +1585,42 @@ JACK for audio and ALSA sequencer for MIDI as multimedia infrastructures and
follows a traditional multi-track tape recorder control paradigm.")
(license license:gpl2+)))
(define-public gxtuner
(package
(name "gxtuner")
(version "2.3")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/brummer10/gxtuner/"
"archive/v" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1abpxiydn4c9wssz6895hnad9ipkcy3rkgzbnanvwb46nm44x6if"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags
(list (string-append "PREFIX=" (assoc-ref %outputs "out"))
(string-append "INCLUDE_L_DIR="
(assoc-ref %build-inputs "zita-resampler")
"/include/"))
#:phases
(modify-phases %standard-phases
(delete 'configure))))
(inputs
`(("gtk+" ,gtk+-2)
("jack" ,jack-1)
("fftwf" ,fftwf)
("cairo" ,cairo)
("zita-resampler" ,zita-resampler)))
(native-inputs
`(("pkg-config" ,pkg-config)))
(home-page "https://github.com/brummer10/gxtuner")
(synopsis "Guitar tuner")
(description "GXtuner is a simple guitar tuner for JACK with an
analogue-like user interface.")
(license license:gpl2+)))
(define-public pianobar
(package
(name "pianobar")

View File

@ -27,14 +27,14 @@
(define-public ncdu
(package
(name "ncdu")
(version "1.11")
(version "1.12")
(source (origin
(method url-fetch)
(uri (string-append "http://dev.yorhel.nl/download/ncdu-"
(uri (string-append "https://dev.yorhel.nl/download/ncdu-"
version ".tar.gz"))
(sha256
(base32
"0yxv87hpal05p6nii6rlnai5a8958689l9vz020w4qvlwiragbnh"))))
"16j9fyw73y1lk05a35i4q9i66laklgsx41lz5rxfr8m28x3lw3l2"))))
(build-system gnu-build-system)
(inputs `(("ncurses" ,ncurses)))
(synopsis "Ncurses based disk usage analyzer")
@ -44,6 +44,6 @@ to do with a simple SSH connection. ncdu aims to be fast, simple and easy to
use, and should be able to run in any minimal POSIX-like environment with
ncurses installed.")
(license (x11-style
(string-append "http://g.blicky.net/ncdu.git/plain/COPYING?id=v"
(string-append "https://g.blicky.net/ncdu.git/plain/COPYING?id=v"
version)))
(home-page "http://dev.yorhel.nl/ncdu")))
(home-page "https://dev.yorhel.nl/ncdu")))

View File

@ -0,0 +1,27 @@
--- a/clx.asd 2016-02-16 00:06:48.161596976 -0500
+++ b/clx.asd 2016-02-16 00:06:54.793774658 -0500
@@ -79,24 +79,6 @@
(:file "xtest")
(:file "screensaver")
(:file "xinerama")))
- (:module demo
- :default-component-class example-source-file
- :components
- ((:file "bezier")
- ;; KLUDGE: this requires "bezier" for proper operation,
- ;; but we don't declare that dependency here, because
- ;; asdf doesn't load example files anyway.
- (:file "beziertest")
- (:file "clclock")
- (:file "clipboard")
- (:file "clx-demos")
- (:file "gl-test")
- ;; FIXME: compiling this generates 30-odd spurious code
- ;; deletion notes. Find out why, and either fix or
- ;; workaround the problem.
- (:file "mandel")
- (:file "menu")
- (:file "zoid")))
(:module test
:default-component-class example-source-file
:components

View File

@ -0,0 +1,31 @@
Make shared library linking work.
---
src/Makefile.in | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/src/Makefile.in b/src/Makefile.in
index 86880e5..24efffe 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -72,7 +72,7 @@ LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS) -DH5_USE_16_API
CCLD = $(CC)
-LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+LINK = HDF5_USE_SHLIB=yes $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(libhe5_hdfeos_la_SOURCES)
DIST_SOURCES = $(libhe5_hdfeos_la_SOURCES)
@@ -124,9 +124,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-# Set LDFLAGS to allow the HDF-EOS library to use extern variables from
-# HDF5
-LDFLAGS = -Wl,-single_module
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
--
2.10.0

View File

@ -0,0 +1,30 @@
Ill-placed #endif causes missing symbol errors when compiling without
szip. Reported to upstream maintainer.
---
src/EHapi.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/EHapi.c b/src/EHapi.c
index 46a9b5c..208f447 100755
--- a/src/EHapi.c
+++ b/src/EHapi.c
@@ -11379,6 +11379,7 @@ int HE5_szip_can_encode(void )
return(-1);
}
+#endif /* H5_HAVE_FILTER_SZIP */
/*----------------------------------------------------------------------------|
@@ -11509,8 +11510,6 @@ HE5_EHHEisHE5(char *filename)
}
}
-#endif /* H5_HAVE_FILTER_SZIP */
-
#ifndef __cplusplus
--
2.10.0

View File

@ -0,0 +1,156 @@
Fix fortran line length/indentation issues in Fortran test programs.
Reported to upstream maintainer.
diff --git a/samples/he5_gd_writedataF_32.f b/samples/he5_gd_writedataF_32.f
index 515edf9..9c86299 100755
--- a/samples/he5_gd_writedataF_32.f
+++ b/samples/he5_gd_writedataF_32.f
@@ -77,26 +77,26 @@ c ------------------------------
attr4 = "ABCDEFGH"
count(1) = 8
- status = he5_gdwrattr(gdid,"GLOBAL_CHAR_ATTR",HE5T_NATIVE_CHAR,
- 1 count,attr4)
+ status = he5_gdwrattr(gdid,"GLOBAL_CHAR_ATTR"
+ & ,HE5T_NATIVE_CHAR,count,attr4)
write(*,*) 'Status returned by he5_gdwrattr(): ',status
attr4 = "111"
count(1) = 3
- status = he5_gdwrgattr(gdid,"GLOBAL_CHAR_ATTR_1",HE5T_NATIVE_CHAR,
- 1 count,attr4)
+ status = he5_gdwrgattr(gdid,"GLOBAL_CHAR_ATTR_1"
+ & ,HE5T_NATIVE_CHAR,count,attr4)
write(*,*) 'Status returned by he5_gdwrgattr(): ',status
attr4 = "222222"
count(1) = 6
- status = he5_ehwrglatt(gdfid,"GLOBAL_CHAR_ATTR_2",HE5T_NATIVE_CHAR,
- 1 count,attr4)
+ status = he5_ehwrglatt(gdfid,"GLOBAL_CHAR_ATTR_2"
+ & ,HE5T_NATIVE_CHAR,count,attr4)
write(*,*) 'Status returned by he5_ehwrglatt(): ',status
attr5 = "abcdefgh111111111111"
count(1) = 20
- status = he5_gdwrlattr(gdid,"Vegetation","LocalAttribute_0",
- 1 HE5T_NATIVE_CHAR,count,attr5)
+ status = he5_gdwrlattr(gdid,"Vegetation"
+ & ,"LocalAttribute_0",HE5T_NATIVE_CHAR,count,attr5)
write(*,*) 'Status returned by he5_gdwrlattr(): ',status
endif
diff --git a/samples/he5_gd_writedataF_64.f b/samples/he5_gd_writedataF_64.f
index eff04f5..62a7398 100755
--- a/samples/he5_gd_writedataF_64.f
+++ b/samples/he5_gd_writedataF_64.f
@@ -77,26 +77,26 @@ c ------------------------------
attr4 = "ABCDEFGH"
count(1) = 8
- status = he5_gdwrattr(gdid,"GLOBAL_CHAR_ATTR",HE5T_NATIVE_CHAR,
- 1 count,attr4)
+ status = he5_gdwrattr(gdid,"GLOBAL_CHAR_ATTR"
+ & ,HE5T_NATIVE_CHAR,count,attr4)
write(*,*) 'Status returned by he5_gdwrattr(): ',status
attr4 = "111"
count(1) = 3
- status = he5_gdwrgattr(gdid,"GLOBAL_CHAR_ATTR_1",HE5T_NATIVE_CHAR,
- 1 count,attr4)
+ status = he5_gdwrgattr(gdid,"GLOBAL_CHAR_ATTR_1"
+ & ,HE5T_NATIVE_CHAR,count,attr4)
write(*,*) 'Status returned by he5_gdwrgattr(): ',status
attr4 = "222222"
count(1) = 6
- status = he5_ehwrglatt(gdfid,"GLOBAL_CHAR_ATTR_2",HE5T_NATIVE_CHAR,
- 1 count,attr4)
+ status = he5_ehwrglatt(gdfid,"GLOBAL_CHAR_ATTR_2"
+ & ,HE5T_NATIVE_CHAR,count,attr4)
write(*,*) 'Status returned by he5_ehwrglatt(): ',status
attr5 = "abcdefgh111111111111"
count(1) = 20
- status = he5_gdwrlattr(gdid,"Vegetation","LocalAttribute_0",
- 1 HE5T_NATIVE_CHAR,count,attr5)
+ status = he5_gdwrlattr(gdid,"Vegetation"
+ & ,"LocalAttribute_0",HE5T_NATIVE_CHAR,count,attr5)
write(*,*) 'Status returned by he5_gdwrlattr(): ',status
endif
diff --git a/samples/he5_sw_writedataF_32.f b/samples/he5_sw_writedataF_32.f
index 7abab9b..fedd49a 100755
--- a/samples/he5_sw_writedataF_32.f
+++ b/samples/he5_sw_writedataF_32.f
@@ -173,20 +173,21 @@ c Write Global Attribute
c ----------------------
attr4 = "ABCDEFGH"
count(1) = 8
- status = he5_swwrattr(swid,"GLOBAL_CHAR_ATTR",HE5T_NATIVE_CHAR,
- 1 count,attr4)
+ status = he5_swwrattr(swid,"GLOBAL_CHAR_ATTR"
+ & ,HE5T_NATIVE_CHAR,count,attr4)
write(*,*) 'Status returned by he5_swwrattr(): ',status
attr4 = "111"
count(1) = 3
- status = he5_swwrgattr(swid,"GLOBAL_CHAR_ATTR_1",HE5T_NATIVE_CHAR,
- 1 count,attr4)
+ status = he5_swwrgattr(swid,"GLOBAL_CHAR_ATTR_1"
+ & ,HE5T_NATIVE_CHAR,count,attr4)
write(*,*) 'Status returned by he5_swwrgattr(): ',status
attr4 = "222222"
count(1) = 6
- status = he5_ehwrglatt(swfid,"GLOBAL_CHAR_ATTR_2",HE5T_NATIVE_CHAR,
- 1 count,attr4)
+ status = he5_ehwrglatt(swfid
+ & ,"GLOBAL_CHAR_ATTR_2",HE5T_NATIVE_CHAR
+ & ,count,attr4)
write(*,*) 'Status returned by he5_ehwrglatt(): ',status
c Write Local Attribute
diff --git a/samples/he5_sw_writedataF_64.f b/samples/he5_sw_writedataF_64.f
index 79e34bd..e5d74cb 100755
--- a/samples/he5_sw_writedataF_64.f
+++ b/samples/he5_sw_writedataF_64.f
@@ -162,25 +162,27 @@ c Write Global Attribute
c ----------------------
attr4 = "ABCDEFGH"
count(1) = 8
- status = he5_swwrattr(swid,"GLOBAL_CHAR_ATTR",HE5T_NATIVE_CHAR,
- 1 count,attr4)
+ status = he5_swwrattr(swid,"GLOBAL_CHAR_ATTR"
+ & ,HE5T_NATIVE_CHAR,count,attr4)
attr4 = "111"
count(1) = 3
- status = he5_swwrgattr(swid,"GLOBAL_CHAR_ATTR_1",HE5T_NATIVE_CHAR,
- 1 count,attr4)
+ status = he5_swwrgattr(swid,"GLOBAL_CHAR_ATTR_1"
+ & ,HE5T_NATIVE_CHAR,count,attr4)
attr4 = "222222"
count(1) = 6
- status = he5_ehwrglatt(swfid,"GLOBAL_CHAR_ATTR_2",HE5T_NATIVE_CHAR,
- 1 count,attr4)
+ status = he5_ehwrglatt(swfid
+ & ,"GLOBAL_CHAR_ATTR_2",HE5T_NATIVE_CHAR
+ & ,count,attr4)
c Write Local Attribute
c ---------------------
attr5 = "abababababababababab"
count(1) = 20
- status = he5_swwrlattr(swid,"Density","LocalAttribute_0",
- 1 HE5T_NATIVE_CHAR,count,attr5)
+ status = he5_swwrlattr(swid,"Density"
+ & ,"LocalAttribute_0",HE5T_NATIVE_CHAR,count
+ & ,attr5)
endif
--
2.10.0

View File

@ -0,0 +1,55 @@
Don't build/install/use bundled gctp code/headers.
* cproj.h, proj.h: part of GCTP, therefore already present.
* HE5_config.h, tutils.h: used for library building and testing.
diff --git a/Makefile.in b/Makefile.in
index f160d0d..367b537 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -206,7 +206,7 @@ LIBGCTP = $(top_builddir)/gctp/src/libGctp.la
@TESTDRIVERS_CONDITIONAL_TRUE@TESTDRIVERS = testdrivers
@INSTALL_INCLUDE_CONDITIONAL_FALSE@INCLUDE =
@INSTALL_INCLUDE_CONDITIONAL_TRUE@INCLUDE = include
-SUBDIRS = gctp src $(INCLUDE) samples $(TESTDRIVERS)
+SUBDIRS = src $(INCLUDE) samples $(TESTDRIVERS)
all: all-recursive
.SUFFIXES:
diff --git a/samples/Makefile.in b/samples/Makefile.in
index 59331dd..64fda89 100644
--- a/samples/Makefile.in
+++ b/samples/Makefile.in
@@ -206,7 +206,6 @@ he5_gd_datainfo_SOURCES = he5_gd_datainfo.c
he5_gd_datainfo_OBJECTS = he5_gd_datainfo.$(OBJEXT)
he5_gd_datainfo_LDADD = $(LDADD)
am__DEPENDENCIES_1 = $(top_builddir)/src/libhe5_hdfeos.la
-am__DEPENDENCIES_2 = $(top_builddir)/gctp/src/libGctp.la
he5_gd_datainfo_DEPENDENCIES = $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_2)
he5_gd_defexternalfld_SOURCES = he5_gd_defexternalfld.c
@@ -1093,7 +1092,7 @@ sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
LIBHDFEOS5 = $(top_builddir)/src/libhe5_hdfeos.la
-LIBGCTP = $(top_builddir)/gctp/src/libGctp.la
+LIBGCTP =
# Boilerplate definitions file
diff --git a/include/Makefile.in b/include/Makefile.in
index a572128..64dabb5 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -190,8 +190,7 @@ LIBGCTP = $(top_builddir)/gctp/src/libGctp.la
# Boilerplate include
# Headers to install
-include_HEADERS = HE5_GctpFunc.h HE5_HdfEosDef.h HE5_config.h cproj.h ease.h \
- isin.h proj.h tutils.h cfortHdf.h
+include_HEADERS = HE5_GctpFunc.h HE5_HdfEosDef.h ease.h isin.h cfortHdf.h
all: HE5_config.h
$(MAKE) $(AM_MAKEFLAGS) all-am
--
2.10.0

View File

@ -1,62 +0,0 @@
changeset: 312039:4290826b078c
user: Timothy Nikkel <tnikkel@gmail.com>
Date: Fri May 13 06:09:38 2016 +0200
summary: Bug 1261230. r=mats, a=ritu
diff -r 45a59425b498 -r 4290826b078c layout/generic/nsSubDocumentFrame.cpp
--- a/layout/generic/nsSubDocumentFrame.cpp Tue May 10 14:12:20 2016 +0200
+++ b/layout/generic/nsSubDocumentFrame.cpp Fri May 13 06:09:38 2016 +0200
@@ -132,6 +132,7 @@
nsCOMPtr<nsIDocument> oldContainerDoc;
nsView* detachedViews =
frameloader->GetDetachedSubdocView(getter_AddRefs(oldContainerDoc));
+ frameloader->SetDetachedSubdocView(nullptr, nullptr);
if (detachedViews) {
if (oldContainerDoc == aContent->OwnerDoc()) {
// Restore stashed presentation.
@@ -142,7 +143,6 @@
frameloader->Hide();
}
}
- frameloader->SetDetachedSubdocView(nullptr, nullptr);
}
nsContentUtils::AddScriptRunner(new AsyncFrameInit(this));
@@ -936,13 +936,16 @@
if (!mPresShell->IsDestroying()) {
mPresShell->FlushPendingNotifications(Flush_Frames);
}
+
+ // Either the frame has been constructed by now, or it never will be,
+ // either way we want to clear the stashed views.
+ mFrameLoader->SetDetachedSubdocView(nullptr, nullptr);
+
nsSubDocumentFrame* frame = do_QueryFrame(mFrameElement->GetPrimaryFrame());
if ((!frame && mHideViewerIfFrameless) ||
mPresShell->IsDestroying()) {
// Either the frame element has no nsIFrame or the presshell is being
- // destroyed. Hide the nsFrameLoader, which destroys the presentation,
- // and clear our references to the stashed presentation.
- mFrameLoader->SetDetachedSubdocView(nullptr, nullptr);
+ // destroyed. Hide the nsFrameLoader, which destroys the presentation.
mFrameLoader->Hide();
}
return NS_OK;
@@ -968,7 +971,7 @@
// Detach the subdocument's views and stash them in the frame loader.
// We can then reattach them if we're being reframed (for example if
// the frame has been made position:fixed).
- nsFrameLoader* frameloader = FrameLoader();
+ RefPtr<nsFrameLoader> frameloader = FrameLoader();
if (frameloader) {
nsView* detachedViews = ::BeginSwapDocShellsForViews(mInnerView->GetFirstChild());
frameloader->SetDetachedSubdocView(detachedViews, mContent->OwnerDoc());
@@ -977,7 +980,7 @@
// safely determine whether the frame is being reframed or destroyed.
nsContentUtils::AddScriptRunner(
new nsHideViewer(mContent,
- mFrameLoader,
+ frameloader,
PresContext()->PresShell(),
(mDidCreateDoc || mCallingShow)));
}

View File

@ -1,29 +0,0 @@
changeset: 312044:09418166fd77
user: Jon Coppeard <jcoppeard@mozilla.com>
Date: Wed May 11 10:14:45 2016 +0100
summary: Bug 1264575 - Add missing pre-barrier in Ion r=jandem a=ritu
diff -r 9cc65cca1f71 -r 09418166fd77 js/src/jit-test/tests/self-hosting/bug1264575.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/js/src/jit-test/tests/self-hosting/bug1264575.js Wed May 11 10:14:45 2016 +0100
@@ -0,0 +1,7 @@
+function f(x, [y]) {}
+f(0, []);
+// jsfunfuzz-generated
+let i = 0;
+for (var z of [0, 0, 0]) {
+ verifyprebarriers();
+}
diff -r 9cc65cca1f71 -r 09418166fd77 js/src/jit/MCallOptimize.cpp
--- a/js/src/jit/MCallOptimize.cpp Mon May 16 15:11:24 2016 -0400
+++ b/js/src/jit/MCallOptimize.cpp Wed May 11 10:14:45 2016 +0100
@@ -2263,7 +2263,8 @@
callInfo.setImplicitlyUsedUnchecked();
- MStoreFixedSlot* store = MStoreFixedSlot::New(alloc(), callInfo.getArg(0), slot, callInfo.getArg(2));
+ MStoreFixedSlot* store =
+ MStoreFixedSlot::NewBarriered(alloc(), callInfo.getArg(0), slot, callInfo.getArg(2));
current->add(store);
current->push(store);

View File

@ -1,18 +0,0 @@
changeset: 312051:9ec3d076fbee
parents: 312049:e0a272d5e162
user: Eric Faust <efaustbmo@gmail.com>
Date: Wed May 04 15:54:43 2016 -0700
summary: Bug 1269729 - Handle another OOM case on ARM. (r=jolesen) a=ritu
diff -r e0a272d5e162 -r 9ec3d076fbee js/src/jit/arm/CodeGenerator-arm.cpp
--- a/js/src/jit/arm/CodeGenerator-arm.cpp Tue May 17 08:26:37 2016 -0400
+++ b/js/src/jit/arm/CodeGenerator-arm.cpp Wed May 04 15:54:43 2016 -0700
@@ -1116,7 +1116,7 @@
for (int32_t i = 0; i < cases; i++) {
CodeLabel cl;
masm.writeCodePointer(cl.dest());
- ool->addCodeLabel(cl);
+ masm.propagateOOM(ool->addCodeLabel(cl));
}
addOutOfLineCode(ool, mir);
}

View File

@ -1,61 +0,0 @@
changeset: 312055:b74f1ab939d2
user: Olli Pettay <Olli.Pettay@helsinki.fi>
Date: Mon May 16 21:42:24 2016 +0300
summary: Bug 1273202, make sure to not keep objects alive too long because of some useless event dispatching, r=jwatt a=ritu
diff -r 072992bf176d -r b74f1ab939d2 dom/html/HTMLInputElement.cpp
--- a/dom/html/HTMLInputElement.cpp Sun May 15 17:03:06 2016 +0300
+++ b/dom/html/HTMLInputElement.cpp Mon May 16 21:42:24 2016 +0300
@@ -1168,7 +1168,7 @@
mFileList->Disconnect();
}
if (mNumberControlSpinnerIsSpinning) {
- StopNumberControlSpinnerSpin();
+ StopNumberControlSpinnerSpin(eDisallowDispatchingEvents);
}
DestroyImageLoadingContent();
FreeData();
@@ -3721,7 +3721,7 @@
}
void
-HTMLInputElement::StopNumberControlSpinnerSpin()
+HTMLInputElement::StopNumberControlSpinnerSpin(SpinnerStopState aState)
{
if (mNumberControlSpinnerIsSpinning) {
if (nsIPresShell::GetCapturingContent() == this) {
@@ -3732,11 +3732,16 @@
mNumberControlSpinnerIsSpinning = false;
- FireChangeEventIfNeeded();
+ if (aState == eAllowDispatchingEvents) {
+ FireChangeEventIfNeeded();
+ }
nsNumberControlFrame* numberControlFrame =
do_QueryFrame(GetPrimaryFrame());
if (numberControlFrame) {
+ MOZ_ASSERT(aState == eAllowDispatchingEvents,
+ "Shouldn't have primary frame for the element when we're not "
+ "allowed to dispatch events to it anymore.");
numberControlFrame->SpinnerStateChanged();
}
}
diff -r 072992bf176d -r b74f1ab939d2 dom/html/HTMLInputElement.h
--- a/dom/html/HTMLInputElement.h Sun May 15 17:03:06 2016 +0300
+++ b/dom/html/HTMLInputElement.h Mon May 16 21:42:24 2016 +0300
@@ -721,7 +721,12 @@
HTMLInputElement* GetOwnerNumberControl();
void StartNumberControlSpinnerSpin();
- void StopNumberControlSpinnerSpin();
+ enum SpinnerStopState {
+ eAllowDispatchingEvents,
+ eDisallowDispatchingEvents
+ };
+ void StopNumberControlSpinnerSpin(SpinnerStopState aState =
+ eAllowDispatchingEvents);
void StepNumberControlForUserEvent(int32_t aDirection);
/**

View File

@ -1,266 +0,0 @@
changeset: 312063:88bea96c802a
user: Andrea Marchesini <amarchesini@mozilla.com>
Date: Tue May 10 10:52:19 2016 +0200
summary: Bug 1267130 - Improve the URL segment calculation, r=valentin a=ritu
diff -r 28dcecced055 -r 88bea96c802a netwerk/base/nsStandardURL.cpp
--- a/netwerk/base/nsStandardURL.cpp Wed May 18 11:55:29 2016 +1200
+++ b/netwerk/base/nsStandardURL.cpp Tue May 10 10:52:19 2016 +0200
@@ -475,19 +475,28 @@
}
uint32_t
-nsStandardURL::AppendSegmentToBuf(char *buf, uint32_t i, const char *str, URLSegment &seg, const nsCString *escapedStr, bool useEscaped)
+nsStandardURL::AppendSegmentToBuf(char *buf, uint32_t i, const char *str,
+ const URLSegment &segInput, URLSegment &segOutput,
+ const nsCString *escapedStr,
+ bool useEscaped, int32_t *diff)
{
- if (seg.mLen > 0) {
+ MOZ_ASSERT(segInput.mLen == segOutput.mLen);
+
+ if (diff) *diff = 0;
+
+ if (segInput.mLen > 0) {
if (useEscaped) {
- seg.mLen = escapedStr->Length();
- memcpy(buf + i, escapedStr->get(), seg.mLen);
+ MOZ_ASSERT(diff);
+ segOutput.mLen = escapedStr->Length();
+ *diff = segOutput.mLen - segInput.mLen;
+ memcpy(buf + i, escapedStr->get(), segOutput.mLen);
+ } else {
+ memcpy(buf + i, str + segInput.mPos, segInput.mLen);
}
- else
- memcpy(buf + i, str + seg.mPos, seg.mLen);
- seg.mPos = i;
- i += seg.mLen;
+ segOutput.mPos = i;
+ i += segOutput.mLen;
} else {
- seg.mPos = i;
+ segOutput.mPos = i;
}
return i;
}
@@ -598,6 +607,20 @@
}
}
+ // We must take a copy of every single segment because they are pointing to
+ // the |spec| while we are changing their value, in case we must use
+ // encoded strings.
+ URLSegment username(mUsername);
+ URLSegment password(mPassword);
+ URLSegment host(mHost);
+ URLSegment path(mPath);
+ URLSegment filepath(mFilepath);
+ URLSegment directory(mDirectory);
+ URLSegment basename(mBasename);
+ URLSegment extension(mExtension);
+ URLSegment query(mQuery);
+ URLSegment ref(mRef);
+
//
// generate the normalized URL string
//
@@ -607,9 +630,10 @@
char *buf;
mSpec.BeginWriting(buf);
uint32_t i = 0;
+ int32_t diff = 0;
if (mScheme.mLen > 0) {
- i = AppendSegmentToBuf(buf, i, spec, mScheme);
+ i = AppendSegmentToBuf(buf, i, spec, mScheme, mScheme);
net_ToLowerCase(buf + mScheme.mPos, mScheme.mLen);
i = AppendToBuf(buf, i, "://", 3);
}
@@ -619,15 +643,22 @@
// append authority
if (mUsername.mLen > 0) {
- i = AppendSegmentToBuf(buf, i, spec, mUsername, &encUsername, useEncUsername);
- if (mPassword.mLen >= 0) {
+ i = AppendSegmentToBuf(buf, i, spec, username, mUsername,
+ &encUsername, useEncUsername, &diff);
+ ShiftFromPassword(diff);
+ if (password.mLen >= 0) {
buf[i++] = ':';
- i = AppendSegmentToBuf(buf, i, spec, mPassword, &encPassword, useEncPassword);
+ i = AppendSegmentToBuf(buf, i, spec, password, mPassword,
+ &encPassword, useEncPassword, &diff);
+ ShiftFromHost(diff);
}
buf[i++] = '@';
}
- if (mHost.mLen > 0) {
- i = AppendSegmentToBuf(buf, i, spec, mHost, &encHost, useEncHost);
+ if (host.mLen > 0) {
+ i = AppendSegmentToBuf(buf, i, spec, host, mHost, &encHost, useEncHost,
+ &diff);
+ ShiftFromPath(diff);
+
net_ToLowerCase(buf + mHost.mPos, mHost.mLen);
MOZ_ASSERT(mPort >= -1, "Invalid negative mPort");
if (mPort != -1 && mPort != mDefaultPort) {
@@ -652,21 +683,23 @@
}
else {
uint32_t leadingSlash = 0;
- if (spec[mPath.mPos] != '/') {
+ if (spec[path.mPos] != '/') {
LOG(("adding leading slash to path\n"));
leadingSlash = 1;
buf[i++] = '/';
// basename must exist, even if empty (bugs 113508, 429347)
if (mBasename.mLen == -1) {
- mBasename.mPos = i;
- mBasename.mLen = 0;
+ mBasename.mPos = basename.mPos = i;
+ mBasename.mLen = basename.mLen = 0;
}
}
// record corrected (file)path starting position
mPath.mPos = mFilepath.mPos = i - leadingSlash;
- i = AppendSegmentToBuf(buf, i, spec, mDirectory, &encDirectory, useEncDirectory);
+ i = AppendSegmentToBuf(buf, i, spec, directory, mDirectory,
+ &encDirectory, useEncDirectory, &diff);
+ ShiftFromBasename(diff);
// the directory must end with a '/'
if (buf[i-1] != '/') {
@@ -674,7 +707,9 @@
mDirectory.mLen++;
}
- i = AppendSegmentToBuf(buf, i, spec, mBasename, &encBasename, useEncBasename);
+ i = AppendSegmentToBuf(buf, i, spec, basename, mBasename,
+ &encBasename, useEncBasename, &diff);
+ ShiftFromExtension(diff);
// make corrections to directory segment if leadingSlash
if (leadingSlash) {
@@ -687,18 +722,24 @@
if (mExtension.mLen >= 0) {
buf[i++] = '.';
- i = AppendSegmentToBuf(buf, i, spec, mExtension, &encExtension, useEncExtension);
+ i = AppendSegmentToBuf(buf, i, spec, extension, mExtension,
+ &encExtension, useEncExtension, &diff);
+ ShiftFromQuery(diff);
}
// calculate corrected filepath length
mFilepath.mLen = i - mFilepath.mPos;
if (mQuery.mLen >= 0) {
buf[i++] = '?';
- i = AppendSegmentToBuf(buf, i, spec, mQuery, &encQuery, useEncQuery);
+ i = AppendSegmentToBuf(buf, i, spec, query, mQuery,
+ &encQuery, useEncQuery,
+ &diff);
+ ShiftFromRef(diff);
}
if (mRef.mLen >= 0) {
buf[i++] = '#';
- i = AppendSegmentToBuf(buf, i, spec, mRef, &encRef, useEncRef);
+ i = AppendSegmentToBuf(buf, i, spec, ref, mRef, &encRef, useEncRef,
+ &diff);
}
// calculate corrected path length
mPath.mLen = i - mPath.mPos;
@@ -953,6 +994,39 @@
#undef GOT_PREF
}
+#define SHIFT_FROM(name, what) \
+void \
+nsStandardURL::name(int32_t diff) \
+{ \
+ if (!diff) return; \
+ if (what.mLen >= 0) { \
+ CheckedInt<int32_t> pos = what.mPos; \
+ pos += diff; \
+ MOZ_ASSERT(pos.isValid()); \
+ what.mPos = pos.value(); \
+ }
+
+#define SHIFT_FROM_NEXT(name, what, next) \
+ SHIFT_FROM(name, what) \
+ next(diff); \
+}
+
+#define SHIFT_FROM_LAST(name, what) \
+ SHIFT_FROM(name, what) \
+}
+
+SHIFT_FROM_NEXT(ShiftFromAuthority, mAuthority, ShiftFromUsername)
+SHIFT_FROM_NEXT(ShiftFromUsername, mUsername, ShiftFromPassword)
+SHIFT_FROM_NEXT(ShiftFromPassword, mPassword, ShiftFromHost)
+SHIFT_FROM_NEXT(ShiftFromHost, mHost, ShiftFromPath)
+SHIFT_FROM_NEXT(ShiftFromPath, mPath, ShiftFromFilepath)
+SHIFT_FROM_NEXT(ShiftFromFilepath, mFilepath, ShiftFromDirectory)
+SHIFT_FROM_NEXT(ShiftFromDirectory, mDirectory, ShiftFromBasename)
+SHIFT_FROM_NEXT(ShiftFromBasename, mBasename, ShiftFromExtension)
+SHIFT_FROM_NEXT(ShiftFromExtension, mExtension, ShiftFromQuery)
+SHIFT_FROM_NEXT(ShiftFromQuery, mQuery, ShiftFromRef)
+SHIFT_FROM_LAST(ShiftFromRef, mRef)
+
//----------------------------------------------------------------------------
// nsStandardURL::nsISupports
//----------------------------------------------------------------------------
diff -r 28dcecced055 -r 88bea96c802a netwerk/base/nsStandardURL.h
--- a/netwerk/base/nsStandardURL.h Wed May 18 11:55:29 2016 +1200
+++ b/netwerk/base/nsStandardURL.h Tue May 10 10:52:19 2016 +0200
@@ -77,6 +77,7 @@
URLSegment() : mPos(0), mLen(-1) {}
URLSegment(uint32_t pos, int32_t len) : mPos(pos), mLen(len) {}
+ URLSegment(const URLSegment& aCopy) : mPos(aCopy.mPos), mLen(aCopy.mLen) {}
void Reset() { mPos = 0; mLen = -1; }
// Merge another segment following this one to it if they're contiguous
// Assumes we have something like "foo;bar" where this object is 'foo' and right
@@ -177,7 +178,10 @@
bool NormalizeIDN(const nsCSubstring &host, nsCString &result);
void CoalescePath(netCoalesceFlags coalesceFlag, char *path);
- uint32_t AppendSegmentToBuf(char *, uint32_t, const char *, URLSegment &, const nsCString *esc=nullptr, bool useEsc = false);
+ uint32_t AppendSegmentToBuf(char *, uint32_t, const char *,
+ const URLSegment &input, URLSegment &output,
+ const nsCString *esc=nullptr,
+ bool useEsc = false, int32_t* diff = nullptr);
uint32_t AppendToBuf(char *, uint32_t, const char *, uint32_t);
nsresult BuildNormalizedSpec(const char *spec);
@@ -216,17 +220,17 @@
const nsDependentCSubstring Ref() { return Segment(mRef); }
// shift the URLSegments to the right by diff
- void ShiftFromAuthority(int32_t diff) { mAuthority.mPos += diff; ShiftFromUsername(diff); }
- void ShiftFromUsername(int32_t diff) { mUsername.mPos += diff; ShiftFromPassword(diff); }
- void ShiftFromPassword(int32_t diff) { mPassword.mPos += diff; ShiftFromHost(diff); }
- void ShiftFromHost(int32_t diff) { mHost.mPos += diff; ShiftFromPath(diff); }
- void ShiftFromPath(int32_t diff) { mPath.mPos += diff; ShiftFromFilepath(diff); }
- void ShiftFromFilepath(int32_t diff) { mFilepath.mPos += diff; ShiftFromDirectory(diff); }
- void ShiftFromDirectory(int32_t diff) { mDirectory.mPos += diff; ShiftFromBasename(diff); }
- void ShiftFromBasename(int32_t diff) { mBasename.mPos += diff; ShiftFromExtension(diff); }
- void ShiftFromExtension(int32_t diff) { mExtension.mPos += diff; ShiftFromQuery(diff); }
- void ShiftFromQuery(int32_t diff) { mQuery.mPos += diff; ShiftFromRef(diff); }
- void ShiftFromRef(int32_t diff) { mRef.mPos += diff; }
+ void ShiftFromAuthority(int32_t diff);
+ void ShiftFromUsername(int32_t diff);
+ void ShiftFromPassword(int32_t diff);
+ void ShiftFromHost(int32_t diff);
+ void ShiftFromPath(int32_t diff);
+ void ShiftFromFilepath(int32_t diff);
+ void ShiftFromDirectory(int32_t diff);
+ void ShiftFromBasename(int32_t diff);
+ void ShiftFromExtension(int32_t diff);
+ void ShiftFromQuery(int32_t diff);
+ void ShiftFromRef(int32_t diff);
// fastload helper functions
nsresult ReadSegment(nsIBinaryInputStream *, URLSegment &);

View File

@ -1,17 +0,0 @@
changeset: 312067:380ddd689680
user: Timothy Nikkel <tnikkel@gmail.com>
Date: Tue May 10 22:58:26 2016 -0500
summary: Bug 1261752. Part 1. r=mats a=ritu
diff -r 02df988a56ae -r 380ddd689680 view/nsViewManager.cpp
--- a/view/nsViewManager.cpp Thu May 26 10:06:15 2016 -0700
+++ b/view/nsViewManager.cpp Tue May 10 22:58:26 2016 -0500
@@ -416,7 +416,7 @@
if (aWidget->NeedsPaint()) {
// If an ancestor widget was hidden and then shown, we could
// have a delayed resize to handle.
- for (nsViewManager *vm = this; vm;
+ for (RefPtr<nsViewManager> vm = this; vm;
vm = vm->mRootView->GetParent()
? vm->mRootView->GetParent()->GetViewManager()
: nullptr) {

View File

@ -1,33 +0,0 @@
changeset: 312068:73cc9a2d8fc1
user: Timothy Nikkel <tnikkel@gmail.com>
Date: Tue May 10 22:58:47 2016 -0500
summary: Bug 1261752. Part 2. r=mats a=ritu
diff -r 380ddd689680 -r 73cc9a2d8fc1 view/nsViewManager.cpp
--- a/view/nsViewManager.cpp Tue May 10 22:58:26 2016 -0500
+++ b/view/nsViewManager.cpp Tue May 10 22:58:47 2016 -0500
@@ -372,7 +372,7 @@
}
}
if (rootShell->GetViewManager() != this) {
- return; // 'this' might have been destroyed
+ return; // presentation might have been torn down
}
if (aFlushDirtyRegion) {
nsAutoScriptBlocker scriptBlocker;
@@ -1069,6 +1069,7 @@
if (mPresShell) {
mPresShell->GetPresContext()->RefreshDriver()->RevokeViewManagerFlush();
+ RefPtr<nsViewManager> strongThis(this);
CallWillPaintOnObservers();
ProcessPendingUpdatesForView(mRootView, true);
@@ -1085,6 +1086,7 @@
if (mHasPendingWidgetGeometryChanges) {
mHasPendingWidgetGeometryChanges = false;
+ RefPtr<nsViewManager> strongThis(this);
ProcessPendingUpdatesForView(mRootView, false);
}
}

View File

@ -1,267 +0,0 @@
changeset: 312069:3c2bd9158ad3
user: Timothy Nikkel <tnikkel@gmail.com>
Date: Tue May 10 22:58:47 2016 -0500
summary: Bug 1261752. Part 3. r=mats a=ritu
diff -r 73cc9a2d8fc1 -r 3c2bd9158ad3 layout/forms/nsComboboxControlFrame.cpp
--- a/layout/forms/nsComboboxControlFrame.cpp Tue May 10 22:58:47 2016 -0500
+++ b/layout/forms/nsComboboxControlFrame.cpp Tue May 10 22:58:47 2016 -0500
@@ -1417,7 +1417,11 @@
// The popup's visibility doesn't update until the minimize animation has
// finished, so call UpdateWidgetGeometry to update it right away.
nsViewManager* viewManager = mDropdownFrame->GetView()->GetViewManager();
- viewManager->UpdateWidgetGeometry();
+ viewManager->UpdateWidgetGeometry(); // might destroy us
+ }
+
+ if (!weakFrame.IsAlive()) {
+ return consume;
}
return consume;
diff -r 73cc9a2d8fc1 -r 3c2bd9158ad3 view/nsViewManager.cpp
--- a/view/nsViewManager.cpp Tue May 10 22:58:47 2016 -0500
+++ b/view/nsViewManager.cpp Tue May 10 22:58:47 2016 -0500
@@ -670,15 +670,16 @@
void nsViewManager::WillPaintWindow(nsIWidget* aWidget)
{
- if (aWidget) {
- nsView* view = nsView::GetViewFor(aWidget);
- LayerManager *manager = aWidget->GetLayerManager();
+ RefPtr<nsIWidget> widget(aWidget);
+ if (widget) {
+ nsView* view = nsView::GetViewFor(widget);
+ LayerManager* manager = widget->GetLayerManager();
if (view &&
(view->ForcedRepaint() || !manager->NeedsWidgetInvalidation())) {
ProcessPendingUpdates();
// Re-get the view pointer here since the ProcessPendingUpdates might have
// destroyed it during CallWillPaintOnObservers.
- view = nsView::GetViewFor(aWidget);
+ view = nsView::GetViewFor(widget);
if (view) {
view->SetForcedRepaint(false);
}
diff -r 73cc9a2d8fc1 -r 3c2bd9158ad3 widget/PuppetWidget.cpp
--- a/widget/PuppetWidget.cpp Tue May 10 22:58:47 2016 -0500
+++ b/widget/PuppetWidget.cpp Tue May 10 22:58:47 2016 -0500
@@ -823,6 +823,8 @@
mDirtyRegion.SetEmpty();
mPaintTask.Revoke();
+ RefPtr<PuppetWidget> strongThis(this);
+
mAttachedWidgetListener->WillPaintWindow(this);
if (mAttachedWidgetListener) {
diff -r 73cc9a2d8fc1 -r 3c2bd9158ad3 widget/cocoa/nsChildView.mm
--- a/widget/cocoa/nsChildView.mm Tue May 10 22:58:47 2016 -0500
+++ b/widget/cocoa/nsChildView.mm Tue May 10 22:58:47 2016 -0500
@@ -3716,6 +3716,8 @@
- (void)viewWillDraw
{
+ nsAutoRetainCocoaObject kungFuDeathGrip(self);
+
if (mGeckoChild) {
// The OS normally *will* draw our NSWindow, no matter what we do here.
// But Gecko can delete our parent widget(s) (along with mGeckoChild)
diff -r 73cc9a2d8fc1 -r 3c2bd9158ad3 widget/gonk/nsWindow.cpp
--- a/widget/gonk/nsWindow.cpp Tue May 10 22:58:47 2016 -0500
+++ b/widget/gonk/nsWindow.cpp Tue May 10 22:58:47 2016 -0500
@@ -196,7 +196,7 @@
return;
}
- nsWindow *targetWindow = (nsWindow *)sTopWindows[0];
+ RefPtr<nsWindow> targetWindow = (nsWindow *)sTopWindows[0];
while (targetWindow->GetLastChild())
targetWindow = (nsWindow *)targetWindow->GetLastChild();
@@ -205,15 +205,15 @@
listener->WillPaintWindow(targetWindow);
}
- LayerManager* lm = targetWindow->GetLayerManager();
- if (mozilla::layers::LayersBackend::LAYERS_CLIENT == lm->GetBackendType()) {
- // No need to do anything, the compositor will handle drawing
- } else {
- NS_RUNTIMEABORT("Unexpected layer manager type");
- }
-
listener = targetWindow->GetWidgetListener();
if (listener) {
+ LayerManager* lm = targetWindow->GetLayerManager();
+ if (mozilla::layers::LayersBackend::LAYERS_CLIENT == lm->GetBackendType()) {
+ // No need to do anything, the compositor will handle drawing
+ } else {
+ NS_RUNTIMEABORT("Unexpected layer manager type");
+ }
+
listener->DidPaintWindow();
}
}
diff -r 73cc9a2d8fc1 -r 3c2bd9158ad3 widget/gtk/nsWindow.cpp
--- a/widget/gtk/nsWindow.cpp Tue May 10 22:58:47 2016 -0500
+++ b/widget/gtk/nsWindow.cpp Tue May 10 22:58:47 2016 -0500
@@ -469,6 +469,12 @@
}
}
+nsIWidgetListener*
+nsWindow::GetListener()
+{
+ return mAttachedWidgetListener ? mAttachedWidgetListener : mWidgetListener;
+}
+
nsresult
nsWindow::DispatchEvent(WidgetGUIEvent* aEvent, nsEventStatus& aStatus)
{
@@ -481,8 +487,7 @@
aEvent->refPoint.y = GdkCoordToDevicePixels(aEvent->refPoint.y);
aStatus = nsEventStatus_eIgnore;
- nsIWidgetListener* listener =
- mAttachedWidgetListener ? mAttachedWidgetListener : mWidgetListener;
+ nsIWidgetListener* listener = GetListener();
if (listener) {
aStatus = listener->HandleEvent(aEvent, mUseAttachedEvents);
}
@@ -2119,8 +2124,7 @@
if (!mGdkWindow || mIsFullyObscured || !mHasMappedToplevel)
return FALSE;
- nsIWidgetListener *listener =
- mAttachedWidgetListener ? mAttachedWidgetListener : mWidgetListener;
+ nsIWidgetListener *listener = GetListener();
if (!listener)
return FALSE;
@@ -2149,6 +2153,8 @@
clientLayers->SendInvalidRegion(region);
}
+ RefPtr<nsWindow> strongThis(this);
+
// Dispatch WillPaintWindow notification to allow scripts etc. to run
// before we paint
{
@@ -2161,8 +2167,7 @@
// Re-get the listener since the will paint notification might have
// killed it.
- listener =
- mAttachedWidgetListener ? mAttachedWidgetListener : mWidgetListener;
+ listener = GetListener();
if (!listener)
return FALSE;
}
@@ -2223,6 +2228,13 @@
// If this widget uses OMTC...
if (GetLayerManager()->GetBackendType() == LayersBackend::LAYERS_CLIENT) {
listener->PaintWindow(this, region);
+
+ // Re-get the listener since the will paint notification might have
+ // killed it.
+ listener = GetListener();
+ if (!listener)
+ return TRUE;
+
listener->DidPaintWindow();
return TRUE;
}
@@ -2307,6 +2319,13 @@
if (GetLayerManager()->GetBackendType() == LayersBackend::LAYERS_BASIC) {
AutoLayerManagerSetup setupLayerManager(this, ctx, layerBuffering);
painted = listener->PaintWindow(this, region);
+
+ // Re-get the listener since the will paint notification might have
+ // killed it.
+ listener = GetListener();
+ if (!listener)
+ return TRUE;
+
}
}
diff -r 73cc9a2d8fc1 -r 3c2bd9158ad3 widget/gtk/nsWindow.h
--- a/widget/gtk/nsWindow.h Tue May 10 22:58:47 2016 -0500
+++ b/widget/gtk/nsWindow.h Tue May 10 22:58:47 2016 -0500
@@ -359,6 +359,7 @@
GdkWindow** aWindow, gint* aButton,
gint* aRootX, gint* aRootY);
void ClearCachedResources();
+ nsIWidgetListener* GetListener();
GtkWidget *mShell;
MozContainer *mContainer;
diff -r 73cc9a2d8fc1 -r 3c2bd9158ad3 widget/qt/nsWindow.cpp
--- a/widget/qt/nsWindow.cpp Tue May 10 22:58:47 2016 -0500
+++ b/widget/qt/nsWindow.cpp Tue May 10 22:58:47 2016 -0500
@@ -857,18 +857,28 @@
// EVENTS
+nsIWidgetListener*
+nsWindow::GetPaintListener()
+{
+ return mAttachedWidgetListener ? mAttachedWidgetListener : mWidgetListener;
+}
+
void
nsWindow::OnPaint()
{
LOGDRAW(("nsWindow::%s [%p]\n", __FUNCTION__, (void *)this));
- nsIWidgetListener* listener =
- mAttachedWidgetListener ? mAttachedWidgetListener : mWidgetListener;
+ nsIWidgetListener* listener = GetPaintListener();
if (!listener) {
return;
}
listener->WillPaintWindow(this);
+ nsIWidgetListener* listener = GetPaintListener();
+ if (!listener) {
+ return;
+ }
+
switch (GetLayerManager()->GetBackendType()) {
case mozilla::layers::LayersBackend::LAYERS_CLIENT: {
nsIntRegion region(nsIntRect(0, 0, mWidget->width(), mWidget->height()));
@@ -879,6 +889,11 @@
NS_ERROR("Invalid layer manager");
}
+ nsIWidgetListener* listener = GetPaintListener();
+ if (!listener) {
+ return;
+ }
+
listener->DidPaintWindow();
}
diff -r 73cc9a2d8fc1 -r 3c2bd9158ad3 widget/qt/nsWindow.h
--- a/widget/qt/nsWindow.h Tue May 10 22:58:47 2016 -0500
+++ b/widget/qt/nsWindow.h Tue May 10 22:58:47 2016 -0500
@@ -254,6 +254,7 @@
bool needDispatch;
} MozCachedMoveEvent;
+ nsIWidgetListener* GetPaintListener();
bool CheckForRollup(double aMouseX, double aMouseY, bool aIsWheel);
void* SetupPluginPort(void);
nsresult SetWindowIconList(const nsTArray<nsCString> &aIconList);
diff -r 73cc9a2d8fc1 -r 3c2bd9158ad3 widget/windows/nsWindowGfx.cpp
--- a/widget/windows/nsWindowGfx.cpp Tue May 10 22:58:47 2016 -0500
+++ b/widget/windows/nsWindowGfx.cpp Tue May 10 22:58:47 2016 -0500
@@ -298,6 +298,8 @@
clientLayerManager->SendInvalidRegion(region);
}
+ RefPtr<nsWindow> strongThis(this);
+
nsIWidgetListener* listener = GetPaintListener();
if (listener) {
listener->WillPaintWindow(this);

View File

@ -1,188 +0,0 @@
changeset: 312075:ee870911fabb
user: Timothy Nikkel <tnikkel@gmail.com>
Date: Wed May 04 16:12:48 2016 -0500
summary: Bug 1265577. r=mats, a=lizzard
diff -r 751208d22b91 -r ee870911fabb dom/base/nsFrameLoader.cpp
--- a/dom/base/nsFrameLoader.cpp Thu May 26 17:07:49 2016 -0400
+++ b/dom/base/nsFrameLoader.cpp Wed May 04 16:12:48 2016 -0500
@@ -155,7 +155,7 @@
nsFrameLoader::nsFrameLoader(Element* aOwner, bool aNetworkCreated)
: mOwnerContent(aOwner)
, mAppIdSentToPermissionManager(nsIScriptSecurityManager::NO_APP_ID)
- , mDetachedSubdocViews(nullptr)
+ , mDetachedSubdocFrame(nullptr)
, mIsPrerendered(false)
, mDepthTooGreat(false)
, mIsTopLevelContent(false)
@@ -2507,18 +2507,18 @@
}
void
-nsFrameLoader::SetDetachedSubdocView(nsView* aDetachedViews,
- nsIDocument* aContainerDoc)
+nsFrameLoader::SetDetachedSubdocFrame(nsIFrame* aDetachedFrame,
+ nsIDocument* aContainerDoc)
{
- mDetachedSubdocViews = aDetachedViews;
+ mDetachedSubdocFrame = aDetachedFrame;
mContainerDocWhileDetached = aContainerDoc;
}
-nsView*
-nsFrameLoader::GetDetachedSubdocView(nsIDocument** aContainerDoc) const
+nsIFrame*
+nsFrameLoader::GetDetachedSubdocFrame(nsIDocument** aContainerDoc) const
{
NS_IF_ADDREF(*aContainerDoc = mContainerDocWhileDetached);
- return mDetachedSubdocViews;
+ return mDetachedSubdocFrame.GetFrame();
}
void
diff -r 751208d22b91 -r ee870911fabb dom/base/nsFrameLoader.h
--- a/dom/base/nsFrameLoader.h Thu May 26 17:07:49 2016 -0400
+++ b/dom/base/nsFrameLoader.h Wed May 04 16:12:48 2016 -0500
@@ -23,6 +23,7 @@
#include "mozilla/Attributes.h"
#include "FrameMetrics.h"
#include "nsStubMutationObserver.h"
+#include "nsIFrame.h"
class nsIURI;
class nsSubDocumentFrame;
@@ -197,23 +198,23 @@
void SetRemoteBrowser(nsITabParent* aTabParent);
/**
- * Stashes a detached view on the frame loader. We do this when we're
+ * Stashes a detached nsIFrame on the frame loader. We do this when we're
* destroying the nsSubDocumentFrame. If the nsSubdocumentFrame is
- * being reframed we'll restore the detached view when it's recreated,
+ * being reframed we'll restore the detached nsIFrame when it's recreated,
* otherwise we'll discard the old presentation and set the detached
- * subdoc view to null. aContainerDoc is the document containing the
+ * subdoc nsIFrame to null. aContainerDoc is the document containing the
* the subdoc frame. This enables us to detect when the containing
* document has changed during reframe, so we can discard the presentation
* in that case.
*/
- void SetDetachedSubdocView(nsView* aDetachedView,
- nsIDocument* aContainerDoc);
+ void SetDetachedSubdocFrame(nsIFrame* aDetachedFrame,
+ nsIDocument* aContainerDoc);
/**
- * Retrieves the detached view and the document containing the view,
- * as set by SetDetachedSubdocView().
+ * Retrieves the detached nsIFrame and the document containing the nsIFrame,
+ * as set by SetDetachedSubdocFrame().
*/
- nsView* GetDetachedSubdocView(nsIDocument** aContainerDoc) const;
+ nsIFrame* GetDetachedSubdocFrame(nsIDocument** aContainerDoc) const;
/**
* Applies a new set of sandbox flags. These are merged with the sandbox
@@ -326,12 +327,12 @@
nsRefPtr<nsFrameMessageManager> mMessageManager;
nsCOMPtr<nsIInProcessContentFrameMessageManager> mChildMessageManager;
private:
- // Stores the root view of the subdocument while the subdocument is being
+ // Stores the root frame of the subdocument while the subdocument is being
// reframed. Used to restore the presentation after reframing.
- nsView* mDetachedSubdocViews;
+ nsWeakFrame mDetachedSubdocFrame;
// Stores the containing document of the frame corresponding to this
// frame loader. This is reference is kept valid while the subframe's
- // presentation is detached and stored in mDetachedSubdocViews. This
+ // presentation is detached and stored in mDetachedSubdocFrame. This
// enables us to detect whether the frame has moved documents during
// a reframe, so that we know not to restore the presentation.
nsCOMPtr<nsIDocument> mContainerDocWhileDetached;
diff -r 751208d22b91 -r ee870911fabb layout/generic/nsSubDocumentFrame.cpp
--- a/layout/generic/nsSubDocumentFrame.cpp Thu May 26 17:07:49 2016 -0400
+++ b/layout/generic/nsSubDocumentFrame.cpp Wed May 04 16:12:48 2016 -0500
@@ -130,13 +130,16 @@
nsRefPtr<nsFrameLoader> frameloader = FrameLoader();
if (frameloader) {
nsCOMPtr<nsIDocument> oldContainerDoc;
- nsView* detachedViews =
- frameloader->GetDetachedSubdocView(getter_AddRefs(oldContainerDoc));
- frameloader->SetDetachedSubdocView(nullptr, nullptr);
- if (detachedViews) {
- if (oldContainerDoc == aContent->OwnerDoc()) {
+ nsIFrame* detachedFrame =
+ frameloader->GetDetachedSubdocFrame(getter_AddRefs(oldContainerDoc));
+ frameloader->SetDetachedSubdocFrame(nullptr, nullptr);
+ MOZ_ASSERT(oldContainerDoc || !detachedFrame);
+ if (oldContainerDoc) {
+ nsView* detachedView =
+ detachedFrame ? detachedFrame->GetView() : nullptr;
+ if (detachedView && oldContainerDoc == aContent->OwnerDoc()) {
// Restore stashed presentation.
- ::InsertViewsInReverseOrder(detachedViews, mInnerView);
+ ::InsertViewsInReverseOrder(detachedView, mInnerView);
::EndSwapDocShellsForViews(mInnerView->GetFirstChild());
} else {
// Presentation is for a different document, don't restore it.
@@ -252,11 +255,12 @@
nsRefPtr<nsFrameLoader> frameloader = FrameLoader();
if (frameloader) {
nsCOMPtr<nsIDocument> oldContainerDoc;
- nsView* detachedViews =
- frameloader->GetDetachedSubdocView(getter_AddRefs(oldContainerDoc));
- if (detachedViews) {
- nsSize size = detachedViews->GetBounds().Size();
- nsPresContext* presContext = detachedViews->GetFrame()->PresContext();
+ nsIFrame* detachedFrame =
+ frameloader->GetDetachedSubdocFrame(getter_AddRefs(oldContainerDoc));
+ nsView* view = detachedFrame ? detachedFrame->GetView() : nullptr;
+ if (view) {
+ nsSize size = view->GetBounds().Size();
+ nsPresContext* presContext = detachedFrame->PresContext();
return nsIntSize(presContext->AppUnitsToDevPixels(size.width),
presContext->AppUnitsToDevPixels(size.height));
}
@@ -939,7 +943,7 @@
// Either the frame has been constructed by now, or it never will be,
// either way we want to clear the stashed views.
- mFrameLoader->SetDetachedSubdocView(nullptr, nullptr);
+ mFrameLoader->SetDetachedSubdocFrame(nullptr, nullptr);
nsSubDocumentFrame* frame = do_QueryFrame(mFrameElement->GetPrimaryFrame());
if ((!frame && mHideViewerIfFrameless) ||
@@ -974,15 +978,25 @@
RefPtr<nsFrameLoader> frameloader = FrameLoader();
if (frameloader) {
nsView* detachedViews = ::BeginSwapDocShellsForViews(mInnerView->GetFirstChild());
- frameloader->SetDetachedSubdocView(detachedViews, mContent->OwnerDoc());
- // We call nsFrameLoader::HideViewer() in a script runner so that we can
- // safely determine whether the frame is being reframed or destroyed.
- nsContentUtils::AddScriptRunner(
- new nsHideViewer(mContent,
- frameloader,
- PresContext()->PresShell(),
- (mDidCreateDoc || mCallingShow)));
+ if (detachedViews && detachedViews->GetFrame()) {
+ MOZ_ASSERT(mContent->OwnerDoc());
+ frameloader->SetDetachedSubdocFrame(
+ detachedViews->GetFrame(), mContent->OwnerDoc());
+
+ // We call nsFrameLoader::HideViewer() in a script runner so that we can
+ // safely determine whether the frame is being reframed or destroyed.
+ nsContentUtils::AddScriptRunner(
+ new nsHideViewer(mContent,
+ frameloader,
+ PresContext()->PresShell(),
+ (mDidCreateDoc || mCallingShow)));
+ } else {
+ frameloader->SetDetachedSubdocFrame(nullptr, nullptr);
+ if (mDidCreateDoc || mCallingShow) {
+ frameloader->Hide();
+ }
+ }
}
nsLeafFrame::DestroyFrom(aDestructRoot);

View File

@ -1,102 +0,0 @@
changeset: 312054:072992bf176d
user: Henri Sivonen <hsivonen@hsivonen.fi>
Date: Sun May 15 17:03:06 2016 +0300
summary: Bug 1270381. r=wchen. a=ritu
diff -r d30748143c21 -r 072992bf176d parser/html/javasrc/TreeBuilder.java
--- a/parser/html/javasrc/TreeBuilder.java Mon May 09 18:05:32 2016 -0700
+++ b/parser/html/javasrc/TreeBuilder.java Sun May 15 17:03:06 2016 +0300
@@ -39,6 +39,11 @@
import java.util.HashMap;
import java.util.Map;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
import nu.validator.htmlparser.annotation.Auto;
import nu.validator.htmlparser.annotation.Const;
import nu.validator.htmlparser.annotation.IdType;
@@ -54,11 +59,6 @@
import nu.validator.htmlparser.common.TokenHandler;
import nu.validator.htmlparser.common.XmlViolationPolicy;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
public abstract class TreeBuilder<T> implements TokenHandler,
TreeBuilderState<T> {
@@ -1924,7 +1924,6 @@
break starttagloop;
}
generateImpliedEndTags();
- // XXX is the next if dead code?
if (errorHandler != null && !isCurrent("table")) {
errNoCheckUnclosedElementsOnStack();
}
@@ -2183,11 +2182,11 @@
pop();
}
break;
- } else if (node.isSpecial()
+ } else if (eltPos == 0 || (node.isSpecial()
&& (node.ns != "http://www.w3.org/1999/xhtml"
- || (node.name != "p"
- && node.name != "address"
- && node.name != "div"))) {
+ || (node.name != "p"
+ && node.name != "address"
+ && node.name != "div")))) {
break;
}
eltPos--;
@@ -3878,7 +3877,7 @@
pop();
}
break endtagloop;
- } else if (node.isSpecial()) {
+ } else if (eltPos == 0 || node.isSpecial()) {
errStrayEndTag(name);
break endtagloop;
}
@@ -4745,6 +4744,7 @@
int furthestBlockPos = formattingEltStackPos + 1;
while (furthestBlockPos <= currentPtr) {
StackNode<T> node = stack[furthestBlockPos]; // weak ref
+ assert furthestBlockPos > 0: "How is formattingEltStackPos + 1 not > 0?";
if (node.isSpecial()) {
break;
}
diff -r d30748143c21 -r 072992bf176d parser/html/nsHtml5TreeBuilder.cpp
--- a/parser/html/nsHtml5TreeBuilder.cpp Mon May 09 18:05:32 2016 -0700
+++ b/parser/html/nsHtml5TreeBuilder.cpp Sun May 15 17:03:06 2016 +0300
@@ -1102,7 +1102,7 @@
pop();
}
break;
- } else if (node->isSpecial() && (node->ns != kNameSpaceID_XHTML || (node->name != nsHtml5Atoms::p && node->name != nsHtml5Atoms::address && node->name != nsHtml5Atoms::div))) {
+ } else if (!eltPos || (node->isSpecial() && (node->ns != kNameSpaceID_XHTML || (node->name != nsHtml5Atoms::p && node->name != nsHtml5Atoms::address && node->name != nsHtml5Atoms::div)))) {
break;
}
eltPos--;
@@ -2749,7 +2749,7 @@
pop();
}
NS_HTML5_BREAK(endtagloop);
- } else if (node->isSpecial()) {
+ } else if (!eltPos || node->isSpecial()) {
errStrayEndTag(name);
NS_HTML5_BREAK(endtagloop);
}
@@ -3593,6 +3593,7 @@
int32_t furthestBlockPos = formattingEltStackPos + 1;
while (furthestBlockPos <= currentPtr) {
nsHtml5StackNode* node = stack[furthestBlockPos];
+ MOZ_ASSERT(furthestBlockPos > 0, "How is formattingEltStackPos + 1 not > 0?");
if (node->isSpecial()) {
break;
}

View File

@ -1,16 +0,0 @@
changeset: 312045:7aea44059251
user: Olli Pettay <Olli.Pettay@helsinki.fi>
Date: Fri May 13 20:10:22 2016 +0300
summary: Bug 1271460, don't leak editor created element objects, r=ehsan a=ritu
diff -r 09418166fd77 -r 7aea44059251 editor/libeditor/nsHTMLInlineTableEditor.cpp
--- a/editor/libeditor/nsHTMLInlineTableEditor.cpp Wed May 11 10:14:45 2016 +0100
+++ b/editor/libeditor/nsHTMLInlineTableEditor.cpp Fri May 13 20:10:22 2016 +0300
@@ -109,7 +109,6 @@
// get the root content node.
nsCOMPtr<nsIContent> bodyContent = GetRoot();
- NS_ENSURE_TRUE(bodyContent, NS_ERROR_FAILURE);
DeleteRefToAnonymousNode(mAddColumnBeforeButton, bodyContent, ps);
mAddColumnBeforeButton = nullptr;

View File

@ -1,85 +0,0 @@
changeset: 312070:4b54feddf36c
user: JerryShih <hshih@mozilla.com>
Date: Wed May 25 16:27:41 2016 +0200
summary: Bug 1248580 - strip the uploading element num according to the uniform array size. r=jgilbert a=ritu
diff -r 3c2bd9158ad3 -r 4b54feddf36c dom/canvas/WebGLContextValidate.cpp
--- a/dom/canvas/WebGLContextValidate.cpp Tue May 10 22:58:47 2016 -0500
+++ b/dom/canvas/WebGLContextValidate.cpp Wed May 25 16:27:41 2016 +0200
@@ -1531,9 +1531,10 @@
if (!loc->ValidateArrayLength(setterElemSize, setterArraySize, this, funcName))
return false;
+ MOZ_ASSERT((size_t)loc->mActiveInfo->mElemCount > loc->mArrayIndex);
+ size_t uniformElemCount = loc->mActiveInfo->mElemCount - loc->mArrayIndex;
*out_rawLoc = loc->mLoc;
- *out_numElementsToUpload = std::min((size_t)loc->mActiveInfo->mElemCount,
- setterArraySize / setterElemSize);
+ *out_numElementsToUpload = std::min(uniformElemCount, setterArraySize / setterElemSize);
return true;
}
diff -r 3c2bd9158ad3 -r 4b54feddf36c dom/canvas/WebGLProgram.cpp
--- a/dom/canvas/WebGLProgram.cpp Tue May 10 22:58:47 2016 -0500
+++ b/dom/canvas/WebGLProgram.cpp Wed May 25 16:27:41 2016 +0200
@@ -510,8 +510,14 @@
const NS_LossyConvertUTF16toASCII userName(userName_wide);
nsDependentCString baseUserName;
- bool isArray;
- size_t arrayIndex;
+ bool isArray = false;
+ // GLES 2.0.25, Section 2.10, p35
+ // If the the uniform location is an array, then the location of the first
+ // element of that array can be retrieved by either using the name of the
+ // uniform array, or the name of the uniform array appended with "[0]".
+ // The ParseName() can't recognize this rule. So always initialize
+ // arrayIndex with 0.
+ size_t arrayIndex = 0;
if (!ParseName(userName, &baseUserName, &isArray, &arrayIndex))
return nullptr;
@@ -536,7 +542,8 @@
return nullptr;
nsRefPtr<WebGLUniformLocation> locObj = new WebGLUniformLocation(mContext, LinkInfo(),
- loc, activeInfo);
+ loc, arrayIndex,
+ activeInfo);
return locObj.forget();
}
diff -r 3c2bd9158ad3 -r 4b54feddf36c dom/canvas/WebGLUniformLocation.cpp
--- a/dom/canvas/WebGLUniformLocation.cpp Tue May 10 22:58:47 2016 -0500
+++ b/dom/canvas/WebGLUniformLocation.cpp Wed May 25 16:27:41 2016 +0200
@@ -16,10 +16,13 @@
WebGLUniformLocation::WebGLUniformLocation(WebGLContext* webgl,
const webgl::LinkedProgramInfo* linkInfo,
- GLuint loc, const WebGLActiveInfo* activeInfo)
+ GLuint loc,
+ size_t arrayIndex,
+ const WebGLActiveInfo* activeInfo)
: WebGLContextBoundObject(webgl)
, mLinkInfo(linkInfo)
, mLoc(loc)
+ , mArrayIndex(arrayIndex)
, mActiveInfo(activeInfo)
{ }
diff -r 3c2bd9158ad3 -r 4b54feddf36c dom/canvas/WebGLUniformLocation.h
--- a/dom/canvas/WebGLUniformLocation.h Tue May 10 22:58:47 2016 -0500
+++ b/dom/canvas/WebGLUniformLocation.h Wed May 25 16:27:41 2016 +0200
@@ -41,10 +41,11 @@
const WeakPtr<const webgl::LinkedProgramInfo> mLinkInfo;
const GLuint mLoc;
+ const size_t mArrayIndex;
const WebGLActiveInfo* const mActiveInfo;
WebGLUniformLocation(WebGLContext* webgl, const webgl::LinkedProgramInfo* linkInfo,
- GLuint loc, const WebGLActiveInfo* activeInfo);
+ GLuint loc, size_t arrayIndex, const WebGLActiveInfo* activeInfo);
bool ValidateForProgram(WebGLProgram* prog, WebGLContext* webgl,
const char* funcName) const;

View File

@ -1,185 +0,0 @@
changeset: 312096:dc190bd03d24
tag: FIREFOX_45_2_0esr_BUILD2
tag: FIREFOX_45_2_0esr_RELEASE
user: Jeff Gilbert <jgilbert@mozilla.com>
Date: Thu Apr 14 13:50:04 2016 -0700
summary: Bug 1224199 - Destroy SharedSurfaces before ~GLContext(). - r=jrmuizel a=lizzard
diff -r b24e1cc592ec -r dc190bd03d24 gfx/gl/GLBlitHelper.cpp
--- a/gfx/gl/GLBlitHelper.cpp Mon Mar 07 11:51:12 2016 +0000
+++ b/gfx/gl/GLBlitHelper.cpp Thu Apr 14 13:50:04 2016 -0700
@@ -172,6 +172,9 @@
GLBlitHelper::~GLBlitHelper()
{
+ if (!mGL->MakeCurrent())
+ return;
+
DeleteTexBlitProgram();
GLuint tex[] = {
diff -r b24e1cc592ec -r dc190bd03d24 gfx/gl/GLContext.cpp
--- a/gfx/gl/GLContext.cpp Mon Mar 07 11:51:12 2016 +0000
+++ b/gfx/gl/GLContext.cpp Thu Apr 14 13:50:04 2016 -0700
@@ -2079,12 +2079,13 @@
if (IsDestroyed())
return;
+ // Null these before they're naturally nulled after dtor, as we want GLContext to
+ // still be alive in *their* dtors.
+ mScreen = nullptr;
+ mBlitHelper = nullptr;
+ mReadTexImageHelper = nullptr;
+
if (MakeCurrent()) {
- DestroyScreenBuffer();
-
- mBlitHelper = nullptr;
- mReadTexImageHelper = nullptr;
-
mTexGarbageBin->GLContextTeardown();
} else {
NS_WARNING("MakeCurrent() failed during MarkDestroyed! Skipping GL object teardown.");
@@ -2328,8 +2329,6 @@
return false;
}
- DestroyScreenBuffer();
-
// This will rebind to 0 (Screen) if needed when
// it falls out of scope.
ScopedBindFramebuffer autoFB(this);
@@ -2349,12 +2348,6 @@
}
void
-GLContext::DestroyScreenBuffer()
-{
- mScreen = nullptr;
-}
-
-void
GLContext::ForceDirtyScreen()
{
ScopedBindFramebuffer autoFB(0);
diff -r b24e1cc592ec -r dc190bd03d24 gfx/gl/GLContext.h
--- a/gfx/gl/GLContext.h Mon Mar 07 11:51:12 2016 +0000
+++ b/gfx/gl/GLContext.h Thu Apr 14 13:50:04 2016 -0700
@@ -3492,8 +3492,6 @@
friend class GLScreenBuffer;
UniquePtr<GLScreenBuffer> mScreen;
- void DestroyScreenBuffer();
-
SharedSurface* mLockedSurface;
public:
diff -r b24e1cc592ec -r dc190bd03d24 gfx/gl/GLReadTexImageHelper.cpp
--- a/gfx/gl/GLReadTexImageHelper.cpp Mon Mar 07 11:51:12 2016 +0000
+++ b/gfx/gl/GLReadTexImageHelper.cpp Thu Apr 14 13:50:04 2016 -0700
@@ -31,6 +31,9 @@
GLReadTexImageHelper::~GLReadTexImageHelper()
{
+ if (!mGL->MakeCurrent())
+ return;
+
mGL->fDeleteProgram(mPrograms[0]);
mGL->fDeleteProgram(mPrograms[1]);
mGL->fDeleteProgram(mPrograms[2]);
diff -r b24e1cc592ec -r dc190bd03d24 gfx/gl/SharedSurfaceANGLE.cpp
--- a/gfx/gl/SharedSurfaceANGLE.cpp Mon Mar 07 11:51:12 2016 +0000
+++ b/gfx/gl/SharedSurfaceANGLE.cpp Thu Apr 14 13:50:04 2016 -0700
@@ -120,8 +120,10 @@
{
mEGL->fDestroySurface(Display(), mPBuffer);
+ if (!mGL->MakeCurrent())
+ return;
+
if (mFence) {
- mGL->MakeCurrent();
mGL->fDeleteFences(1, &mFence);
}
}
diff -r b24e1cc592ec -r dc190bd03d24 gfx/gl/SharedSurfaceEGL.cpp
--- a/gfx/gl/SharedSurfaceEGL.cpp Mon Mar 07 11:51:12 2016 +0000
+++ b/gfx/gl/SharedSurfaceEGL.cpp Thu Apr 14 13:50:04 2016 -0700
@@ -87,9 +87,12 @@
{
mEGL->fDestroyImage(Display(), mImage);
- mGL->MakeCurrent();
- mGL->fDeleteTextures(1, &mProdTex);
- mProdTex = 0;
+ if (mSync) {
+ // We can't call this unless we have the ext, but we will always have
+ // the ext if we have something to destroy.
+ mEGL->fDestroySync(Display(), mSync);
+ mSync = 0;
+ }
if (mConsTex) {
MOZ_ASSERT(mGarbageBin);
@@ -97,12 +100,11 @@
mConsTex = 0;
}
- if (mSync) {
- // We can't call this unless we have the ext, but we will always have
- // the ext if we have something to destroy.
- mEGL->fDestroySync(Display(), mSync);
- mSync = 0;
- }
+ if (!mGL->MakeCurrent())
+ return;
+
+ mGL->fDeleteTextures(1, &mProdTex);
+ mProdTex = 0;
}
void
diff -r b24e1cc592ec -r dc190bd03d24 gfx/gl/SharedSurfaceGralloc.cpp
--- a/gfx/gl/SharedSurfaceGralloc.cpp Mon Mar 07 11:51:12 2016 +0000
+++ b/gfx/gl/SharedSurfaceGralloc.cpp Thu Apr 14 13:50:04 2016 -0700
@@ -154,7 +154,9 @@
DEBUG_PRINT("[SharedSurface_Gralloc %p] destroyed\n", this);
- mGL->MakeCurrent();
+ if (!mGL->MakeCurrent())
+ return;
+
mGL->fDeleteTextures(1, &mProdTex);
if (mSync) {
diff -r b24e1cc592ec -r dc190bd03d24 gfx/gl/SharedSurfaceIO.cpp
--- a/gfx/gl/SharedSurfaceIO.cpp Mon Mar 07 11:51:12 2016 +0000
+++ b/gfx/gl/SharedSurfaceIO.cpp Thu Apr 14 13:50:04 2016 -0700
@@ -111,11 +111,10 @@
SharedSurface_IOSurface::~SharedSurface_IOSurface()
{
- if (mProdTex) {
- DebugOnly<bool> success = mGL->MakeCurrent();
- MOZ_ASSERT(success);
- mGL->fDeleteTextures(1, &mProdTex);
- }
+ if (!mGL->MakeCurrent())
+ return;
+
+ mGL->fDeleteTextures(1, &mProdTex);
}
////////////////////////////////////////////////////////////////////////
diff -r b24e1cc592ec -r dc190bd03d24 gfx/gl/TextureGarbageBin.cpp
--- a/gfx/gl/TextureGarbageBin.cpp Mon Mar 07 11:51:12 2016 +0000
+++ b/gfx/gl/TextureGarbageBin.cpp Thu Apr 14 13:50:04 2016 -0700
@@ -36,6 +36,7 @@
if (!mGL)
return;
+ MOZ_RELEASE_ASSERT(mGL->IsCurrent());
while (!mGarbageTextures.empty()) {
GLuint tex = mGarbageTextures.top();
mGarbageTextures.pop();

View File

@ -1,120 +0,0 @@
changeset: 312091:a3fff31b8b70
user: Xidorn Quan <quanxunzhen@gmail.com>
Date: Thu Apr 14 17:38:13 2016 +1000
summary: Bug 1261933 - Continue unlocking pointer even if the widget has gone. r=smaug a=lizzard
MozReview-Commit-ID: 1siQhemFf9O
diff -r f5e862ea4a72 -r a3fff31b8b70 dom/base/nsDocument.cpp
--- a/dom/base/nsDocument.cpp Tue May 31 18:35:26 2016 -0700
+++ b/dom/base/nsDocument.cpp Thu Apr 14 17:38:13 2016 +1000
@@ -12315,49 +12315,37 @@
bool
nsDocument::SetPointerLock(Element* aElement, int aCursorStyle)
{
- // NOTE: aElement will be nullptr when unlocking.
- nsCOMPtr<nsPIDOMWindow> window = GetWindow();
- if (!window) {
- NS_WARNING("SetPointerLock(): No Window");
- return false;
- }
-
- nsIDocShell *docShell = window->GetDocShell();
- if (!docShell) {
- NS_WARNING("SetPointerLock(): No DocShell (window already closed?)");
- return false;
- }
-
- nsRefPtr<nsPresContext> presContext;
- docShell->GetPresContext(getter_AddRefs(presContext));
- if (!presContext) {
- NS_WARNING("SetPointerLock(): Unable to get presContext in \
- domWindow->GetDocShell()->GetPresContext()");
+ MOZ_ASSERT(!aElement || aElement->OwnerDoc() == this,
+ "We should be either unlocking pointer (aElement is nullptr), "
+ "or locking pointer to an element in this document");
+#ifdef DEBUG
+ if (!aElement) {
+ nsCOMPtr<nsIDocument> pointerLockedDoc =
+ do_QueryReferent(EventStateManager::sPointerLockedDoc);
+ MOZ_ASSERT(pointerLockedDoc == this);
+ }
+#endif
+
+ nsIPresShell* shell = GetShell();
+ if (!shell) {
+ NS_WARNING("SetPointerLock(): No PresShell");
return false;
}
-
- nsCOMPtr<nsIPresShell> shell = presContext->PresShell();
- if (!shell) {
- NS_WARNING("SetPointerLock(): Unable to find presContext->PresShell()");
- return false;
- }
-
- nsIFrame* rootFrame = shell->GetRootFrame();
- if (!rootFrame) {
- NS_WARNING("SetPointerLock(): Unable to get root frame");
+ nsPresContext* presContext = shell->GetPresContext();
+ if (!presContext) {
+ NS_WARNING("SetPointerLock(): Unable to get PresContext");
return false;
}
- nsCOMPtr<nsIWidget> widget = rootFrame->GetNearestWidget();
- if (!widget) {
- NS_WARNING("SetPointerLock(): Unable to find widget in \
- shell->GetRootFrame()->GetNearestWidget();");
- return false;
- }
-
- if (aElement && (aElement->OwnerDoc() != this)) {
- NS_WARNING("SetPointerLock(): Element not in this document.");
- return false;
+ nsCOMPtr<nsIWidget> widget;
+ nsIFrame* rootFrame = shell->GetRootFrame();
+ if (!NS_WARN_IF(!rootFrame)) {
+ widget = rootFrame->GetNearestWidget();
+ NS_WARN_IF_FALSE(widget, "SetPointerLock(): Unable to find widget "
+ "in shell->GetRootFrame()->GetNearestWidget();");
+ if (aElement && !widget) {
+ return false;
+ }
}
// Hide the cursor and set pointer lock for future mouse events
diff -r f5e862ea4a72 -r a3fff31b8b70 dom/events/EventStateManager.cpp
--- a/dom/events/EventStateManager.cpp Tue May 31 18:35:26 2016 -0700
+++ b/dom/events/EventStateManager.cpp Thu Apr 14 17:38:13 2016 +1000
@@ -4128,10 +4128,6 @@
// NOTE: aElement will be nullptr when unlocking.
sIsPointerLocked = !!aElement;
- if (!aWidget) {
- return;
- }
-
// Reset mouse wheel transaction
WheelTransaction::EndTransaction();
@@ -4140,6 +4136,8 @@
do_GetService("@mozilla.org/widget/dragservice;1");
if (sIsPointerLocked) {
+ MOZ_ASSERT(aWidget, "Locking pointer requires a widget");
+
// Store the last known ref point so we can reposition the pointer after unlock.
mPreLockPoint = sLastRefPoint;
@@ -4164,7 +4162,9 @@
// pre-pointerlock position, so that the synthetic mouse event reports
// no movement.
sLastRefPoint = mPreLockPoint;
- aWidget->SynthesizeNativeMouseMove(mPreLockPoint + aWidget->WidgetToScreenOffset());
+ if (aWidget) {
+ aWidget->SynthesizeNativeMouseMove(mPreLockPoint + aWidget->WidgetToScreenOffset());
+ }
// Don't retarget events to this element any more.
nsIPresShell::SetCapturingContent(nullptr, CAPTURE_POINTERLOCK);

View File

@ -1,35 +0,0 @@
Do not use headers from bundled libraries.
--- icecat-38.3.0/xpcom/build/moz.build.orig 2015-10-12 19:33:43.000000000 -0400
+++ icecat-38.3.0/xpcom/build/moz.build 2015-10-13 16:37:28.693224858 -0400
@@ -92,10 +92,5 @@
'/docshell/base',
]
-if CONFIG['MOZ_VPX']:
- LOCAL_INCLUDES += [
- '/media/libvpx',
- ]
-
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
CXXFLAGS += CONFIG['TK_CFLAGS']
--- icecat-38.3.0/storage/src/moz.build.orig 2015-10-12 19:34:45.000000000 -0400
+++ icecat-38.3.0/storage/src/moz.build 2015-10-13 18:48:26.584724518 -0400
@@ -66,7 +66,6 @@
DEFINES['SQLITE_MAX_LIKE_PATTERN_LENGTH'] = 50000
LOCAL_INCLUDES += [
- '/db/sqlite3/src',
'/dom/base',
]
--- icecat-38.3.0/dom/indexedDB/moz.build.orig 2015-10-12 19:35:00.000000000 -0400
+++ icecat-38.3.0/dom/indexedDB/moz.build 2015-10-13 19:10:10.528756487 -0400
@@ -91,7 +91,6 @@
FAIL_ON_WARNINGS = True
LOCAL_INCLUDES += [
- '/db/sqlite3/src',
'/dom/base',
'/dom/storage',
'/dom/workers',

View File

@ -0,0 +1,50 @@
Fixes needed when avoiding bundled libraries.
--- icecat-45.3.0/xpcom/build/moz.build.orig
+++ icecat-45.3.0/xpcom/build/moz.build
@@ -92,10 +92,5 @@
'/docshell/base',
]
-if CONFIG['MOZ_VPX']:
- LOCAL_INCLUDES += [
- '/media/libvpx',
- ]
-
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
CXXFLAGS += CONFIG['TK_CFLAGS']
--- icecat-45.3.0/storage/moz.build.orig
+++ icecat-45.3.0/storage/moz.build
@@ -108,7 +108,6 @@
DEFINES['SQLITE_MAX_LIKE_PATTERN_LENGTH'] = 50000
LOCAL_INCLUDES += [
- '/db/sqlite3/src',
'/dom/base',
]
--- icecat-45.3.0/dom/indexedDB/moz.build.orig
+++ icecat-45.3.0/dom/indexedDB/moz.build
@@ -96,7 +96,6 @@
SOURCES['Key.cpp'].flags += ['-Wno-error=type-limits']
LOCAL_INCLUDES += [
- '/db/sqlite3/src',
'/dom/base',
'/dom/storage',
'/dom/workers',
--- icecat-45.3.0/modules/libmar/tests/Makefile.in.orig
+++ icecat-45.3.0/modules/libmar/tests/Makefile.in
@@ -10,12 +10,5 @@
ifndef MOZ_PROFILE_GENERATE
libs::
$(INSTALL) ../tool/signmar$(BIN_SUFFIX) $(TESTROOT)/unit
- $(INSTALL) $(DEPTH)/dist/bin/$(DLL_PREFIX)nss3$(DLL_SUFFIX) $(TESTROOT)/unit
-ifndef MOZ_FOLD_LIBS
- $(INSTALL) $(DEPTH)/dist/bin/$(DLL_PREFIX)nssutil3$(DLL_SUFFIX) $(TESTROOT)/unit
- $(INSTALL) $(DEPTH)/dist/bin/$(DLL_PREFIX)plc4$(DLL_SUFFIX) $(TESTROOT)/unit
- $(INSTALL) $(DEPTH)/dist/bin/$(DLL_PREFIX)nspr4$(DLL_SUFFIX) $(TESTROOT)/unit
- $(INSTALL) $(DEPTH)/dist/bin/$(DLL_PREFIX)plds4$(DLL_SUFFIX) $(TESTROOT)/unit
-endif
endif
endif # Not Android

View File

@ -0,0 +1,50 @@
Fix CVE-2016-6255:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6255
http://www.openwall.com/lists/oss-security/2016/07/18/13
Patch adapted from upstream commit:
https://github.com/mrjimenez/pupnp/commit/d64d6a44906b5aa5306bdf1708531d698654dda5
The upstream change is simplified to unconditionally disable the HTTP
POST feature.
From d64d6a44906b5aa5306bdf1708531d698654dda5 Mon Sep 17 00:00:00 2001
From: Matthew Garrett <mjg59@srcf.ucam.org>
Date: Tue, 23 Feb 2016 13:53:20 -0800
Subject: [PATCH] Don't allow unhandled POSTs to write to the filesystem by
default
If there's no registered handler for a POST request, the default behaviour
is to write it to the filesystem. Several million deployed devices appear
to have this behaviour, making it possible to (at least) store arbitrary
data on them. Add a configure option that enables this behaviour, and change
the default to just drop POSTs that aren't directly handled.
Signed-off-by: Marcelo Roberto Jimenez <mroberto@users.sourceforge.net>
(cherry picked from commit c91a8a3903367e1163765b73eb4d43be7d7927fa)
---
configure.ac | 9 +++++++++
upnp/inc/upnpconfig.h.in | 9 +++++++++
upnp/src/genlib/net/http/webserver.c | 4 ++++
3 files changed, 22 insertions(+)
diff --git a/upnp/src/genlib/net/http/webserver.c b/upnp/src/genlib/net/http/webserver.c
index 26bf0f7..7ae8c1e 100644
--- a/upnp/src/genlib/net/http/webserver.c
+++ b/upnp/src/genlib/net/http/webserver.c
@@ -1367,9 +1367,13 @@ static int http_RecvPostMessage(
if (Fp == NULL)
return HTTP_INTERNAL_SERVER_ERROR;
} else {
+#if 0
Fp = fopen(filename, "wb");
if (Fp == NULL)
return HTTP_UNAUTHORIZED;
+#else
+ return HTTP_NOT_FOUND;
+#endif
}
parser->position = POS_ENTITY;
do {

View File

@ -0,0 +1,62 @@
From 20009bdaf95d10bf748fa69b104672d3cfaceddf Mon Sep 17 00:00:00 2001
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Fri, 7 Oct 2016 10:15:29 +0200
Subject: [PATCH] xhci: limit the number of link trbs we are willing to process
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
hw/usb/hcd-xhci.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
index 726435c..ee4fa48 100644
--- a/hw/usb/hcd-xhci.c
+++ b/hw/usb/hcd-xhci.c
@@ -54,6 +54,8 @@
* to the specs when it gets them */
#define ER_FULL_HACK
+#define TRB_LINK_LIMIT 4
+
#define LEN_CAP 0x40
#define LEN_OPER (0x400 + 0x10 * MAXPORTS)
#define LEN_RUNTIME ((MAXINTRS + 1) * 0x20)
@@ -1000,6 +1002,7 @@ static TRBType xhci_ring_fetch(XHCIState *xhci, XHCIRing *ring, XHCITRB *trb,
dma_addr_t *addr)
{
PCIDevice *pci_dev = PCI_DEVICE(xhci);
+ uint32_t link_cnt = 0;
while (1) {
TRBType type;
@@ -1026,6 +1029,9 @@ static TRBType xhci_ring_fetch(XHCIState *xhci, XHCIRing *ring, XHCITRB *trb,
ring->dequeue += TRB_SIZE;
return type;
} else {
+ if (++link_cnt > TRB_LINK_LIMIT) {
+ return 0;
+ }
ring->dequeue = xhci_mask64(trb->parameter);
if (trb->control & TRB_LK_TC) {
ring->ccs = !ring->ccs;
@@ -1043,6 +1049,7 @@ static int xhci_ring_chain_length(XHCIState *xhci, const XHCIRing *ring)
bool ccs = ring->ccs;
/* hack to bundle together the two/three TDs that make a setup transfer */
bool control_td_set = 0;
+ uint32_t link_cnt = 0;
while (1) {
TRBType type;
@@ -1058,6 +1065,9 @@ static int xhci_ring_chain_length(XHCIState *xhci, const XHCIRing *ring)
type = TRB_TYPE(trb);
if (type == TR_LINK) {
+ if (++link_cnt > TRB_LINK_LIMIT) {
+ return -length;
+ }
dequeue = xhci_mask64(trb.parameter);
if (trb.control & TRB_LK_TC) {
ccs = !ccs;
--
1.8.3.1

View File

@ -0,0 +1,36 @@
Subject: [Qemu-devel] [PATCH] 9pfs: fix potential host memory leak in v9fs_read
From: Li Qiang <liq3ea@gmail.com>
In 9pfs read dispatch function, it doesn't free two QEMUIOVector
object thus causing potential memory leak. This patch avoid this.
Signed-off-by: Li Qiang <liq3ea@gmail.com>
---
hw/9pfs/9p.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c
index 119ee58..543a791 100644
--- a/hw/9pfs/9p.c
+++ b/hw/9pfs/9p.c
@@ -1826,14 +1826,15 @@ static void v9fs_read(void *opaque)
if (len < 0) {
/* IO error return the error */
err = len;
- goto out;
+ goto out_free_iovec;
}
} while (count < max_count && len > 0);
err = pdu_marshal(pdu, offset, "d", count);
if (err < 0) {
- goto out;
+ goto out_free_iovec;
}
err += offset + count;
+out_free_iovec:
qemu_iovec_destroy(&qiov);
qemu_iovec_destroy(&qiov_full);
} else if (fidp->fid_type == P9_FID_XATTR) {
--
1.8.3.1

View File

@ -0,0 +1,27 @@
From: Li Qiang <liq3ea@gmail.com>
In 9pfs function v9fs_iov_vunmarshal, it will not allocate space
for empty string. This will cause several NULL pointer dereference
issues. this patch fix this issue.
Signed-off-by: Li Qiang <liq3ea@gmail.com>
---
fsdev/9p-iov-marshal.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fsdev/9p-iov-marshal.c b/fsdev/9p-iov-marshal.c
index 663cad5..1d16f8d 100644
--- a/fsdev/9p-iov-marshal.c
+++ b/fsdev/9p-iov-marshal.c
@@ -125,7 +125,7 @@ ssize_t v9fs_iov_vunmarshal(struct iovec *out_sg, int out_num, size_t offset,
str->data = g_malloc(str->size + 1);
copied = v9fs_unpack(str->data, out_sg, out_num, offset,
str->size);
- if (copied > 0) {
+ if (copied >= 0) {
str->data[str->size] = 0;
} else {
v9fs_string_free(str);
--
1.8.3.1

View File

@ -1,32 +0,0 @@
From 6b12d93d2c7428a34bfd4b3813ba339ed57b698a Mon Sep 17 00:00:00 2001
From: Jouni Malinen <j@w1.fi>
Date: Sun, 25 Oct 2015 15:45:50 +0200
Subject: [PATCH] WNM: Ignore Key Data in WNM Sleep Mode Response frame if no
PMF in use
WNM Sleep Mode Response frame is used to update GTK/IGTK only if PMF is
enabled. Verify that PMF is in use before using this field on station
side to avoid accepting unauthenticated key updates. (CVE-2015-5310)
Signed-off-by: Jouni Malinen <j@w1.fi>
---
wpa_supplicant/wnm_sta.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/wpa_supplicant/wnm_sta.c b/wpa_supplicant/wnm_sta.c
index 954de67..7d79499 100644
--- a/wpa_supplicant/wnm_sta.c
+++ b/wpa_supplicant/wnm_sta.c
@@ -187,6 +187,12 @@ static void wnm_sleep_mode_exit_success(struct wpa_supplicant *wpa_s,
end = ptr + key_len_total;
wpa_hexdump_key(MSG_DEBUG, "WNM: Key Data", ptr, key_len_total);
+ if (key_len_total && !wpa_sm_pmf_enabled(wpa_s->wpa)) {
+ wpa_msg(wpa_s, MSG_INFO,
+ "WNM: Ignore Key Data in WNM-Sleep Mode Response - PMF not enabled");
+ return;
+ }
+
while (ptr + 1 < end) {
if (ptr + 2 + ptr[1] > end) {
wpa_printf(MSG_DEBUG, "WNM: Invalid Key Data element "

View File

@ -1,51 +0,0 @@
From bef802ece03f9ae9d52a21f0cf4f1bc2c5a1f8aa Mon Sep 17 00:00:00 2001
From: Jouni Malinen <j@w1.fi>
Date: Sun, 1 Nov 2015 18:24:16 +0200
Subject: [PATCH] EAP-pwd server: Fix last fragment length validation
All but the last fragment had their length checked against the remaining
room in the reassembly buffer. This allowed a suitably constructed last
fragment frame to try to add extra data that would go beyond the buffer.
The length validation code in wpabuf_put_data() prevents an actual
buffer write overflow from occurring, but this results in process
termination. (CVE-2015-5314)
Signed-off-by: Jouni Malinen <j@w1.fi>
---
src/eap_server/eap_server_pwd.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/eap_server/eap_server_pwd.c b/src/eap_server/eap_server_pwd.c
index cb83ff7..9f787ab 100644
--- a/src/eap_server/eap_server_pwd.c
+++ b/src/eap_server/eap_server_pwd.c
@@ -970,7 +970,7 @@ static void eap_pwd_process(struct eap_sm *sm, void *priv,
/*
* the first and all intermediate fragments have the M bit set
*/
- if (EAP_PWD_GET_MORE_BIT(lm_exch)) {
+ if (EAP_PWD_GET_MORE_BIT(lm_exch) || data->in_frag_pos) {
if ((data->in_frag_pos + len) > wpabuf_size(data->inbuf)) {
wpa_printf(MSG_DEBUG, "EAP-pwd: Buffer overflow "
"attack detected! (%d+%d > %d)",
@@ -981,6 +981,8 @@ static void eap_pwd_process(struct eap_sm *sm, void *priv,
}
wpabuf_put_data(data->inbuf, pos, len);
data->in_frag_pos += len;
+ }
+ if (EAP_PWD_GET_MORE_BIT(lm_exch)) {
wpa_printf(MSG_DEBUG, "EAP-pwd: Got a %d byte fragment",
(int) len);
return;
@@ -990,8 +992,6 @@ static void eap_pwd_process(struct eap_sm *sm, void *priv,
* buffering fragments so that's how we know it's the last)
*/
if (data->in_frag_pos) {
- wpabuf_put_data(data->inbuf, pos, len);
- data->in_frag_pos += len;
pos = wpabuf_head_u8(data->inbuf);
len = data->in_frag_pos;
wpa_printf(MSG_DEBUG, "EAP-pwd: Last fragment, %d bytes",
--
1.9.1

View File

@ -1,54 +0,0 @@
From 8057821706784608b828e769ccefbced95591e50 Mon Sep 17 00:00:00 2001
From: Jouni Malinen <j@w1.fi>
Date: Sun, 1 Nov 2015 18:18:17 +0200
Subject: [PATCH] EAP-pwd peer: Fix last fragment length validation
All but the last fragment had their length checked against the remaining
room in the reassembly buffer. This allowed a suitably constructed last
fragment frame to try to add extra data that would go beyond the buffer.
The length validation code in wpabuf_put_data() prevents an actual
buffer write overflow from occurring, but this results in process
termination. (CVE-2015-5315)
Signed-off-by: Jouni Malinen <j@w1.fi>
---
src/eap_peer/eap_pwd.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/src/eap_peer/eap_pwd.c b/src/eap_peer/eap_pwd.c
index 1f78544..75ceef1 100644
--- a/src/eap_peer/eap_pwd.c
+++ b/src/eap_peer/eap_pwd.c
@@ -903,7 +903,7 @@ eap_pwd_process(struct eap_sm *sm, void *priv, struct eap_method_ret *ret,
/*
* buffer and ACK the fragment
*/
- if (EAP_PWD_GET_MORE_BIT(lm_exch)) {
+ if (EAP_PWD_GET_MORE_BIT(lm_exch) || data->in_frag_pos) {
data->in_frag_pos += len;
if (data->in_frag_pos > wpabuf_size(data->inbuf)) {
wpa_printf(MSG_INFO, "EAP-pwd: Buffer overflow attack "
@@ -916,7 +916,8 @@ eap_pwd_process(struct eap_sm *sm, void *priv, struct eap_method_ret *ret,
return NULL;
}
wpabuf_put_data(data->inbuf, pos, len);
-
+ }
+ if (EAP_PWD_GET_MORE_BIT(lm_exch)) {
resp = eap_msg_alloc(EAP_VENDOR_IETF, EAP_TYPE_PWD,
EAP_PWD_HDR_SIZE,
EAP_CODE_RESPONSE, eap_get_id(reqData));
@@ -930,10 +931,8 @@ eap_pwd_process(struct eap_sm *sm, void *priv, struct eap_method_ret *ret,
* we're buffering and this is the last fragment
*/
if (data->in_frag_pos) {
- wpabuf_put_data(data->inbuf, pos, len);
wpa_printf(MSG_DEBUG, "EAP-pwd: Last fragment, %d bytes",
(int) len);
- data->in_frag_pos += len;
pos = wpabuf_head_u8(data->inbuf);
len = data->in_frag_pos;
}
--
1.9.1

View File

@ -1,34 +0,0 @@
From 95577884ca4fa76be91344ff7a8d5d1e6dc3da61 Mon Sep 17 00:00:00 2001
From: Jouni Malinen <j@w1.fi>
Date: Sun, 1 Nov 2015 19:35:44 +0200
Subject: [PATCH] EAP-pwd peer: Fix error path for unexpected Confirm message
If the Confirm message is received from the server before the Identity
exchange has been completed, the group has not yet been determined and
data->grp is NULL. The error path in eap_pwd_perform_confirm_exchange()
did not take this corner case into account and could end up
dereferencing a NULL pointer and terminating the process if invalid
message sequence is received. (CVE-2015-5316)
Signed-off-by: Jouni Malinen <j@w1.fi>
---
src/eap_peer/eap_pwd.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/eap_peer/eap_pwd.c b/src/eap_peer/eap_pwd.c
index 75ceef1..892b590 100644
--- a/src/eap_peer/eap_pwd.c
+++ b/src/eap_peer/eap_pwd.c
@@ -774,7 +774,8 @@ eap_pwd_perform_confirm_exchange(struct eap_sm *sm, struct eap_pwd_data *data,
wpabuf_put_data(data->outbuf, conf, SHA256_MAC_LEN);
fin:
- bin_clear_free(cruft, BN_num_bytes(data->grp->prime));
+ if (data->grp)
+ bin_clear_free(cruft, BN_num_bytes(data->grp->prime));
BN_clear_free(x);
BN_clear_free(y);
if (data->outbuf == NULL) {
--
1.9.1

View File

@ -1,82 +0,0 @@
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

@ -1,51 +0,0 @@
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

@ -1,82 +0,0 @@
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

@ -1,62 +0,0 @@
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

@ -1,50 +0,0 @@
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

@ -3744,6 +3744,34 @@ routines such as routines for numerical integration and optimization.")
(define-public python2-scipy
(package-with-python2 python-scipy))
(define-public python-socksipy-branch
(package
(name "python-socksipy-branch")
(version "1.01")
(source
(origin
(method url-fetch)
(uri (pypi-uri "SocksiPy-branch" version))
(sha256
(base32
"01l41v4g7fy9fzvinmjxy6zcbhgqaif8dhdqm4w90fwcw9h51a8p"))))
(build-system python-build-system)
(arguments
`(#:tests? #f)) ; There are no tests
(home-page "https://code.google.com/archive/p/socksipy-branch/")
(synopsis "Python SOCKS module")
(description
"SocksiPy - A Python SOCKS client module. It provides a
socket-like interface that supports connections to any TCP
service through the use of a SOCKS4, SOCKS5 or HTTP proxy.
The original version was developed by Dan Haim, this is a
branch created by Mario Vilas to address some open issues,
as the original project seems to have been abandoned circa 2007.")
(license license:bsd-3)))
(define-public python2-socksipy-branch
(package-with-python2 python-socksipy-branch))
(define-public python-sqlalchemy
(package
(name "python-sqlalchemy")
@ -5876,19 +5904,18 @@ object to help create WSGI responses.")
(define-public python-xlrd
(package
(name "python-xlrd")
(version "0.9.4")
(version "1.0.0")
(source (origin
(method url-fetch)
(uri (string-append "https://pypi.python.org/packages/source/x/"
"xlrd/xlrd-" version ".tar.gz"))
(uri (pypi-uri "xlrd" version))
(sha256
(base32
"0wpa55nvidmm5m2qr622dsh3cj46akdk0h3zjgzschcmydck73cf"))))
"0s8hjiz01vbhy85xalrz0qlsmd9ypf36zjqrf97hh984spapvy0g"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
;; Current test in setup.py does not work as of 0.9.4, so use nose to
;; Current test in setup.py does not work as of 1.0.0, so use nose to
;; run tests instead for now.
(replace 'check (lambda _ (zero? (system* "nosetests")))))))
(native-inputs `(("python-nose" ,python-nose)

View File

@ -76,7 +76,10 @@
version ".tar.bz2"))
(sha256
(base32
"0lqyz01z90nvxpc3nx4djbci7hx62cwvs5zwd6phssds0sap6vij"))))
"0lqyz01z90nvxpc3nx4djbci7hx62cwvs5zwd6phssds0sap6vij"))
(patches (search-patches "qemu-CVE-2016-8576.patch"
"qemu-CVE-2016-8577.patch"
"qemu-CVE-2016-8578.patch"))))
(build-system gnu-build-system)
(arguments
'(;; Running tests in parallel can occasionally lead to failures, like:

View File

@ -423,13 +423,13 @@ expectations and mocks frameworks.")
(define-public bundler
(package
(name "bundler")
(version "1.12.5")
(version "1.13.2")
(source (origin
(method url-fetch)
(uri (rubygems-uri "bundler" version))
(sha256
(base32
"1q84xiwm9j771lpmiply0ls9l2bpvl5axn3jblxjvrldh8di2pkc"))))
"05gwyhfn103vrmrw13r3n78bcl75mrj82ipsbazcl08wg1bql7x6"))))
(build-system ruby-build-system)
(arguments
'(#:tests? #f)) ; avoid dependency cycles
@ -2115,7 +2115,7 @@ aware transformations between times in different time zones.")
(define-public ruby-tzinfo-data
(package
(name "ruby-tzinfo-data")
(version "1.2016.4")
(version "1.2016.7")
(source
(origin
(method url-fetch)
@ -2128,7 +2128,7 @@ aware transformations between times in different time zones.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0jnm8i379hn48cq5n39j7wzm08i0mw73kqzx3cqbxpiwlb1hnz80"))
"0vh75hkfmqk4hdjv6nm7acw64izwpnv7slkmh2kj7qlfz133yh9l"))
;; Remove the known test failure.
;; https://github.com/tzinfo/tzinfo-data/issues/10
;; https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1587128
@ -3223,14 +3223,14 @@ that TURN is no longer being maintained.")
(define-public ruby-mime-types-data
(package
(name "ruby-mime-types-data")
(version "3.2016.0221")
(version "3.2016.0521")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "mime-types-data" version))
(sha256
(base32
"05ygjn0nnfh6yp1wsi574jckk95wqg9a6g598wk4svvrkmkrzkpn"))))
"04my3746hwa4yvbx1ranhfaqkgf6vavi1kyijjnw8w3dy37vqhkm"))))
(build-system ruby-build-system)
(native-inputs
`(("ruby-hoe" ,ruby-hoe)))
@ -3467,14 +3467,14 @@ support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
(define-public ruby-domain-name
(package
(name "ruby-domain-name")
(version "0.5.20160310")
(version "0.5.20160826")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "domain_name" version))
(sha256
(base32
"0g1175zspkqhlvl9s11g7p2nbmqpvpxxv02q8csd0ryc81laapys"))))
"0rg7gvp45xmb5qz8ydp7ivw05hhplh6k7mbawrpvkysl2c77w5xx"))))
(build-system ruby-build-system)
(arguments
`(#:phases
@ -4041,14 +4041,14 @@ generation.")
(define-public ruby-sequel
(package
(name "ruby-sequel")
(version "4.34.0")
(version "4.39.0")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "sequel" version))
(sha256
(base32
"0qscddpfwcajggxvbm4a4jv8kkpn6q056bgdg03km34bz8bis1x1"))))
"01zqd6mi9wvhbg76b91k35jppha0c944ar9f816gi400cf9817bg"))))
(build-system ruby-build-system)
(arguments
'(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.

View File

@ -98,14 +98,14 @@ anywhere.")
(define-public samba
(package
(name "samba")
(version "4.3.11")
(version "4.5.0")
(source (origin
(method url-fetch)
(uri (string-append "https://www.samba.org/samba/ftp/stable/samba-"
(uri (string-append "https://download.samba.org/pub/samba/stable/samba-"
version ".tar.gz"))
(sha256
(base32
"1v2grwivm6rasz1ganbybs0ikz1lydaniy65kxf1v8rl1qqngach"))))
"11mmyqag2i4yy6dikcggw776n0laxxr0rxhry72x5pa6nwws9afk"))))
(build-system gnu-build-system)
(arguments
'(#:phases
@ -164,14 +164,14 @@ Desktops into Active Directory environments using the winbind daemon.")
(define-public talloc
(package
(name "talloc")
(version "2.1.7")
(version "2.1.8")
(source (origin
(method url-fetch)
(uri (string-append "https://www.samba.org/ftp/talloc/talloc-"
version ".tar.gz"))
(sha256
(base32
"01m0kzndciyj43z1zd2nc61xqgh9knjv0w7lk1rrrlj8irr4w58r"))))
"0c3ihyb0jd8mhvi7gg2mr5w1zl2habx6jlkbyxzyckad2q8lkl92"))))
(build-system gnu-build-system)
(arguments
'(#:phases
@ -201,14 +201,14 @@ destructors. It is the core memory allocator used in Samba.")
(define-public tevent
(package
(name "tevent")
(version "0.9.28")
(version "0.9.31")
(source (origin
(method url-fetch)
(uri (string-append "https://www.samba.org/ftp/tevent/tevent-"
version ".tar.gz"))
(sha256
(base32
"0a9ml52jjnzz7qg9z750mavlvs1yibjwrzy4yl55dc95j0vm7n84"))))
"1z1bij9gccps34q8zakr1k7k3gpqs25jas20x1hch16qd8jz44sa"))))
(build-system gnu-build-system)
(arguments
'(#:phases
@ -236,14 +236,14 @@ many event types, including timers, signals, and the classic file descriptor eve
(define-public ldb
(package
(name "ldb")
(version "1.1.26")
(version "1.1.27")
(source (origin
(method url-fetch)
(uri (string-append "https://www.samba.org/ftp/ldb/ldb-"
version ".tar.gz"))
(sha256
(base32
"1rmjv12pf57vga8s5z9p9d90rlfckc1lqjbcp89r83cq5fkwfhw8"))))
"1b1mkl5p8swb67s9aswavhzswlib34hpgsv66zgns009paf2df6d"))))
(build-system gnu-build-system)
(arguments
'(#:phases

View File

@ -29,15 +29,15 @@
(define-public sane-backends
(package
(name "sane-backends")
(version "1.0.24")
(version "1.0.25")
(source (origin
(method url-fetch)
(uri (string-append
"https://alioth.debian.org/frs/download.php/file/3958/"
(uri (string-append
"https://alioth.debian.org/frs/download.php/file/4146/"
name "-" version ".tar.gz"))
(sha256
(base32
"0ba68m6bzni54axjk15i51rya7hfsdliwvqyan5msl7iaid0iir7"))))
"0b3fvhrxl4l82bf3v0j47ypjv6a0k5lqbgknrq1agpmjca6vmmx4"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
@ -73,4 +73,3 @@ proving access to any raster image scanner hardware (flatbed scanner,
hand-held scanner, video- and still-cameras, frame-grabbers, etc.). The
package contains the library and drivers.")
(license licence:gpl2+))) ; plus linking exception

View File

@ -80,20 +80,6 @@ remote applications.")
(home-page "http://www.libssh.org")
(license license:lgpl2.1+)))
(define libssh-0.6 ; kept private for use in guile-ssh
(package (inherit libssh)
(version "0.6.5")
(source (origin
(method url-fetch)
(uri (string-append "https://red.libssh.org/attachments/"
"download/121/libssh-"
version ".tar.xz"))
(sha256
(base32
"0b6wyx6bwbb8jpn8x4rhlrdiqwqrwrs0mxjmrnqykm9kw1ijgm8g"))
(patches (search-patches
"libssh-0.6.5-CVE-2016-0739.patch"))))))
(define-public libssh2
(package
(name "libssh2")
@ -209,7 +195,7 @@ Additionally, various channel-specific options can be negotiated.")
(define-public guile-ssh
(package
(name "guile-ssh")
(version "0.9.0")
(version "0.10.1")
(source (origin
;; ftp://memory-heap.org/software/guile-ssh/guile-ssh-VERSION.tar.gz
;; exists, but the server appears to be too slow and unreliable.
@ -220,34 +206,29 @@ Additionally, various channel-specific options can be negotiated.")
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"04zs1cykwdyj51ag62ymrkgsja9dbhbaaglkvbfbac0bkxl2ir6d"))))
"0ky77kr7rnkhbq938bir61mlr8b86lfjcjjb1bxx1y1fhimsiz72"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-cons-after
'unpack 'autoreconf
(lambda* (#:key inputs #:allow-other-keys)
(chmod "doc/version.texi" #o777) ;make it writable
(zero? (system* "autoreconf" "-vfi")))
(alist-cons-after
'install 'fix-libguile-ssh-file-name
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(libdir (string-append out "/lib"))
(guiledir (string-append out
"/share/guile/site/2.0")))
(substitute* (find-files guiledir ".scm")
(("\"libguile-ssh\"")
(string-append "\"" libdir "/libguile-ssh\"")))
;; Make sure it works.
(setenv "GUILE_LOAD_PATH" guiledir)
(setenv "GUILE_LOAD_COMPILED_PATH" guiledir)
(zero?
(system* "guile" "-c" "(use-modules (ssh session))"))))
%standard-phases))
#:configure-flags (list (string-append "--with-guilesitedir="
(assoc-ref %outputs "out")
"/share/guile/site/2.0"))
'(#:phases (modify-phases %standard-phases
(add-after 'unpack 'autoreconf
(lambda* (#:key inputs #:allow-other-keys)
(chmod "doc/version.texi" #o777) ;make it writable
(zero? (system* "autoreconf" "-vfi"))))
(add-before 'build 'fix-libguile-ssh-file-name
(lambda* (#:key outputs #:allow-other-keys)
;; Build and install libguile-ssh.so so that we can use
;; its absolute file name in .scm files, before we build
;; the .go files.
(and (zero? (system* "make" "install"
"-C" "libguile-ssh"
"-j" (number->string
(parallel-job-count))))
(let* ((out (assoc-ref outputs "out"))
(libdir (string-append out "/lib")))
(substitute* (find-files "." "\\.scm$")
(("\"libguile-ssh\"")
(string-append "\"" libdir "/libguile-ssh\"")))
#t)))))
;; Tests are not parallel-safe.
#:parallel-tests? #f))
@ -258,7 +239,7 @@ Additionally, various channel-specific options can be negotiated.")
("pkg-config" ,pkg-config)
("which" ,which)))
(inputs `(("guile" ,guile-2.0)
("libssh" ,libssh-0.6)
("libssh" ,libssh)
("libgcrypt" ,libgcrypt)))
(synopsis "Guile bindings to libssh")
(description

View File

@ -432,14 +432,14 @@ and operations on them using LAPACK and SuiteSparse.")
(define-public r-mgcv
(package
(name "r-mgcv")
(version "1.8-14")
(version "1.8-15")
(source
(origin
(method url-fetch)
(uri (cran-uri "mgcv" version))
(sha256
(base32
"0ly9x23q6kd7aqrsb8qjsj8jc597h3068iaqjmkkdv56r5dln29f"))))
"05xzmsx51y92c0r0yihac8m9d3v1sqnn8ahcgm3q75j8z6zybsjs"))))
(build-system r-build-system)
(home-page "http://cran.r-project.org/web/packages/mgcv")
(synopsis "Mixed generalised additive model computation")

View File

@ -28,16 +28,16 @@
(define-public tbb
(package
(name "tbb")
(version "2017")
(version "2017_20160916")
(source (origin
(method url-fetch)
(uri (string-append
"https://www.threadingbuildingblocks.org/sites/default"
"/files/software_releases/source/"
"tbb" version "_20160722oss_src.tgz"))
"tbb" version "oss_src.tgz"))
(sha256
(base32
"038rmv3s8si51bjrzwyv8ldqw742fjjdfayi8pmjaq5zw32b8pzx"))
"1i3zy87gyzw22fvajm039w6g822qzqn7jbmznc8y8c57qpqnf330"))
(modules '((guix build utils)))
(snippet
'(substitute* "build/common.inc"

View File

@ -1440,7 +1440,7 @@ be used for realtime video capture via Linux-specific APIs.")
(define-public obs
(package
(name "obs")
(version "0.15.4")
(version "0.16.2")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/jp9000/obs-studio"
@ -1448,7 +1448,7 @@ be used for realtime video capture via Linux-specific APIs.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"11bqk0jpp8fp24j0rkjgrv3fdi3xnjyk4wq55j803cg84mn4zsp0"))))
"0p2grxyaf79hb3nlja23xp7b2vc1w18llvzcyhnjn2lhwfjabcgm"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ; no tests

View File

@ -45,6 +45,7 @@
#:use-module (guix build-system cmake)
#:use-module (guix build-system r)
#:use-module (guix build-system trivial)
#:use-module (guix build-system python)
#:use-module (gnu packages)
#:use-module (gnu packages apr)
#:use-module (gnu packages documentation)
@ -121,14 +122,14 @@ and its related documentation.")
(define-public nginx
(package
(name "nginx")
(version "1.10.1")
(version "1.11.4")
(source (origin
(method url-fetch)
(uri (string-append "http://nginx.org/download/nginx-"
(uri (string-append "https://nginx.org/download/nginx-"
version ".tar.gz"))
(sha256
(base32
"00d8hxj8453c7989qd7z4f1mjp0k3ib8k29i1qyf11b4ar35ilqz"))))
"0fvb09ycxz3xnyynav6ybj6miwh9kv8jcb2vzrmvqhzn8cgiq8h6"))))
(build-system gnu-build-system)
(inputs `(("pcre" ,pcre)
("openssl" ,openssl)
@ -140,7 +141,8 @@ and its related documentation.")
(add-before 'configure 'patch-/bin/sh
(lambda _
(substitute* "auto/feature"
(("/bin/sh") (which "bash")))))
(("/bin/sh") (which "bash")))
#t))
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
(let ((flags
@ -186,7 +188,7 @@ and its related documentation.")
(string-append share "/conf"))
(rename-file (string-append out "/html")
(string-append share "/html"))))))))
(home-page "http://nginx.org")
(home-page "https://nginx.org")
(synopsis "HTTP and reverse proxy server")
(description
"Nginx (\"engine X\") is a high-performance web and reverse proxy server
@ -3147,6 +3149,34 @@ http://opensearch.a9.com} compatible search engines.")
their web site.")
(home-page "http://search.cpan.org/~gaas/WWW-RobotRules/")))
(define-public python-feedparser
(package
(name "python-feedparser")
(version "5.2.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "feedparser" version ".tar.bz2"))
(sha256
(base32
"00hb4qg2am06g81mygfi1jsbx8830024jm45g6qp9g8fr6am91yf"))))
(build-system python-build-system)
(home-page
"https://github.com/kurtmckee/feedparser")
(synopsis "Parse feeds in Python")
(description
"Universal feed parser which handles RSS 0.9x, RSS 1.0, RSS 2.0,
CDF, Atom 0.3, and Atom 1.0 feeds.")
(license (list l:bsd-2 ; source code
l:freebsd-doc)))) ; documentation
(define-public python2-feedparser
(let ((base (package-with-python2
(strip-python2-variant python-feedparser))))
(package (inherit base)
(native-inputs
`(("python2-setuptools" ,python2-setuptools))))))
(define-public r-httpuv
(package
(name "r-httpuv")

View File

@ -108,6 +108,7 @@ Section \"Files\"
FontPath \"" font-adobe75dpi "/share/fonts/X11/75dpi\"
ModulePath \"" xf86-video-vesa "/lib/xorg/modules/drivers\"
ModulePath \"" xf86-video-fbdev "/lib/xorg/modules/drivers\"
ModulePath \"" xf86-video-ati "/lib/xorg/modules/drivers\"
ModulePath \"" xf86-video-modesetting "/lib/xorg/modules/drivers\"
ModulePath \"" xf86-video-cirrus "/lib/xorg/modules/drivers\"
ModulePath \"" xf86-video-intel "/lib/xorg/modules/drivers\"
@ -145,6 +146,7 @@ EndSection
(define %default-xorg-modules
(list xf86-video-vesa
xf86-video-fbdev
xf86-video-ati
xf86-video-modesetting
xf86-video-cirrus
xf86-video-intel

360
guix/build-system/asdf.scm Normal file
View File

@ -0,0 +1,360 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
;;;
;;; 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 build-system asdf)
#:use-module (guix store)
#:use-module (guix utils)
#:use-module (guix packages)
#:use-module (guix derivations)
#:use-module (guix search-paths)
#:use-module (guix build-system)
#:use-module (guix build-system gnu)
#:use-module (ice-9 match)
#:use-module (ice-9 regex)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:export (%asdf-build-system-modules
%asdf-build-modules
asdf-build
asdf-build-system/sbcl
asdf-build-system/ecl
asdf-build-system/source
sbcl-package->cl-source-package
sbcl-package->ecl-package))
;; Commentary:
;;
;; Standard build procedure for asdf packages. This is implemented as an
;; extension of 'gnu-build-system'.
;;
;; Code:
(define %asdf-build-system-modules
;; Imported build-side modules
`((guix build asdf-build-system)
(guix build lisp-utils)
,@%gnu-build-system-modules))
(define %asdf-build-modules
;; Used (visible) build-side modules
'((guix build asdf-build-system)
(guix build utils)
(guix build lisp-utils)))
(define (default-lisp implementation)
"Return the default package for the lisp IMPLEMENTATION."
;; Lazily resolve the binding to avoid a circular dependancy.
(let ((lisp-module (resolve-interface '(gnu packages lisp))))
(module-ref lisp-module implementation)))
(define* (lower/source name
#:key source inputs outputs native-inputs system target
#:allow-other-keys
#:rest arguments)
"Return a bag for NAME"
(define private-keywords
'(#:target #:inputs #:native-inputs))
(and (not target)
(bag
(name name)
(system system)
(host-inputs `(,@(if source
`(("source" ,source))
'())
,@inputs
,@(standard-packages)))
(build-inputs native-inputs)
(outputs outputs)
(build asdf-build/source)
(arguments (strip-keyword-arguments private-keywords arguments)))))
(define* (asdf-build/source store name inputs
#:key source outputs
(phases '(@ (guix build asdf-build-system)
%standard-phases/source))
(search-paths '())
(system (%current-system))
(guile #f)
(imported-modules %asdf-build-system-modules)
(modules %asdf-build-modules))
(define builder
`(begin
(use-modules ,@modules)
(asdf-build/source #:name ,name
#:source ,(match (assoc-ref inputs "source")
(((? derivation? source))
(derivation->output-path source))
((source) source)
(source source))
#:system ,system
#:phases ,phases
#:outputs %outputs
#:search-paths ',(map search-path-specification->sexp
search-paths)
#:inputs %build-inputs)))
(define guile-for-build
(match guile
((? package?)
(package-derivation store guile system #:graft? #f))
(#f
(let* ((distro (resolve-interface '(gnu packages commencement)))
(guile (module-ref distro 'guile-final)))
(package-derivation store guile system #:graft? #f)))))
(build-expression->derivation store name builder
#:inputs inputs
#:system system
#:modules imported-modules
#:outputs outputs
#:guile-for-build guile-for-build))
(define* (package-with-build-system from-build-system to-build-system
from-prefix to-prefix
#:key variant-property
phases-transformer)
"Return a precedure which takes a package PKG which uses FROM-BUILD-SYSTEM,
and returns one using TO-BUILD-SYSTEM. If PKG was prefixed by FROM-PREFIX,
the resulting package will be prefixed by TO-PREFIX. Inputs of PKG are
recursively transformed using the same rule. The result's #:phases argument
will be modified by PHASES-TRANSFORMER, an S-expression which evaluates on the
build side to a procedure of one argument.
VARIANT-PROPERTY can be added to a package's properties to indicate that the
corresponding package promise should be used as the result of this
transformation. This allows the result to differ from what the transformation
would otherwise produce.
If TO-BUILD-SYSTEM is asdf-build-system/source, the resulting package will be
set up using CL source package conventions."
(define target-is-source? (eq? asdf-build-system/source to-build-system))
(define (transform-package-name name)
(if (string-prefix? from-prefix name)
(let ((new-name (string-drop name (string-length from-prefix))))
(if (string-prefix? to-prefix new-name)
new-name
(string-append to-prefix new-name)))
name))
(define (has-from-build-system? pkg)
(eq? from-build-system (package-build-system pkg)))
(define transform
(memoize
(lambda (pkg)
(define rewrite
(match-lambda
((name content . rest)
(let* ((is-package? (package? content))
(new-content (if is-package? (transform content) content))
(new-name (if (and is-package?
(string-prefix? from-prefix name))
(package-name new-content)
name)))
`(,new-name ,new-content ,@rest)))))
;; Special considerations for source packages: CL inputs become
;; propagated, and un-handled arguments are removed. Native inputs are
;; removed as are extraneous outputs.
(define new-propagated-inputs
(if target-is-source?
(map rewrite
(filter (match-lambda
((_ input . _)
(has-from-build-system? input)))
(package-inputs pkg)))
'()))
(define new-inputs
(if target-is-source?
(map rewrite
(filter (match-lambda
((_ input . _)
(not (has-from-build-system? input))))
(package-inputs pkg)))
(map rewrite (package-inputs pkg))))
(define base-arguments
(if target-is-source?
(strip-keyword-arguments
'(#:tests? #:special-dependencies #:asd-file
#:test-only-systems #:lisp)
(package-arguments pkg))
(package-arguments pkg)))
(cond
((and variant-property
(assoc-ref (package-properties pkg) variant-property))
=> force)
((has-from-build-system? pkg)
(package
(inherit pkg)
(location (package-location pkg))
(name (transform-package-name (package-name pkg)))
(build-system to-build-system)
(arguments
(substitute-keyword-arguments base-arguments
((#:phases phases) (list phases-transformer phases))))
(inputs new-inputs)
(propagated-inputs new-propagated-inputs)
(native-inputs (if target-is-source?
'()
(map rewrite (package-native-inputs pkg))))
(outputs (if target-is-source?
'("out")
(package-outputs pkg)))))
(else pkg)))))
transform)
(define (strip-variant-as-necessary variant pkg)
(define properties (package-properties pkg))
(if (assoc variant properties)
(package
(inherit pkg)
(properties (alist-delete variant properties)))
pkg))
(define (lower lisp-implementation)
(lambda* (name
#:key source inputs outputs native-inputs system target
(lisp (default-lisp (string->symbol lisp-implementation)))
#:allow-other-keys
#:rest arguments)
"Return a bag for NAME"
(define private-keywords
'(#:target #:inputs #:native-inputs #:lisp))
(and (not target)
(bag
(name name)
(system system)
(host-inputs `(,@(if source
`(("source" ,source))
'())
,@inputs
,@(standard-packages)))
(build-inputs `((,lisp-implementation ,lisp)
,@native-inputs))
(outputs outputs)
(build (asdf-build lisp-implementation))
(arguments (strip-keyword-arguments private-keywords arguments))))))
(define (asdf-build lisp-implementation)
(lambda* (store name inputs
#:key source outputs
(tests? #t)
(special-dependencies ''())
(asd-file #f)
(test-only-systems ''())
(lisp lisp-implementation)
(phases '(@ (guix build asdf-build-system)
%standard-phases))
(search-paths '())
(system (%current-system))
(guile #f)
(imported-modules %asdf-build-system-modules)
(modules %asdf-build-modules))
(define builder
`(begin
(use-modules ,@modules)
(asdf-build #:name ,name
#:source ,(match (assoc-ref inputs "source")
(((? derivation? source))
(derivation->output-path source))
((source) source)
(source source))
#:lisp ,lisp
#:special-dependencies ,special-dependencies
#:asd-file ,asd-file
#:test-only-systems ,test-only-systems
#:system ,system
#:tests? ,tests?
#:phases ,phases
#:outputs %outputs
#:search-paths ',(map search-path-specification->sexp
search-paths)
#:inputs %build-inputs)))
(define guile-for-build
(match guile
((? package?)
(package-derivation store guile system #:graft? #f))
(#f
(let* ((distro (resolve-interface '(gnu packages commencement)))
(guile (module-ref distro 'guile-final)))
(package-derivation store guile system #:graft? #f)))))
(build-expression->derivation store name builder
#:inputs inputs
#:system system
#:modules imported-modules
#:outputs outputs
#:guile-for-build guile-for-build)))
(define asdf-build-system/sbcl
(build-system
(name 'asdf/sbcl)
(description "The build system for ASDF binary packages using SBCL")
(lower (lower "sbcl"))))
(define asdf-build-system/ecl
(build-system
(name 'asdf/ecl)
(description "The build system for ASDF binary packages using ECL")
(lower (lower "ecl"))))
(define asdf-build-system/source
(build-system
(name 'asdf/source)
(description "The build system for ASDF source packages")
(lower lower/source)))
(define sbcl-package->cl-source-package
(let* ((property 'cl-source-variant)
(transformer
(package-with-build-system asdf-build-system/sbcl
asdf-build-system/source
"sbcl-"
"cl-"
#:variant-property property
#:phases-transformer
'(const %standard-phases/source))))
(lambda (pkg)
(transformer
(strip-variant-as-necessary property pkg)))))
(define sbcl-package->ecl-package
(let* ((property 'ecl-variant)
(transformer
(package-with-build-system asdf-build-system/sbcl
asdf-build-system/ecl
"sbcl-"
"ecl-"
#:variant-property property
#:phases-transformer
'identity)))
(lambda (pkg)
(transformer
(strip-variant-as-necessary property pkg)))))
;;; asdf.scm ends here

View File

@ -0,0 +1,282 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
;;;
;;; 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 build asdf-build-system)
#:use-module ((guix build gnu-build-system) #:prefix gnu:)
#:use-module (guix build utils)
#:use-module (guix build lisp-utils)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (ice-9 rdelim)
#:use-module (ice-9 receive)
#:use-module (ice-9 regex)
#:use-module (ice-9 match)
#:use-module (ice-9 format)
#:use-module (ice-9 ftw)
#:export (%standard-phases
%standard-phases/source
asdf-build
asdf-build/source))
;; Commentary:
;;
;; System for building ASDF packages; creating executable programs and images
;; from them.
;;
;; Code:
(define %object-prefix "/lib")
(define (source-install-prefix lisp)
(string-append %install-prefix "/" lisp "-source"))
(define %system-install-prefix
(string-append %install-prefix "/systems"))
(define (output-path->package-name path)
(package-name->name+version (strip-store-file-name path)))
(define (outputs->name outputs)
(output-path->package-name
(assoc-ref outputs "out")))
(define (lisp-source-directory output lisp name)
(string-append output (source-install-prefix lisp) "/" name))
(define (source-directory output name)
(string-append output %install-prefix "/source/" name))
(define (library-directory output lisp)
(string-append output %object-prefix
"/" lisp))
(define (output-translation source-path
object-output
lisp)
"Return a translation for the system's source path
to it's binary output."
`((,source-path
:**/ :*.*.*)
(,(library-directory object-output lisp)
:**/ :*.*.*)))
(define (source-asd-file output lisp name asd-file)
(string-append (lisp-source-directory output lisp name) "/" asd-file))
(define (copy-files-to-output outputs output name)
"Copy all files from OUTPUT to \"out\". Create an extra link to any
system-defining files in the source to a convenient location. This is done
before any compiling so that the compiled source locations will be valid."
(let* ((out (assoc-ref outputs output))
(source (getcwd))
(target (source-directory out name))
(system-path (string-append out %system-install-prefix)))
(copy-recursively source target)
(mkdir-p system-path)
(for-each
(lambda (file)
(symlink file
(string-append system-path "/" (basename file))))
(find-files target "\\.asd$"))
#t))
(define* (install #:key outputs #:allow-other-keys)
"Copy and symlink all the source files."
(copy-files-to-output outputs "out" (outputs->name outputs)))
(define* (copy-source #:key outputs lisp #:allow-other-keys)
"Copy the source to \"out\"."
(let* ((out (assoc-ref outputs "out"))
(name (remove-lisp-from-name (output-path->package-name out) lisp))
(install-path (string-append out %install-prefix)))
(copy-files-to-output outputs "out" name)
;; Hide the files from asdf
(with-directory-excursion install-path
(rename-file "source" (string-append lisp "-source"))
(delete-file-recursively "systems")))
#t)
(define* (build #:key outputs inputs lisp asd-file
#:allow-other-keys)
"Compile the system."
(let* ((out (assoc-ref outputs "out"))
(name (remove-lisp-from-name (output-path->package-name out) lisp))
(source-path (lisp-source-directory out lisp name))
(translations (wrap-output-translations
`(,(output-translation source-path
out
lisp))))
(asd-file (and=> asd-file (cut source-asd-file out lisp name <>))))
(setenv "ASDF_OUTPUT_TRANSLATIONS"
(replace-escaped-macros (format #f "~S" translations)))
;; We don't need this if we have the asd file, and it can mess with the
;; load ordering we're trying to enforce
(unless asd-file
(prepend-to-source-registry (string-append source-path "//")))
(setenv "HOME" out) ; ecl's asdf sometimes wants to create $HOME/.cache
(parameterize ((%lisp (string-append
(assoc-ref inputs lisp) "/bin/" lisp)))
(compile-system name lisp asd-file))
;; As above, ecl will sometimes create this even though it doesn't use it
(let ((cache-directory (string-append out "/.cache")))
(when (directory-exists? cache-directory)
(delete-file-recursively cache-directory))))
#t)
(define* (check #:key lisp tests? outputs inputs asd-file
#:allow-other-keys)
"Test the system."
(let* ((name (remove-lisp-from-name (outputs->name outputs) lisp))
(out (assoc-ref outputs "out"))
(asd-file (and=> asd-file (cut source-asd-file out lisp name <>))))
(if tests?
(parameterize ((%lisp (string-append
(assoc-ref inputs lisp) "/bin/" lisp)))
(test-system name lisp asd-file))
(format #t "test suite not run~%")))
#t)
(define* (patch-asd-files #:key outputs
inputs
lisp
special-dependencies
test-only-systems
#:allow-other-keys)
"Patch any asd files created by the compilation process so that they can
find their dependencies. Exclude any TEST-ONLY-SYSTEMS which were only
included to run tests. Add any SPECIAL-DEPENDENCIES which the LISP
implementation itself provides."
(let* ((out (assoc-ref outputs "out"))
(name (remove-lisp-from-name (output-path->package-name out) lisp))
(registry (lset-difference
(lambda (input system)
(match input
((name . path) (string=? name system))))
(lisp-dependencies lisp inputs)
test-only-systems))
(lisp-systems (map first registry)))
(for-each
(lambda (asd-file)
(patch-asd-file asd-file registry lisp
(append lisp-systems special-dependencies)))
(find-files out "\\.asd$")))
#t)
(define* (symlink-asd-files #:key outputs lisp #:allow-other-keys)
"Create an extra reference to the system in a convenient location."
(let* ((out (assoc-ref outputs "out")))
(for-each
(lambda (asd-file)
(substitute* asd-file
((";;; Built for.*") "") ; remove potential non-determinism
(("^\\(DEFSYSTEM(.*)$" all end) (string-append "(asdf:defsystem" end)))
(receive (new-asd-file asd-file-directory)
(bundle-asd-file out asd-file lisp)
(mkdir-p asd-file-directory)
(symlink asd-file new-asd-file)
;; Update the source registry for future phases which might want to
;; use the newly compiled system.
(prepend-to-source-registry
(string-append asd-file-directory "/"))))
(find-files (string-append out %object-prefix) "\\.asd$"))
)
#t)
(define* (cleanup-files #:key outputs lisp
#:allow-other-keys)
"Remove any compiled files which are not a part of the final bundle."
(let ((out (assoc-ref outputs "out")))
(match lisp
("sbcl"
(for-each
(lambda (file)
(unless (string-suffix? "--system.fasl" file)
(delete-file file)))
(find-files out "\\.fasl$")))
("ecl"
(for-each delete-file
(append (find-files out "\\.fas$")
(find-files out "\\.o$")
(find-files out "\\.a$")))))
(with-directory-excursion (library-directory out lisp)
(for-each
(lambda (file)
(rename-file file
(string-append "./" (basename file))))
(find-files "."))
(for-each delete-file-recursively
(scandir "."
(lambda (file)
(and
(directory-exists? file)
(string<> "." file)
(string<> ".." file)))))))
#t)
(define* (strip #:key lisp #:allow-other-keys #:rest args)
;; stripping sbcl binaries removes their entry program and extra systems
(or (string=? lisp "sbcl")
(apply (assoc-ref gnu:%standard-phases 'strip) args)))
(define %standard-phases/source
(modify-phases gnu:%standard-phases
(delete 'configure)
(delete 'check)
(delete 'build)
(replace 'install install)))
(define %standard-phases
(modify-phases gnu:%standard-phases
(delete 'configure)
(delete 'install)
(replace 'build build)
(add-before 'build 'copy-source copy-source)
(replace 'check check)
(replace 'strip strip)
(add-after 'check 'link-dependencies patch-asd-files)
(add-after 'link-dependencies 'cleanup cleanup-files)
(add-after 'cleanup 'create-symlinks symlink-asd-files)))
(define* (asdf-build #:key inputs
(phases %standard-phases)
#:allow-other-keys
#:rest args)
(apply gnu:gnu-build
#:inputs inputs
#:phases phases
args))
(define* (asdf-build/source #:key inputs
(phases %standard-phases/source)
#:allow-other-keys
#:rest args)
(apply gnu:gnu-build
#:inputs inputs
#:phases phases
args))
;;; asdf-build-system.scm ends here

View File

@ -162,6 +162,17 @@ characters."
(else
`((@@ (guix build bournish) wc-command-implementation) ,@args))))
(define (reboot-command . args)
"Emit code for 'reboot'."
;; Normally Bournish is used in the initrd, where 'reboot' is provided
;; directly by (guile-user). In other cases, just bail out.
`(if (defined? 'reboot)
(reboot)
(begin
(format (current-error-port)
"I don't know how to reboot, sorry about that!~%")
#f)))
(define (help-command . _)
(display "\
Hello, this is Bournish, a minimal Bourne-like shell in Guile!
@ -189,7 +200,8 @@ commands such as 'ls' and 'cd'; it lacks globbing, pipes---everything.\n"))
("ls" ,ls-command)
("which" ,which-command)
("cat" ,cat-command)
("wc" ,wc-command)))
("wc" ,wc-command)
("reboot" ,reboot-command)))
(define (read-bournish port env)
"Read a Bournish expression from PORT, and return the corresponding Scheme

View File

@ -210,6 +210,32 @@ an exception is caught."
(print-exception port #f key args)
(primitive-exit 1))))))
(define* (mkdir-p* dir #:optional (mode #o755))
"This is a variant of 'mkdir-p' that works around
<http://bugs.gnu.org/24659> by passing MODE explicitly in each 'mkdir' call."
(define absolute?
(string-prefix? "/" dir))
(define not-slash
(char-set-complement (char-set #\/)))
(let loop ((components (string-tokenize dir not-slash))
(root (if absolute?
""
".")))
(match components
((head tail ...)
(let ((path (string-append root "/" head)))
(catch 'system-error
(lambda ()
(mkdir path mode)
(loop tail path))
(lambda args
(if (= EEXIST (system-error-errno args))
(loop tail path)
(apply throw args))))))
(() #t))))
(define* (rewrite-directory directory output mapping
#:optional (store (%store-directory)))
"Copy DIRECTORY to OUTPUT, replacing strings according to MAPPING, a list of
@ -258,7 +284,7 @@ file name pairs."
(define (rewrite-leaf file)
(let ((stat (lstat file))
(dest (destination file)))
(mkdir-p (dirname dest))
(mkdir-p* (dirname dest))
(case (stat:type stat)
((symlink)
(let ((target (readlink file)))
@ -277,7 +303,7 @@ file name pairs."
store)
(chmod output (stat:perms stat)))))))
((directory)
(mkdir-p dest))
(mkdir-p* dest))
(else
(error "unsupported file type" stat)))))

327
guix/build/lisp-utils.scm Normal file
View File

@ -0,0 +1,327 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
;;;
;;; 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 build lisp-utils)
#:use-module (ice-9 format)
#:use-module (ice-9 match)
#:use-module (ice-9 regex)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (guix build utils)
#:export (%lisp
%install-prefix
lisp-eval-program
compile-system
test-system
replace-escaped-macros
generate-executable-wrapper-system
generate-executable-entry-point
generate-executable-for-system
patch-asd-file
bundle-install-prefix
lisp-dependencies
bundle-asd-file
remove-lisp-from-name
wrap-output-translations
prepend-to-source-registry
build-program
build-image))
;;; Commentary:
;;;
;;; Tools to evaluate lisp programs within a lisp session, generate wrapper
;;; systems for executables. Compile, test, and produce images for systems and
;;; programs, and link them with their dependencies.
;;;
;;; Code:
(define %lisp
;; File name of the Lisp compiler.
(make-parameter "lisp"))
(define %install-prefix "/share/common-lisp")
(define (bundle-install-prefix lisp)
(string-append %install-prefix "/" lisp "-bundle-systems"))
(define (remove-lisp-from-name name lisp)
(string-drop name (1+ (string-length lisp))))
(define (wrap-output-translations translations)
`(:output-translations
,@translations
:inherit-configuration))
(define (lisp-eval-program lisp program)
"Evaluate PROGRAM with a given LISP implementation."
(unless (zero? (apply system*
(lisp-invoke lisp (format #f "~S" program))))
(error "lisp-eval-program failed!" lisp program)))
(define (lisp-invoke lisp program)
"Return a list of arguments for system* determining how to invoke LISP
with PROGRAM."
(match lisp
("sbcl" `(,(%lisp) "--non-interactive" "--eval" ,program))
("ecl" `(,(%lisp) "-eval" ,program "-eval" "(quit)"))))
(define (asdf-load-all systems)
(map (lambda (system)
`(funcall
(find-symbol
(symbol-name :load-system)
(symbol-name :asdf))
,system))
systems))
(define (compile-system system lisp asd-file)
"Use a lisp implementation to compile SYSTEM using asdf. Load ASD-FILE
first if SYSTEM is defined there."
(lisp-eval-program lisp
`(progn
(require :asdf)
(in-package :asdf)
,@(if asd-file
`((load ,asd-file))
'())
(in-package :cl-user)
(funcall (find-symbol
(symbol-name :operate)
(symbol-name :asdf))
(find-symbol
(symbol-name :compile-bundle-op)
(symbol-name :asdf))
,system)
(funcall (find-symbol
(symbol-name :operate)
(symbol-name :asdf))
(find-symbol
(symbol-name :deliver-asd-op)
(symbol-name :asdf))
,system))))
(define (test-system system lisp asd-file)
"Use a lisp implementation to test SYSTEM using asdf. Load ASD-FILE first
if SYSTEM is defined there."
(lisp-eval-program lisp
`(progn
(require :asdf)
(in-package :asdf)
,@(if asd-file
`((load ,asd-file))
'())
(in-package :cl-user)
(funcall (find-symbol
(symbol-name :test-system)
(symbol-name :asdf))
,system))))
(define (string->lisp-keyword . strings)
"Return a lisp keyword for the concatenation of STRINGS."
(string->symbol (apply string-append ":" strings)))
(define (generate-executable-for-system type system lisp)
"Use LISP to generate an executable, whose TYPE can be \"image\" or
\"program\". The latter will always be standalone. Depends on having created
a \"SYSTEM-exec\" system which contains the entry program."
(lisp-eval-program
lisp
`(progn
(require :asdf)
(funcall (find-symbol
(symbol-name :operate)
(symbol-name :asdf))
(find-symbol
(symbol-name ,(string->lisp-keyword type "-op"))
(symbol-name :asdf))
,(string-append system "-exec")))))
(define (generate-executable-wrapper-system system dependencies)
"Generates a system which can be used by asdf to produce an image or program
inside the current directory. The image or program will contain
DEPENDENCIES."
(with-output-to-file (string-append system "-exec.asd")
(lambda _
(format #t "~y~%"
`(defsystem ,(string->lisp-keyword system "-exec")
:entry-point ,(string-append system "-exec:main")
:depends-on (:uiop
,@(map string->lisp-keyword
dependencies))
:components ((:file ,(string-append system "-exec"))))))))
(define (generate-executable-entry-point system entry-program)
"Generates an entry point program from the list of lisp statements
ENTRY-PROGRAM for SYSTEM within the current directory."
(with-output-to-file (string-append system "-exec.lisp")
(lambda _
(let ((system (string->lisp-keyword system "-exec")))
(format #t "~{~y~%~%~}"
`((defpackage ,system
(:use :cl)
(:export :main))
(in-package ,system)
(defun main ()
(let ((arguments uiop:*command-line-arguments*))
(declare (ignorable arguments))
,@entry-program))))))))
(define (wrap-perform-method lisp registry dependencies file-name)
"Creates a wrapper method which allows the system to locate its dependent
systems from REGISTRY, an alist of the same form as %outputs, which contains
lisp systems which the systems is dependent on. All DEPENDENCIES which the
system depends on will the be loaded before this system."
(let* ((system (string-drop-right (basename file-name) 4))
(system-symbol (string->lisp-keyword system)))
`(defmethod asdf:perform :before
(op (c (eql (asdf:find-system ,system-symbol))))
(asdf/source-registry:ensure-source-registry)
,@(map (match-lambda
((name . path)
(let ((asd-file (string-append path
(bundle-install-prefix lisp)
"/" name ".asd")))
`(setf
(gethash ,name
asdf/source-registry:*source-registry*)
,(string->symbol "#p")
,(bundle-asd-file path asd-file lisp)))))
registry)
,@(map (lambda (system)
`(asdf:load-system ,(string->lisp-keyword system)))
dependencies))))
(define (patch-asd-file asd-file registry lisp dependencies)
"Patches ASD-FILE with a perform method as described in WRAP-PERFORM-METHOD."
(chmod asd-file #o644)
(let ((port (open-file asd-file "a")))
(dynamic-wind
(lambda _ #t)
(lambda _
(display
(replace-escaped-macros
(format #f "~%~y~%"
(wrap-perform-method lisp registry
dependencies asd-file)))
port))
(lambda _ (close-port port))))
(chmod asd-file #o444))
(define (lisp-dependencies lisp inputs)
"Determine which inputs are lisp system dependencies, by using the convention
that a lisp system dependency will resemble \"system-LISP\"."
(filter-map (match-lambda
((name . value)
(and (string-prefix? lisp name)
(string<> lisp name)
`(,(remove-lisp-from-name name lisp)
. ,value))))
inputs))
(define (bundle-asd-file output-path original-asd-file lisp)
"Find the symlinked bundle file for ORIGINAL-ASD-FILE by looking in
OUTPUT-PATH/share/common-lisp/LISP-bundle-systems/<system>.asd. Returns two
values: the asd file itself and the directory in which it resides."
(let ((bundle-asd-path (string-append output-path
(bundle-install-prefix lisp))))
(values (string-append bundle-asd-path "/" (basename original-asd-file))
bundle-asd-path)))
(define (replace-escaped-macros string)
"Replace simple lisp forms that the guile writer escapes, for example by
replacing #{#p}# with #p. Should only be used to replace truly simple forms
which are not nested."
(regexp-substitute/global #f "(#\\{)(\\S*)(\\}#)" string
'pre 2 'post))
(define (prepend-to-source-registry path)
(setenv "CL_SOURCE_REGISTRY"
(string-append path ":" (or (getenv "CL_SOURCE_REGISTRY") ""))))
(define* (build-program lisp program #:key inputs
(dependencies (list (basename program)))
entry-program
#:allow-other-keys)
"Generate an executable program containing all DEPENDENCIES, and which will
execute ENTRY-PROGRAM. The result is placed in PROGRAM. When executed, it
will run ENTRY-PROGRAM, a list of Common Lisp expressions in which `arguments'
has been bound to the command-line arguments which were passed."
(generate-executable lisp program
#:inputs inputs
#:dependencies dependencies
#:entry-program entry-program
#:type "program")
(let* ((name (basename program))
(bin-directory (dirname program)))
(with-directory-excursion bin-directory
(rename-file (string-append name "-exec")
name)))
#t)
(define* (build-image lisp image #:key inputs
(dependencies (list (basename image)))
#:allow-other-keys)
"Generate an image, possibly standalone, which contains all DEPENDENCIES,
placing the result in IMAGE.image."
(generate-executable lisp image
#:inputs inputs
#:dependencies dependencies
#:entry-program '(nil)
#:type "image")
(let* ((name (basename image))
(bin-directory (dirname image)))
(with-directory-excursion bin-directory
(rename-file (string-append name "-exec--all-systems.image")
(string-append name ".image"))))
#t)
(define* (generate-executable lisp out-file #:key inputs
dependencies
entry-program
type
#:allow-other-keys)
"Generate an executable by using asdf's TYPE-op, containing whithin the
image all DEPENDENCIES, and running ENTRY-PROGRAM in the case of an
executable."
(let* ((bin-directory (dirname out-file))
(name (basename out-file)))
(mkdir-p bin-directory)
(with-directory-excursion bin-directory
(generate-executable-wrapper-system name dependencies)
(generate-executable-entry-point name entry-program))
(prepend-to-source-registry
(string-append bin-directory "/"))
(setenv "ASDF_OUTPUT_TRANSLATIONS"
(replace-escaped-macros
(format
#f "~S"
(wrap-output-translations
`(((,bin-directory :**/ :*.*.*)
(,bin-directory :**/ :*.*.*)))))))
(parameterize ((%lisp (string-append
(assoc-ref inputs lisp) "/bin/" lisp)))
(generate-executable-for-system type name lisp))
(delete-file (string-append bin-directory "/" name "-exec.asd"))
(delete-file (string-append bin-directory "/" name "-exec.lisp"))))

View File

@ -44,7 +44,7 @@ failure."
"Return the extension of the archive e.g. '.tar.gz' given a URL, or
false if none is recognized"
(find (lambda (x) (string-suffix? x url))
(list ".tar.gz" ".tar.bz2" ".tar.xz" ".zip" ".tar" ".tgz")))
(list ".tar.gz" ".tar.bz2" ".tar.xz" ".zip" ".tar" ".tgz" ".love")))
(define (updated-github-url old-package new-version)
;; Return a url for the OLD-PACKAGE with NEW-VERSION. If no source url in

View File

@ -8,6 +8,7 @@
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016 Fabian Harfert <fhmgufs@web.de>
;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org>
;;; Copyright © 2016 ng0 <ngillmann@runbox.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -43,6 +44,7 @@
epl1.0
expat
freetype
freebsd-doc
giftware
gpl1 gpl1+ gpl2 gpl2+ gpl3 gpl3+
gfl1.0
@ -286,6 +288,11 @@ at URI, which may be a file:// URI pointing the package's tree."
"https://www.gnu.org/licenses/fdl.html"
"https://www.gnu.org/licenses/license-list#FDL"))
(define freebsd-doc
(license "FreeBSD Documentation License"
"https://www.freebsd.org/copyright/freebsd-doc-license.html"
"https://www.gnu.org/licenses/license-list.html#FreeBSDDL"))
(define opl1.0+
(license "Open Publication License 1.0 or later"
"http://opencontent.org/openpub/"

View File

@ -391,7 +391,7 @@ No authentication and authorization checks are performed here!"
(define* (assert-valid-narinfo narinfo
#:optional (acl (current-acl))
#:key (verbose? #t))
#:key verbose?)
"Raise an exception if NARINFO lacks a signature, has an invalid signature,
or is signed by an unauthorized key."
(let ((hash (narinfo-sha256 narinfo)))
@ -404,9 +404,8 @@ or is signed by an unauthorized key."
(unless %allow-unauthenticated-substitutes?
(assert-valid-signature narinfo signature hash acl)
(when verbose?
;; Visually separate substitutions with a newline.
(format (current-error-port)
(_ "~%Found valid signature for ~a~%")
(_ "Found valid signature for ~a~%")
(narinfo-path narinfo))
(format (current-error-port)
(_ "From ~a~%")
@ -893,7 +892,7 @@ DESTINATION as a nar file. Verify the substitute against ACL."
;; "(4.1MiB installed)"; it shows the size of the package once
;; installed.
(_ "Downloading ~a~:[~*~; (~a installed)~]...~%")
(store-path-abbreviation store-item)
(uri->string uri)
;; Use the Nar size as an estimate of the installed size.
(narinfo-size narinfo)
(and=> (narinfo-size narinfo)
@ -921,8 +920,9 @@ DESTINATION as a nar file. Verify the substitute against ACL."
;; Unpack the Nar at INPUT into DESTINATION.
(restore-file input destination)
;; Skip a line after what 'progress-proc' printed.
(newline (current-error-port))
;; Skip a line after what 'progress-proc' printed, and another one to
;; visually separate substitutions.
(display "\n\n" (current-error-port))
(every (compose zero? cdr waitpid) pids))))

View File

@ -227,25 +227,20 @@ BODY..., and restore them."
(set! %load-path path)
(set! %load-compiled-path cpath)))))
(define-syntax-rule (warn-on-system-error body ...)
(catch 'system-error
(lambda ()
body ...)
(lambda (key proc format-string format-args errno . rest)
(warning (_ "while talking to shepherd: ~a~%")
(apply format #f format-string format-args))
(with-monad %store-monad
(return #f)))))
(define-syntax-rule (with-shepherd-error-handling mbody ...)
"Catch and report Shepherd errors that arise when binding MBODY, a monadic
expression in %STORE-MONAD."
(lambda (store)
(warn-on-system-error
(guard (c ((shepherd-error? c)
(values (report-shepherd-error c) store)))
(values (run-with-store store (begin mbody ...))
store)))))
(catch 'system-error
(lambda ()
(guard (c ((shepherd-error? c)
(values (report-shepherd-error c) store)))
(values (run-with-store store (begin mbody ...))
store)))
(lambda (key proc format-string format-args errno . rest)
(warning (_ "while talking to shepherd: ~a~%")
(apply format #f format-string format-args))
(values #f store)))))
(define (report-shepherd-error error)
"Report ERROR, a '&shepherd-error' error condition object."

View File

@ -369,19 +369,30 @@ keywords not already present in ARGS."
(match defaults
((kw value rest ...)
(loop rest
(if (assoc-ref kw args)
(if (memq kw args)
args
(cons* kw value args))))
(()
args))))
(define-syntax collect-default-args
(syntax-rules ()
((_)
'())
((_ (_ _) rest ...)
(collect-default-args rest ...))
((_ (kw _ dflt) rest ...)
(cons* kw dflt (collect-default-args rest ...)))))
(define-syntax substitute-keyword-arguments
(syntax-rules ()
"Return a new list of arguments where the value for keyword arg KW is
replaced by EXP. EXP is evaluated in a context where VAR is boud to the
previous value of the keyword argument."
((_ original-args ((kw var) exp) ...)
(let loop ((args original-args)
replaced by EXP. EXP is evaluated in a context where VAR is bound to the
previous value of the keyword argument, or DFLT if given."
((_ original-args ((kw var dflt ...) exp) ...)
(let loop ((args (default-keyword-arguments
original-args
(collect-default-args (kw var dflt ...) ...)))
(before '()))
(match args
((kw var rest (... ...))

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More