From 26358ac5ab612e3ba5cc965994853f4a6616220c Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 20 Sep 2018 13:13:25 +0200 Subject: [PATCH 001/909] gnu: Add r-parmigene. * gnu/packages/cran.scm (r-parmigene): New variable. --- gnu/packages/cran.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index 5519b85d0b..58e9ad09c7 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -5875,3 +5875,23 @@ score in order to detect blood doping. The package also contains functions to calculate other scores used in anti-doping programs, such as the ratio of hemoglobin to reticulocytes (OFF-score), as well as example data.") (license license:gpl2+))) + +(define-public r-parmigene + (package + (name "r-parmigene") + (version "1.0.2") + (source + (origin + (method url-fetch) + (uri (cran-uri "parmigene" version)) + (sha256 + (base32 + "1fsm6pkr17jcbzkj1hbn91jf890fviqk1lq6ls8pihsdgah1zb4d")))) + (build-system r-build-system) + (home-page "https://cran.r-project.org/web/packages/parmigene/") + (synopsis "Mutual information estimation for gene network reconstruction") + (description + "This package provides a parallel estimation of the mutual information +based on entropy estimates from k-nearest neighbors distances and algorithms +for the reconstruction of gene regulatory networks.") + (license license:agpl3+))) From 391fc11f0e492b06fa6eb31535e1e34165040b7d Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 20 Sep 2018 15:53:20 +0200 Subject: [PATCH 002/909] gnu: python2-scikit-learn: Fix check phase. * gnu/packages/machine-learning.scm (python2-scikit-learn)[arguments]: Override check phase to disable broken tests and pass environment variables. --- gnu/packages/machine-learning.scm | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 9aa61bd8f8..990a6c771a 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -750,7 +750,24 @@ data analysis.") (license license:bsd-3))) (define-public python2-scikit-learn - (package-with-python2 python-scikit-learn)) + (let ((parent (package-with-python2 python-scikit-learn))) + (package (inherit parent) + (arguments + (substitute-keyword-arguments (package-arguments parent) + ((#:phases phases) + `(modify-phases ,phases + (replace 'check + (lambda _ + ;; Restrict OpenBLAS threads to prevent segfaults while testing! + (setenv "OPENBLAS_NUM_THREADS" "1") + ;; Some tests expect to be able to write to HOME. + (setenv "HOME" "/tmp") + ;; Disable tests that require network access + (delete-file "sklearn/datasets/tests/test_kddcup99.py") + (delete-file "sklearn/datasets/tests/test_mldata.py") + (delete-file "sklearn/datasets/tests/test_rcv1.py") + (invoke "pytest" "sklearn") + #t))))))))) (define-public python-autograd (let* ((commit "442205dfefe407beffb33550846434baa90c4de7") From e30397dddb0c8ba130b9c77b3305f6da6508e766 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 20 Sep 2018 16:02:38 +0200 Subject: [PATCH 003/909] gnu: ghc-xml-conduit: Update to 1.8.0.1. * gnu/packages/haskell.scm (ghc-xml-conduit): Update to 1.8.0.1. [inputs]: Add ghc-doctest. --- gnu/packages/haskell.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index eb629cf138..0c6c30acd2 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -6729,7 +6729,7 @@ documents.") (define-public ghc-xml-conduit (package (name "ghc-xml-conduit") - (version "1.7.1.2") + (version "1.8.0.1") (source (origin (method url-fetch) @@ -6737,11 +6737,12 @@ documents.") "xml-conduit-" version ".tar.gz")) (sha256 (base32 - "0n4k0rq9j5cc9kdvj9xbx8gmiqlyk5x6pw8yxzw5wfsw7qkych2s")))) + "177gmyigxql1pn3ncz0r8annwv5cbxnihbgrrg1dhm4gmc9jy2wq")))) (build-system haskell-build-system) (inputs `(("ghc-conduit" ,ghc-conduit) ("ghc-conduit-extra" ,ghc-conduit-extra) + ("ghc-doctest" ,ghc-doctest) ("ghc-resourcet" ,ghc-resourcet) ("ghc-text" ,ghc-text) ("ghc-xml-types" ,ghc-xml-types) From a235ea4f30785e42cedf9a52d22c1e6650901fdd Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 20 Sep 2018 16:03:06 +0200 Subject: [PATCH 004/909] gnu: ghc-pandoc-citeproc: Update to 0.14.3.1. * gnu/packages/haskell.scm (ghc-pandoc-citeproc): Update to 0.14.3.1. --- gnu/packages/haskell.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 0c6c30acd2..6b774c358a 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -6763,7 +6763,7 @@ the @code{conduit} package.") (define-public ghc-pandoc-citeproc (package (name "ghc-pandoc-citeproc") - (version "0.12.2.5") + (version "0.14.3.1") (source (origin (method url-fetch) @@ -6772,7 +6772,7 @@ the @code{conduit} package.") version ".tar.gz")) (sha256 (base32 - "1l58nbflcnlznc93qimkk7ghk2gv8kipf45zf88piqa2zys41yyx")))) + "0yj6rckwsc9vig40cm15ry0j3d01xpk04qma9n4byhal6v4b5h22")))) (build-system haskell-build-system) (arguments `(#:phases From 89ee8a6edf7ceae66ff86e88778e07e80aa119fd Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 20 Sep 2018 17:46:34 +0200 Subject: [PATCH 005/909] gnu: rsem: Update to 1.3.1. * gnu/packages/bioinformatics.scm (rsem): Update to 1.3.1. [source]: Fetch from git; remove patch; delete bundled samtools. [arguments]: Pass make flags; adjust phases. [inputs]: Remove ncurses and samtools-0.1; add htslib-1.3. * gnu/packages/patches/rsem-makefile.patch: Remove patch. * gnu/local.mk (dist_patch_DATA): Remove it. --- gnu/local.mk | 1 - gnu/packages/bioinformatics.scm | 91 +-- gnu/packages/patches/rsem-makefile.patch | 682 ----------------------- 3 files changed, 52 insertions(+), 722 deletions(-) delete mode 100644 gnu/packages/patches/rsem-makefile.patch diff --git a/gnu/local.mk b/gnu/local.mk index 0ead43acd9..4bca986619 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1115,7 +1115,6 @@ dist_patch_DATA = \ %D%/packages/patches/reptyr-fix-gcc-7.patch \ %D%/packages/patches/ripperx-missing-file.patch \ %D%/packages/patches/rpcbind-CVE-2017-8779.patch \ - %D%/packages/patches/rsem-makefile.patch \ %D%/packages/patches/rtags-separate-rct.patch \ %D%/packages/patches/racket-store-checksum-override.patch \ %D%/packages/patches/ruby-rubygems-276-for-ruby24.patch \ diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 67f24a6170..10330cd8b2 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -4800,66 +4800,79 @@ phylogenies.") (define-public rsem (package (name "rsem") - (version "1.2.20") + (version "1.3.1") (source (origin - (method url-fetch) - (uri - (string-append "http://deweylab.biostat.wisc.edu/rsem/src/rsem-" - version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/deweylab/RSEM.git") + (commit (string-append "v" version)))) (sha256 - (base32 "0nzdc0j0hjllhsd5f2xli95dafm3nawskigs140xzvjk67xh0r9q")) - (patches (search-patches "rsem-makefile.patch")) + (base32 "1jlq11d1p8qp64w75yj8cnbbd1a93viq10pzsbwal7vdn8fg13j1")) + (file-name (git-file-name name version)) (modules '((guix build utils))) (snippet '(begin - ;; remove bundled copy of boost + ;; remove bundled copy of boost and samtools (delete-file-recursively "boost") + (delete-file-recursively "samtools-1.3") #t)))) (build-system gnu-build-system) (arguments `(#:tests? #f ;no "check" target + #:make-flags + (list (string-append "BOOST=" + (assoc-ref %build-inputs "boost") + "/include/") + (string-append "SAMHEADERS=" + (assoc-ref %build-inputs "htslib") + "/include/htslib/sam.h") + (string-append "SAMLIBS=" + (assoc-ref %build-inputs "htslib") + "/lib/libhts.a")) #:phases (modify-phases %standard-phases ;; No "configure" script. ;; Do not build bundled samtools library. (replace 'configure - (lambda _ - (substitute* "Makefile" - (("^all : sam/libbam.a") "all : ")) - #t)) + (lambda _ + (substitute* "Makefile" + (("^all : \\$\\(PROGRAMS\\).*") "all: $(PROGRAMS)\n") + (("^\\$\\(SAMLIBS\\).*") "")) + #t)) (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (string-append (assoc-ref outputs "out"))) - (bin (string-append out "/bin/")) - (perl (string-append out "/lib/perl5/site_perl"))) - (mkdir-p bin) - (mkdir-p perl) - (for-each (lambda (file) - (install-file file bin)) - (find-files "." "rsem-.*")) - (install-file "rsem_perl_utils.pm" perl)) - #t)) - (add-after - 'install 'wrap-program - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (for-each (lambda (prog) - (wrap-program (string-append out "/bin/" prog) - `("PERL5LIB" ":" prefix - (,(string-append out "/lib/perl5/site_perl"))))) - '("rsem-plot-transcript-wiggles" - "rsem-calculate-expression" - "rsem-generate-ngvector" - "rsem-run-ebseq" - "rsem-prepare-reference"))) - #t))))) + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (string-append (assoc-ref outputs "out"))) + (bin (string-append out "/bin/")) + (perl (string-append out "/lib/perl5/site_perl"))) + (mkdir-p bin) + (mkdir-p perl) + (for-each (lambda (file) + (install-file file bin)) + (find-files "." "rsem-.*")) + (install-file "rsem_perl_utils.pm" perl)) + #t)) + (add-after 'install 'wrap-program + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (for-each (lambda (prog) + (wrap-program (string-append out "/bin/" prog) + `("PERL5LIB" ":" prefix + (,(string-append out "/lib/perl5/site_perl"))))) + '("rsem-calculate-expression" + "rsem-control-fdr" + "rsem-generate-data-matrix" + "rsem-generate-ngvector" + "rsem-plot-transcript-wiggles" + "rsem-prepare-reference" + "rsem-run-ebseq" + "rsem-run-prsem-testing-procedure"))) + #t))))) (inputs `(("boost" ,boost) - ("ncurses" ,ncurses) ("r-minimal" ,r-minimal) ("perl" ,perl) - ("samtools" ,samtools-0.1) + ("htslib" ,htslib-1.3) ("zlib" ,zlib))) (home-page "http://deweylab.biostat.wisc.edu/rsem/") (synopsis "Estimate gene expression levels from RNA-Seq data") diff --git a/gnu/packages/patches/rsem-makefile.patch b/gnu/packages/patches/rsem-makefile.patch deleted file mode 100644 index 5481dc685f..0000000000 --- a/gnu/packages/patches/rsem-makefile.patch +++ /dev/null @@ -1,682 +0,0 @@ -This patch simplifies the Makefile, making it much easier to build rsem -without the bundled version of samtools. It has already been submitted -upstream: https://github.com/bli25wisc/RSEM/pull/11 - -From 161894e91a16c7e15af57e4fcfe8cb613711c7fa Mon Sep 17 00:00:00 2001 -From: Ricardo Wurmus -Date: Wed, 22 Apr 2015 14:51:07 +0200 -Subject: [PATCH 1/7] remove all headers from Makefile - ---- - Makefile | 95 +++++++++++----------------------------------------------------- - 1 file changed, 16 insertions(+), 79 deletions(-) - -diff --git a/Makefile b/Makefile -index 54e2603..3a55ed8 100644 ---- a/Makefile -+++ b/Makefile -@@ -10,133 +10,70 @@ all : $(PROGRAMS) - sam/libbam.a : - cd sam ; ${MAKE} all - --Transcript.h : utils.h -- --Transcripts.h : utils.h my_assert.h Transcript.h -- --rsem-extract-reference-transcripts : utils.h my_assert.h GTFItem.h Transcript.h Transcripts.h extractRef.cpp -+rsem-extract-reference-transcripts : extractRef.cpp - $(CC) -Wall -O3 extractRef.cpp -o rsem-extract-reference-transcripts - --rsem-synthesis-reference-transcripts : utils.h my_assert.h Transcript.h Transcripts.h synthesisRef.cpp -+rsem-synthesis-reference-transcripts : synthesisRef.cpp - $(CC) -Wall -O3 synthesisRef.cpp -o rsem-synthesis-reference-transcripts - --BowtieRefSeqPolicy.h : RefSeqPolicy.h -- --RefSeq.h : utils.h -- --Refs.h : utils.h RefSeq.h RefSeqPolicy.h PolyARules.h -- -- - rsem-preref : preRef.o - $(CC) preRef.o -o rsem-preref - --preRef.o : utils.h RefSeq.h Refs.h PolyARules.h RefSeqPolicy.h AlignerRefSeqPolicy.h preRef.cpp -+preRef.o : preRef.cpp - $(CC) $(COFLAGS) preRef.cpp - -- --SingleRead.h : Read.h -- --SingleReadQ.h : Read.h -- --PairedEndRead.h : Read.h SingleRead.h -- --PairedEndReadQ.h : Read.h SingleReadQ.h -- -- --PairedEndHit.h : SingleHit.h -- --HitContainer.h : GroupInfo.h -- -- --SamParser.h : sam/sam.h sam/bam.h utils.h my_assert.h SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h SingleHit.h PairedEndHit.h Transcripts.h -- -- - rsem-parse-alignments : parseIt.o sam/libbam.a - $(CC) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread - --parseIt.o : utils.h GroupInfo.h Read.h SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h SingleHit.h PairedEndHit.h HitContainer.h SamParser.h Transcripts.h sam/sam.h sam/bam.h parseIt.cpp -+parseIt.o : parseIt.cpp - $(CC) -Wall -O2 -c -I. parseIt.cpp - -- --rsem-build-read-index : utils.h buildReadIndex.cpp -+rsem-build-read-index : buildReadIndex.cpp - $(CC) -O3 buildReadIndex.cpp -o rsem-build-read-index - -- --simul.h : boost/random.hpp -- --ReadReader.h : SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h ReadIndex.h -- --SingleModel.h : utils.h my_assert.h Orientation.h LenDist.h RSPD.h Profile.h NoiseProfile.h ModelParams.h RefSeq.h Refs.h SingleRead.h SingleHit.h ReadReader.h simul.h -- --SingleQModel.h : utils.h my_assert.h Orientation.h LenDist.h RSPD.h QualDist.h QProfile.h NoiseQProfile.h ModelParams.h RefSeq.h Refs.h SingleReadQ.h SingleHit.h ReadReader.h simul.h -- --PairedEndModel.h : utils.h my_assert.h Orientation.h LenDist.h RSPD.h Profile.h NoiseProfile.h ModelParams.h RefSeq.h Refs.h SingleRead.h PairedEndRead.h PairedEndHit.h ReadReader.h simul.h -- --PairedEndQModel.h : utils.h my_assert.h Orientation.h LenDist.h RSPD.h QualDist.h QProfile.h NoiseQProfile.h ModelParams.h RefSeq.h Refs.h SingleReadQ.h PairedEndReadQ.h PairedEndHit.h ReadReader.h simul.h -- --HitWrapper.h : HitContainer.h -- --sam_rsem_aux.h : sam/bam.h -- --sam_rsem_cvt.h : sam/bam.h Transcript.h Transcripts.h -- --BamWriter.h : sam/sam.h sam/bam.h sam_rsem_aux.h sam_rsem_cvt.h SingleHit.h PairedEndHit.h HitWrapper.h Transcript.h Transcripts.h -- --sampling.h : boost/random.hpp -- --WriteResults.h : utils.h my_assert.h GroupInfo.h Transcript.h Transcripts.h RefSeq.h Refs.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h -- - rsem-run-em : EM.o sam/libbam.a - $(CC) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread - --EM.o : utils.h my_assert.h Read.h SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h SingleHit.h PairedEndHit.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h Refs.h GroupInfo.h HitContainer.h ReadIndex.h ReadReader.h Orientation.h LenDist.h RSPD.h QualDist.h QProfile.h NoiseQProfile.h ModelParams.h RefSeq.h RefSeqPolicy.h PolyARules.h Profile.h NoiseProfile.h Transcript.h Transcripts.h HitWrapper.h BamWriter.h sam/bam.h sam/sam.h simul.h sam_rsem_aux.h sampling.h boost/random.hpp WriteResults.h EM.cpp -+EM.o : EM.cpp - $(CC) $(COFLAGS) EM.cpp - --bc_aux.h : sam/bam.h -- --BamConverter.h : utils.h my_assert.h sam/sam.h sam/bam.h sam_rsem_aux.h sam_rsem_cvt.h bc_aux.h Transcript.h Transcripts.h -- --rsem-tbam2gbam : utils.h Transcripts.h Transcript.h bc_aux.h BamConverter.h sam/sam.h sam/bam.h sam/libbam.a sam_rsem_aux.h sam_rsem_cvt.h tbam2gbam.cpp sam/libbam.a -+rsem-tbam2gbam : tbam2gbam.cpp sam/libbam.a - $(CC) -O3 -Wall tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@ - --rsem-bam2wig : utils.h my_assert.h wiggle.h wiggle.o sam/libbam.a bam2wig.cpp -+rsem-bam2wig : wiggle.o sam/libbam.a bam2wig.cpp - $(CC) -O3 -Wall bam2wig.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ - --rsem-bam2readdepth : utils.h my_assert.h wiggle.h wiggle.o sam/libbam.a bam2readdepth.cpp -+rsem-bam2readdepth : wiggle.o sam/libbam.a bam2readdepth.cpp - $(CC) -O3 -Wall bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ - --wiggle.o: sam/bam.h sam/sam.h wiggle.cpp wiggle.h -+wiggle.o: wiggle.cpp - $(CC) $(COFLAGS) wiggle.cpp - - rsem-simulate-reads : simulation.o - $(CC) -o rsem-simulate-reads simulation.o - --simulation.o : utils.h Read.h SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h Refs.h RefSeq.h GroupInfo.h Transcript.h Transcripts.h Orientation.h LenDist.h RSPD.h QualDist.h QProfile.h NoiseQProfile.h Profile.h NoiseProfile.h simul.h boost/random.hpp WriteResults.h simulation.cpp -+simulation.o : simulation.cpp - $(CC) $(COFLAGS) simulation.cpp - - rsem-run-gibbs : Gibbs.o - $(CC) -o rsem-run-gibbs Gibbs.o -lpthread - --#some header files are omitted --Gibbs.o : utils.h my_assert.h boost/random.hpp sampling.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h RefSeq.h RefSeqPolicy.h PolyARules.h Refs.h GroupInfo.h WriteResults.h Gibbs.cpp -+Gibbs.o : Gibbs.cpp - $(CC) $(COFLAGS) Gibbs.cpp - --Buffer.h : my_assert.h -- - rsem-calculate-credibility-intervals : calcCI.o - $(CC) -o rsem-calculate-credibility-intervals calcCI.o -lpthread - --#some header files are omitted --calcCI.o : utils.h my_assert.h boost/random.hpp sampling.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h RefSeq.h RefSeqPolicy.h PolyARules.h Refs.h GroupInfo.h WriteResults.h Buffer.h calcCI.cpp -+calcCI.o : calcCI.cpp - $(CC) $(COFLAGS) calcCI.cpp - --rsem-get-unique : sam/bam.h sam/sam.h getUnique.cpp sam/libbam.a -+rsem-get-unique : getUnique.cpp sam/libbam.a - $(CC) -O3 -Wall getUnique.cpp sam/libbam.a -lz -lpthread -o $@ - --rsem-sam-validator : sam/bam.h sam/sam.h my_assert.h samValidator.cpp sam/libbam.a -+rsem-sam-validator : samValidator.cpp sam/libbam.a - $(CC) -O3 -Wall samValidator.cpp sam/libbam.a -lz -lpthread -o $@ - --rsem-scan-for-paired-end-reads : sam/bam.h sam/sam.h my_assert.h scanForPairedEndReads.cpp sam/libbam.a -+rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp sam/libbam.a - $(CC) -O3 -Wall scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@ - - ebseq : - -From ec136638a727632e20abfaeb65c22c46d15ca8c4 Mon Sep 17 00:00:00 2001 -From: Ricardo Wurmus -Date: Wed, 22 Apr 2015 15:06:41 +0200 -Subject: [PATCH 2/7] include current dir, ./sam and ./boost by default - ---- - Makefile | 48 ++++++++++++++++++++++++------------------------ - 1 file changed, 24 insertions(+), 24 deletions(-) - -diff --git a/Makefile b/Makefile -index 3a55ed8..1dd97ca 100644 ---- a/Makefile -+++ b/Makefile -@@ -1,6 +1,6 @@ - CC = g++ --CFLAGS = -Wall -c -I. --COFLAGS = -Wall -O3 -ffast-math -c -I. -+CFLAGS = -Wall -I. -I./sam -I./boost -+COFLAGS = -O3 -ffast-math -c - PROGRAMS = rsem-extract-reference-transcripts rsem-synthesis-reference-transcripts rsem-preref rsem-parse-alignments rsem-build-read-index rsem-run-em rsem-tbam2gbam rsem-run-gibbs rsem-calculate-credibility-intervals rsem-simulate-reads rsem-bam2wig rsem-get-unique rsem-bam2readdepth rsem-sam-validator rsem-scan-for-paired-end-reads - - .PHONY : all ebseq clean -@@ -11,70 +11,70 @@ sam/libbam.a : - cd sam ; ${MAKE} all - - rsem-extract-reference-transcripts : extractRef.cpp -- $(CC) -Wall -O3 extractRef.cpp -o rsem-extract-reference-transcripts -+ $(CC) $(CFLAGS) -O3 extractRef.cpp -o rsem-extract-reference-transcripts - - rsem-synthesis-reference-transcripts : synthesisRef.cpp -- $(CC) -Wall -O3 synthesisRef.cpp -o rsem-synthesis-reference-transcripts -+ $(CC) $(CFLAGS) -O3 synthesisRef.cpp -o rsem-synthesis-reference-transcripts - - rsem-preref : preRef.o -- $(CC) preRef.o -o rsem-preref -+ $(CC) $(CFLAGS) preRef.o -o rsem-preref - - preRef.o : preRef.cpp -- $(CC) $(COFLAGS) preRef.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) preRef.cpp - - rsem-parse-alignments : parseIt.o sam/libbam.a -- $(CC) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread -+ $(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread - - parseIt.o : parseIt.cpp -- $(CC) -Wall -O2 -c -I. parseIt.cpp -+ $(CC) $(CFLAGS) -O2 -c parseIt.cpp - - rsem-build-read-index : buildReadIndex.cpp -- $(CC) -O3 buildReadIndex.cpp -o rsem-build-read-index -+ $(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o rsem-build-read-index - - rsem-run-em : EM.o sam/libbam.a -- $(CC) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread -+ $(CC) $(CFLAGS) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread - - EM.o : EM.cpp -- $(CC) $(COFLAGS) EM.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) EM.cpp - - rsem-tbam2gbam : tbam2gbam.cpp sam/libbam.a -- $(CC) -O3 -Wall tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@ -+ $(CC) $(CFLAGS) -O3 tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@ - - rsem-bam2wig : wiggle.o sam/libbam.a bam2wig.cpp -- $(CC) -O3 -Wall bam2wig.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ -+ $(CC) $(CFLAGS) -O3 bam2wig.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ - - rsem-bam2readdepth : wiggle.o sam/libbam.a bam2readdepth.cpp -- $(CC) -O3 -Wall bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ -+ $(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ - - wiggle.o: wiggle.cpp -- $(CC) $(COFLAGS) wiggle.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) wiggle.cpp - - rsem-simulate-reads : simulation.o -- $(CC) -o rsem-simulate-reads simulation.o -+ $(CC) $(CFLAGS) -o rsem-simulate-reads simulation.o - - simulation.o : simulation.cpp -- $(CC) $(COFLAGS) simulation.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) simulation.cpp - - rsem-run-gibbs : Gibbs.o -- $(CC) -o rsem-run-gibbs Gibbs.o -lpthread -+ $(CC) $(CFLAGS) -o rsem-run-gibbs Gibbs.o -lpthread - - Gibbs.o : Gibbs.cpp -- $(CC) $(COFLAGS) Gibbs.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) Gibbs.cpp - - rsem-calculate-credibility-intervals : calcCI.o -- $(CC) -o rsem-calculate-credibility-intervals calcCI.o -lpthread -+ $(CC) $(CFLAGS) -o rsem-calculate-credibility-intervals calcCI.o -lpthread - - calcCI.o : calcCI.cpp -- $(CC) $(COFLAGS) calcCI.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) calcCI.cpp - - rsem-get-unique : getUnique.cpp sam/libbam.a -- $(CC) -O3 -Wall getUnique.cpp sam/libbam.a -lz -lpthread -o $@ -+ $(CC) $(CFLAGS) -O3 getUnique.cpp sam/libbam.a -lz -lpthread -o $@ - - rsem-sam-validator : samValidator.cpp sam/libbam.a -- $(CC) -O3 -Wall samValidator.cpp sam/libbam.a -lz -lpthread -o $@ -+ $(CC) $(CFLAGS) -O3 samValidator.cpp sam/libbam.a -lz -lpthread -o $@ - - rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp sam/libbam.a -- $(CC) -O3 -Wall scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@ -+ $(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@ - - ebseq : - cd EBSeq ; ${MAKE} all - -From d366614ea50f79fdd93e3c76383ccb6fcdeaa8e0 Mon Sep 17 00:00:00 2001 -From: Ricardo Wurmus -Date: Wed, 22 Apr 2015 15:10:49 +0200 -Subject: [PATCH 3/7] separate object rules from rules for executables - ---- - Makefile | 50 ++++++++++++++++++++++++++------------------------ - 1 file changed, 26 insertions(+), 24 deletions(-) - -diff --git a/Makefile b/Makefile -index 1dd97ca..ae4de3b 100644 ---- a/Makefile -+++ b/Makefile -@@ -10,6 +10,32 @@ all : $(PROGRAMS) - sam/libbam.a : - cd sam ; ${MAKE} all - -+ebseq : -+ cd EBSeq ; ${MAKE} all -+ -+ -+calcCI.o : calcCI.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) calcCI.cpp -+ -+EM.o : EM.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) EM.cpp -+ -+Gibbs.o : Gibbs.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) Gibbs.cpp -+ -+preRef.o : preRef.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) preRef.cpp -+ -+parseIt.o : parseIt.cpp -+ $(CC) $(CFLAGS) -O2 -c parseIt.cpp -+ -+simulation.o : simulation.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) simulation.cpp -+ -+wiggle.o: wiggle.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) wiggle.cpp -+ -+ - rsem-extract-reference-transcripts : extractRef.cpp - $(CC) $(CFLAGS) -O3 extractRef.cpp -o rsem-extract-reference-transcripts - -@@ -19,24 +45,15 @@ rsem-synthesis-reference-transcripts : synthesisRef.cpp - rsem-preref : preRef.o - $(CC) $(CFLAGS) preRef.o -o rsem-preref - --preRef.o : preRef.cpp -- $(CC) $(CFLAGS) $(COFLAGS) preRef.cpp -- - rsem-parse-alignments : parseIt.o sam/libbam.a - $(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread - --parseIt.o : parseIt.cpp -- $(CC) $(CFLAGS) -O2 -c parseIt.cpp -- - rsem-build-read-index : buildReadIndex.cpp - $(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o rsem-build-read-index - - rsem-run-em : EM.o sam/libbam.a - $(CC) $(CFLAGS) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread - --EM.o : EM.cpp -- $(CC) $(CFLAGS) $(COFLAGS) EM.cpp -- - rsem-tbam2gbam : tbam2gbam.cpp sam/libbam.a - $(CC) $(CFLAGS) -O3 tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@ - -@@ -46,27 +63,15 @@ rsem-bam2wig : wiggle.o sam/libbam.a bam2wig.cpp - rsem-bam2readdepth : wiggle.o sam/libbam.a bam2readdepth.cpp - $(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ - --wiggle.o: wiggle.cpp -- $(CC) $(CFLAGS) $(COFLAGS) wiggle.cpp -- - rsem-simulate-reads : simulation.o - $(CC) $(CFLAGS) -o rsem-simulate-reads simulation.o - --simulation.o : simulation.cpp -- $(CC) $(CFLAGS) $(COFLAGS) simulation.cpp -- - rsem-run-gibbs : Gibbs.o - $(CC) $(CFLAGS) -o rsem-run-gibbs Gibbs.o -lpthread - --Gibbs.o : Gibbs.cpp -- $(CC) $(CFLAGS) $(COFLAGS) Gibbs.cpp -- - rsem-calculate-credibility-intervals : calcCI.o - $(CC) $(CFLAGS) -o rsem-calculate-credibility-intervals calcCI.o -lpthread - --calcCI.o : calcCI.cpp -- $(CC) $(CFLAGS) $(COFLAGS) calcCI.cpp -- - rsem-get-unique : getUnique.cpp sam/libbam.a - $(CC) $(CFLAGS) -O3 getUnique.cpp sam/libbam.a -lz -lpthread -o $@ - -@@ -76,9 +81,6 @@ rsem-sam-validator : samValidator.cpp sam/libbam.a - rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp sam/libbam.a - $(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@ - --ebseq : -- cd EBSeq ; ${MAKE} all -- - clean : - rm -f *.o *~ $(PROGRAMS) - cd sam ; ${MAKE} clean - -From 6ba1c33cccdf7c8e7df7a3189e7db204be3b1e8d Mon Sep 17 00:00:00 2001 -From: Ricardo Wurmus -Date: Wed, 22 Apr 2015 15:28:30 +0200 -Subject: [PATCH 4/7] add ./sam to library directories, link with -lbam - ---- - Makefile | 36 ++++++++++++++++++------------------ - 1 file changed, 18 insertions(+), 18 deletions(-) - -diff --git a/Makefile b/Makefile -index ae4de3b..a87cc4d 100644 ---- a/Makefile -+++ b/Makefile -@@ -1,11 +1,11 @@ - CC = g++ --CFLAGS = -Wall -I. -I./sam -I./boost -+CFLAGS = -Wall -I. -I./sam -I./boost -L./sam - COFLAGS = -O3 -ffast-math -c - PROGRAMS = rsem-extract-reference-transcripts rsem-synthesis-reference-transcripts rsem-preref rsem-parse-alignments rsem-build-read-index rsem-run-em rsem-tbam2gbam rsem-run-gibbs rsem-calculate-credibility-intervals rsem-simulate-reads rsem-bam2wig rsem-get-unique rsem-bam2readdepth rsem-sam-validator rsem-scan-for-paired-end-reads - - .PHONY : all ebseq clean - --all : $(PROGRAMS) -+all : sam/libbam.a $(PROGRAMS) - - sam/libbam.a : - cd sam ; ${MAKE} all -@@ -45,23 +45,23 @@ rsem-synthesis-reference-transcripts : synthesisRef.cpp - rsem-preref : preRef.o - $(CC) $(CFLAGS) preRef.o -o rsem-preref - --rsem-parse-alignments : parseIt.o sam/libbam.a -- $(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread -+rsem-parse-alignments : parseIt.o -+ $(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o -lbam -lz -lpthread - - rsem-build-read-index : buildReadIndex.cpp - $(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o rsem-build-read-index - --rsem-run-em : EM.o sam/libbam.a -- $(CC) $(CFLAGS) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread -+rsem-run-em : EM.o -+ $(CC) $(CFLAGS) -o rsem-run-em EM.o -lbam -lz -lpthread - --rsem-tbam2gbam : tbam2gbam.cpp sam/libbam.a -- $(CC) $(CFLAGS) -O3 tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@ -+rsem-tbam2gbam : tbam2gbam.cpp -+ $(CC) $(CFLAGS) -O3 tbam2gbam.cpp -lbam -lz -lpthread -o $@ - --rsem-bam2wig : wiggle.o sam/libbam.a bam2wig.cpp -- $(CC) $(CFLAGS) -O3 bam2wig.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ -+rsem-bam2wig : wiggle.o bam2wig.cpp -+ $(CC) $(CFLAGS) -O3 bam2wig.cpp wiggle.o -lbam -lz -lpthread -o $@ - --rsem-bam2readdepth : wiggle.o sam/libbam.a bam2readdepth.cpp -- $(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@ -+rsem-bam2readdepth : wiggle.o bam2readdepth.cpp -+ $(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o -lbam -lz -lpthread -o $@ - - rsem-simulate-reads : simulation.o - $(CC) $(CFLAGS) -o rsem-simulate-reads simulation.o -@@ -72,14 +72,14 @@ rsem-run-gibbs : Gibbs.o - rsem-calculate-credibility-intervals : calcCI.o - $(CC) $(CFLAGS) -o rsem-calculate-credibility-intervals calcCI.o -lpthread - --rsem-get-unique : getUnique.cpp sam/libbam.a -- $(CC) $(CFLAGS) -O3 getUnique.cpp sam/libbam.a -lz -lpthread -o $@ -+rsem-get-unique : getUnique.cpp -+ $(CC) $(CFLAGS) -O3 getUnique.cpp -lbam -lz -lpthread -o $@ - --rsem-sam-validator : samValidator.cpp sam/libbam.a -- $(CC) $(CFLAGS) -O3 samValidator.cpp sam/libbam.a -lz -lpthread -o $@ -+rsem-sam-validator : samValidator.cpp -+ $(CC) $(CFLAGS) -O3 samValidator.cpp -lbam -lz -lpthread -o $@ - --rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp sam/libbam.a -- $(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@ -+rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp -+ $(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp -lbam -lz -lpthread -o $@ - - clean : - rm -f *.o *~ $(PROGRAMS) - -From 5402b88c269df79ee245c1c59e15f3c8282a0220 Mon Sep 17 00:00:00 2001 -From: Ricardo Wurmus -Date: Wed, 22 Apr 2015 15:33:02 +0200 -Subject: [PATCH 5/7] do not repeat target name, use $@ instead - ---- - Makefile | 18 +++++++++--------- - 1 file changed, 9 insertions(+), 9 deletions(-) - -diff --git a/Makefile b/Makefile -index a87cc4d..7ec90a3 100644 ---- a/Makefile -+++ b/Makefile -@@ -37,22 +37,22 @@ wiggle.o: wiggle.cpp - - - rsem-extract-reference-transcripts : extractRef.cpp -- $(CC) $(CFLAGS) -O3 extractRef.cpp -o rsem-extract-reference-transcripts -+ $(CC) $(CFLAGS) -O3 extractRef.cpp -o $@ - - rsem-synthesis-reference-transcripts : synthesisRef.cpp -- $(CC) $(CFLAGS) -O3 synthesisRef.cpp -o rsem-synthesis-reference-transcripts -+ $(CC) $(CFLAGS) -O3 synthesisRef.cpp -o $@ - - rsem-preref : preRef.o -- $(CC) $(CFLAGS) preRef.o -o rsem-preref -+ $(CC) $(CFLAGS) preRef.o -o $@ - - rsem-parse-alignments : parseIt.o -- $(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o -lbam -lz -lpthread -+ $(CC) $(CFLAGS) -o $@ parseIt.o -lbam -lz -lpthread - - rsem-build-read-index : buildReadIndex.cpp -- $(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o rsem-build-read-index -+ $(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o $@ - - rsem-run-em : EM.o -- $(CC) $(CFLAGS) -o rsem-run-em EM.o -lbam -lz -lpthread -+ $(CC) $(CFLAGS) -o $@ EM.o -lbam -lz -lpthread - - rsem-tbam2gbam : tbam2gbam.cpp - $(CC) $(CFLAGS) -O3 tbam2gbam.cpp -lbam -lz -lpthread -o $@ -@@ -64,13 +64,13 @@ rsem-bam2readdepth : wiggle.o bam2readdepth.cpp - $(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o -lbam -lz -lpthread -o $@ - - rsem-simulate-reads : simulation.o -- $(CC) $(CFLAGS) -o rsem-simulate-reads simulation.o -+ $(CC) $(CFLAGS) -o $@ simulation.o - - rsem-run-gibbs : Gibbs.o -- $(CC) $(CFLAGS) -o rsem-run-gibbs Gibbs.o -lpthread -+ $(CC) $(CFLAGS) -o $@ Gibbs.o -lpthread - - rsem-calculate-credibility-intervals : calcCI.o -- $(CC) $(CFLAGS) -o rsem-calculate-credibility-intervals calcCI.o -lpthread -+ $(CC) $(CFLAGS) -o $@ calcCI.o -lpthread - - rsem-get-unique : getUnique.cpp - $(CC) $(CFLAGS) -O3 getUnique.cpp -lbam -lz -lpthread -o $@ - -From f60784bc7aa303cc825bd87dd3f5d7d26c51bded Mon Sep 17 00:00:00 2001 -From: Ricardo Wurmus -Date: Wed, 22 Apr 2015 15:44:53 +0200 -Subject: [PATCH 6/7] use automatic variables to refer to prerequisites - ---- - Makefile | 44 ++++++++++++++++++++++---------------------- - 1 file changed, 22 insertions(+), 22 deletions(-) - -diff --git a/Makefile b/Makefile -index 7ec90a3..6540d81 100644 ---- a/Makefile -+++ b/Makefile -@@ -15,71 +15,71 @@ ebseq : - - - calcCI.o : calcCI.cpp -- $(CC) $(CFLAGS) $(COFLAGS) calcCI.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) $< - - EM.o : EM.cpp -- $(CC) $(CFLAGS) $(COFLAGS) EM.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) $< - - Gibbs.o : Gibbs.cpp -- $(CC) $(CFLAGS) $(COFLAGS) Gibbs.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) $< - - preRef.o : preRef.cpp -- $(CC) $(CFLAGS) $(COFLAGS) preRef.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) $< - - parseIt.o : parseIt.cpp -- $(CC) $(CFLAGS) -O2 -c parseIt.cpp -+ $(CC) $(CFLAGS) -O2 -c $< - - simulation.o : simulation.cpp -- $(CC) $(CFLAGS) $(COFLAGS) simulation.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) $< - - wiggle.o: wiggle.cpp -- $(CC) $(CFLAGS) $(COFLAGS) wiggle.cpp -+ $(CC) $(CFLAGS) $(COFLAGS) $< - - - rsem-extract-reference-transcripts : extractRef.cpp -- $(CC) $(CFLAGS) -O3 extractRef.cpp -o $@ -+ $(CC) $(CFLAGS) -O3 $< -o $@ - - rsem-synthesis-reference-transcripts : synthesisRef.cpp -- $(CC) $(CFLAGS) -O3 synthesisRef.cpp -o $@ -+ $(CC) $(CFLAGS) -O3 $< -o $@ - - rsem-preref : preRef.o -- $(CC) $(CFLAGS) preRef.o -o $@ -+ $(CC) $(CFLAGS) $< -o $@ - - rsem-parse-alignments : parseIt.o -- $(CC) $(CFLAGS) -o $@ parseIt.o -lbam -lz -lpthread -+ $(CC) $(CFLAGS) -o $@ $< -lbam -lz -lpthread - - rsem-build-read-index : buildReadIndex.cpp -- $(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o $@ -+ $(CC) $(CFLAGS) -O3 $< -o $@ - - rsem-run-em : EM.o -- $(CC) $(CFLAGS) -o $@ EM.o -lbam -lz -lpthread -+ $(CC) $(CFLAGS) -o $@ $< -lbam -lz -lpthread - - rsem-tbam2gbam : tbam2gbam.cpp -- $(CC) $(CFLAGS) -O3 tbam2gbam.cpp -lbam -lz -lpthread -o $@ -+ $(CC) $(CFLAGS) -O3 $< -lbam -lz -lpthread -o $@ - - rsem-bam2wig : wiggle.o bam2wig.cpp -- $(CC) $(CFLAGS) -O3 bam2wig.cpp wiggle.o -lbam -lz -lpthread -o $@ -+ $(CC) $(CFLAGS) -O3 $^ -lbam -lz -lpthread -o $@ - - rsem-bam2readdepth : wiggle.o bam2readdepth.cpp -- $(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o -lbam -lz -lpthread -o $@ -+ $(CC) $(CFLAGS) -O3 $^ -lbam -lz -lpthread -o $@ - - rsem-simulate-reads : simulation.o -- $(CC) $(CFLAGS) -o $@ simulation.o -+ $(CC) $(CFLAGS) -o $@ $< - - rsem-run-gibbs : Gibbs.o -- $(CC) $(CFLAGS) -o $@ Gibbs.o -lpthread -+ $(CC) $(CFLAGS) -o $@ $< -lpthread - - rsem-calculate-credibility-intervals : calcCI.o -- $(CC) $(CFLAGS) -o $@ calcCI.o -lpthread -+ $(CC) $(CFLAGS) -o $@ $< -lpthread - - rsem-get-unique : getUnique.cpp -- $(CC) $(CFLAGS) -O3 getUnique.cpp -lbam -lz -lpthread -o $@ -+ $(CC) $(CFLAGS) -O3 $< -lbam -lz -lpthread -o $@ - - rsem-sam-validator : samValidator.cpp -- $(CC) $(CFLAGS) -O3 samValidator.cpp -lbam -lz -lpthread -o $@ -+ $(CC) $(CFLAGS) -O3 $< -lbam -lz -lpthread -o $@ - - rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp -- $(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp -lbam -lz -lpthread -o $@ -+ $(CC) $(CFLAGS) -O3 $< -lbam -lz -lpthread -o $@ - - clean : - rm -f *.o *~ $(PROGRAMS) - -From 0cf9721077f67fb4ca15fdc59cbfbf24a944debd Mon Sep 17 00:00:00 2001 -From: Ricardo Wurmus -Date: Wed, 22 Apr 2015 15:49:19 +0200 -Subject: [PATCH 7/7] split long line - ---- - Makefile | 17 ++++++++++++++++- - 1 file changed, 16 insertions(+), 1 deletion(-) - -diff --git a/Makefile b/Makefile -index 6540d81..0ab04a5 100644 ---- a/Makefile -+++ b/Makefile -@@ -1,7 +1,22 @@ - CC = g++ - CFLAGS = -Wall -I. -I./sam -I./boost -L./sam - COFLAGS = -O3 -ffast-math -c --PROGRAMS = rsem-extract-reference-transcripts rsem-synthesis-reference-transcripts rsem-preref rsem-parse-alignments rsem-build-read-index rsem-run-em rsem-tbam2gbam rsem-run-gibbs rsem-calculate-credibility-intervals rsem-simulate-reads rsem-bam2wig rsem-get-unique rsem-bam2readdepth rsem-sam-validator rsem-scan-for-paired-end-reads -+PROGRAMS = \ -+ rsem-extract-reference-transcripts \ -+ rsem-synthesis-reference-transcripts \ -+ rsem-preref \ -+ rsem-parse-alignments \ -+ rsem-build-read-index \ -+ rsem-run-em \ -+ rsem-tbam2gbam \ -+ rsem-run-gibbs \ -+ rsem-calculate-credibility-intervals \ -+ rsem-simulate-reads \ -+ rsem-bam2wig \ -+ rsem-get-unique \ -+ rsem-bam2readdepth \ -+ rsem-sam-validator \ -+ rsem-scan-for-paired-end-reads - - .PHONY : all ebseq clean - From f5c10a94eff314ed985089719e817cd036a746f1 Mon Sep 17 00:00:00 2001 From: fis trivial Date: Thu, 20 Sep 2018 13:37:26 +0000 Subject: [PATCH 006/909] gnu: gprolog: Update to 1.4.5. * gnu/packages/gprolog.scm (gprolog): Update to 1.4.5. [source]: Add an alternate source URL. Signed-off-by: Leo Famulari --- gnu/packages/gprolog.scm | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/gnu/packages/gprolog.scm b/gnu/packages/gprolog.scm index b27b080ca7..166bf33294 100644 --- a/gnu/packages/gprolog.scm +++ b/gnu/packages/gprolog.scm @@ -27,15 +27,18 @@ (define-public gprolog (package (name "gprolog") - (version "1.4.4") + (version "1.4.5") (source - (origin - (method url-fetch) - (uri (string-append "mirror://gnu/gprolog/gprolog-" version - ".tar.gz")) - (sha256 - (base32 - "13miyas47bmijmadm68cbvb21n4s156gjafz7kfx9brk9djfkh0q")))) + (origin + (method url-fetch) + ;; Recent versions are not hosted on the GNU mirrors. + (uri (list (string-append "http://gprolog.org/gprolog-" version + ".tar.gz") + (string-append "mirror://gnu/gprolog/gprolog-" version + ".tar.gz"))) + (sha256 + (base32 + "0z4cc42n3k6i35b8mr816iwsvrpxshw6d7dgz6s2h1hy0l7g1p5z")))) (build-system gnu-build-system) (arguments `(#:configure-flags From ea2364621a57f4797a512caa53cbf0d4475c1c90 Mon Sep 17 00:00:00 2001 From: fis trivial Date: Thu, 20 Sep 2018 13:29:15 +0000 Subject: [PATCH 007/909] gnu: qbittorrent: Update to 4.1.3. * gnu/packages/bittorrent.scm (qbittorrent): Update to 4.1.3. [inputs]: Use python-wrapper instead of python. Signed-off-by: Leo Famulari --- gnu/packages/bittorrent.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm index 3937fac745..59fbd6906b 100644 --- a/gnu/packages/bittorrent.scm +++ b/gnu/packages/bittorrent.scm @@ -409,7 +409,7 @@ desktops.") (define-public qbittorrent (package (name "qbittorrent") - (version "4.0.4") + (version "4.1.3") (source (origin (method url-fetch) (uri (string-append @@ -418,7 +418,7 @@ desktops.") (file-name (string-append name "-release-" version ".tar.gz")) (sha256 (base32 - "145r4lv7rqdhrm5znn3ndxsfdf579n46zvj7c53c422am8ir5xhp")))) + "00zrpnwanq9f7maky2z4wnzw08xy902s77scm2gcvxxxankr4j92")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -434,7 +434,7 @@ desktops.") `(("boost" ,boost) ("libtorrent-rasterbar" ,libtorrent-rasterbar) ("openssl" ,openssl) - ("python" ,python) + ("python" ,python-wrapper) ("qtbase" ,qtbase) ("qtsvg" ,qtsvg) ("zlib" ,zlib))) From c6ede267e64ea6b5e3546274fafd2afc84f8b140 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 20 Sep 2018 17:58:31 -0400 Subject: [PATCH 008/909] gnu: linux-libre@4.4: Update to 4.4.157. * gnu/packages/linux.scm (linux-libre-4.4): Update to 4.4.157. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index e34c67cb0f..1657ebc71a 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -452,8 +452,8 @@ It has been modified to remove all non-free binary blobs.") #:configuration-file kernel-config)) (define-public linux-libre-4.4 - (make-linux-libre "4.4.156" - "13j4jb4hifh3fah2ysy2425fakwqqdh2z23lf4i0frxa1xl974h2" + (make-linux-libre "4.4.157" + "00bnfqwkr0jfdabmwx5qk5bqxn5vwnnzwqbm5rfg7lggii74kk54" %intel-compatible-systems #:configuration-file kernel-config)) From 41d6afb266a7bf2f0df95915a0fefc714e191199 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 20 Sep 2018 17:59:10 -0400 Subject: [PATCH 009/909] gnu: linux-libre@4.9: Update to 4.9.128. * gnu/packages/linux.scm (linux-libre-4.9): Update to 4.9.128. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 1657ebc71a..7034291d02 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -446,8 +446,8 @@ It has been modified to remove all non-free binary blobs.") #:configuration-file kernel-config)) (define-public linux-libre-4.9 - (make-linux-libre "4.9.127" - "0q7h5gnl3ikic0pvwrxp78pz56yvijhz6s84gb92xywi1v3dd8mh" + (make-linux-libre "4.9.128" + "0lww23xcyyg0dwzrap5x9d700gy3lbxln55n6sqqkm7m89dkqwha" %intel-compatible-systems #:configuration-file kernel-config)) From c57a2a12b17fb3595a1a2c85da7c796e2ee9815c Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 20 Sep 2018 18:00:47 -0400 Subject: [PATCH 010/909] gnu: linux-libre@4.14: Update to 4.14.71. * gnu/packages/linux.scm (%linux-libre-4.14-version): Update to 4.14.71. (%linux-libre-4.14-hash): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 7034291d02..22cc7dff9b 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -436,8 +436,8 @@ It has been modified to remove all non-free binary blobs.") #:patches %linux-libre-4.18-patches #:configuration-file kernel-config)) -(define %linux-libre-4.14-version "4.14.70") -(define %linux-libre-4.14-hash "138v51m6k57wnvlf9c22dad0w819mfb8f95i6w99mlg69qpwdvag") +(define %linux-libre-4.14-version "4.14.71") +(define %linux-libre-4.14-hash "1akvykaccy7ikl8v04grwxvgs4z2rrs7drf2s85ysqwq79mdh3gq") (define-public linux-libre-4.14 (make-linux-libre %linux-libre-4.14-version From 83e8b1d7946d07d1c26dd7bd6e11e6e9396024ac Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 20 Sep 2018 18:01:38 -0400 Subject: [PATCH 011/909] gnu: linux-libre: Update to 4.18.9. * gnu/packages/linux.scm (%linux-libre-version): Update to 4.18.9. (%linux-libre-hash): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 22cc7dff9b..170c77374d 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -405,8 +405,8 @@ It has been modified to remove all non-free binary blobs.") ;; supports qemu "virt" machine and possibly a large number of ARM boards. ;; See : https://wiki.debian.org/DebianKernel/ARMMP. -(define %linux-libre-version "4.18.8") -(define %linux-libre-hash "163awpba1yd0x33xzj5dczimk4y96xc28syc4w2ad0qafgapng8l") +(define %linux-libre-version "4.18.9") +(define %linux-libre-hash "0wwmhnfvcsdlqhzwwwyz1x5a3ldjky6l0xir1pi6pysr0lak402x") (define %linux-libre-4.18-patches (list %boot-logo-patch From 1bfaae25fab372c8ff86e34024adf20240699b55 Mon Sep 17 00:00:00 2001 From: Danny Milosavljevic Date: Thu, 20 Sep 2018 22:12:10 +0200 Subject: [PATCH 012/909] gnu: rust@1.20.0: Fix tests. * gnu/packages/rust.scm (rust-1.23)[arguments]<#:phases> [patch-cargo-tests, ignore-glibc-2.27-incompatible-test,fix-mtime-bug]: Move to... (rust-1.20): ... here. --- gnu/packages/rust.scm | 57 ++++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index 74de6f3ae1..ec8b30d78f 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -514,6 +514,35 @@ safety and thread safety guarantees.") (substitute-keyword-arguments (package-arguments rust-1.19) ((#:phases phases) `(modify-phases ,phases + (add-after 'patch-tests 'patch-cargo-tests + (lambda _ + (substitute* "src/tools/cargo/tests/build.rs" + (("/usr/bin/env") (which "env")) + ;; Guix llvm is compiled without asmjs-unknown-emscripten. + (("fn wasm32_final_outputs") "#[ignore]\nfn wasm32_final_outputs")) + (substitute* "src/tools/cargo/tests/death.rs" + ;; This is stuck when built in container. + (("fn ctrl_c_kills_everyone") "#[ignore]\nfn ctrl_c_kills_everyone")) + ;; Prints test output in the wrong order when built on + ;; i686-linux. + (substitute* "src/tools/cargo/tests/test.rs" + (("fn cargo_test_env") "#[ignore]\nfn cargo_test_env")) + #t)) + (add-after 'patch-cargo-tests 'ignore-glibc-2.27-incompatible-test + ;; https://github.com/rust-lang/rust/issues/47863 + (lambda _ + (substitute* "src/test/run-pass/out-of-stack.rs" + (("// ignore-android") "// ignore-test\n// ignore-android")) + #t)) + (add-after 'ignore-glibc-2.27-incompatible-test 'fix-mtime-bug + (lambda* _ + (substitute* "src/build_helper/lib.rs" + ;; Bug in Rust code. + ;; Current implementation assume that if dst not exist then it's mtime + ;; is 0, but in same time "src" have 0 mtime in guix build! + (("let threshold = mtime\\(dst\\);") + "if !dst.exists() {\nreturn false\n}\n let threshold = mtime(dst);")) + #t)) (replace 'configure (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -651,34 +680,6 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" ;; XXX: Revisit this when we use gcc 6. (substitute* "src/binaryen/CMakeLists.txt" (("ADD_COMPILE_FLAG\\(\\\"-march=native\\\"\\)") "")) - #t)) - (add-after 'patch-tests 'patch-cargo-tests - (lambda _ - (substitute* "src/tools/cargo/tests/build.rs" - (("/usr/bin/env") (which "env")) - ;; Guix llvm is compiled without asmjs-unknown-emscripten. - (("fn wasm32_final_outputs") "#[ignore]\nfn wasm32_final_outputs")) - (substitute* "src/tools/cargo/tests/death.rs" - ;; This is stuck when built in container. - (("fn ctrl_c_kills_everyone") "#[ignore]\nfn ctrl_c_kills_everyone")) - ;; Prints test output in the wrong order when built on - ;; i686-linux. - (substitute* "src/tools/cargo/tests/test.rs" - (("fn cargo_test_env") "#[ignore]\nfn cargo_test_env")) - #t)) - (add-after 'patch-cargo-tests 'ignore-glibc-2.27-incompatible-test - ;; https://github.com/rust-lang/rust/issues/47863 - (lambda _ - (substitute* "src/test/run-pass/out-of-stack.rs" - (("// ignore-android") "// ignore-test\n// ignore-android")))) - (add-after 'ignore-glibc-2.27-incompatible-test 'fix-mtime-bug - (lambda* _ - (substitute* "src/build_helper/lib.rs" - ;; Bug in Rust code. - ;; Current implementation assume that if dst not exist then it's mtime - ;; is 0, but in same time "src" have 0 mtime in guix build! - (("let threshold = mtime\\(dst\\);") - "if !dst.exists() {\nreturn false\n}\n let threshold = mtime(dst);")) #t)))))))) (define-public rust-1.24 From e0b07ccc1ab0b763f0e9da39f56f2a7aec6116d5 Mon Sep 17 00:00:00 2001 From: Danny Milosavljevic Date: Thu, 20 Sep 2018 22:16:45 +0200 Subject: [PATCH 013/909] gnu: rust: Work around mtime bug in rust build helpers. * gnu/packages/rust.scm (rust-1.20)[arguments]<#:phases>[fix-mtime-bug]: Delete. [reset-timestamps-after-changes]: Modify. (rust-1.24): Don't delete "fix-mtime-bug" since now it doesn't ever get created. --- gnu/packages/rust.scm | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index ec8b30d78f..e8eca80aa6 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -534,15 +534,6 @@ safety and thread safety guarantees.") (substitute* "src/test/run-pass/out-of-stack.rs" (("// ignore-android") "// ignore-test\n// ignore-android")) #t)) - (add-after 'ignore-glibc-2.27-incompatible-test 'fix-mtime-bug - (lambda* _ - (substitute* "src/build_helper/lib.rs" - ;; Bug in Rust code. - ;; Current implementation assume that if dst not exist then it's mtime - ;; is 0, but in same time "src" have 0 mtime in guix build! - (("let threshold = mtime\\(dst\\);") - "if !dst.exists() {\nreturn false\n}\n let threshold = mtime(dst);")) - #t)) (replace 'configure (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -608,10 +599,11 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" (delete 'patch-cargo-tomls) (add-before 'build 'reset-timestamps-after-changes (lambda* _ - (define ref (stat "README.md")) (for-each (lambda (filename) - (set-file-time filename ref)) + ;; Rust 1.20.0 treats timestamp 0 as "file doesn't exist". + ;; Therefore, use timestamp 1. + (utime filename 1 1 1 1)) (find-files "." #:directories? #t)) #t)) (replace 'build @@ -699,8 +691,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" ;; This test is known to fail on aarch64 and powerpc64le: ;; https://github.com/rust-lang/rust/issues/45410 (("fn test_loading_cosine") "#[ignore]\nfn test_loading_cosine")) - #t)) - (delete 'fix-mtime-bug)))))))) + #t))))))))) (define-public rust-1.25 (let ((base-rust From eeecbe09cc497b1ed9a2000283a5767903ba2fb4 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 21 Sep 2018 08:07:25 +0200 Subject: [PATCH 014/909] gnu: perl-dbd-mysql: Update to 4.048. * gnu/packages/databases.scm (perl-dbd-mysql): Update to 4.048. --- gnu/packages/databases.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 9db892a0b7..9e8c9d8f9e 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -1458,15 +1458,15 @@ columns, primary keys, unique constraints and relationships.") (define-public perl-dbd-mysql (package (name "perl-dbd-mysql") - (version "4.047") + (version "4.048") (source (origin (method url-fetch) - (uri (string-append "mirror://cpan/authors/id/C/CA/CAPTTOFU/" + (uri (string-append "mirror://cpan/authors/id/M/MI/MICHIELB/" "DBD-mysql-" version ".tar.gz")) (sha256 (base32 - "0idizgr0hr7sj92fbdlb3gv6cva15jkpaq28wrdw4j4p7awx2mls")))) + "1zqmch6c9gq06z90mkmk1skajk2kaggriw19ym5w04l7wv5gydqp")))) (build-system perl-build-system) (arguments `(#:phases From 4aa64e3a819ca53629b1cbe58c079eefa7dd24b0 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 21 Sep 2018 08:09:35 +0200 Subject: [PATCH 015/909] gnu: ubuntu-keyring: Update to 2018.09.18.1. * gnu/packages/debian.scm (ubuntu-keyring): Update to 2018.09.18.1. --- gnu/packages/debian.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/debian.scm b/gnu/packages/debian.scm index 1974672fb6..185dacfe73 100644 --- a/gnu/packages/debian.scm +++ b/gnu/packages/debian.scm @@ -71,7 +71,7 @@ contains the archive keys used for that.") (define-public ubuntu-keyring (package (name "ubuntu-keyring") - (version "2018.02.28") + (version "2018.09.18.1") (source (origin (method url-fetch) @@ -79,7 +79,7 @@ contains the archive keys used for that.") "+files/" name "_" version ".tar.gz")) (sha256 (base32 - "1zj3012cz7rlx9pm39wnwa0lmi1h38n6bkgbz81vnmcsvqsc9a3a")))) + "0csx2n62rj9rxjv4y8qhby7l9rbybfwrb0406pc2cjr7f2yk91af")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) From 1779aaa09a576401e35bf4a0d1534ee546b5506e Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 21 Sep 2018 08:19:42 +0200 Subject: [PATCH 016/909] Add 'GNU Guix' comment to all (gnu packages) headers. * gnu/packages/debian.scm, gnu/packages/syndication.scm: Add comments. --- gnu/packages/debian.scm | 3 +++ gnu/packages/syndication.scm | 3 +++ 2 files changed, 6 insertions(+) diff --git a/gnu/packages/debian.scm b/gnu/packages/debian.scm index 185dacfe73..5ea263149e 100644 --- a/gnu/packages/debian.scm +++ b/gnu/packages/debian.scm @@ -1,6 +1,9 @@ +;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2018 Efraim Flashner ;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; +;;; 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 diff --git a/gnu/packages/syndication.scm b/gnu/packages/syndication.scm index f37c0eaac5..6247d1f3b6 100644 --- a/gnu/packages/syndication.scm +++ b/gnu/packages/syndication.scm @@ -1,6 +1,9 @@ +;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016, 2017 Efraim Flashner ;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; +;;; 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 From 29ddbc5607c8ad7bb0622e10716e60396817a42d Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 21 Sep 2018 08:46:11 +0200 Subject: [PATCH 017/909] gnu: python-pydot: Update to 1.2.4. * gnu/packages/graphviz.scm (python-pydot): Update to 1.2.4. [arguments]: Run the test suite. [native-inputs]: Add python-chardet. --- gnu/packages/graphviz.scm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/gnu/packages/graphviz.scm b/gnu/packages/graphviz.scm index 09f46fab84..569923d4e0 100644 --- a/gnu/packages/graphviz.scm +++ b/gnu/packages/graphviz.scm @@ -220,17 +220,18 @@ be used either as a standalone application, or as a python library.") (define-public python-pydot (package (name "python-pydot") - (version "1.2.3") + (version "1.2.4") (source (origin (method url-fetch) (uri (pypi-uri "pydot" version)) (sha256 (base32 - "00imlz0033dygb9gdag1xr0cybn33gk5jsdi9ffbszzr97rd7dgd")))) + "1dhy4jpp646jslh2yks6klwwbaxcs905byyny880gl1iap8y5llj")))) (build-system python-build-system) - ;; FIXME: No tests in PyPi release tarball. - (arguments '(#:tests? #f)) + (native-inputs + ;; For tests. + `(("python-chardet" ,python-chardet))) (propagated-inputs `(("python-pyparsing" ,python-pyparsing))) (home-page "https://github.com/erocarrera/pydot") From 3752b683dc16e172f57f8397a542e562f564fc30 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 21 Sep 2018 09:13:45 +0200 Subject: [PATCH 018/909] gnu: openscenegraph: Update to 3.6.3. * gnu/packages/graphics.scm (openscenegraph): Update to 3.6.3. [source]: Use GIT-FILE-NAME. [inputs]: Remove unused pth and qtbase. --- gnu/packages/graphics.scm | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm index 9c2869c12b..58c742b825 100644 --- a/gnu/packages/graphics.scm +++ b/gnu/packages/graphics.scm @@ -406,7 +406,7 @@ visual effects work for film.") (define-public openscenegraph (package (name "openscenegraph") - (version "3.6.2") + (version "3.6.3") (source (origin (method git-fetch) @@ -415,8 +415,8 @@ visual effects work for film.") (commit (string-append "OpenSceneGraph-" version)))) (sha256 (base32 - "03jk6lclyd4biniaw04w7j0z1spkm69f1c19i37b8v9x3zv1p1id")) - (file-name (string-append name "-" version "-checkout")))) + "0h32z15sa8sbq276j0iib0n707m8bs4p5ji9z2ah411446paad9q")) + (file-name (git-file-name name version)))) (properties `((upstream-name . "OpenSceneGraph"))) (build-system cmake-build-system) @@ -437,8 +437,6 @@ visual effects work for film.") ("jasper" ,jasper) ("librsvg" ,librsvg) ("libxrandr" ,libxrandr) - ("pth" ,pth) - ("qtbase" ,qtbase) ("ffmpeg" ,ffmpeg) ("mesa" ,mesa))) (synopsis "High performance real-time graphics toolkit") From 1df40d3dbff82c2990271b406b32633fe216d143 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Fri, 21 Sep 2018 11:52:12 +0200 Subject: [PATCH 019/909] gnu: emacs-orgalist: Update to 1.9. * gnu/packages/emacs.scm (emacs-orgalist): Update to 1.9. --- gnu/packages/emacs.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 9b3a90bd33..fc019cf241 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -5252,7 +5252,7 @@ distribution, primarily targeting Clojure users") (define-public emacs-orgalist (package (name "emacs-orgalist") - (version "1.8") + (version "1.9") (source (origin (method url-fetch) @@ -5260,7 +5260,7 @@ distribution, primarily targeting Clojure users") "orgalist-" version ".el")) (sha256 (base32 - "1wqwnmn08i0qkxm8b2iclvf6cydcn68h1p3h7r1kig2bdn5b8948")))) + "1rmmcyiiqkq54hn74nhzxzl4nvd902hv6gq341jwhrm7yiagffi6")))) (build-system emacs-build-system) (home-page "http://elpa.gnu.org/packages/orgalist.html") (synopsis "Manage Org-like lists in non-Org buffers") From 174988fa05fbda4a9cdaab77d59fe4ea187b0e6b Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 21 Sep 2018 12:18:55 +0200 Subject: [PATCH 020/909] gnu: perl-xml-compile: Update to 1.60. * gnu/packages/xml.scm (perl-xml-compile): Update to 1.60. [propagated-inputs]: Add perl-carp, perl-scalar-list-utils, and perl-types-serialiser. --- gnu/packages/xml.scm | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index 9c8e3cef08..aa1395286f 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm @@ -665,20 +665,23 @@ This module provide functions which simplify writing tests for (define-public perl-xml-compile (package (name "perl-xml-compile") - (version "1.54") + (version "1.60") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/" "XML-Compile-" version ".tar.gz")) (sha256 (base32 - "1hp41960bpqxvv1samv9hc0ghhmvs3i16r4rfl9yp54lp6jhsr2c")))) + "04vv7wy5v1l38xsfdbacvyd90qircvnrs2f3ysljm1nhq8mycmwm")))) (build-system perl-build-system) (propagated-inputs - `(("perl-log-report" ,perl-log-report) + `(("perl-carp" ,perl-carp) + ("perl-log-report" ,perl-log-report) ("perl-xml-compile-tester" ,perl-xml-compile-tester) ("perl-xml-libxml" ,perl-xml-libxml) - ("perl-test-deep" ,perl-test-deep))) + ("perl-scalar-list-utils" ,perl-scalar-list-utils) + ("perl-test-deep" ,perl-test-deep) + ("perl-types-serialiser" ,perl-types-serialiser))) (home-page "https://metacpan.org/release/XML-Compile") (synopsis "Compilation-based XML processing") (description From 6f05556ba77def387d862ee44d6658d8d647ad3c Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 21 Sep 2018 12:21:38 +0200 Subject: [PATCH 021/909] gnu: s6: Update to 2.7.2.1. * gnu/packages/skarnet.scm (s6): Update to 2.7.2.1. --- gnu/packages/skarnet.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/skarnet.scm b/gnu/packages/skarnet.scm index 9a6733d8bc..6546d40597 100644 --- a/gnu/packages/skarnet.scm +++ b/gnu/packages/skarnet.scm @@ -105,7 +105,7 @@ complexity."))) (define-public s6 (package (name "s6") - (version "2.7.2.0") + (version "2.7.2.1") (source (origin (method url-fetch) @@ -113,7 +113,7 @@ complexity."))) version ".tar.gz")) (sha256 (base32 - "02canrzmhr66gi16ldyylk378jlmyfl73vn72ayr12h2wyxgqm5g")))) + "0vyl4wr2l4mp9ams0dyg224qxhl8ksxsv2shs6606lhhp9g1rb6b")))) (build-system gnu-build-system) (inputs `(("skalibs" ,skalibs) ("execline" ,execline))) From e36058634d1754ab6d69f01a448efd691c2a1637 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 21 Sep 2018 12:47:38 +0200 Subject: [PATCH 022/909] gnu: python-hdf4: Use INVOKE. * gnu/packages/python.scm (python-hdf4)[arguments]: Substitute INVOKE for SYSTEM*. --- gnu/packages/python.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 6927924a68..b8521fa0e4 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -767,8 +767,8 @@ and verifies that it matches the intended target hostname.") (setenv "PYTHONPATH" (string-append (getcwd) ":" (getenv "PYTHONPATH"))) - (and (zero? (system* "./runexamples.sh")) - (zero? (system* "nosetests" "-v")))))))) + (invoke "./runexamples.sh") + (invoke "nosetests" "-v")))))) (home-page "https://github.com/fhs/python-hdf4") (synopsis "Python interface to the NCSA HDF4 library") (description From a1d6610e84f4ff61913e1e861093b38c2beb9614 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 21 Sep 2018 12:58:02 +0200 Subject: [PATCH 023/909] gnu: python-rencode: Update to 1.0.5. * gnu/packages/python.scm (python-rencode): Update to 1.0.5. [arguments]: Add a 'delete-bogus-test' phase. --- gnu/packages/python.scm | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index b8521fa0e4..64ee4e028e 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -12456,15 +12456,24 @@ library.") (define-public python-rencode (package (name "python-rencode") - (version "1.0.3") + (version "1.0.5") (source (origin (method url-fetch) (uri (pypi-uri "rencode" version)) (sha256 (base32 - "08if5yax1xn5yfp8p3765ccjmfcv9di7i4m5jckgnwvdsgznwkbj")))) + "0mzwdq1is7kyyr32i5k4iz6g5xxdvmiyc132jnc60p9m6lnwjrpv")))) (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'delete-bogus-test + ;; This test requires /home/aresch/Downloads, which is not provided by + ;; the build environment. + (lambda _ + (delete-file "rencode/t.py") + #t))))) (native-inputs `(("pkg-config" ,pkg-config) ("python-cython" ,python-cython))) (home-page "https://github.com/aresch/rencode") From 101ad242be256d6a5953187be56d61f89e1317d7 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 21 Sep 2018 13:13:45 +0200 Subject: [PATCH 024/909] gnu: python-paramiko: Use HTTPS home page. * gnu/packages/python-crypto.scm (python-paramiko)[home-page]: Use HTTPS. --- gnu/packages/python-crypto.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm index 63dc1a54df..5dce8ffdda 100644 --- a/gnu/packages/python-crypto.scm +++ b/gnu/packages/python-crypto.scm @@ -220,7 +220,7 @@ This package provides a Python interface for BLAKE2.") ("python-pyasn1" ,python-pyasn1) ("python-pynacl" ,python-pynacl) ("python-cryptography" ,python-cryptography))) - (home-page "http://www.paramiko.org/") + (home-page "https://www.paramiko.org/") (synopsis "SSHv2 protocol library") (description "Paramiko is a python implementation of the SSHv2 protocol, providing both client and server functionality. While it leverages a Python C From 6569549dfa0c35e0f80869a630cd216d01c84590 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 21 Sep 2018 13:15:55 +0200 Subject: [PATCH 025/909] gnu: python-paramiko: Update to 2.4.2 [security fixes]. * gnu/packages/python-crypto.scm (python-paramiko): Update to 2.4.2. --- gnu/packages/python-crypto.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm index 5dce8ffdda..bda547417c 100644 --- a/gnu/packages/python-crypto.scm +++ b/gnu/packages/python-crypto.scm @@ -203,14 +203,14 @@ This package provides a Python interface for BLAKE2.") (define-public python-paramiko (package (name "python-paramiko") - (version "2.4.1") + (version "2.4.2") (source (origin (method url-fetch) (uri (pypi-uri "paramiko" version)) (sha256 (base32 - "1wx4s95i2cdh8hhi1c3jb8lzk71jifa3z9wjfsx905y7lrsngqrk")))) + "1jqgj2gl1pz7bi2aab1r2xq0ml0gskmm9p235cg9y32nydymm5x8")))) (build-system python-build-system) (arguments `(;; FIXME: Tests require many unpackaged libraries, see dev-requirements.txt. From c5327efb97208df569b4682ef5bfe4ac825d1c4f Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Fri, 21 Sep 2018 04:34:10 -0400 Subject: [PATCH 026/909] gnu: libvpx: Add upstream security fix. * gnu/packages/patches/libvpx-use-after-free-in-postproc.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/video.scm (libvpx)[source]: Add patch. --- gnu/local.mk | 1 + .../libvpx-use-after-free-in-postproc.patch | 34 +++++++++++++++++++ gnu/packages/video.scm | 3 +- 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/libvpx-use-after-free-in-postproc.patch diff --git a/gnu/local.mk b/gnu/local.mk index 4bca986619..9c69fd4f35 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -916,6 +916,7 @@ dist_patch_DATA = \ %D%/packages/patches/libutils-remove-damaging-includes.patch \ %D%/packages/patches/libvdpau-va-gl-unbundle.patch \ %D%/packages/patches/libvpx-CVE-2016-2818.patch \ + %D%/packages/patches/libvpx-use-after-free-in-postproc.patch \ %D%/packages/patches/libxslt-generated-ids.patch \ %D%/packages/patches/libxt-guix-search-paths.patch \ %D%/packages/patches/lierolibre-check-unaligned-access.patch \ diff --git a/gnu/packages/patches/libvpx-use-after-free-in-postproc.patch b/gnu/packages/patches/libvpx-use-after-free-in-postproc.patch new file mode 100644 index 0000000000..04f2a953b7 --- /dev/null +++ b/gnu/packages/patches/libvpx-use-after-free-in-postproc.patch @@ -0,0 +1,34 @@ +From 52add5896661d186dec284ed646a4b33b607d2c7 Mon Sep 17 00:00:00 2001 +From: Jerome Jiang +Date: Wed, 23 May 2018 15:43:00 -0700 +Subject: [PATCH] VP8: Fix use-after-free in postproc. + +The pointer in vp8 postproc refers to show_frame_mi which is only +updated on show frame. However, when there is a no-show frame which also +changes the size (thus new frame buffers allocated), show_frame_mi is +not updated with new frame buffer memory. + +Change the pointer in postproc to mi which is always updated. + +Bug: 842265 +Change-Id: I33874f2112b39f74562cba528432b5f239e6a7bd +--- + vp8/common/postproc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/vp8/common/postproc.c b/vp8/common/postproc.c +index d67ee8a57..8c292d616 100644 +--- a/vp8/common/postproc.c ++++ b/vp8/common/postproc.c +@@ -65,7 +65,7 @@ void vp8_deblock(VP8_COMMON *cm, YV12_BUFFER_CONFIG *source, + double level = 6.0e-05 * q * q * q - .0067 * q * q + .306 * q + .0065; + int ppl = (int)(level + .5); + +- const MODE_INFO *mode_info_context = cm->show_frame_mi; ++ const MODE_INFO *mode_info_context = cm->mi; + int mbr, mbc; + + /* The pixel thresholds are adjusted according to if or not the macroblock +-- +2.19.0 + diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 4882f0476a..448773e0d9 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -1242,7 +1242,8 @@ access to mpv's powerful playback capabilities.") (sha256 (base32 "0vvh89hvp8qg9an9vcmwb7d9k3nixhxaz6zi65qdjnd0i56kkcz6")) - (patches (search-patches "libvpx-CVE-2016-2818.patch")))) + (patches (search-patches "libvpx-use-after-free-in-postproc.patch" + "libvpx-CVE-2016-2818.patch")))) (build-system gnu-build-system) (arguments `(#:configure-flags (list "--enable-shared" From e67ad5532f76b53e955149da2f1e237696ff0893 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Fri, 21 Sep 2018 03:28:03 -0400 Subject: [PATCH 027/909] gnu: icecat: Update to 60.2.0-gnu1 (pre-release). * gnu/packages/gnuzilla.scm (icecat): Update to 60.2.0-gnu1. [source]: Download pre-release from alpha.gnu.org. Remove obsolete patches. Comment out the code to delete the bundled copies of libevent, cairo, harfbuzz, and graphite2. [inputs]: Use the latest ffmpeg. Comment out libevent, cairo, harfbuzz, and graphite2. [native-inputs]: Add rust and cargo. [arguments]: Remove --enable-gio and --disable-gnomeui. Add --disable-stylo. Comment out --with-system-{libevent,harfbuzz,graphite2}, --enable-system-cairo. Import %cargo-build-system-modules. Add 'patch-cargo-checksums' phase. * gnu/packages/patches/icecat-CVE-2018-5157-and-CVE-2018-5158.patch, gnu/packages/patches/icecat-bug-1413868-pt1.patch: Delete files. * gnu/local.mk (dist_patch_DATA): Remove them. --- gnu/local.mk | 2 - gnu/packages/gnuzilla.scm | 160 ++--- ...ecat-CVE-2018-5157-and-CVE-2018-5158.patch | 441 ------------ .../patches/icecat-bug-1413868-pt1.patch | 663 ------------------ 4 files changed, 49 insertions(+), 1217 deletions(-) delete mode 100644 gnu/packages/patches/icecat-CVE-2018-5157-and-CVE-2018-5158.patch delete mode 100644 gnu/packages/patches/icecat-bug-1413868-pt1.patch diff --git a/gnu/local.mk b/gnu/local.mk index 9c69fd4f35..4097ad5fcd 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -811,8 +811,6 @@ dist_patch_DATA = \ %D%/packages/patches/hurd-fix-eth-multiplexer-dependency.patch \ %D%/packages/patches/hydra-disable-darcs-test.patch \ %D%/packages/patches/icecat-avoid-bundled-libraries.patch \ - %D%/packages/patches/icecat-bug-1413868-pt1.patch \ - %D%/packages/patches/icecat-CVE-2018-5157-and-CVE-2018-5158.patch \ %D%/packages/patches/icecat-use-system-graphite2.patch \ %D%/packages/patches/icecat-use-system-harfbuzz.patch \ %D%/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch \ diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 77a74a0ec4..db8f85cfb1 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -35,6 +35,7 @@ #:use-module (guix git-download) #:use-module (guix utils) #:use-module (guix build-system gnu) + #:use-module (guix build-system cargo) #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages databases) @@ -58,6 +59,7 @@ #:use-module (gnu packages xorg) #:use-module (gnu packages gl) #:use-module (gnu packages assembly) + #:use-module (gnu packages rust) #:use-module (gnu packages icu4c) #:use-module (gnu packages video) #:use-module (gnu packages xdisorg) @@ -478,112 +480,25 @@ security standards.") (define-public icecat (package (name "icecat") - (version "52.6.0-gnu1") + (version "60.2.0-gnu1") (source (origin (method url-fetch) + ;; Temporary URL pending official release: + (uri "https://alpha.gnu.org/gnu/gnuzilla/60.2.0/icecat-60.2.0-gnu1.tar.bz2") + #; (uri (string-append "mirror://gnu/gnuzilla/" (first (string-split version #\-)) "/" name "-" version ".tar.bz2")) (sha256 (base32 - "09fn54glqg1aa93hnz5zdcy07cps09dbni2b4200azh6nang630a")) + "0lqx7g79x15941rhjr3qsfwsny6vzc7d7abdmvjy6jjbqkqlc1zl")) (patches (list (search-patch "icecat-avoid-bundled-libraries.patch") - (search-patch "icecat-use-system-harfbuzz.patch") - (search-patch "icecat-use-system-graphite2.patch") - (mozilla-patch "icecat-bug-546387.patch" "d13e3fefb76e" "1b760r0bg2ydbl585wlmajljh1nlisrwxvjws5b28a3sgjy01i6k") - (mozilla-patch "icecat-bug-1350152.patch" "f822bda79c28" "1wf56169ca874shr6r7qx40s17h2gwj7ngmpyylrpmd1c6hipvsj") - (mozilla-patch "icecat-bug-1411708.patch" "34c968767eb7" "0l2jy201ikj3m3h66mvlsj4y0ki7cpm7x7nnfygbwnfxg42s1sip") - (mozilla-patch "icecat-bug-1375217.patch" "00fc630c9a46" "17pcprp452nslk6sac6sili0p74zh8w3g0v1wsdn0ikm9xmnphhv") - (mozilla-patch "icecat-CVE-2018-5145.patch" "f0ec180993d2" "0jiazxcwki83wr00fyh2g518ynsd33p7nk65zk4d1682gn22lc8v") - (mozilla-patch "icecat-CVE-2018-5130.patch" "a6a9e26688c1" "0cvizvilb4k422j2gzqcbakznvsffmk6n6xn1ayj5rgxfaizkkqk") - (mozilla-patch "icecat-CVE-2018-5125-pt1.patch" "198ad052621e" "1721zx8hifdlflrhvw6hmkdgjbvsmxl9n84iji5qywhlp2krdk9r") - (mozilla-patch "icecat-bug-1426087.patch" "391ea77ebfdb" "1fhkvd0z6mvdkj7m0d3jlj42rsdw5r4x122c1wb1i428228ifw6n") - (mozilla-patch "icecat-bug-1416307.patch" "54f2f7f93b30" "1ncjir16mqya37wgf6fy2rqki3vl433c4grjr3fypmlig6xfgg1l") - (mozilla-patch "icecat-CVE-2018-5127.patch" "2c4d7a59041b" "178c6gid89cvw52yqs43i6x6s5w0hslj0rfa2r8b4762ij3civ92") - (mozilla-patch "icecat-CVE-2018-5125-pt2.patch" "f87ef3774d5e" "0payf3az2w93nzl5qknqx290jbxk8v39rwhdgq7wyd5f245dywxk") - (mozilla-patch "icecat-CVE-2018-5125-pt3.patch" "ac743923f81d" "0msyr45xr1j5q4x6ah4r907pwjngyi0k6pp9y8ixk21cnwbzrdwx") - (mozilla-patch "icecat-CVE-2018-5129.patch" "456913d7e8b5" "0fx0s06kxxj7g4hllinaskgh41z3k48zml6yqqzxx485qk3hdh9x") - (mozilla-patch "icecat-bug-1334465-pt1.patch" "f95c5b881442" "0iaddhf65jd9cycj4bw0b207n2jiqkr4q84jifzyqn4ygs75wdqd") - (mozilla-patch "icecat-bug-1334465-pt2.patch" "8a4265c8fb41" "1d9zfdbrlw9wzr84b7pj7lxgy487lsx0kfd89287hjk0al8m6vrw") - (mozilla-patch "icecat-bug-1398021.patch" "28855df568d8" "1kmq836gniplxpjnvq8lhbcc1aqi56al628r1mzdy94b5yb0lis3") - (mozilla-patch "icecat-bug-1388020.patch" "e8ab2736499b" "0n28vcd65rxsyq3z22rfcfksryfndhm1i3g6ah3akg11jnagqf5v") - (mozilla-patch "icecat-CVE-2018-5125-pt4.patch" "014877bf17ea" "0hk90pnf7h7kvidji6ydvva1zpyraipn03pjhvprdqr7k2fqzmsz") - (mozilla-patch "icecat-CVE-2018-5125-pt5.patch" "5b3a5de48912" "1ifya05rcd34ryp9zawdacihhkkf2m0xn2q8m8c6v78bvxj0mgig") - (mozilla-patch "icecat-CVE-2018-5144.patch" "1df9b4404acd" "1sd59vsarfsbh3vlrzrqv6n1ni7vxdzm83j6s6g0fygl1h8kwijg") - (mozilla-patch "icecat-bug-1430173-pt1.patch" "9124c3972e2b" "13ns5yy39yzfx7lrkv4rgwdz6s6q0z4i09wkbxdvnkfsz17cd17i") - (mozilla-patch "icecat-bug-1430173-pt2.patch" "9f6dc031be51" "0bv2p98z5ahp3x9wxnhwxn87g21djvzzp7jy55ik90hqixsbhwdl") - (mozilla-patch "icecat-CVE-2018-5131.patch" "3102fbb97b32" "0kg0183v92gxjb9255xjwhxyd6gl77l9c0civx3040k975fybwlp") - (mozilla-patch "icecat-CVE-2018-5125-pt6.patch" "4904c0f4a645" "0lsq62ynksy1fbw0m87f1d741fyvrrp1vrznx5hx0l2p4g4frhv3") - (mozilla-patch "icecat-CVE-2018-5125-pt7.patch" "16b8073d5c30" "1dv94qqah1wjd3bxjvrkmjbb2f95d3d11zpm8mggdk52il575bwl") - (mozilla-patch "icecat-bug-1442127-pt1.patch" "f931f85b09da" "02s380w8a73g4w2wm810lbigh4z4rrlfy10ywwhv4lpkbk8xg7pr") - (mozilla-patch "icecat-bug-1442127-pt2.patch" "da5792b70f30" "116k9qja5ir9b3laazasp43f5jx59qq72nknmq5bn5v1ixya9r4l") - (mozilla-patch "icecat-CVE-2018-5125-pt8.patch" "62b831df8269" "109pn0hqn7s27580glv4z7qv1pmjzii9szvf3wkn97k5wybrzgkx") - (mozilla-patch "icecat-bug-1442504.patch" "8954ce68a364" "0bl65zw82bwqg0mmcri94pxqq6ibff7y5rclkzapb081p6yvf73q") - (mozilla-patch "icecat-CVE-2018-5125-pt9.patch" "8a16f439117c" "108iarql6z7h1r4rlzac6n6lrzs78x7kcdbfa0b5dbr5xc66jmgb") - (mozilla-patch "icecat-bug-1426603.patch" "ca0b92ecedee" "0dc3mdl4a3hrq4j384zjavf3splj6blv4masign710hk7svlgbhq") - (mozilla-patch "icecat-CVE-2018-5146.patch" "494e5d5278ba" "1yb4lxjw499ppwhk31vz0vzl0cfqvj9d4jwqag7ayj53ybwsqgjr") - (mozilla-patch "icecat-CVE-2018-5147.patch" "5cd5586a2f48" "10s774pwvj6xfk3kk6ivnhp2acc8x9sqq6na8z47nkhgwl2712i5") - (mozilla-patch "icecat-CVE-2018-5148.patch" "c3e447e07077" "0gmwy631f8ip4gr1mpbjk8bx1n1748wdls5zq4y8hpmpnq5g1wyx") - (mozilla-patch "icecat-CVE-2018-5178.patch" "17201199b18d" "1d0hcim1fwh0bklwpmnal1mv9d9kmyif1m15aj1nqkf1n3x4xc37") - (mozilla-patch "icecat-bug-1361699.patch" "a07d6c3ff262" "1z8mjg2487r8pxi0x951v6fwwr696q84f6hlzimc3r7bn5ds9r83") - (mozilla-patch "icecat-CVE-2018-5150-pt01.patch" "7127ccf8f88c" "0m4my7aflpp0wlqilr2m4axd7k2fyrs7jqdcz2rrz5pwivz1anvd") - (mozilla-patch "icecat-bug-1444231.patch" "57bd35fa8618" "0pl6x5amc5x6nhwl7qnmnff3jjjxmbs8r365bfzj58g7q5ihqwvf") - (mozilla-patch "icecat-CVE-2018-5150-pt02.patch" "2f3e1ccf1661" "0azl8g81kpc0w2xpjpgm1154ll12g0a8n6i7bl3s9nnrk2i26n74") - (mozilla-patch "icecat-CVE-2018-5159.patch" "8ff2c4d68e36" "0kz1rqhnz8ca4z20hnpcafidhsrwhnm0h2gmlgchni33h8pisr1f") - (mozilla-patch "icecat-CVE-2018-5154.patch" "b8c430253efd" "1arjcaps9axhxh5ff84n9bydhhzrihn7hbq7v69nvqwqrjp3lgg9") - (mozilla-patch "icecat-CVE-2018-5155.patch" "05cadfa3ac39" "0q0vh7vy7x0l8jp6376fn10qljfp4mnp4m9zfn90j4m19pfl86a0") - (mozilla-patch "icecat-CVE-2018-5168.patch" "48a678d7cb81" "1yfh7kxxxvqck2hpn98pwag4splyc6c9brc5haq28fp8x9r9qvlk") - (mozilla-patch "icecat-CVE-2018-5150-pt03.patch" "112032576872" "1x1hxyggbxlnlj0n9cbp03hjnfvm6cq8nqj0jizrd8cfyd5aig8p") - (mozilla-patch "icecat-CVE-2018-5150-pt04.patch" "ad9a885b0df4" "1hrk1q9mk59jww55g4lqmaflznk87x3vvjn2mxfgfbbjs8l1cyz4") - (mozilla-patch "icecat-bug-1452416.patch" "f89ab96a2532" "1dqchxdyznhgyxhfq0hm0vg1p597hjqflfzigc7j3s5vxf9rg2nv") - (mozilla-patch "icecat-CVE-2018-5150-pt05.patch" "af885a1bd293" "1wfpqhm2dp4fsx6zbrncngsqz7g2x09b625zcighixrbpvybyww3") - (mozilla-patch "icecat-CVE-2018-5150-pt06.patch" "666fc84ec72d" "0lml2wqd4yqidhi364x8r90f78397k2y0kq5z5bv8l8j4bhcnb9v") - (search-patch "icecat-CVE-2018-5157-and-CVE-2018-5158.patch") - (mozilla-patch "icecat-CVE-2018-5150-pt07.patch" "1ab40761a856" "1kgwypy7k5b33jwkni4025za4kcnv5m6klsx4wsswlixmljmkbc7") - (mozilla-patch "icecat-bug-1453339.patch" "0edb8dca7087" "0b30pipqryh311sc97rcmwnx9n8qdlbbz90b2hkybjnprmbhfxrm") - (mozilla-patch "icecat-CVE-2018-5150-pt08.patch" "134c728799c1" "16hbwx6fx1hrddsyjjbd3z954ql3pg348xs13h9riyblq8crzmam") - (mozilla-patch "icecat-CVE-2018-5150-pt09.patch" "14eab155eaa8" "0wr4xgblxzk4c2gvlnpl7ic1196mrhry1hgwdl1jivq0ji5cbvbd") - (mozilla-patch "icecat-bug-1452619.patch" "2b75d55ccf0e" "1g87aybw6ggv6hyk385bplv0lx63n020gwyq0d6d4pqld48hsm1i") - (mozilla-patch "icecat-CVE-2018-5156-pt1.patch" "89857f35df29" "0gzi47svrw5ajdlm3i12193psm702zx70x5h1rwp4gb7gxh4m4d9") - (mozilla-patch "icecat-CVE-2018-5150-pt10.patch" "3f2ec03c0405" "0w02952dlxd2gmwghck2nm4rjjmc5ylg62bw6m1rvi35kcr134lr") - (mozilla-patch "icecat-CVE-2018-5183.patch" "f729bf78fb3a" "0xkj6jwxwdqkvb5c7wi16b8cm8qrnlrd3s9jnd46jg03iykrx56f") - (mozilla-patch "icecat-CVE-2018-5188-pt01.patch" "eb896089db47" "10lppk4x2d3pim71a36ky1dmg08rs5ckfiljwvfnr1cw6934qxl4") - (mozilla-patch "icecat-CVE-2018-5188-pt02.patch" "2374dca97bde" "0y1g55wvj44nzb1qfkl271jcf8s1ik8lcl1785z0zim4qzn7qkpa") - (mozilla-patch "icecat-CVE-2018-5188-pt03.patch" "70b6298e0c9e" "0n5jfy6c421dkybk8m18vd61y95zz0r64g1p1zlya3fps5knfaqi") - (mozilla-patch "icecat-CVE-2018-12365-pt1.patch" "4ef79fe9b3b7" "1c32z1ki1i6xj1nbb0xlxwqnmz48ikmy8dmp37rkjz8ssn04wgfg") - (mozilla-patch "icecat-CVE-2018-12365-pt2.patch" "9ad16112044a" "0ayya67sx7avcb8bplfdxb92l9g4mjrb1s3hby283llhqv0ikg9b") - (mozilla-patch "icecat-CVE-2018-12359.patch" "11d8a87fb6d6" "1rkmdk18llw0x1jakix75hlhy0hpsmlminnflagbzrzjli81gwm1") - (mozilla-patch "icecat-CVE-2018-5188-pt04.patch" "407b10ad1273" "16qzsfirw045xag96f1qvpdlibm8lwdj9l1mlli4n1vz0db91v9q") - (mozilla-patch "icecat-CVE-2018-6126.patch" "e76e2e481b17" "0hnx13msjy28n3bpa2c24kpzalam4bdk5gnp0f9k671l48rs9yb3") - (mozilla-patch "icecat-CVE-2018-5188-pt05.patch" "2c75bfcd465c" "1pjinj8qypafqm2fk68s3hzcbzcijn09qzrpcxvzq6bl1yfc1xfd") - (mozilla-patch "icecat-CVE-2018-5188-pt06.patch" "042f80f3befd" "0av918kin4bkrq7gnjz0h9w8kkq8rk9l93250lfl5kqrinza1gsk") - (mozilla-patch "icecat-CVE-2018-5188-pt07+bugs-1455071+1433642+1456604+1458320.patch" - "bb0451c9c4a0" "1lhm1b2a7c6jwhzsg3c830hfhp17p8j9zbcmgchpb8c5jkc3vw0x") - (mozilla-patch "icecat-CVE-2018-5188-pt08.patch" "8189b262e3b9" "13rh86ddwmj1bhv3ibbil3sv5xbqq1c9v1czgbsna5hxxkzc1y3b") - (mozilla-patch "icecat-CVE-2018-5188-pt09.patch" "9f81ae3f6e1d" "05vfg8a8jrzd93n1wvncmvdmqgf9cgsl8ryxgjs3032gbbjkga7q") - (mozilla-patch "icecat-CVE-2018-12360.patch" "face7a3dd5d7" "0jclw30mf693w8lrmvn0iankggj21nh4j3zh51q5363rj5xncdzx") - (mozilla-patch "icecat-CVE-2018-5188-pt10.patch" "7afb58c046c8" "1r0569r76712x7x1sw6xr0x06ilv6iw3fncb0f8r8b9mp6wrpx34") - (mozilla-patch "icecat-CVE-2018-12362-pt1.patch" "f1a745f8c42d" "11q73pb7a8f09xjzil4rhg5nr49zrnz1vb0prni0kqvrnppf5s40") - (mozilla-patch "icecat-CVE-2018-12362-pt2.patch" "1f9a430881cc" "0f79rv7njliqxx33z07n60b50jg0a596d1km7ayz2hivbl2d0168") - (mozilla-patch "icecat-CVE-2018-5188-pt11.patch" "28f4fc0a5141" "1a8f9z6c80in8ccj82ysdrcr2lqypp29l4acs50kwncm0c0b01zl") - (mozilla-patch "icecat-CVE-2018-12363.patch" "ad5a53a1d2b1" "0rhl4r39ydb3lkfp5pkwvhhzqgfh33s9r7b7jccgkrx6f13xyq78") - (mozilla-patch "icecat-CVE-2018-5188-pt12.patch" "0ddfc03c0454" "1b0xw2kj9765lvpl8iwr3wwcz40bdfp3dp4y9f546a61qsi9q9d6") - (mozilla-patch "icecat-CVE-2018-5156-pt2.patch" "dbf36189a364" "1awbyhy0r79i03sns2p0m78f9hb6c7kp4hwia2khx4qszlsr4j95") - (mozilla-patch "icecat-CVE-2018-5188-pt13.patch" "32509dfde003" "0cc3c92dgf5qynk093prq610c9x815l2fa24ddrw9czdzbwblsdq") - (mozilla-patch "icecat-bug-1462912.patch" "f18535a212da" "0zkqz9il89f1s1yrp5c6hj6kysy2x02iy50vgwdj30lr56gkpzmk") - (mozilla-patch "icecat-CVE-2018-5188-pt14.patch" "e8e9e1ef79f2" "0dc8p6fsppq3bhbpmp41f8mjxbr31pvgpga0a73dqdaicq5ydgj4") - (search-patch "icecat-bug-1413868-pt1.patch") - (mozilla-patch "icecat-CVE-2018-5188-pt15.patch" "9d4d31b2630d" "1lcbmsyi09kp80h1jgxj5l45zl24xn22h1lq7drbyjxsn1kggq4g") - (mozilla-patch "icecat-CVE-2018-12366-pt1.patch" "edf2c7dff493" "06xmyk7nm54cm9m6qc59wz8cxxfa5r25mf2xzdzy74iq5hwa1ac8") - (mozilla-patch "icecat-CVE-2018-5188-pt16.patch" "05549a4d1b80" "10q68cllshmmhlrbirm9h4gyc3ffrcpsxihfpcbxh90nv2h16jci") - (mozilla-patch "icecat-CVE-2018-12364.patch" "67b2d8924841" "197riigbb6l30959pygr0zlv7vaims78dg1mh0pg33pa7cbna0ds") - (mozilla-patch "icecat-CVE-2018-12366-pt2.patch" "528d4d997bb3" "0f375i96a404dkn0fanmd9pgfj3wyrhjfc5dwslw2s44gwfjhljb") - (mozilla-patch "icecat-bug-1369771.patch" "fab16ad7f256" "0kd8qm04sjgfgfg8yw3ivcxazb1d7v430g86chw4n64qybsh9ka3") - (mozilla-patch "icecat-CVE-2018-5188-pt17.patch" "068e249d02b4" "1iy9by1mg5qhp8502h31m8zm99aq2hx0c5n3hadd5pk11lfnq6ll") - (mozilla-patch "icecat-bug-1413868-pt2.patch" "755067c14b06" "089dwqwzcdg1l6aimi0i65q4dgb2iny5h8yjx63h9zgv77n0700a"))) + ;; FIXME (search-patch "icecat-use-system-harfbuzz.patch") + ;; FIXME (search-patch "icecat-use-system-graphite2.patch") + )) (modules '((guix build utils))) (snippet '(begin @@ -613,13 +528,13 @@ security standards.") "modules/freetype2" "modules/zlib" "modules/libbz2" - "ipc/chromium/src/third_party/libevent" + ;; UNBUNDLE-ME "ipc/chromium/src/third_party/libevent" "media/libjpeg" "media/libvpx" "security/nss" - "gfx/cairo" - "gfx/harfbuzz" - "gfx/graphite2" + ;; UNBUNDLE-ME "gfx/cairo" + ;; UNBUNDLE-ME "gfx/harfbuzz" + ;; UNBUNDLE-ME "gfx/graphite2" "js/src/ctypes/libffi" "db/sqlite3")) ;; Delete .pyc files, typically present in icecat source tarballs @@ -633,29 +548,29 @@ security standards.") (inputs `(("alsa-lib" ,alsa-lib) ("bzip2" ,bzip2) - ("cairo" ,cairo) + ;; UNBUNDLE-ME ("cairo" ,cairo) ("cups" ,cups) ("dbus-glib" ,dbus-glib) ("gdk-pixbuf" ,gdk-pixbuf) ("glib" ,glib) ("gtk+" ,gtk+) ("gtk+-2" ,gtk+-2) - ("graphite2" ,graphite2) + ;; UNBUNDLE-ME ("graphite2" ,graphite2) ("pango" ,pango) ("freetype" ,freetype) - ("harfbuzz" ,harfbuzz) + ;; UNBUNDLE-ME ("harfbuzz" ,harfbuzz) ("hunspell" ,hunspell) ("libcanberra" ,libcanberra) ("libgnome" ,libgnome) ("libjpeg-turbo" ,libjpeg-turbo) ("libxft" ,libxft) - ("libevent" ,libevent-2.0) + ;; UNBUNDLE-ME ("libevent" ,libevent-2.0) ("libxinerama" ,libxinerama) ("libxscrnsaver" ,libxscrnsaver) ("libxcomposite" ,libxcomposite) ("libxt" ,libxt) ("libffi" ,libffi) - ("ffmpeg" ,ffmpeg-3.4) + ("ffmpeg" ,ffmpeg) ("libvpx" ,libvpx) ("icu4c" ,icu4c) ("pixman" ,pixman) @@ -670,7 +585,9 @@ security standards.") ("zip" ,zip) ("zlib" ,zlib))) (native-inputs - `(("perl" ,perl) + `(("rust" ,rust) + ("cargo" ,rust "cargo") + ("perl" ,perl) ("python" ,python-2) ; Python 3 not supported ("python2-pysqlite" ,python2-pysqlite) ("yasm" ,yasm) @@ -687,11 +604,12 @@ security standards.") ;; practice somehow. See . #:validate-runpath? #f + #:imported-modules ,%cargo-build-system-modules ;for `generate-checksums' + #:configure-flags '("--enable-default-toolkit=cairo-gtk3" "--with-distribution-id=org.gnu" - "--enable-gio" "--enable-startup-notification" "--enable-pulseaudio" @@ -701,7 +619,9 @@ security standards.") "--disable-maintenance-service" "--disable-eme" "--disable-gconf" - "--disable-gnomeui" + + ;; Stylo requires LLVM/clang. For now, disable it. + "--disable-stylo" ;; Building with debugging symbols takes ~5GiB, so ;; disable it. @@ -716,15 +636,15 @@ security standards.") "--with-system-zlib" "--with-system-bz2" "--with-system-jpeg" ; must be libjpeg-turbo - "--with-system-libevent" + ;; UNBUNDLE-ME "--with-system-libevent" "--with-system-libvpx" "--with-system-icu" "--with-system-nspr" "--with-system-nss" - "--with-system-harfbuzz" - "--with-system-graphite2" + ;; UNBUNDLE-ME "--with-system-harfbuzz" + ;; UNBUNDLE-ME "--with-system-graphite2" "--enable-system-pixman" - "--enable-system-cairo" + ;; UNBUNDLE-ME "--enable-system-cairo" "--enable-system-ffi" "--enable-system-hunspell" "--enable-system-sqlite" @@ -774,6 +694,24 @@ security standards.") 'avcodec', 'avutil', 'pulse' ]\n\n" all))) #t)) + (add-after 'patch-source-shebangs 'patch-cargo-checksums + (lambda* _ + (use-modules (guix build cargo-build-system)) + (let ((null-file "/dev/null") + (null-hash "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")) + (substitute* '("Cargo.lock" "servo/Cargo.lock") + (("(\"checksum .* = )\".*\"" all name) + (string-append name "\"" null-hash "\""))) + (for-each + (lambda (filename) + (delete-file filename) + (let ((dir (dirname filename))) + (display (string-append + "patch-cargo-checksums: generate-checksums for " + dir "\n")) + (generate-checksums dir null-file))) + (find-files "third_party/rust" ".cargo-checksum.json"))) + #t)) (replace 'configure ;; configure does not work followed by both "SHELL=..." and diff --git a/gnu/packages/patches/icecat-CVE-2018-5157-and-CVE-2018-5158.patch b/gnu/packages/patches/icecat-CVE-2018-5157-and-CVE-2018-5158.patch deleted file mode 100644 index b776640133..0000000000 --- a/gnu/packages/patches/icecat-CVE-2018-5157-and-CVE-2018-5158.patch +++ /dev/null @@ -1,441 +0,0 @@ -Based on -Adapted to apply cleanly to GNU IceCat. - -# HG changeset patch -# User Ryan VanderMeulen -# Date 1523630807 14400 -# Node ID 608e76ec5ba25cec2271d2b400c7bce2d4c5ef79 -# Parent 10b7f43b536f93151201d44d304c991aa9af5d0c -Bug 1452075 - Backport some upstream pdf.js fixes to ESR52. r=bdahl, r=yury, a=RyanVM - -diff --git a/browser/extensions/pdfjs/content/PdfStreamConverter.jsm b/browser/extensions/pdfjs/content/PdfStreamConverter.jsm ---- a/browser/extensions/pdfjs/content/PdfStreamConverter.jsm -+++ b/browser/extensions/pdfjs/content/PdfStreamConverter.jsm -@@ -24,17 +24,18 @@ const Cc = Components.classes; - const Ci = Components.interfaces; - const Cr = Components.results; - const Cu = Components.utils; - // True only if this is the version of pdf.js that is included with icecat. - const MOZ_CENTRAL = JSON.parse('true'); - const PDFJS_EVENT_ID = 'pdf.js.message'; - const PDF_CONTENT_TYPE = 'application/pdf'; - const PREF_PREFIX = 'pdfjs'; --const PDF_VIEWER_WEB_PAGE = 'resource://pdf.js/web/viewer.html'; -+const PDF_VIEWER_ORIGIN = "resource://pdf.js"; -+const PDF_VIEWER_WEB_PAGE = "resource://pdf.js/web/viewer.html"; - const MAX_NUMBER_OF_PREFS = 50; - const MAX_STRING_PREF_LENGTH = 128; - - Cu.import('resource://gre/modules/XPCOMUtils.jsm'); - Cu.import('resource://gre/modules/Services.jsm'); - Cu.import('resource://gre/modules/NetUtil.jsm'); - - XPCOMUtils.defineLazyModuleGetter(this, 'NetworkManager', -@@ -105,21 +106,25 @@ function log(aMsg) { - if (!getBoolPref(PREF_PREFIX + '.pdfBugEnabled', false)) { - return; - } - var msg = 'PdfStreamConverter.js: ' + (aMsg.join ? aMsg.join('') : aMsg); - Services.console.logStringMessage(msg); - dump(msg + '\n'); - } - --function getDOMWindow(aChannel) { -+function getDOMWindow(aChannel, aPrincipal) { - var requestor = aChannel.notificationCallbacks ? - aChannel.notificationCallbacks : - aChannel.loadGroup.notificationCallbacks; - var win = requestor.getInterface(Components.interfaces.nsIDOMWindow); -+ // Ensure the window wasn't navigated to something that is not PDF.js. -+ if (!win.document.nodePrincipal.equals(aPrincipal)) { -+ return null; -+ } - return win; - } - - function getLocalizedStrings(path) { - var stringBundle = Cc['@mozilla.org/intl/stringbundle;1']. - getService(Ci.nsIStringBundleService). - createBundle('chrome://pdf.js/locale/' + path); - -@@ -627,31 +632,31 @@ var RangedChromeActions = (function Rang - data = this.dataListener.readData(); - - this.dataListener.onprogress = function (loaded, total) { - self.domWindow.postMessage({ - pdfjsLoadAction: 'progressiveRead', - loaded: loaded, - total: total, - chunk: self.dataListener.readData() -- }, '*'); -+ }, PDF_VIEWER_ORIGIN); - }; - this.dataListener.oncomplete = function () { - self.dataListener = null; - }; - } - - this.domWindow.postMessage({ - pdfjsLoadAction: 'supportsRangedLoading', - rangeEnabled: this.rangeEnabled, - streamingEnabled: this.streamingEnabled, - pdfUrl: this.pdfUrl, - length: this.contentLength, - data: data -- }, '*'); -+ }, PDF_VIEWER_ORIGIN); - - return true; - }; - - proto.requestDataRange = function RangedChromeActions_requestDataRange(args) { - if (!this.rangeEnabled) { - return; - } -@@ -663,23 +668,23 @@ var RangedChromeActions = (function Rang - // errors from chrome code for non-range requests, so this doesn't - // seem high-pri - this.networkManager.requestRange(begin, end, { - onDone: function RangedChromeActions_onDone(args) { - domWindow.postMessage({ - pdfjsLoadAction: 'range', - begin: args.begin, - chunk: args.chunk -- }, '*'); -+ }, PDF_VIEWER_ORIGIN); - }, - onProgress: function RangedChromeActions_onProgress(evt) { - domWindow.postMessage({ - pdfjsLoadAction: 'rangeProgress', - loaded: evt.loaded, -- }, '*'); -+ }, PDF_VIEWER_ORIGIN); - } - }); - }; - - proto.abortLoading = function RangedChromeActions_abortLoading() { - this.networkManager.abortAllRequests(); - if (this.originalRequest) { - this.originalRequest.cancel(Cr.NS_BINDING_ABORTED); -@@ -718,26 +723,26 @@ var StandardChromeActions = (function St - var self = this; - - this.dataListener.onprogress = function ChromeActions_dataListenerProgress( - loaded, total) { - self.domWindow.postMessage({ - pdfjsLoadAction: 'progress', - loaded: loaded, - total: total -- }, '*'); -+ }, PDF_VIEWER_ORIGIN); - }; - - this.dataListener.oncomplete = - function StandardChromeActions_dataListenerComplete(data, errorCode) { - self.domWindow.postMessage({ - pdfjsLoadAction: 'complete', - data: data, - errorCode: errorCode -- }, '*'); -+ }, PDF_VIEWER_ORIGIN); - - self.dataListener = null; - self.originalRequest = null; - }; - - return true; - }; - -@@ -972,31 +977,35 @@ PdfStreamConverter.prototype = { - var proxy = { - onStartRequest: function(request, context) { - listener.onStartRequest(aRequest, aContext); - }, - onDataAvailable: function(request, context, inputStream, offset, count) { - listener.onDataAvailable(aRequest, aContext, inputStream, - offset, count); - }, -- onStopRequest: function(request, context, statusCode) { -- // We get the DOM window here instead of before the request since it -- // may have changed during a redirect. -- var domWindow = getDOMWindow(channel); -+ onStopRequest(request, context, statusCode) { -+ var domWindow = getDOMWindow(channel, resourcePrincipal); -+ if (!Components.isSuccessCode(statusCode) || !domWindow) { -+ // The request may have been aborted and the document may have been -+ // replaced with something that is not PDF.js, abort attaching. -+ listener.onStopRequest(aRequest, context, statusCode); -+ return; -+ } - var actions; - if (rangeRequest || streamRequest) { - actions = new RangedChromeActions( - domWindow, contentDispositionFilename, aRequest, - rangeRequest, streamRequest, dataListener); - } else { - actions = new StandardChromeActions( - domWindow, contentDispositionFilename, aRequest, dataListener); - } - var requestListener = new RequestListener(actions); -- domWindow.addEventListener(PDFJS_EVENT_ID, function(event) { -+ domWindow.document.addEventListener(PDFJS_EVENT_ID, function(event) { - requestListener.receive(event); - }, false, true); - if (actions.supportsIntegratedFind()) { - var findEventManager = new FindEventManager(domWindow); - findEventManager.bind(); - } - listener.onStopRequest(aRequest, aContext, statusCode); - -diff --git a/browser/extensions/pdfjs/content/build/pdf.worker.js b/browser/extensions/pdfjs/content/build/pdf.worker.js ---- a/browser/extensions/pdfjs/content/build/pdf.worker.js -+++ b/browser/extensions/pdfjs/content/build/pdf.worker.js -@@ -41648,16 +41648,32 @@ - var error = sharedUtil.error; - var info = sharedUtil.info; - var isArray = sharedUtil.isArray; - var isBool = sharedUtil.isBool; - var isDict = corePrimitives.isDict; - var isStream = corePrimitives.isStream; - var PostScriptLexer = corePsParser.PostScriptLexer; - var PostScriptParser = corePsParser.PostScriptParser; -+ function toNumberArray(arr) { -+ if (!Array.isArray(arr)) { -+ return null; -+ } -+ var length = arr.length; -+ for (var i = 0; i < length; i++) { -+ if (typeof arr[i] !== 'number') { -+ var result = new Array(length); -+ for (var j = 0; j < length; j++) { -+ result[j] = +arr[j]; -+ } -+ return result; -+ } -+ } -+ return arr; -+ } - var PDFFunction = function PDFFunctionClosure() { - var CONSTRUCT_SAMPLED = 0; - var CONSTRUCT_INTERPOLATED = 2; - var CONSTRUCT_STICHED = 3; - var CONSTRUCT_POSTSCRIPT = 4; - return { - getSampleArray: function PDFFunction_getSampleArray(size, outputSize, bps, str) { - var i, ii; -@@ -41747,43 +41763,43 @@ - out[index] = [ - arr[i], - arr[i + 1] - ]; - ++index; - } - return out; - } -- var domain = dict.getArray('Domain'); -- var range = dict.getArray('Range'); -+ var domain = toNumberArray(dict.getArray('Domain')); -+ var range = toNumberArray(dict.getArray('Range')); - if (!domain || !range) { - error('No domain or range'); - } - var inputSize = domain.length / 2; - var outputSize = range.length / 2; - domain = toMultiArray(domain); - range = toMultiArray(range); -- var size = dict.get('Size'); -+ var size = toNumberArray(dict.get('Size')); - var bps = dict.get('BitsPerSample'); - var order = dict.get('Order') || 1; - if (order !== 1) { - // No description how cubic spline interpolation works in PDF32000:2008 - // As in poppler, ignoring order, linear interpolation may work as good - info('No support for cubic spline interpolation: ' + order); - } -- var encode = dict.getArray('Encode'); -+ var encode = toNumberArray(dict.getArray('Encode')); - if (!encode) { - encode = []; - for (var i = 0; i < inputSize; ++i) { -- encode.push(0); -- encode.push(size[i] - 1); -- } -- } -- encode = toMultiArray(encode); -- var decode = dict.getArray('Decode'); -+ encode.push([0, size[i] - 1]); -+ } -+ } else { -+ encode = toMultiArray(encode); -+ } -+ var decode = toNumberArray(dict.getArray('Decode')); - if (!decode) { - decode = range; - } else { - decode = toMultiArray(decode); - } - var samples = this.getSampleArray(size, outputSize, bps, str); - return [ - CONSTRUCT_SAMPLED, -@@ -41868,22 +41884,19 @@ - // Decode_2j, Decode_2j+1) - rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]); - // y_j = min(max(r_j, range_2j), range_2j+1) - dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]); - } - }; - }, - constructInterpolated: function PDFFunction_constructInterpolated(str, dict) { -- var c0 = dict.getArray('C0') || [0]; -- var c1 = dict.getArray('C1') || [1]; -+ var c0 = toNumberArray(dict.getArray('C0')) || [0]; -+ var c1 = toNumberArray(dict.getArray('C1')) || [1]; - var n = dict.get('N'); -- if (!isArray(c0) || !isArray(c1)) { -- error('Illegal dictionary for interpolated function'); -- } - var length = c0.length; - var diff = []; - for (var i = 0; i < length; ++i) { - diff.push(c1[i] - c0[i]); - } - return [ - CONSTRUCT_INTERPOLATED, - c0, -@@ -41899,49 +41912,45 @@ - return function constructInterpolatedFromIRResult(src, srcOffset, dest, destOffset) { - var x = n === 1 ? src[srcOffset] : Math.pow(src[srcOffset], n); - for (var j = 0; j < length; ++j) { - dest[destOffset + j] = c0[j] + x * diff[j]; - } - }; - }, - constructStiched: function PDFFunction_constructStiched(fn, dict, xref) { -- var domain = dict.getArray('Domain'); -+ var domain = toNumberArray(dict.getArray('Domain')); - if (!domain) { - error('No domain'); - } - var inputSize = domain.length / 2; - if (inputSize !== 1) { - error('Bad domain for stiched function'); - } - var fnRefs = dict.get('Functions'); - var fns = []; - for (var i = 0, ii = fnRefs.length; i < ii; ++i) { -- fns.push(PDFFunction.getIR(xref, xref.fetchIfRef(fnRefs[i]))); -- } -- var bounds = dict.getArray('Bounds'); -- var encode = dict.getArray('Encode'); -+ fns.push(PDFFunction.parse(xref, xref.fetchIfRef(fnRefs[i]))); -+ } -+ var bounds = toNumberArray(dict.getArray('Bounds')); -+ var encode = toNumberArray(dict.getArray('Encode')); - return [ - CONSTRUCT_STICHED, - domain, - bounds, - encode, - fns - ]; - }, - constructStichedFromIR: function PDFFunction_constructStichedFromIR(IR) { - var domain = IR[1]; - var bounds = IR[2]; - var encode = IR[3]; -- var fnsIR = IR[4]; -- var fns = []; -+ var fns = IR[4]; - var tmpBuf = new Float32Array(1); -- for (var i = 0, ii = fnsIR.length; i < ii; i++) { -- fns.push(PDFFunction.fromIR(fnsIR[i])); -- } - return function constructStichedFromIRResult(src, srcOffset, dest, destOffset) { - var clip = function constructStichedFromIRClip(v, min, max) { - if (v > max) { - v = max; - } else if (v < min) { - v = min; - } - return v; -@@ -41968,18 +41977,18 @@ - // Prevent the value from becoming NaN as a result - // of division by zero (fixes issue6113.pdf). - tmpBuf[0] = dmin === dmax ? rmin : rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin); - // call the appropriate function - fns[i](tmpBuf, 0, dest, destOffset); - }; - }, - constructPostScript: function PDFFunction_constructPostScript(fn, dict, xref) { -- var domain = dict.getArray('Domain'); -- var range = dict.getArray('Range'); -+ var domain = toNumberArray(dict.getArray('Domain')); -+ var range = toNumberArray(dict.getArray('Range')); - if (!domain) { - error('No domain.'); - } - if (!range) { - error('No range.'); - } - var lexer = new PostScriptLexer(fn); - var parser = new PostScriptParser(lexer); -@@ -42928,18 +42937,18 @@ - case 'IndexedCS': - var baseIndexedCS = IR[1]; - var hiVal = IR[2]; - var lookup = IR[3]; - return new IndexedCS(ColorSpace.fromIR(baseIndexedCS), hiVal, lookup); - case 'AlternateCS': - var numComps = IR[1]; - var alt = IR[2]; -- var tintFnIR = IR[3]; -- return new AlternateCS(numComps, ColorSpace.fromIR(alt), PDFFunction.fromIR(tintFnIR)); -+ var tintFn = IR[3]; -+ return new AlternateCS(numComps, ColorSpace.fromIR(alt), tintFn); - case 'LabCS': - whitePoint = IR[1]; - blackPoint = IR[2]; - var range = IR[3]; - return new LabCS(whitePoint, blackPoint, range); - default: - error('Unknown name ' + name); - } -@@ -43067,22 +43076,22 @@ - var name = xref.fetchIfRef(cs[1]); - numComps = 1; - if (isName(name)) { - numComps = 1; - } else if (isArray(name)) { - numComps = name.length; - } - alt = ColorSpace.parseToIR(cs[2], xref, res); -- var tintFnIR = PDFFunction.getIR(xref, xref.fetchIfRef(cs[3])); -+ var tintFn = PDFFunction.parse(xref, xref.fetchIfRef(cs[3])); - return [ - 'AlternateCS', - numComps, - alt, -- tintFnIR -+ tintFn - ]; - case 'Lab': - params = xref.fetchIfRef(cs[1]); - whitePoint = params.getArray('WhitePoint'); - blackPoint = params.getArray('BlackPoint'); - var range = params.getArray('Range'); - return [ - 'LabCS', -@@ -52483,9 +52492,9 @@ - initializeWorker(); - } - exports.setPDFNetworkStreamClass = setPDFNetworkStreamClass; - exports.WorkerTask = WorkerTask; - exports.WorkerMessageHandler = WorkerMessageHandler; - })); - }.call(pdfjsLibs)); - exports.WorkerMessageHandler = pdfjsLibs.pdfjsCoreWorker.WorkerMessageHandler; --})); -\ No newline at end of file -+})); - diff --git a/gnu/packages/patches/icecat-bug-1413868-pt1.patch b/gnu/packages/patches/icecat-bug-1413868-pt1.patch deleted file mode 100644 index 18382dc33a..0000000000 --- a/gnu/packages/patches/icecat-bug-1413868-pt1.patch +++ /dev/null @@ -1,663 +0,0 @@ -Based on -Adapted to apply cleanly to GNU IceCat. - -# HG changeset patch -# User Honza Bambas -# Date 1528830658 14400 -# Node ID 431fa5dd4016bdab7e4bb0d3c4df85468fe337b0 -# Parent e8e9e1ef79f2a18c61ec1b87cfb214c8d4960f8e -Bug 1413868. r=valentin, a=RyanVM - -diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp ---- a/toolkit/xre/nsAppRunner.cpp -+++ b/toolkit/xre/nsAppRunner.cpp -@@ -4,16 +4,17 @@ - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - - #include "mozilla/dom/ContentParent.h" - #include "mozilla/dom/ContentChild.h" - #include "mozilla/ipc/GeckoChildProcessHost.h" - - #include "mozilla/ArrayUtils.h" - #include "mozilla/Attributes.h" -+#include "mozilla/FilePreferences.h" - #include "mozilla/ChaosMode.h" - #include "mozilla/IOInterposer.h" - #include "mozilla/Likely.h" - #include "mozilla/MemoryChecking.h" - #include "mozilla/Poison.h" - #include "mozilla/Preferences.h" - #include "mozilla/ScopeExit.h" - #include "mozilla/Services.h" -@@ -4304,16 +4305,20 @@ XREMain::XRE_mainRun() - // Need to write out the fact that the profile has been removed and potentially - // that the selected/default profile changed. - mProfileSvc->Flush(); - } - } - - mDirProvider.DoStartup(); - -+ // As FilePreferences need the profile directory, we must initialize right here. -+ mozilla::FilePreferences::InitDirectoriesWhitelist(); -+ mozilla::FilePreferences::InitPrefs(); -+ - OverrideDefaultLocaleIfNeeded(); - - #ifdef MOZ_CRASHREPORTER - nsCString userAgentLocale; - // Try a localized string first. This pref is always a localized string in - // IceCatMobile, and might be elsewhere, too. - if (NS_SUCCEEDED(Preferences::GetLocalizedCString("general.useragent.locale", &userAgentLocale))) { - CrashReporter::AnnotateCrashReport(NS_LITERAL_CSTRING("useragent_locale"), userAgentLocale); -diff --git a/toolkit/xre/nsEmbedFunctions.cpp b/toolkit/xre/nsEmbedFunctions.cpp ---- a/toolkit/xre/nsEmbedFunctions.cpp -+++ b/toolkit/xre/nsEmbedFunctions.cpp -@@ -46,16 +46,17 @@ - #include "nsX11ErrorHandler.h" - #include "nsGDKErrorHandler.h" - #include "base/at_exit.h" - #include "base/command_line.h" - #include "base/message_loop.h" - #include "base/process_util.h" - #include "chrome/common/child_process.h" - -+#include "mozilla/FilePreferences.h" - #include "mozilla/ipc/BrowserProcessSubThread.h" - #include "mozilla/ipc/GeckoChildProcessHost.h" - #include "mozilla/ipc/IOThreadChild.h" - #include "mozilla/ipc/ProcessChild.h" - #include "ScopedXREEmbed.h" - - #include "mozilla/plugins/PluginProcessChild.h" - #include "mozilla/dom/ContentProcess.h" -@@ -680,16 +681,18 @@ XRE_InitChildProcess(int aArgc, - ::SetProcessShutdownParameters(0x280 - 1, SHUTDOWN_NORETRY); - #endif - - #if defined(MOZ_SANDBOX) && defined(XP_WIN) - // We need to do this after the process has been initialised, as - // InitLoggingIfRequired may need access to prefs. - mozilla::sandboxing::InitLoggingIfRequired(aChildData->ProvideLogFunction); - #endif -+ mozilla::FilePreferences::InitDirectoriesWhitelist(); -+ mozilla::FilePreferences::InitPrefs(); - - OverrideDefaultLocaleIfNeeded(); - - #if defined(MOZ_CRASHREPORTER) - #if defined(MOZ_CONTENT_SANDBOX) && !defined(MOZ_WIDGET_GONK) - AddContentSandboxLevelAnnotation(); - #endif - #endif -diff --git a/xpcom/io/FilePreferences.cpp b/xpcom/io/FilePreferences.cpp -new file mode 100644 ---- /dev/null -+++ b/xpcom/io/FilePreferences.cpp -@@ -0,0 +1,271 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -+/* vim: set ts=8 sts=2 et sw=2 tw=80: */ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+* License, v. 2.0. If a copy of the MPL was not distributed with this -+* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#include "FilePreferences.h" -+ -+#include "mozilla/Preferences.h" -+#include "nsAppDirectoryServiceDefs.h" -+#include "nsDirectoryServiceDefs.h" -+#include "nsDirectoryServiceUtils.h" -+ -+namespace mozilla { -+namespace FilePreferences { -+ -+static bool sBlockUNCPaths = false; -+typedef nsTArray Paths; -+ -+static Paths& PathArray() -+{ -+ static Paths sPaths; -+ return sPaths; -+} -+ -+static void AllowDirectory(char const* directory) -+{ -+ nsCOMPtr file; -+ NS_GetSpecialDirectory(directory, getter_AddRefs(file)); -+ if (!file) { -+ return; -+ } -+ -+ nsString path; -+ if (NS_FAILED(file->GetTarget(path))) { -+ return; -+ } -+ -+ // The whitelist makes sense only for UNC paths, because this code is used -+ // to block only UNC paths, hence, no need to add non-UNC directories here -+ // as those would never pass the check. -+ if (!StringBeginsWith(path, NS_LITERAL_STRING("\\\\"))) { -+ return; -+ } -+ -+ if (!PathArray().Contains(path)) { -+ PathArray().AppendElement(path); -+ } -+} -+ -+void InitPrefs() -+{ -+ sBlockUNCPaths = Preferences::GetBool("network.file.disable_unc_paths", false); -+} -+ -+void InitDirectoriesWhitelist() -+{ -+ // NS_GRE_DIR is the installation path where the binary resides. -+ AllowDirectory(NS_GRE_DIR); -+ // NS_APP_USER_PROFILE_50_DIR and NS_APP_USER_PROFILE_LOCAL_50_DIR are the two -+ // parts of the profile we store permanent and local-specific data. -+ AllowDirectory(NS_APP_USER_PROFILE_50_DIR); -+ AllowDirectory(NS_APP_USER_PROFILE_LOCAL_50_DIR); -+} -+ -+namespace { // anon -+ -+class Normalizer -+{ -+public: -+ Normalizer(const nsAString& aFilePath, const char16_t aSeparator); -+ bool Get(nsAString& aNormalizedFilePath); -+ -+private: -+ bool ConsumeItem(); -+ bool ConsumeSeparator(); -+ bool IsEOF() { return mFilePathCursor == mFilePathEnd; } -+ -+ bool ConsumeName(); -+ bool CheckParentDir(); -+ bool CheckCurrentDir(); -+ -+ nsString::const_char_iterator mFilePathCursor; -+ nsString::const_char_iterator mFilePathEnd; -+ -+ nsDependentSubstring mItem; -+ char16_t const mSeparator; -+ nsTArray mStack; -+}; -+ -+Normalizer::Normalizer(const nsAString& aFilePath, const char16_t aSeparator) -+ : mFilePathCursor(aFilePath.BeginReading()) -+ , mFilePathEnd(aFilePath.EndReading()) -+ , mSeparator(aSeparator) -+{ -+} -+ -+bool Normalizer::ConsumeItem() -+{ -+ if (IsEOF()) { -+ return false; -+ } -+ -+ nsString::const_char_iterator nameBegin = mFilePathCursor; -+ while (mFilePathCursor != mFilePathEnd) { -+ if (*mFilePathCursor == mSeparator) { -+ break; // don't include the separator -+ } -+ ++mFilePathCursor; -+ } -+ -+ mItem.Rebind(nameBegin, mFilePathCursor); -+ return true; -+} -+ -+bool Normalizer::ConsumeSeparator() -+{ -+ if (IsEOF()) { -+ return false; -+ } -+ -+ if (*mFilePathCursor != mSeparator) { -+ return false; -+ } -+ -+ ++mFilePathCursor; -+ return true; -+} -+ -+bool Normalizer::Get(nsAString& aNormalizedFilePath) -+{ -+ aNormalizedFilePath.Truncate(); -+ -+ if (IsEOF()) { -+ return true; -+ } -+ if (ConsumeSeparator()) { -+ aNormalizedFilePath.Append(mSeparator); -+ } -+ -+ if (IsEOF()) { -+ return true; -+ } -+ if (ConsumeSeparator()) { -+ aNormalizedFilePath.Append(mSeparator); -+ } -+ -+ while (!IsEOF()) { -+ if (!ConsumeName()) { -+ return false; -+ } -+ } -+ -+ for (auto const& name : mStack) { -+ aNormalizedFilePath.Append(name); -+ } -+ -+ return true; -+} -+ -+bool Normalizer::ConsumeName() -+{ -+ if (!ConsumeItem()) { -+ return true; -+ } -+ -+ if (CheckCurrentDir()) { -+ return true; -+ } -+ -+ if (CheckParentDir()) { -+ if (!mStack.Length()) { -+ // This means there are more \.. than valid names -+ return false; -+ } -+ -+ mStack.RemoveElementAt(mStack.Length() - 1); -+ return true; -+ } -+ -+ if (mItem.IsEmpty()) { -+ // this means an empty name (a lone slash), which is illegal -+ return false; -+ } -+ -+ if (ConsumeSeparator()) { -+ mItem.Rebind(mItem.BeginReading(), mFilePathCursor); -+ } -+ mStack.AppendElement(mItem); -+ -+ return true; -+} -+ -+bool Normalizer::CheckCurrentDir() -+{ -+ if (mItem == NS_LITERAL_STRING(".")) { -+ ConsumeSeparator(); -+ // EOF is acceptable -+ return true; -+ } -+ -+ return false; -+} -+ -+bool Normalizer::CheckParentDir() -+{ -+ if (mItem == NS_LITERAL_STRING("..")) { -+ ConsumeSeparator(); -+ // EOF is acceptable -+ return true; -+ } -+ -+ return false; -+} -+ -+} // anon -+ -+bool IsBlockedUNCPath(const nsAString& aFilePath) -+{ -+ if (!sBlockUNCPaths) { -+ return false; -+ } -+ -+ if (!StringBeginsWith(aFilePath, NS_LITERAL_STRING("\\\\"))) { -+ return false; -+ } -+ -+ nsAutoString normalized; -+ if (!Normalizer(aFilePath, L'\\').Get(normalized)) { -+ // Broken paths are considered invalid and thus inaccessible -+ return true; -+ } -+ -+ for (const auto& allowedPrefix : PathArray()) { -+ if (StringBeginsWith(normalized, allowedPrefix)) { -+ if (normalized.Length() == allowedPrefix.Length()) { -+ return false; -+ } -+ if (normalized[allowedPrefix.Length()] == L'\\') { -+ return false; -+ } -+ -+ // When we are here, the path has a form "\\path\prefixevil" -+ // while we have an allowed prefix of "\\path\prefix". -+ // Note that we don't want to add a slash to the end of a prefix -+ // so that opening the directory (no slash at the end) still works. -+ break; -+ } -+ } -+ -+ return true; -+} -+ -+void testing::SetBlockUNCPaths(bool aBlock) -+{ -+ sBlockUNCPaths = aBlock; -+} -+ -+void testing::AddDirectoryToWhitelist(nsAString const & aPath) -+{ -+ PathArray().AppendElement(aPath); -+} -+ -+bool testing::NormalizePath(nsAString const & aPath, nsAString & aNormalized) -+{ -+ Normalizer normalizer(aPath, L'\\'); -+ return normalizer.Get(aNormalized); -+} -+ -+} // ::FilePreferences -+} // ::mozilla -diff --git a/xpcom/io/FilePreferences.h b/xpcom/io/FilePreferences.h -new file mode 100644 ---- /dev/null -+++ b/xpcom/io/FilePreferences.h -@@ -0,0 +1,25 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -+/* vim: set ts=8 sts=2 et sw=2 tw=80: */ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+* License, v. 2.0. If a copy of the MPL was not distributed with this -+* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#include "nsIObserver.h" -+ -+namespace mozilla { -+namespace FilePreferences { -+ -+void InitPrefs(); -+void InitDirectoriesWhitelist(); -+bool IsBlockedUNCPath(const nsAString& aFilePath); -+ -+namespace testing { -+ -+void SetBlockUNCPaths(bool aBlock); -+void AddDirectoryToWhitelist(nsAString const& aPath); -+bool NormalizePath(nsAString const & aPath, nsAString & aNormalized); -+ -+} -+ -+} // FilePreferences -+} // mozilla -diff --git a/xpcom/io/moz.build b/xpcom/io/moz.build ---- a/xpcom/io/moz.build -+++ b/xpcom/io/moz.build -@@ -79,24 +79,26 @@ EXPORTS += [ - 'nsUnicharInputStream.h', - 'nsWildCard.h', - 'SlicedInputStream.h', - 'SpecialSystemDirectory.h', - ] - - EXPORTS.mozilla += [ - 'Base64.h', -+ 'FilePreferences.h', - 'SnappyCompressOutputStream.h', - 'SnappyFrameUtils.h', - 'SnappyUncompressInputStream.h', - ] - - UNIFIED_SOURCES += [ - 'Base64.cpp', - 'crc32c.c', -+ 'FilePreferences.cpp', - 'nsAnonymousTemporaryFile.cpp', - 'nsAppFileLocationProvider.cpp', - 'nsBinaryStream.cpp', - 'nsDirectoryService.cpp', - 'nsEscape.cpp', - 'nsInputStreamTee.cpp', - 'nsIOUtil.cpp', - 'nsLinebreakConverter.cpp', -diff --git a/xpcom/io/nsLocalFileWin.cpp b/xpcom/io/nsLocalFileWin.cpp ---- a/xpcom/io/nsLocalFileWin.cpp -+++ b/xpcom/io/nsLocalFileWin.cpp -@@ -41,16 +41,17 @@ - #include - #include - #include - - #include "nsXPIDLString.h" - #include "prproces.h" - #include "prlink.h" - -+#include "mozilla/FilePreferences.h" - #include "mozilla/Mutex.h" - #include "SpecialSystemDirectory.h" - - #include "nsTraceRefcnt.h" - #include "nsXPCOMCIDInternal.h" - #include "nsThreadUtils.h" - #include "nsXULAppAPI.h" - -@@ -1162,16 +1163,20 @@ nsLocalFile::InitWithPath(const nsAStrin - char16_t secondChar = *(++begin); - - // just do a sanity check. if it has any forward slashes, it is not a Native path - // on windows. Also, it must have a colon at after the first char. - if (FindCharInReadable(L'/', begin, end)) { - return NS_ERROR_FILE_UNRECOGNIZED_PATH; - } - -+ if (FilePreferences::IsBlockedUNCPath(aFilePath)) { -+ return NS_ERROR_FILE_ACCESS_DENIED; -+ } -+ - if (secondChar != L':' && (secondChar != L'\\' || firstChar != L'\\')) { - return NS_ERROR_FILE_UNRECOGNIZED_PATH; - } - - if (secondChar == L':') { - // Make sure we have a valid drive, later code assumes the drive letter - // is a single char a-z or A-Z. - if (PathGetDriveNumberW(aFilePath.Data()) == -1) { -@@ -1974,16 +1979,20 @@ nsLocalFile::CopySingleFile(nsIFile* aSo - bool path1Remote, path2Remote; - if (!IsRemoteFilePath(filePath.get(), path1Remote) || - !IsRemoteFilePath(destPath.get(), path2Remote) || - path1Remote || path2Remote) { - dwCopyFlags |= COPY_FILE_NO_BUFFERING; - } - } - -+ if (FilePreferences::IsBlockedUNCPath(destPath)) { -+ return NS_ERROR_FILE_ACCESS_DENIED; -+ } -+ - if (!move) { - copyOK = ::CopyFileExW(filePath.get(), destPath.get(), nullptr, - nullptr, nullptr, dwCopyFlags); - } else { - copyOK = ::MoveFileExW(filePath.get(), destPath.get(), - MOVEFILE_REPLACE_EXISTING); - - // Check if copying the source file to a different volume, -diff --git a/xpcom/tests/gtest/TestFilePreferencesWin.cpp b/xpcom/tests/gtest/TestFilePreferencesWin.cpp -new file mode 100644 ---- /dev/null -+++ b/xpcom/tests/gtest/TestFilePreferencesWin.cpp -@@ -0,0 +1,141 @@ -+#include "gtest/gtest.h" -+ -+#include "mozilla/FilePreferences.h" -+#include "nsIFile.h" -+#include "nsXPCOMCID.h" -+ -+TEST(FilePreferencesWin, Normalization) -+{ -+ nsAutoString normalized; -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("foo"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("foo")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\foo"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\foo")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\foo")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("foo\\some"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("foo\\some")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\.\\foo"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\foo")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\."), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\.\\"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\.\\."), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo\\bar"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\foo\\bar")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo\\bar\\"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\foo\\bar\\")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo\\bar\\."), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\foo\\bar\\")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo\\bar\\.\\"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\foo\\bar\\")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo\\bar\\..\\"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\foo\\")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo\\bar\\.."), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\foo\\")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo\\..\\bar\\..\\"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo\\..\\bar"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\bar")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo\\bar\\..\\..\\"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\")); -+ -+ mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo\\bar\\.\\..\\.\\..\\"), normalized); -+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\")); -+ -+ bool result; -+ -+ result = mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\.."), normalized); -+ ASSERT_FALSE(result); -+ -+ result = mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\..\\"), normalized); -+ ASSERT_FALSE(result); -+ -+ result = mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\.\\..\\"), normalized); -+ ASSERT_FALSE(result); -+ -+ result = mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo\\\\bar"), normalized); -+ ASSERT_FALSE(result); -+ -+ result = mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\foo\\bar\\..\\..\\..\\..\\"), normalized); -+ ASSERT_FALSE(result); -+ -+ result = mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\\\"), normalized); -+ ASSERT_FALSE(result); -+ -+ result = mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\.\\\\"), normalized); -+ ASSERT_FALSE(result); -+ -+ result = mozilla::FilePreferences::testing::NormalizePath( -+ NS_LITERAL_STRING("\\\\..\\\\"), normalized); -+ ASSERT_FALSE(result); -+} -+ -+TEST(FilePreferencesWin, AccessUNC) -+{ -+ nsCOMPtr lf = do_CreateInstance(NS_LOCAL_FILE_CONTRACTID); -+ -+ nsresult rv; -+ -+ mozilla::FilePreferences::testing::SetBlockUNCPaths(false); -+ -+ rv = lf->InitWithPath(NS_LITERAL_STRING("\\\\nice\\..\\evil\\share")); -+ ASSERT_EQ(rv, NS_OK); -+ -+ mozilla::FilePreferences::testing::SetBlockUNCPaths(true); -+ -+ rv = lf->InitWithPath(NS_LITERAL_STRING("\\\\nice\\..\\evil\\share")); -+ ASSERT_EQ(rv, NS_ERROR_FILE_ACCESS_DENIED); -+ -+ mozilla::FilePreferences::testing::AddDirectoryToWhitelist(NS_LITERAL_STRING("\\\\nice")); -+ -+ rv = lf->InitWithPath(NS_LITERAL_STRING("\\\\nice\\share")); -+ ASSERT_EQ(rv, NS_OK); -+ -+ rv = lf->InitWithPath(NS_LITERAL_STRING("\\\\nice\\..\\evil\\share")); -+ ASSERT_EQ(rv, NS_ERROR_FILE_ACCESS_DENIED); -+} -diff --git a/xpcom/tests/gtest/moz.build b/xpcom/tests/gtest/moz.build ---- a/xpcom/tests/gtest/moz.build -+++ b/xpcom/tests/gtest/moz.build -@@ -51,16 +51,21 @@ UNIFIED_SOURCES += [ - if CONFIG['MOZ_DEBUG'] and CONFIG['OS_ARCH'] not in ('WINNT') and CONFIG['OS_TARGET'] != 'Android': - # FIXME bug 523392: TestDeadlockDetector doesn't like Windows - # Bug 1054249: Doesn't work on Android - UNIFIED_SOURCES += [ - 'TestDeadlockDetector.cpp', - 'TestDeadlockDetectorScalability.cpp', - ] - -+if CONFIG['OS_TARGET'] == 'WINNT': -+ UNIFIED_SOURCES += [ -+ 'TestFilePreferencesWin.cpp', -+ ] -+ - if CONFIG['WRAP_STL_INCLUDES'] and not CONFIG['CLANG_CL']: - UNIFIED_SOURCES += [ - 'TestSTLWrappers.cpp', - ] - - # Compile TestAllocReplacement separately so Windows headers don't pollute - # the global namespace for other files. - SOURCES += [ - From 2aa137e261984b9762de5221459835eefb165fe7 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 21 Sep 2018 13:29:38 +0200 Subject: [PATCH 028/909] gnu: crossguid: Use INVOKE. * gnu/packages/kodi.scm (crossguid)[arguments]: Substitute INVOKE for SYSTEM*. --- gnu/packages/kodi.scm | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm index 62a971a0a8..2df5735dd0 100644 --- a/gnu/packages/kodi.scm +++ b/gnu/packages/kodi.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2015 David Thompson ;;; Copyright © 2017 Marius Bakke ;;; Copyright © 2017 Oleg Pykhalov +;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. ;;; @@ -92,22 +93,22 @@ (arguments '(#:phases (modify-phases %standard-phases - (delete 'configure) ; no configure script + (delete 'configure) ; no configure script ;; There's no build system here, so we have to do it ourselves. (replace 'build (lambda _ - (and (zero? (system* "g++" "-c" "guid.cpp" "-o" "guid.o" - "-std=c++11" "-DGUID_LIBUUID")) - (zero? (system* "ar" "rvs" "libcrossguid.a" "guid.o"))))) + (invoke "g++" "-c" "guid.cpp" "-o" "guid.o" + "-std=c++11" "-DGUID_LIBUUID") + (invoke "ar" "rvs" "libcrossguid.a" "guid.o"))) (replace 'check (lambda _ - (and (zero? (system* "g++" "-c" "test.cpp" "-o" "test.o" - "-std=c++11")) - (zero? (system* "g++" "-c" "testmain.cpp" "-o" "testmain.o" - "-std=c++11")) - (zero? (system* "g++" "test.o" "guid.o" "testmain.o" - "-o" "test" "-luuid")) - (zero? (system* (string-append (getcwd) "/test")))))) + (invoke "g++" "-c" "test.cpp" "-o" "test.o" + "-std=c++11") + (invoke "g++" "-c" "testmain.cpp" "-o" "testmain.o" + "-std=c++11") + (invoke "g++" "test.o" "guid.o" "testmain.o" + "-o" "test" "-luuid") + (invoke (string-append (getcwd) "/test")))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) From 93ab9a5d76b8b84afd6823e2cdd1f62c9e6284f2 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 21 Sep 2018 13:29:54 +0200 Subject: [PATCH 029/909] gnu: kodi: Use INVOKE. * gnu/packages/kodi.scm (kodi)[arguments]: Substitute INVOKE for SYSTEM*. --- gnu/packages/kodi.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm index 2df5735dd0..86ce914d53 100644 --- a/gnu/packages/kodi.scm +++ b/gnu/packages/kodi.scm @@ -295,7 +295,7 @@ generator library for C++.") "lib/cpluff"))) (every (lambda (third-party) (with-directory-excursion third-party - (zero? (system* "autoreconf" "-vif")))) + (invoke "autoreconf" "-vif"))) dirs)))) (add-after 'bootstrap-bundled-software 'patch-stuff (lambda* (#:key inputs #:allow-other-keys) @@ -336,7 +336,7 @@ generator library for C++.") #t)) (add-before 'check 'build-kodi-test (lambda _ - (zero? (system* "make" "kodi-test"))))))) + (invoke "make" "kodi-test")))))) ;; TODO: Add dependencies for: ;; - nfs ;; - cec From eacb5dc4871aadac965024aeab06f48362abba47 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 21 Sep 2018 13:54:32 +0200 Subject: [PATCH 030/909] gnu: emacs-mu4e-conversation: Fix typo in description. * gnu/packages/emacs.scm (emacs-mu4e-conversation)[description]: Fix 'correspondant' typo. --- gnu/packages/emacs.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index fc019cf241..977f0c99b8 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -11705,8 +11705,8 @@ file.") (synopsis "Show a complete thread in a single buffer") (description - "This package offers an alternate view to mu4e e-mail display. It -shows all e-mails of a thread in a single view, where each correspondant has + "This package offers an alternate view to mu4e's e-mail display. It +shows all e-mails of a thread in a single view, where each correspondent has their own face. Threads can be displayed linearly (in which case e-mails are displayed in chronological order) or as an Org document where the node tree maps the thread tree.") From 41e551b2d3ea24ffd96023d1b6c3648de3aac90d Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 21 Sep 2018 14:00:53 +0200 Subject: [PATCH 031/909] gnu: python-pyparsing: Update home page. * gnu/packages/python.scm (python-pyparsing)[home-page]: Update. --- gnu/packages/python.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 64ee4e028e..a11c7e315e 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -3382,7 +3382,7 @@ library, libgit2 implements Git plumbing.") (list "docs" "htmldoc" "examples") (list doc html-doc examples)) #t)))))) - (home-page "http://pyparsing.wikispaces.com") + (home-page "https://github.com/pyparsing/pyparsing") (synopsis "Python parsing class library") (description "The pyparsing module is an alternative approach to creating and From 118a084531a546ccad0762b5ac7d564619183d6b Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 21 Sep 2018 14:55:20 +0200 Subject: [PATCH 032/909] gnu: libfilezilla: Update to 0.13.2. * gnu/packages/ftp.scm (libfilezilla): Update to 0.13.2. [source]: Use HTTPS. --- gnu/packages/ftp.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/ftp.scm b/gnu/packages/ftp.scm index d3f3ef711c..335c975d12 100644 --- a/gnu/packages/ftp.scm +++ b/gnu/packages/ftp.scm @@ -170,15 +170,15 @@ as required.") (define-public libfilezilla (package (name "libfilezilla") - (version "0.13.1") + (version "0.13.2") (source (origin (method url-fetch) - (uri (string-append "http://download.filezilla-project.org/" + (uri (string-append "https://download.filezilla-project.org/" name "/" name "-" version ".tar.bz2")) (sha256 (base32 - "0347zkapp0wrhfm1yzw7wa1v3lww65ch176scifxn8f9068f1ixb")))) + "0z9cqscca4w94j9npgcknrrw8gfwn5ids903042fczlr977j0i19")))) (build-system gnu-build-system) (native-inputs `(("cppunit" ,cppunit) From 10e066f410d1ffb9505f4fd0b5cc73e8af2154b0 Mon Sep 17 00:00:00 2001 From: Danny Milosavljevic Date: Fri, 21 Sep 2018 15:21:24 +0200 Subject: [PATCH 033/909] gnu: rust: Remove unused "localstatedir" setting. * gnu/packages/rust.scm (rust-1.20)[arguments]<#:phases>[configure]: Remove unused "localstatedir" setting. --- gnu/packages/rust.scm | 1 - 1 file changed, 1 deletion(-) diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index e8eca80aa6..40633854ae 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -562,7 +562,6 @@ submodules = false prefix = \"" out "\" docdir = \"" doc "/share/doc/rust" "\" sysconfdir = \"etc\" -localstatedir = \"var/lib\" [rust] default-linker = \"" gcc "/bin/gcc" "\" channel = \"stable\" From b0d1e60fff023e405c92c45b3c78538c3cbb7e6b Mon Sep 17 00:00:00 2001 From: Paul Garlick Date: Thu, 20 Sep 2018 18:59:56 +0100 Subject: [PATCH 034/909] gnu: hdf5: Allow for absence of utility script. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/maths.scm (hdf5)[arguments]: Add condition to 'split' phase to check for existence of h5fc script. Signed-off-by: Ludovic Courtès --- gnu/packages/maths.scm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 736bac163e..30f1610c1d 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -814,8 +814,11 @@ incompatible with HDF5.") (mkdir-p flib) (mkdir-p finc) (mkdir-p fex) - (rename-file (string-append bin "/h5fc") - (string-append fbin "/h5fc")) + ;; Note: When built with --enable-parallel, the 'h5fc' file + ;; doesn't exist, hence this condition. + (when (file-exists? (string-append bin "/h5fc")) + (rename-file (string-append bin "/h5fc") + (string-append fbin "/h5fc"))) (for-each (lambda (file) (rename-file file (string-append flib "/" (basename file)))) From 45201bf245856954cb8368c328e54773a0a81156 Mon Sep 17 00:00:00 2001 From: Paul Garlick Date: Thu, 20 Sep 2018 18:59:57 +0100 Subject: [PATCH 035/909] gnu: hdf5-parallel-openmpi: Really enable parallel build. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fix ensures that the H5_HAVE_PARALLEL identifier is correctly set in the file H5pubconf.h. * gnu/packages/maths.scm (hdf5-parallel-openmpi)[arguments]: Add the "--enable-parallel" flag to the list of configure flags. Remove the incompatible "--enable-cxx" flag. Add 'mpi-setup' phase. Signed-off-by: Ludovic Courtès --- gnu/packages/maths.scm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 30f1610c1d..636b485260 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -1037,10 +1037,13 @@ Swath).") `(("mpi" ,openmpi) ,@(package-inputs hdf5))) (arguments - (substitute-keyword-arguments `(#:configure-flags '("--enable-parallel") - ,@(package-arguments hdf5)) + (substitute-keyword-arguments (package-arguments hdf5) + ((#:configure-flags flags) + ``("--enable-parallel" ,@(delete "--enable-cxx" ,flags))) ((#:phases phases) `(modify-phases ,phases + (add-after 'build 'mpi-setup + ,%openmpi-setup) (add-before 'check 'patch-tests (lambda _ ;; OpenMPI's mpirun will exit with non-zero status if it From 7e27393f82ff5e7237f870ded09652b89e457faa Mon Sep 17 00:00:00 2001 From: pimi Date: Tue, 11 Sep 2018 16:54:32 +0200 Subject: [PATCH 036/909] gnu: Add r-pore. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/bioinformatics.scm (r-pore): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/bioinformatics.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 10330cd8b2..9599e3096f 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -13736,3 +13736,32 @@ juicer) and single-resolution or multi-resolution @code{.cool} files (for cooler). Both @code{hic} and @code{cool} files describe Hi-C contact matrices.") (license license:expat))) + +(define-public r-pore + (package + (name "r-pore") + (version "0.24") + (source + (origin + (method url-fetch) + (uri + (string-append "mirror://sourceforge/rpore/" version + "/poRe_" version ".tar.gz")) + (sha256 + (base32 "0pih9nljbv8g4x8rkk29i7aqq681b782r5s5ynp4nw9yzqnmmksv")))) + (properties `((upstream-name . "poRe"))) + (build-system r-build-system) + (propagated-inputs + `(("r-bit64" ,r-bit64) + ("r-data-table" ,r-data-table) + ("r-rhdf5" ,r-rhdf5) + ("r-shiny" ,r-shiny) + ("r-svdialogs" ,r-svdialogs))) + (home-page "https://sourceforge.net/projects/rpore/") + (synopsis "Visualize Nanopore sequencing data") + (description + "This package provides graphical user interfaces to organize and visualize Nanopore +sequencing data.") + ;; This is free software but the license variant is unclear: + ;; . + (license license:bsd-3))) From 9daf046c5dd9256e45073dfd4647e12de10dcb3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 14 Sep 2018 17:30:06 +0200 Subject: [PATCH 037/909] inferior: Add 'inferior-package-derivation'. * guix/inferior.scm (read-inferior-response) (send-inferior-request): New procedures. (inferior-eval): Rewrite in terms of these. (proxy, inferior-package-derivation, inferior-package->derivation) (package-compiler): New procedures. * tests/inferior.scm ("inferior-package-derivation"): New test. --- guix/inferior.scm | 125 ++++++++++++++++++++++++++++++++++++++++++--- tests/inferior.scm | 22 ++++++++ 2 files changed, 141 insertions(+), 6 deletions(-) diff --git a/guix/inferior.scm b/guix/inferior.scm index af37233a03..5bef964887 100644 --- a/guix/inferior.scm +++ b/guix/inferior.scm @@ -19,9 +19,21 @@ (define-module (guix inferior) #:use-module (srfi srfi-9) #:use-module (srfi srfi-9 gnu) - #:use-module ((guix utils) #:select (source-properties->location)) + #:use-module ((guix utils) + #:select (%current-system + source-properties->location + call-with-temporary-directory)) + #:use-module ((guix store) + #:select (nix-server-socket + nix-server-major-version + nix-server-minor-version + store-lift)) + #:use-module ((guix derivations) + #:select (read-derivation-from-file)) + #:use-module (guix gexp) #:use-module (ice-9 match) #:use-module (ice-9 popen) + #:use-module (ice-9 binary-ports) #:export (inferior? open-inferior close-inferior @@ -36,7 +48,8 @@ inferior-package-synopsis inferior-package-description inferior-package-home-page - inferior-package-location)) + inferior-package-location + inferior-package-derivation)) ;;; Commentary: ;;; @@ -123,8 +136,7 @@ equivalent. Return #f if the inferior could not be launched." (set-record-type-printer! write-inferior-object) -(define (inferior-eval exp inferior) - "Evaluate EXP in INFERIOR." +(define (read-inferior-response inferior) (define sexp->object (match-lambda (('value value) @@ -132,14 +144,21 @@ equivalent. Return #f if the inferior could not be launched." (('non-self-quoting address string) (inferior-object address string)))) - (write exp (inferior-socket inferior)) - (newline (inferior-socket inferior)) (match (read (inferior-socket inferior)) (('values objects ...) (apply values (map sexp->object objects))) (('exception key objects ...) (apply throw key (map sexp->object objects))))) +(define (send-inferior-request exp inferior) + (write exp (inferior-socket inferior)) + (newline (inferior-socket inferior))) + +(define (inferior-eval exp inferior) + "Evaluate EXP in INFERIOR." + (send-inferior-request exp inferior) + (read-inferior-response inferior)) + ;;; ;;; Inferior packages. @@ -216,3 +235,97 @@ record." (location->source-properties loc))) package-location)))) + +(define (proxy client backend) ;adapted from (guix ssh) + "Proxy communication between CLIENT and BACKEND until CLIENT closes the +connection, at which point CLIENT is closed (both CLIENT and BACKEND must be +input/output ports.)" + (define (select* read write except) + ;; This is a workaround for in Guile < 2.2.4: + ;; since 'select' sometimes returns non-empty sets for no good reason, + ;; call 'select' a second time with a zero timeout to filter out incorrect + ;; replies. + (match (select read write except) + ((read write except) + (select read write except 0)))) + + ;; Use buffered ports so that 'get-bytevector-some' returns up to the + ;; whole buffer like read(2) would--see . + (setvbuf client _IOFBF 65536) + (setvbuf backend _IOFBF 65536) + + (let loop () + (match (select* (list client backend) '() '()) + ((reads () ()) + (when (memq client reads) + (match (get-bytevector-some client) + ((? eof-object?) + (close-port client)) + (bv + (put-bytevector backend bv) + (force-output backend)))) + (when (memq backend reads) + (match (get-bytevector-some backend) + (bv + (put-bytevector client bv) + (force-output client)))) + (unless (port-closed? client) + (loop)))))) + +(define* (inferior-package-derivation store package + #:optional + (system (%current-system)) + #:key target) + "Return the derivation for PACKAGE, an inferior package, built for SYSTEM +and cross-built for TARGET if TARGET is true. The inferior corresponding to +PACKAGE must be live." + ;; Create a named socket in /tmp and let the inferior of PACKAGE connect to + ;; it and use it as its store. This ensures the inferior uses the same + ;; store, with the same options, the same per-session GC roots, etc. + (call-with-temporary-directory + (lambda (directory) + (chmod directory #o700) + (let* ((name (string-append directory "/inferior")) + (socket (socket AF_UNIX SOCK_STREAM 0)) + (inferior (inferior-package-inferior package)) + (major (nix-server-major-version store)) + (minor (nix-server-minor-version store)) + (proto (logior major minor))) + (bind socket AF_UNIX name) + (listen socket 1024) + (send-inferior-request + `(let ((socket (socket AF_UNIX SOCK_STREAM 0))) + (connect socket AF_UNIX ,name) + + ;; 'port->connection' appeared in June 2018 and we can hardly + ;; emulate it on older versions. Thus fall back to + ;; 'open-connection', at the risk of talking to the wrong daemon or + ;; having our build result reclaimed (XXX). + (let* ((store (if (defined? 'port->connection) + (port->connection socket #:version ,proto) + (open-connection))) + (package (hashv-ref %package-table + ,(inferior-package-id package))) + (drv ,(if target + `(package-cross-derivation store package + ,target + ,system) + `(package-derivation store package + ,system)))) + (close-connection store) + (close-port socket) + (derivation-file-name drv))) + inferior) + (match (accept socket) + ((client . address) + (proxy client (nix-server-socket store)))) + (close-port socket) + (read-derivation-from-file (read-inferior-response inferior)))))) + +(define inferior-package->derivation + (store-lift inferior-package-derivation)) + +(define-gexp-compiler (package-compiler (package ) system + target) + ;; Compile PACKAGE for SYSTEM, optionally cross-building for TARGET. + (inferior-package->derivation package system #:target target)) diff --git a/tests/inferior.scm b/tests/inferior.scm index ff5cad4210..817fcb6c6b 100644 --- a/tests/inferior.scm +++ b/tests/inferior.scm @@ -17,9 +17,13 @@ ;;; along with GNU Guix. If not, see . (define-module (test-inferior) + #:use-module (guix tests) #:use-module (guix inferior) #:use-module (guix packages) + #:use-module (guix store) + #:use-module (guix derivations) #:use-module (gnu packages) + #:use-module (gnu packages bootstrap) #:use-module (srfi srfi-1) #:use-module (srfi srfi-64)) @@ -29,6 +33,9 @@ (define %top-builddir (dirname (search-path %load-compiled-path "guix.go"))) +(define %store + (open-connection-for-tests)) + (test-begin "inferior") @@ -72,4 +79,19 @@ (close-inferior inferior) result)))) +(test-equal "inferior-package-derivation" + (map derivation-file-name + (list (package-derivation %store %bootstrap-guile "x86_64-linux") + (package-derivation %store %bootstrap-guile "armhf-linux"))) + (let* ((inferior (open-inferior %top-builddir + #:command "scripts/guix")) + (packages (inferior-packages inferior)) + (guile (find (lambda (package) + (string=? (package-name %bootstrap-guile) + (inferior-package-name package))) + packages))) + (map derivation-file-name + (list (inferior-package-derivation %store guile "x86_64-linux") + (inferior-package-derivation %store guile "armhf-linux"))))) + (test-end "inferior") From e1a4ffdab52f616f41de4ff783a712bcd50a5187 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sat, 15 Sep 2018 14:50:14 +0200 Subject: [PATCH 038/909] inferior: Add 'lookup-inferior-packages'. * guix/inferior.scm ()[packages, table]: New fields. (open-inferior): Initialize these new fields. (inferior-packages): Rename to... (%inferior-packages): ... this. (inferior-packages): New procedure; force the promise. (%inferior-package-table, lookup-inferior-packages): New procedures. * tests/inferior.scm ("lookup-inferior-packages") ("lookup-inferior-packages and eq?-ness"): New tests. --- guix/inferior.scm | 47 ++++++++++++++++++++++++++++++++++++++++------ tests/inferior.scm | 29 ++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 6 deletions(-) diff --git a/guix/inferior.scm b/guix/inferior.scm index 5bef964887..81b71d0c77 100644 --- a/guix/inferior.scm +++ b/guix/inferior.scm @@ -22,7 +22,8 @@ #:use-module ((guix utils) #:select (%current-system source-properties->location - call-with-temporary-directory)) + call-with-temporary-directory + version>? version-prefix?)) #:use-module ((guix store) #:select (nix-server-socket nix-server-major-version @@ -31,8 +32,10 @@ #:use-module ((guix derivations) #:select (read-derivation-from-file)) #:use-module (guix gexp) + #:use-module (srfi srfi-1) #:use-module (ice-9 match) #:use-module (ice-9 popen) + #:use-module (ice-9 vlist) #:use-module (ice-9 binary-ports) #:export (inferior? open-inferior @@ -45,6 +48,7 @@ inferior-package-version inferior-packages + lookup-inferior-packages inferior-package-synopsis inferior-package-description inferior-package-home-page @@ -61,11 +65,13 @@ ;; Inferior Guix process. (define-record-type - (inferior pid socket version) + (inferior pid socket version packages table) inferior? (pid inferior-pid) (socket inferior-socket) - (version inferior-version)) ;REPL protocol version + (version inferior-version) ;REPL protocol version + (packages inferior-package-promise) ;promise of inferior packages + (table inferior-package-table)) ;promise of vhash (define (inferior-pipe directory command) "Return an input/output pipe on the Guix instance in DIRECTORY. This runs @@ -109,7 +115,9 @@ equivalent. Return #f if the inferior could not be launched." (match (read pipe) (('repl-version 0 rest ...) - (let ((result (inferior 'pipe pipe (cons 0 rest)))) + (letrec ((result (inferior 'pipe pipe (cons 0 rest) + (delay (%inferior-packages result)) + (delay (%inferior-package-table result))))) (inferior-eval '(use-modules (guix)) result) (inferior-eval '(use-modules (gnu)) result) (inferior-eval '(define %package-table (make-hash-table)) @@ -181,8 +189,8 @@ equivalent. Return #f if the inferior could not be launched." (set-record-type-printer! write-inferior-package) -(define (inferior-packages inferior) - "Return the list of packages known to INFERIOR." +(define (%inferior-packages inferior) + "Compute the list of inferior packages from INFERIOR." (let ((result (inferior-eval '(fold-packages (lambda (package result) (let ((id (object-address package))) @@ -198,6 +206,33 @@ equivalent. Return #f if the inferior could not be launched." (inferior-package inferior name version id))) result))) +(define (inferior-packages inferior) + "Return the list of packages known to INFERIOR." + (force (inferior-package-promise inferior))) + +(define (%inferior-package-table inferior) + "Compute a package lookup table for INFERIOR." + (fold (lambda (package table) + (vhash-cons (inferior-package-name package) package + table)) + vlist-null + (inferior-packages inferior))) + +(define* (lookup-inferior-packages inferior name #:optional version) + "Return the sorted list of inferior packages matching NAME in INFERIOR, with +highest version numbers first. If VERSION is true, return only packages with +a version number prefixed by VERSION." + ;; This is the counterpart of 'find-packages-by-name'. + (sort (filter (lambda (package) + (or (not version) + (version-prefix? version + (inferior-package-version package)))) + (vhash-fold* cons '() name + (force (inferior-package-table inferior)))) + (lambda (p1 p2) + (version>? (inferior-package-version p1) + (inferior-package-version p2))))) + (define (inferior-package-field package getter) "Return the field of PACKAGE, an inferior package, accessed with GETTER." (let ((inferior (inferior-package-inferior package)) diff --git a/tests/inferior.scm b/tests/inferior.scm index 817fcb6c6b..791e30b179 100644 --- a/tests/inferior.scm +++ b/tests/inferior.scm @@ -79,6 +79,35 @@ (close-inferior inferior) result)))) +(test-equal "lookup-inferior-packages" + (let ((->list (lambda (package) + (list (package-name package) + (package-version package) + (package-location package))))) + (list (map ->list (find-packages-by-name "guile" #f)) + (map ->list (find-packages-by-name "guile" "2.2")))) + (let* ((inferior (open-inferior %top-builddir + #:command "scripts/guix")) + (->list (lambda (package) + (list (inferior-package-name package) + (inferior-package-version package) + (inferior-package-location package)))) + (lst1 (map ->list + (lookup-inferior-packages inferior "guile"))) + (lst2 (map ->list + (lookup-inferior-packages inferior + "guile" "2.2")))) + (close-inferior inferior) + (list lst1 lst2))) + +(test-assert "lookup-inferior-packages and eq?-ness" + (let* ((inferior (open-inferior %top-builddir + #:command "scripts/guix")) + (lst1 (lookup-inferior-packages inferior "guile")) + (lst2 (lookup-inferior-packages inferior "guile"))) + (close-inferior inferior) + (every eq? lst1 lst2))) + (test-equal "inferior-package-derivation" (map derivation-file-name (list (package-derivation %store %bootstrap-guile "x86_64-linux") From 6030396aec325b3c3287a472014bc2d530abb99d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 17 Sep 2018 09:55:31 +0200 Subject: [PATCH 039/909] inferior: Add 'inferior-package-inputs' & co. * guix/inferior.scm (open-inferior): Use (ice-9 match). (inferior-package-input-field, inferior-package-inputs): (inferior-package-native-inputs) (inferior-package-propagated-inputs) (inferior-package-transitive-propagated-inputs): New procedures. * tests/inferior.scm ("inferior-package-inputs"): New test. inputs fixlet --- guix/inferior.scm | 51 ++++++++++++++++++++++++++++++++++++++++++++++ tests/inferior.scm | 34 ++++++++++++++++++++++++++++++- 2 files changed, 84 insertions(+), 1 deletion(-) diff --git a/guix/inferior.scm b/guix/inferior.scm index 81b71d0c77..ca819c6eff 100644 --- a/guix/inferior.scm +++ b/guix/inferior.scm @@ -33,6 +33,7 @@ #:select (read-derivation-from-file)) #:use-module (guix gexp) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) #:use-module (ice-9 match) #:use-module (ice-9 popen) #:use-module (ice-9 vlist) @@ -53,6 +54,10 @@ inferior-package-description inferior-package-home-page inferior-package-location + inferior-package-inputs + inferior-package-native-inputs + inferior-package-propagated-inputs + inferior-package-transitive-propagated-inputs inferior-package-derivation)) ;;; Commentary: @@ -120,6 +125,7 @@ equivalent. Return #f if the inferior could not be launched." (delay (%inferior-package-table result))))) (inferior-eval '(use-modules (guix)) result) (inferior-eval '(use-modules (gnu)) result) + (inferior-eval '(use-modules (ice-9 match)) result) (inferior-eval '(define %package-table (make-hash-table)) result) result)) @@ -271,6 +277,51 @@ record." loc))) package-location)))) +(define (inferior-package-input-field package field) + "Return the input field FIELD (e.g., 'native-inputs') of PACKAGE, an +inferior package." + (define field* + `(compose (lambda (inputs) + (map (match-lambda + ;; XXX: Origins are not handled. + ((label (? package? package) rest ...) + (let ((id (object-address package))) + (hashv-set! %package-table id package) + `(,label (package ,id + ,(package-name package) + ,(package-version package)) + ,@rest))) + (x + x)) + inputs)) + ,field)) + + (define inputs + (inferior-package-field package field*)) + + (define inferior + (inferior-package-inferior package)) + + (map (match-lambda + ((label ('package id name version) . rest) + ;; XXX: eq?-ness of inferior packages is not preserved here. + `(,label ,(inferior-package inferior name version id) + ,@rest)) + (x x)) + inputs)) + +(define inferior-package-inputs + (cut inferior-package-input-field <> 'package-inputs)) + +(define inferior-package-native-inputs + (cut inferior-package-input-field <> 'package-native-inputs)) + +(define inferior-package-propagated-inputs + (cut inferior-package-input-field <> 'package-propagated-inputs)) + +(define inferior-package-transitive-propagated-inputs + (cut inferior-package-input-field <> 'package-transitive-propagated-inputs)) + (define (proxy client backend) ;adapted from (guix ssh) "Proxy communication between CLIENT and BACKEND until CLIENT closes the connection, at which point CLIENT is closed (both CLIENT and BACKEND must be diff --git a/tests/inferior.scm b/tests/inferior.scm index 791e30b179..03170a19c9 100644 --- a/tests/inferior.scm +++ b/tests/inferior.scm @@ -24,8 +24,10 @@ #:use-module (guix derivations) #:use-module (gnu packages) #:use-module (gnu packages bootstrap) + #:use-module (gnu packages guile) #:use-module (srfi srfi-1) - #:use-module (srfi srfi-64)) + #:use-module (srfi srfi-64) + #:use-module (ice-9 match)) (define %top-srcdir (dirname (search-path %load-path "guix.scm"))) @@ -108,6 +110,36 @@ (close-inferior inferior) (every eq? lst1 lst2))) +(test-equal "inferior-package-inputs" + (let ((->list (match-lambda + ((label (? package? package) . rest) + `(,label + (package ,(package-name package) + ,(package-version package) + ,(package-location package)) + ,@rest))))) + (list (map ->list (package-inputs guile-2.2)) + (map ->list (package-native-inputs guile-2.2)) + (map ->list (package-propagated-inputs guile-2.2)))) + (let* ((inferior (open-inferior %top-builddir + #:command "scripts/guix")) + (guile (first (lookup-inferior-packages inferior "guile"))) + (->list (match-lambda + ((label (? inferior-package? package) . rest) + `(,label + (package ,(inferior-package-name package) + ,(inferior-package-version package) + ,(inferior-package-location package)) + ,@rest)))) + (result (list (map ->list (inferior-package-inputs guile)) + (map ->list + (inferior-package-native-inputs guile)) + (map ->list + (inferior-package-propagated-inputs + guile))))) + (close-inferior inferior) + result)) + (test-equal "inferior-package-derivation" (map derivation-file-name (list (package-derivation %store %bootstrap-guile "x86_64-linux") From eee8b303f6d82c1400fd8fd3b097406358ed7875 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 17 Sep 2018 10:04:15 +0200 Subject: [PATCH 040/909] inferior: Add 'inferior-package-search-paths' & co. * guix/inferior.scm (%inferior-package-search-paths) (inferior-package-native-search-paths) (inferior-package-search-paths) (inferior-package-transitive-native-search-paths): New procedures. * tests/inferior.scm ("inferior-package-search-paths"): New test. --- guix/inferior.scm | 26 ++++++++++++++++++++++++++ tests/inferior.scm | 9 +++++++++ 2 files changed, 35 insertions(+) diff --git a/guix/inferior.scm b/guix/inferior.scm index ca819c6eff..3fa4930095 100644 --- a/guix/inferior.scm +++ b/guix/inferior.scm @@ -32,6 +32,7 @@ #:use-module ((guix derivations) #:select (read-derivation-from-file)) #:use-module (guix gexp) + #:use-module (guix search-paths) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) #:use-module (ice-9 match) @@ -58,6 +59,9 @@ inferior-package-native-inputs inferior-package-propagated-inputs inferior-package-transitive-propagated-inputs + inferior-package-native-search-paths + inferior-package-transitive-native-search-paths + inferior-package-search-paths inferior-package-derivation)) ;;; Commentary: @@ -322,6 +326,28 @@ inferior package." (define inferior-package-transitive-propagated-inputs (cut inferior-package-input-field <> 'package-transitive-propagated-inputs)) +(define (%inferior-package-search-paths package field) + "Return the list of search path specificiations of PACKAGE, an inferior +package." + (define paths + (inferior-package-field package + `(compose (lambda (paths) + (map (@ (guix search-paths) + search-path-specification->sexp) + paths)) + ,field))) + + (map sexp->search-path-specification paths)) + +(define inferior-package-native-search-paths + (cut %inferior-package-search-paths <> 'package-native-search-paths)) + +(define inferior-package-search-paths + (cut %inferior-package-search-paths <> 'package-search-paths)) + +(define inferior-package-transitive-native-search-paths + (cut %inferior-package-search-paths <> 'package-transitive-native-search-paths)) + (define (proxy client backend) ;adapted from (guix ssh) "Proxy communication between CLIENT and BACKEND until CLIENT closes the connection, at which point CLIENT is closed (both CLIENT and BACKEND must be diff --git a/tests/inferior.scm b/tests/inferior.scm index 03170a19c9..99d736bd40 100644 --- a/tests/inferior.scm +++ b/tests/inferior.scm @@ -140,6 +140,15 @@ (close-inferior inferior) result)) +(test-equal "inferior-package-search-paths" + (package-native-search-paths guile-2.2) + (let* ((inferior (open-inferior %top-builddir + #:command "scripts/guix")) + (guile (first (lookup-inferior-packages inferior "guile"))) + (result (inferior-package-native-search-paths guile))) + (close-inferior inferior) + result)) + (test-equal "inferior-package-derivation" (map derivation-file-name (list (package-derivation %store %bootstrap-guile "x86_64-linux") From 2e6d64e122ad2745154a38122785895d1b66c2ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 18 Sep 2018 09:56:34 +0200 Subject: [PATCH 041/909] inferior: Add 'inferior-package->manifest-entry'. * guix/inferior.scm (inferior-package->manifest-entry): New procedure. * tests/inferior.scm (manifest-entry->list): New procedure. ("inferior-package->manifest-entry"): New test. --- guix/inferior.scm | 42 ++++++++++++++++++++++++++++++++++++++---- tests/inferior.scm | 18 ++++++++++++++++++ 2 files changed, 56 insertions(+), 4 deletions(-) diff --git a/guix/inferior.scm b/guix/inferior.scm index 3fa4930095..c86fdd3ec1 100644 --- a/guix/inferior.scm +++ b/guix/inferior.scm @@ -33,6 +33,7 @@ #:select (read-derivation-from-file)) #:use-module (guix gexp) #:use-module (guix search-paths) + #:use-module (guix profiles) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) #:use-module (ice-9 match) @@ -45,12 +46,12 @@ inferior-eval inferior-object? + inferior-packages + lookup-inferior-packages + inferior-package? inferior-package-name inferior-package-version - - inferior-packages - lookup-inferior-packages inferior-package-synopsis inferior-package-description inferior-package-home-page @@ -62,7 +63,9 @@ inferior-package-native-search-paths inferior-package-transitive-native-search-paths inferior-package-search-paths - inferior-package-derivation)) + inferior-package-derivation + + inferior-package->manifest-entry)) ;;; Commentary: ;;; @@ -441,3 +444,34 @@ PACKAGE must be live." target) ;; Compile PACKAGE for SYSTEM, optionally cross-building for TARGET. (inferior-package->derivation package system #:target target)) + + +;;; +;;; Manifest entries. +;;; + +(define* (inferior-package->manifest-entry package + #:optional (output "out") + #:key (parent (delay #f)) + (properties '())) + "Return a manifest entry for the OUTPUT of package PACKAGE." + ;; For each dependency, keep a promise pointing to its "parent" entry. + (letrec* ((deps (map (match-lambda + ((label package) + (inferior-package->manifest-entry package + #:parent (delay entry))) + ((label package output) + (inferior-package->manifest-entry package output + #:parent (delay entry)))) + (inferior-package-propagated-inputs package))) + (entry (manifest-entry + (name (inferior-package-name package)) + (version (inferior-package-version package)) + (output output) + (item package) + (dependencies (delete-duplicates deps)) + (search-paths + (inferior-package-transitive-native-search-paths package)) + (parent parent) + (properties properties)))) + entry)) diff --git a/tests/inferior.scm b/tests/inferior.scm index 99d736bd40..6f6abd28a1 100644 --- a/tests/inferior.scm +++ b/tests/inferior.scm @@ -21,6 +21,7 @@ #:use-module (guix inferior) #:use-module (guix packages) #:use-module (guix store) + #:use-module (guix profiles) #:use-module (guix derivations) #:use-module (gnu packages) #:use-module (gnu packages bootstrap) @@ -38,6 +39,13 @@ (define %store (open-connection-for-tests)) +(define (manifest-entry->list entry) + (list (manifest-entry-name entry) + (manifest-entry-version entry) + (manifest-entry-output entry) + (manifest-entry-search-paths entry) + (map manifest-entry->list (manifest-entry-dependencies entry)))) + (test-begin "inferior") @@ -164,4 +172,14 @@ (list (inferior-package-derivation %store guile "x86_64-linux") (inferior-package-derivation %store guile "armhf-linux"))))) +(test-equal "inferior-package->manifest-entry" + (manifest-entry->list (package->manifest-entry + (first (find-best-packages-by-name "guile" #f)))) + (let* ((inferior (open-inferior %top-builddir + #:command "scripts/guix")) + (guile (first (lookup-inferior-packages inferior "guile"))) + (entry (inferior-package->manifest-entry guile))) + (close-inferior inferior) + (manifest-entry->list entry))) + (test-end "inferior") From 811b21fb15d36b06fde994ca7ef5916a9a19f250 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 18 Sep 2018 10:21:28 +0200 Subject: [PATCH 042/909] profiles: 'packages->manifest' now accepts inferior packages. * guix/profiles.scm (packages->manifest)[inferiors-loaded?]: New variable. [inferior->entry]: New procedure. Accept inferior packages when INFERIORS-LOADED? is true. * tests/guix-package.sh: Add test using a manifest with an inferior. * tests/inferior.scm ("packages->manifest"): New test. --- guix/profiles.scm | 27 +++++++++++++++++++++++---- tests/guix-package.sh | 15 +++++++++++++++ tests/inferior.scm | 11 +++++++++++ 3 files changed, 49 insertions(+), 4 deletions(-) diff --git a/guix/profiles.scm b/guix/profiles.scm index 8acfcff8c1..669ebe04e5 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -314,12 +314,31 @@ file name." "Return a list of manifest entries, one for each item listed in PACKAGES. Elements of PACKAGES can be either package objects or package/string tuples denoting a specific output of a package." + (define inferiors-loaded? + ;; This hack allows us to provide seamless integration for inferior + ;; packages while not having a hard dependency on (guix inferior). + (resolve-module '(guix inferior) #f #f #:ensure #f)) + + (define (inferior->entry) + (module-ref (resolve-interface '(guix inferior)) + 'inferior-package->manifest-entry)) + (manifest (map (match-lambda - ((package output) - (package->manifest-entry package output)) - ((? package? package) - (package->manifest-entry package))) + ((package output) + (package->manifest-entry package output)) + ((? package? package) + (package->manifest-entry package)) + ((thing output) + (if inferiors-loaded? + ((inferior->entry) thing output) + (throw 'wrong-type-arg 'packages->manifest + "Wrong package object: ~S" (list thing) (list thing)))) + (thing + (if inferiors-loaded? + ((inferior->entry) thing) + (throw 'wrong-type-arg 'packages->manifest + "Wrong package object: ~S" (list thing) (list thing))))) packages))) (define (manifest->gexp manifest) diff --git a/tests/guix-package.sh b/tests/guix-package.sh index cef3b3452e..f7dfbfad00 100644 --- a/tests/guix-package.sh +++ b/tests/guix-package.sh @@ -358,6 +358,21 @@ EOF guix package --bootstrap -m "$module_dir/manifest.scm" guix package -I | grep guile test `guix package -I | wc -l` -eq 1 +guix package --rollback --bootstrap + +# Applying a manifest file with inferior packages. +cat > "$module_dir/manifest.scm"<manifest (list guile))) +EOF +guix package --bootstrap -m "$module_dir/manifest.scm" +guix package -I | grep guile +test `guix package -I | wc -l` -eq 1 # Error reporting. cat > "$module_dir/manifest.scm"<list entry))) +(test-equal "packages->manifest" + (map manifest-entry->list + (manifest-entries (packages->manifest + (find-best-packages-by-name "guile" #f)))) + (let* ((inferior (open-inferior %top-builddir + #:command "scripts/guix")) + (guile (first (lookup-inferior-packages inferior "guile"))) + (manifest (packages->manifest (list guile)))) + (close-inferior inferior) + (map manifest-entry->list (manifest-entries manifest)))) + (test-end "inferior") From c37f38bde69c072cfd0006ba89f30f0d0ad24448 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 18 Sep 2018 12:08:05 +0200 Subject: [PATCH 043/909] channels: Add 'channel-instances->derivation'. * guix/channels.scm (channel-instances->derivation): New procedure. (latest-channel-derivation): Use it. (channel-instance-derivations): Make private. --- guix/channels.scm | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/guix/channels.scm b/guix/channels.scm index 2e7bffae9f..82389eb583 100644 --- a/guix/channels.scm +++ b/guix/channels.scm @@ -47,9 +47,9 @@ channel-instance-checkout latest-channel-instances - channel-instance-derivations latest-channel-derivation - channel-instances->manifest)) + channel-instances->manifest + channel-instances->derivation)) ;;; Commentary: ;;; @@ -294,13 +294,17 @@ channel instances." (zip instances derivations)))) (return (manifest entries)))) +(define (channel-instances->derivation instances) + "Return the derivation of the profile containing INSTANCES, a list of +channel instances." + (mlet %store-monad ((manifest (channel-instances->manifest instances))) + (profile-derivation manifest))) + (define latest-channel-instances* (store-lift latest-channel-instances)) (define* (latest-channel-derivation #:optional (channels %default-channels)) "Return as a monadic value the derivation that builds the profile for the latest instances of CHANNELS." - (mlet* %store-monad ((instances ((store-lift latest-channel-instances) - channels)) - (manifest (channel-instances->manifest instances))) - (profile-derivation manifest))) + (mlet %store-monad ((instances (latest-channel-instances* channels))) + (channel-instances->derivation instances))) From 2dad0313753c4b506eb1f401136b6fcb4785a3b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 18 Sep 2018 13:30:48 +0200 Subject: [PATCH 044/909] inferior: Add 'inferior-for-channels'. * guix/inferior.scm (%inferior-cache-directory): New variable. (inferior-for-channels): New procedure. --- guix/inferior.scm | 85 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 83 insertions(+), 2 deletions(-) diff --git a/guix/inferior.scm b/guix/inferior.scm index c86fdd3ec1..1dbb9e1699 100644 --- a/guix/inferior.scm +++ b/guix/inferior.scm @@ -23,7 +23,8 @@ #:select (%current-system source-properties->location call-with-temporary-directory - version>? version-prefix?)) + version>? version-prefix? + cache-directory)) #:use-module ((guix store) #:select (nix-server-socket nix-server-major-version @@ -34,12 +35,23 @@ #:use-module (guix gexp) #:use-module (guix search-paths) #:use-module (guix profiles) + #:use-module (guix channels) + #:use-module (guix monads) + #:use-module (guix store) + #:use-module (guix derivations) + #:use-module (guix base32) + #:use-module (gcrypt hash) + #:autoload (guix cache) (maybe-remove-expired-cache-entries) + #:autoload (guix ui) (show-what-to-build*) + #:autoload (guix build utils) (mkdir-p) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) + #:autoload (ice-9 ftw) (scandir) #:use-module (ice-9 match) #:use-module (ice-9 popen) #:use-module (ice-9 vlist) #:use-module (ice-9 binary-ports) + #:use-module ((rnrs bytevectors) #:select (string->utf8)) #:export (inferior? open-inferior close-inferior @@ -65,7 +77,10 @@ inferior-package-search-paths inferior-package-derivation - inferior-package->manifest-entry)) + inferior-package->manifest-entry + + %inferior-cache-directory + inferior-for-channels)) ;;; Commentary: ;;; @@ -475,3 +490,69 @@ PACKAGE must be live." (parent parent) (properties properties)))) entry)) + + +;;; +;;; Cached inferiors. +;;; + +(define %inferior-cache-directory + ;; Directory for cached inferiors (GC roots). + (make-parameter (string-append (cache-directory #:ensure? #f) + "/inferiors"))) + +(define* (inferior-for-channels channels + #:key + (cache-directory (%inferior-cache-directory)) + (ttl (* 3600 24 30))) + "Return an inferior for CHANNELS, a list of channels. Use the cache at +CACHE-DIRECTORY, where entries can be reclaimed after TTL seconds. This +procedure opens a new connection to the build daemon. + +This is a convenience procedure that people may use in manifests passed to +'guix package -m', for instance." + (with-store store + (let () + (define instances + (latest-channel-instances store channels)) + + (define key + (bytevector->base32-string + (sha256 + (string->utf8 + (string-concatenate (map channel-instance-commit instances)))))) + + (define cached + (string-append cache-directory "/" key)) + + (define (base32-encoded-sha256? str) + (= (string-length str) 52)) + + (define (cache-entries directory) + (map (lambda (file) + (string-append directory "/" file)) + (scandir directory base32-encoded-sha256?))) + + (define symlink* + (lift2 symlink %store-monad)) + + (define add-indirect-root* + (store-lift add-indirect-root)) + + (mkdir-p cache-directory) + (maybe-remove-expired-cache-entries cache-directory + cache-entries + #:entry-expiration + (file-expiration-time ttl)) + + (if (file-exists? cached) + (open-inferior cached) + (run-with-store store + (mlet %store-monad ((profile + (channel-instances->derivation instances))) + (mbegin %store-monad + (show-what-to-build* (list profile)) + (built-derivations (list profile)) + (symlink* (derivation->output-path profile) cached) + (add-indirect-root* cached) + (return (open-inferior cached))))))))) From 92a9f14b9d2ae08f5d8f30149963c1e326dd37a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 21 Sep 2018 17:03:52 +0200 Subject: [PATCH 045/909] doc: Add section about inferiors. * doc/guix.texi (Inferiors): New node. (Channels): Add xref to "Inferiors". --- doc/guix.texi | 131 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) diff --git a/doc/guix.texi b/doc/guix.texi index b925485be5..76ec718b07 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -147,6 +147,7 @@ Package Management * Invoking guix gc:: Running the garbage collector. * Invoking guix pull:: Fetching the latest Guix and distribution. * Channels:: Customizing the package collection. +* Inferiors:: Interacting with another revision of Guix. * Invoking guix describe:: Display information about your Guix revision. * Invoking guix pack:: Creating software bundles. * Invoking guix archive:: Exporting and importing store files. @@ -1699,6 +1700,7 @@ guix package -i emacs-guix * Invoking guix gc:: Running the garbage collector. * Invoking guix pull:: Fetching the latest Guix and distribution. * Channels:: Customizing the package collection. +* Inferiors:: Interacting with another revision of Guix. * Invoking guix describe:: Display information about your Guix revision. * Invoking guix pack:: Creating software bundles. * Invoking guix archive:: Exporting and importing store files. @@ -3053,6 +3055,135 @@ package it defines. This gives you super powers, allowing you to track the provenance of binary artifacts with very fine grain, and to reproduce software environments at will---some sort of ``meta reproducibility'' capabilities, if you will. +@xref{Inferiors}, for another way to take advantage of these super powers. + +@node Inferiors +@section Inferiors + +@c TODO: Remove this once we're more confident about API stability. +@quotation Note +The functionality described here is a ``technology preview'' as of version +@value{VERSION}. As such, the interface is subject to change. +@end quotation + +@cindex inferiors +@cindex composition of Guix revisions +Sometimes you might need to mix packages from the revision of Guix you're +currently running with packages available in a different revision of Guix. +Guix @dfn{inferiors} allow you to achieve that by composing different Guix +revisions in arbitrary ways. + +@cindex inferior packages +Technically, an ``inferior'' is essentially a separate Guix process connected +to your main Guix process through a REPL (@pxref{Invoking guix repl}). The +@code{(guix inferior)} module allows you to create inferiors and to +communicate with them. It also provides a high-level interface to browse and +manipulate the packages that an inferior provides---@dfn{inferior packages}. + +When combined with channels (@pxref{Channels}), inferiors provide a simple way +to interact with a separate revision of Guix. For example, let's assume you +want to install in your profile the current @code{guile} package, along with +the @code{guile-json} as it existed in an older revision of Guix---perhaps +because the newer @code{guile-json} has an incompatible API and you want to +run your code against the old API@. To do that, you could write a manifest for +use by @code{guix package --manifest} (@pxref{Invoking guix package}); in that +manifest, you would create an inferior for that old Guix revision you care +about, and you would look up the @code{guile-json} package in the inferior: + +@lisp +(use-modules (guix inferior) (guix channels) + (srfi srfi-1)) ;for 'first' + +(define channels + ;; This is the old revision from which we want to + ;; extract guile-json. + (list (channel + (name 'guix) + (url "https://git.savannah.gnu.org/git/guix.git") + (commit + "65956ad3526ba09e1f7a40722c96c6ef7c0936fe")))) + +(define inferior + ;; An inferior representing the above revision. + (inferior-for-channels channels)) + +;; Now create a manifest with the current "guile" package +;; and the old "guile-json" package. +(packages->manifest + (list (first (lookup-inferior-packages inferior "guile-json")) + (specification->package "guile"))) +@end lisp + +On its first run, @command{guix package --manifest} might have to build the +channel you specified before it can create the inferior; subsequent runs will +be much faster because the Guix revision will be cached. + +The @code{(guix inferior)} module provides the following procedures to open an +inferior: + +@deffn {Scheme Procedure} inferior-for-channels @var{channels} @ + [#:cache-directory] [#:ttl] +Return an inferior for @var{channels}, a list of channels. Use the cache at +@var{cache-directory}, where entries can be reclaimed after @var{ttl} seconds. +This procedure opens a new connection to the build daemon. + +As a side effect, this procedure may build or substitute binaries for +@var{channels}, which can take time. +@end deffn + +@deffn {Scheme Procedure} open-inferior @var{directory} @ + [#:command "bin/guix"] +Open the inferior Guix in @var{directory}, running +@code{@var{directory}/@var{command} repl} or equivalent. Return @code{#f} if +the inferior could not be launched. +@end deffn + +@cindex inferior packages +The procedures listed below allow you to obtain and manipulate inferior +packages. + +@deffn {Scheme Procedure} inferior-packages @var{inferior} +Return the list of packages known to @var{inferior}. +@end deffn + +@deffn {Scheme Procedure} lookup-inferior-packages @var{inferior} @var{name} @ + [@var{version}] +Return the sorted list of inferior packages matching @var{name} in +@var{inferior}, with highest version numbers first. If @var{version} is true, +return only packages with a version number prefixed by @var{version}. +@end deffn + +@deffn {Scheme Procedure} inferior-package? @var{obj} +Return true if @var{obj} is an inferior package. +@end deffn + +@deffn {Scheme Procedure} inferior-package-name @var{package} +@deffnx {Scheme Procedure} inferior-package-version @var{package} +@deffnx {Scheme Procedure} inferior-package-synopsis @var{package} +@deffnx {Scheme Procedure} inferior-package-description @var{package} +@deffnx {Scheme Procedure} inferior-package-home-page @var{package} +@deffnx {Scheme Procedure} inferior-package-location @var{package} +@deffnx {Scheme Procedure} inferior-package-inputs @var{package} +@deffnx {Scheme Procedure} inferior-package-native-inputs @var{package} +@deffnx {Scheme Procedure} inferior-package-propagated-inputs @var{package} +@deffnx {Scheme Procedure} inferior-package-transitive-propagated-inputs @var{package} +@deffnx {Scheme Procedure} inferior-package-native-search-paths @var{package} +@deffnx {Scheme Procedure} inferior-package-transitive-native-search-paths @var{package} +@deffnx {Scheme Procedure} inferior-package-search-paths @var{package} +These procedures are the counterpart of package record accessors +(@pxref{package Reference}). Most of them work by querying the inferior +@var{package} comes from, so the inferior must still be live when you call +these procedures. +@end deffn + +Inferior packages can be used transparently like any other package or +file-like object in G-expressions (@pxref{G-Expressions}). They are also +transparently handled by the @code{packages->manifest} procedure, which is +commonly use in manifests (@pxref{Invoking guix package, the +@option{--manifest} option of @command{guix package}}). Thus you can insert +an inferior package pretty much anywhere you would insert a regular package: +in manifests, in the @code{packages} field of your @code{operating-system} +declaration, and so on. @node Invoking guix describe @section Invoking @command{guix describe} From ec944a1de97c8a523d6e1089b8c4430424297f93 Mon Sep 17 00:00:00 2001 From: Danny Milosavljevic Date: Fri, 21 Sep 2018 15:42:56 +0200 Subject: [PATCH 046/909] gnu: rust: Remove unused "ar" setting. * gnu/packages/rust.scm (rust-1.20)[arguments]<#:phases>[configure]: Remove unused "ar" setting. --- gnu/packages/rust.scm | 1 - 1 file changed, 1 deletion(-) diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index 40633854ae..cc33a0d3b9 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -574,7 +574,6 @@ rpath = true llvm-config = \"" llvm "/bin/llvm-config" "\" cc = \"" gcc "/bin/gcc" "\" cxx = \"" gcc "/bin/g++" "\" -ar = \"" binutils "/bin/ar" "\" jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" [dist] ") port))) From 199d72e32759b0b0a0514d1bb667f0f1f2a6cbb4 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 21 Sep 2018 14:26:30 +0200 Subject: [PATCH 047/909] gnu: python-pyparsing: Update to 2.2.1. * gnu/packages/python.scm (python-pyparsing): Update to 2.2.1. [source]: Use PYPI-URI. --- gnu/packages/python.scm | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index a11c7e315e..26829f050e 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -3350,16 +3350,13 @@ library, libgit2 implements Git plumbing.") (define-public python-pyparsing (package (name "python-pyparsing") - (version "2.2.0") + (version "2.2.1") (source (origin (method url-fetch) - (uri (string-append "mirror://sourceforge/pyparsing/pyparsing" - "/pyparsing-" version - "/pyparsing-" version ".tar.gz")) + (uri (pypi-uri "pyparsing" version)) (sha256 - (base32 - "016b9gh606aa44sq92jslm89bg874ia0yyiyb643fa6dgbsbqch8")))) + (base32 "06dgd0iilvf8m0ssmfpcbh8l6jf0zkp8adbb84llksg17crfx4zl")))) (build-system python-build-system) (outputs '("out" "doc")) (arguments From 9a32bdf8a9b56eec84310a809820eadd1a33f45f Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 21 Sep 2018 17:12:36 +0200 Subject: [PATCH 048/909] gnu: wxwidgets: Update to 3.0.4. * gnu/packages/wxwidgets.scm (wxwidgets): Update to 3.0.4. --- gnu/packages/wxwidgets.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/wxwidgets.scm b/gnu/packages/wxwidgets.scm index f1a61329e8..6cbfd76e10 100644 --- a/gnu/packages/wxwidgets.scm +++ b/gnu/packages/wxwidgets.scm @@ -49,7 +49,7 @@ (define-public wxwidgets (package (name "wxwidgets") - (version "3.0.3") + (version "3.0.4") (source (origin (method url-fetch) @@ -57,7 +57,7 @@ "releases/download/v" version "/wxWidgets-" version ".tar.bz2")) (sha256 - (base32 "0yrhp5cs2g33cpbdwdzicmm5m4mfnlvxwv031x9266zc90zh7j08")))) + (base32 "1w7pgfqjab7n84lc4aarydl3g55d1hdgl2ilwml766r6inc7y5cn")))) (build-system glib-or-gtk-build-system) (inputs `(("glu" ,glu) From 10fadd1e3d2e67ed8bc34a91a587d4862f6055e5 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 21 Sep 2018 17:13:13 +0200 Subject: [PATCH 049/909] gnu: filezilla: Update to 3.37.1. * gnu/packages/ftp.scm (filezilla): Update to 3.37.1. --- gnu/packages/ftp.scm | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/gnu/packages/ftp.scm b/gnu/packages/ftp.scm index 335c975d12..faf9f5dd10 100644 --- a/gnu/packages/ftp.scm +++ b/gnu/packages/ftp.scm @@ -207,16 +207,14 @@ output. (define-public filezilla (package (name "filezilla") - (version "3.31.0") + (version "3.37.1") (source (origin (method url-fetch) - (uri (string-append "https://sourceforge.net/projects/" name - "/files/FileZilla_Client/" version - "/FileZilla_" version "_src" ".tar.bz2")) + (uri (string-append "https://download.filezilla-project.org/client/" + "FileZilla_" version "_src.tar.bz2")) (sha256 - (base32 - "1rfysb8dil35a7bzj2kw0mzzkys39d7yn6ipsbk8l6rkwfvnii8l")))) + (base32 "1bbxlm8gc0r5jing8xmkdbhj5a1qfbjn8varhny3mrk1am4m7s7l")))) (build-system gnu-build-system) (arguments ;; Don't let filezilla phone home to check for updates. From 43726c522f4b3802ce66c0f17160314569b1d673 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 21 Sep 2018 20:13:14 +0200 Subject: [PATCH 050/909] gnu: emacs-password-store: Update to 1.7.3. * gnu/packages/emacs.scm (emacs-password-store): Update to 1.7.3. --- gnu/packages/emacs.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 977f0c99b8..4662c11cff 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -8394,7 +8394,7 @@ close, copy, cut, paste, undo, redo.") (define-public emacs-password-store (package (name "emacs-password-store") - (version "1.7.2") + (version "1.7.3") (source (origin (method url-fetch) (uri @@ -8402,7 +8402,7 @@ close, copy, cut, paste, undo, redo.") "password-store-" version ".tar.xz")) (sha256 (base32 - "1sl0d7nc85c6c2bmmmyb8rpmn47vhkj831l153mjlkawjvhwas27")))) + "1x53k5dn3cdmvy8m4fqdld4hji5n676ksl0ql4armkmsds26av1b")))) (build-system emacs-build-system) (arguments `(#:phases From 1302837f6b9ba4364ed06cdbe55fb54e8fe7de0f Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 21 Sep 2018 20:22:51 +0200 Subject: [PATCH 051/909] gnu: workrave: Update to 1.10.21. * gnu/packages/gnome.scm (workrave): Update to 1.10.21. [source]: Use GIT-FILE-NAME. --- gnu/packages/gnome.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 99f4c1271a..65716ce413 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -7224,7 +7224,7 @@ mp3, Ogg Vorbis and FLAC") (license license:gpl2+))) (define-public workrave - (let ((commit "v1_10_20")) + (let ((commit "v1_10_21")) (package (name "workrave") (version (string-map (match-lambda @@ -7236,10 +7236,10 @@ mp3, Ogg Vorbis and FLAC") (uri (git-reference (url "https://github.com/rcaelers/workrave.git") (commit commit))) - (file-name (string-append name "-" version "-checkout")) + (file-name (git-file-name name version)) (sha256 (base32 - "099a87zkrkmsgfz9isrfm89dh545x52891jh6qxmn19h6wwsi941")))) + "150qca8c552fakjlzkgarsxgp87l1xcwn19svqsa9d0cygqxjgia")))) (build-system glib-or-gtk-build-system) (arguments `(#:phases From a255142af3288ff76e37ac30b6b6f9acdcd2ca01 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Fri, 21 Sep 2018 21:55:28 +0200 Subject: [PATCH 052/909] gnu: emacs-org: Update to 9.1.14. * gnu/packages/emacs.scm (emacs-org): Update to 9.1.14. --- gnu/packages/emacs.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 4662c11cff..28d97f82c1 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -5318,14 +5318,14 @@ passive voice.") (name "emacs-org") ;; emacs-org-contrib inherits from this package. Please update its sha256 ;; checksum as well. - (version "9.1.13") + (version "9.1.14") (source (origin (method url-fetch) (uri (string-append "http://elpa.gnu.org/packages/org-" version ".tar")) (sha256 (base32 - "1vx0n32gvrgy2bl2b4pvxf00cywxwm57gi46f2b2zlrnmd5n85pr")))) + "17vd9hig26rqv90l6y92hc2i0x29g44lsdsp0xd4m53s8r3zdikz")))) (build-system emacs-build-system) (home-page "https://orgmode.org/") (synopsis "Outline-based notes management and organizer") From 78b7b9dbe9098c9c47c7acba363223bb6c5bb1c8 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Fri, 21 Sep 2018 22:22:09 +0200 Subject: [PATCH 053/909] gnu: snap: Update to 4.2.1.4. * gnu/packages/education.scm (snap): Update to 4.2.1.4. --- gnu/packages/education.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm index 52dde26f44..8b02adc182 100644 --- a/gnu/packages/education.scm +++ b/gnu/packages/education.scm @@ -243,7 +243,7 @@ easy.") (define-public snap (package (name "snap") - (version "4.2.1.3") + (version "4.2.1.4") (source (origin (method git-fetch) @@ -253,7 +253,7 @@ easy.") (file-name (git-file-name name version)) (sha256 (base32 - "0n32hg8rx6alk5j58l76gzmicrg1bp7jagz5mh1zrg7591aicjal")))) + "0yc0w0cdhvi0nwqqrann2v3y0n7shxh7irgixqvlavp4k49d7aqj")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) From 05fb1e0017030f1c0cbc7e9a1adeccca57ef1d9d Mon Sep 17 00:00:00 2001 From: Ben Woodcroft Date: Sat, 22 Sep 2018 08:19:09 +1000 Subject: [PATCH 054/909] gnu: hmmer: Update to 3.2.1. * gnu/packages/bioinformatics.scm (hmmer): Update to 3.2.1. [origin]: Remove patch. [license]: Change to BSD-3. [supported-systems]: New field. * gnu/packages/patches/hmmer-remove-cpu-specificity.patch: Delete file. * gnu/local.mk (dist_patch_DATA): Remove it. --- gnu/local.mk | 1 - gnu/packages/bioinformatics.scm | 19 ++++++---------- .../hmmer-remove-cpu-specificity.patch | 22 ------------------- 3 files changed, 7 insertions(+), 35 deletions(-) delete mode 100644 gnu/packages/patches/hmmer-remove-cpu-specificity.patch diff --git a/gnu/local.mk b/gnu/local.mk index 4097ad5fcd..daf96ea4b6 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -805,7 +805,6 @@ dist_patch_DATA = \ %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/hmmer-remove-cpu-specificity.patch \ %D%/packages/patches/higan-remove-march-native-flag.patch \ %D%/packages/patches/hubbub-sort-entities.patch \ %D%/packages/patches/hurd-fix-eth-multiplexer-dependency.patch \ diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 9599e3096f..b619866ba3 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -2936,18 +2936,15 @@ indexing scheme is called a @dfn{Hierarchical Graph FM index} (HGFM).") (define-public hmmer (package (name "hmmer") - (version "3.1b2") + (version "3.2.1") (source (origin (method url-fetch) (uri (string-append - "http://eddylab.org/software/hmmer" - (version-major version) "/" - version "/hmmer-" version ".tar.gz")) + "http://eddylab.org/software/hmmer/hmmer-" version ".tar.gz")) (sha256 (base32 - "0djmgc0pfli0jilfx8hql1axhwhqxqb8rxg2r5rg07aw73sfs5nx")) - (patches (search-patches "hmmer-remove-cpu-specificity.patch")))) + "171bivy6xhgjsz5nv53n81pc3frnwz29ylblawk2bv46szwjjqd5")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl))) (home-page "http://hmmer.org/") @@ -2957,12 +2954,10 @@ indexing scheme is called a @dfn{Hierarchical Graph FM index} (HGFM).") sequences, and for making protein sequence alignments. It implements methods using probabilistic models called profile hidden Markov models (profile HMMs).") - (license (list license:gpl3+ - ;; The bundled library 'easel' is distributed - ;; under The Janelia Farm Software License. - (license:non-copyleft - "file://easel/LICENSE" - "See easel/LICENSE in the distribution."))))) + ;; hmmer uses non-portable SSE intrinsics so building fails on other + ;; platforms. + (supported-systems '("x86_64-linux" "i686-linux")) + (license license:bsd-3))) (define-public htseq (package diff --git a/gnu/packages/patches/hmmer-remove-cpu-specificity.patch b/gnu/packages/patches/hmmer-remove-cpu-specificity.patch deleted file mode 100644 index ba98db4d0e..0000000000 --- a/gnu/packages/patches/hmmer-remove-cpu-specificity.patch +++ /dev/null @@ -1,22 +0,0 @@ -This patch removes compilation flags which make the build for the machine -where compilation takes place, rendering the build not reproducible. - -diff --git a/configure b/configure -index 8b6aaef..49a6afc 100755 ---- a/configure -+++ b/configure -@@ -6125,14 +6125,6 @@ fi # guess arch - - if test "x$ax_gcc_arch" != x -a "x$ax_gcc_arch" != xno; then - for arch in $ax_gcc_arch; do -- if test "x$acx_maxopt_portable" = xyes; then # if we require portable code -- flags="-mtune=$arch" -- # -mcpu=$arch and m$arch generate nonportable code on every arch except -- # x86. And some other arches (e.g. Alpha) don't accept -mtune. Grrr. -- case $host_cpu in i*86|x86_64*) flags="$flags -mcpu=$arch -m$arch";; esac -- else -- flags="-march=$arch -mcpu=$arch -m$arch" -- fi - for flag in $flags; do - as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh` - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 From 91294b53619995712a6f8d497d650bfc02b4c952 Mon Sep 17 00:00:00 2001 From: Danny Milosavljevic Date: Sat, 22 Sep 2018 10:07:50 +0200 Subject: [PATCH 055/909] Revert 'gnu: rust: Remove unused "ar" setting.'. Some versions of Rust do need it and others complain about it. For now, revert the removal entirely. This reverts commit ec944a1de97c8a523d6e1089b8c4430424297f93. --- gnu/packages/rust.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index cc33a0d3b9..40633854ae 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -574,6 +574,7 @@ rpath = true llvm-config = \"" llvm "/bin/llvm-config" "\" cc = \"" gcc "/bin/gcc" "\" cxx = \"" gcc "/bin/g++" "\" +ar = \"" binutils "/bin/ar" "\" jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" [dist] ") port))) From ae71cd8ac93245360ffe73d6ab260975ec0d742f Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sat, 22 Sep 2018 04:47:54 -0400 Subject: [PATCH 056/909] gnu: icecat: Add fixes from upstream mozilla-esr60 [security fixes]. Includes fixes for CVE-2018-12383 and CVE-2018-12385. * gnu/packages/patches/icecat-CVE-2018-12383.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/patches/icecat-avoid-bundled-libraries.patch: Adapt to apply cleanly to IceCat 60. * gnu/packages/gnuzilla.scm (mozilla-patch): Update to fetch from mozilla-esr60. (icecat): Add selected changesets from upstream mozilla-esr60. --- gnu/local.mk | 1 + gnu/packages/gnuzilla.scm | 8 +- .../patches/icecat-CVE-2018-12383.patch | 103 ++++++++++++++++++ .../icecat-avoid-bundled-libraries.patch | 20 ++-- 4 files changed, 119 insertions(+), 13 deletions(-) create mode 100644 gnu/packages/patches/icecat-CVE-2018-12383.patch diff --git a/gnu/local.mk b/gnu/local.mk index daf96ea4b6..fe2b573dd5 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -810,6 +810,7 @@ dist_patch_DATA = \ %D%/packages/patches/hurd-fix-eth-multiplexer-dependency.patch \ %D%/packages/patches/hydra-disable-darcs-test.patch \ %D%/packages/patches/icecat-avoid-bundled-libraries.patch \ + %D%/packages/patches/icecat-CVE-2018-12383.patch \ %D%/packages/patches/icecat-use-system-graphite2.patch \ %D%/packages/patches/icecat-use-system-harfbuzz.patch \ %D%/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch \ diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index db8f85cfb1..653cee93d5 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -469,10 +469,10 @@ security standards.") (license license:mpl2.0))) (define (mozilla-patch file-name changeset hash) - "Return an origin for CHANGESET from the mozilla-esr52 repository." + "Return an origin for CHANGESET from the mozilla-esr60 repository." (origin (method url-fetch) - (uri (string-append "https://hg.mozilla.org/releases/mozilla-esr52/raw-rev/" + (uri (string-append "https://hg.mozilla.org/releases/mozilla-esr60/raw-rev/" changeset)) (sha256 (base32 hash)) (file-name file-name))) @@ -498,7 +498,9 @@ security standards.") (search-patch "icecat-avoid-bundled-libraries.patch") ;; FIXME (search-patch "icecat-use-system-harfbuzz.patch") ;; FIXME (search-patch "icecat-use-system-graphite2.patch") - )) + (mozilla-patch "icecat-CVE-2018-12385.patch" "80a4a7ef2813" "1vgcbimpnfjqj934v0cryq1g13xac3wfmd4jyhcb5s60x8xyssf5") + (search-patch "icecat-CVE-2018-12383.patch") + (mozilla-patch "icecat-bug-1489744.patch" "6546ee839d30" "11mhvj77r789b428bfxqq5wdx8yr7lbrdjzr8qjj6fw197pldn51"))) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/patches/icecat-CVE-2018-12383.patch b/gnu/packages/patches/icecat-CVE-2018-12383.patch new file mode 100644 index 0000000000..17ca0f3773 --- /dev/null +++ b/gnu/packages/patches/icecat-CVE-2018-12383.patch @@ -0,0 +1,103 @@ +Based on upstream changeset: + https://hg.mozilla.org/releases/mozilla-esr60/rev/300efdbc9fe1 +but with the git binary patch and related test changes omitted, +and adapted to apply cleanly to GNU IceCat. + +# HG changeset patch +# User David Keeler +# Date 1531860660 25200 +# Node ID 300efdbc9fe1f9165428c7934861033935b5abfa +# Parent 80a4a7ef281374dbb2afda8edac54665b14b9ef8 +Bug 1475775 - Clean up old NSS DB file after upgrade if necessary. r=franziskus, r=mattn, a=RyanVM + +Reviewers: franziskus, mattn + +Bug #: 1475775 + +Differential Revision: https://phabricator.services.mozilla.com/D2202 + +diff --git a/security/manager/ssl/nsNSSComponent.cpp b/security/manager/ssl/nsNSSComponent.cpp +--- a/security/manager/ssl/nsNSSComponent.cpp ++++ b/security/manager/ssl/nsNSSComponent.cpp +@@ -1935,16 +1935,61 @@ AttemptToRenameBothPKCS11ModuleDBVersion + NS_NAMED_LITERAL_CSTRING(sqlModuleDBFilename, "pkcs11.txt"); + nsresult rv = AttemptToRenamePKCS11ModuleDB(profilePath, + legacyModuleDBFilename); + if (NS_FAILED(rv)) { + return rv; + } + return AttemptToRenamePKCS11ModuleDB(profilePath, sqlModuleDBFilename); + } ++ ++// When we changed from the old dbm database format to the newer sqlite ++// implementation, the upgrade process left behind the existing files. Suppose a ++// user had not set a password for the old key3.db (which is about 99% of ++// users). After upgrading, both the old database and the new database are ++// unprotected. If the user then sets a password for the new database, the old ++// one will not be protected. In this scenario, we should probably just remove ++// the old database (it would only be relevant if the user downgraded to a ++// version of IceCat before 58, but we have to trade this off against the ++// user's old private keys being unexpectedly unprotected after setting a ++// password). ++// This was never an issue on Android because we always used the new ++// implementation. ++static void ++MaybeCleanUpOldNSSFiles(const nsACString& profilePath) ++{ ++ UniquePK11SlotInfo slot(PK11_GetInternalKeySlot()); ++ if (!slot) { ++ return; ++ } ++ // Unfortunately we can't now tell the difference between "there already was a ++ // password when the upgrade happened" and "there was not a password but then ++ // the user added one after upgrading". ++ bool hasPassword = PK11_NeedLogin(slot.get()) && ++ !PK11_NeedUserInit(slot.get()); ++ if (!hasPassword) { ++ return; ++ } ++ nsCOMPtr dbFile = do_CreateInstance("@mozilla.org/file/local;1"); ++ if (!dbFile) { ++ return; ++ } ++ nsresult rv = dbFile->InitWithNativePath(profilePath); ++ if (NS_FAILED(rv)) { ++ return; ++ } ++ NS_NAMED_LITERAL_CSTRING(keyDBFilename, "key3.db"); ++ rv = dbFile->AppendNative(keyDBFilename); ++ if (NS_FAILED(rv)) { ++ return; ++ } ++ // Since this isn't a directory, the `recursive` argument to `Remove` is ++ // irrelevant. ++ Unused << dbFile->Remove(false); ++} + #endif // ifndef ANDROID + + // Given a profile directory, attempt to initialize NSS. If nocertdb is true, + // (or if we don't have a profile directory) simply initialize NSS in no DB mode + // and return. Otherwise, first attempt to initialize in read/write mode, and + // then read-only mode if that fails. If both attempts fail, we may be failing + // to initialize an NSS DB collection that has FIPS mode enabled. Attempt to + // ascertain if this is the case, and if so, rename the offending PKCS#11 module +@@ -1966,16 +2011,19 @@ InitializeNSSWithFallbacks(const nsACStr + + // Try read/write mode. If we're in safeMode, we won't load PKCS#11 modules. + #ifndef ANDROID + PRErrorCode savedPRErrorCode1; + #endif // ifndef ANDROID + SECStatus srv = ::mozilla::psm::InitializeNSS(profilePath, false, !safeMode); + if (srv == SECSuccess) { + MOZ_LOG(gPIPNSSLog, LogLevel::Debug, ("initialized NSS in r/w mode")); ++#ifndef ANDROID ++ MaybeCleanUpOldNSSFiles(profilePath); ++#endif // ifndef ANDROID + return NS_OK; + } + #ifndef ANDROID + savedPRErrorCode1 = PR_GetError(); + PRErrorCode savedPRErrorCode2; + #endif // ifndef ANDROID + // That failed. Try read-only mode. + srv = ::mozilla::psm::InitializeNSS(profilePath, true, !safeMode); diff --git a/gnu/packages/patches/icecat-avoid-bundled-libraries.patch b/gnu/packages/patches/icecat-avoid-bundled-libraries.patch index 114631517a..b5e9fb887e 100644 --- a/gnu/packages/patches/icecat-avoid-bundled-libraries.patch +++ b/gnu/packages/patches/icecat-avoid-bundled-libraries.patch @@ -1,8 +1,8 @@ Fixes needed when avoiding bundled libraries. ---- icecat-52.0.2/xpcom/build/moz.build.orig -+++ icecat-52.0.2/xpcom/build/moz.build -@@ -93,10 +93,5 @@ +--- icecat-60.2.0/xpcom/build/moz.build.orig 2018-09-13 17:46:49.000000000 -0400 ++++ icecat-60.2.0/xpcom/build/moz.build 2018-09-22 04:26:50.659564554 -0400 +@@ -99,10 +99,5 @@ '/docshell/base', ] @@ -13,9 +13,9 @@ Fixes needed when avoiding bundled libraries. - if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': CXXFLAGS += CONFIG['TK_CFLAGS'] ---- icecat-52.0.2/storage/moz.build.orig -+++ icecat-52.0.2/storage/moz.build -@@ -114,7 +114,6 @@ +--- icecat-60.2.0/storage/moz.build.orig 2018-09-13 17:51:11.000000000 -0400 ++++ icecat-60.2.0/storage/moz.build 2018-09-22 04:26:50.659564554 -0400 +@@ -117,7 +117,6 @@ DEFINES['MOZ_MEMORY_TEMP_STORE_PRAGMA'] = True LOCAL_INCLUDES += [ @@ -23,13 +23,13 @@ Fixes needed when avoiding bundled libraries. '/dom/base', ] ---- icecat-52.0.2/dom/indexedDB/moz.build.orig -+++ icecat-52.0.2/dom/indexedDB/moz.build -@@ -101,7 +101,6 @@ +--- icecat-60.2.0/dom/indexedDB/moz.build.orig 2018-09-13 17:49:42.000000000 -0400 ++++ icecat-60.2.0/dom/indexedDB/moz.build 2018-09-22 04:26:50.663564574 -0400 +@@ -102,7 +102,6 @@ CXXFLAGS += ['-Wno-error=shadow'] LOCAL_INCLUDES += [ - '/db/sqlite3/src', '/dom/base', '/dom/storage', - '/dom/workers', + '/ipc/glue', From 21280a8cd805ace5f95cd2580b8a6ca1e25050d7 Mon Sep 17 00:00:00 2001 From: Katherine Cox-Buday Date: Tue, 18 Sep 2018 21:52:58 -0500 Subject: [PATCH 057/909] gnu: Add Go 1.11. * gnu/packages/golang.scm (go-1.11): New variable. Signed-off-by: Leo Famulari --- gnu/packages/golang.scm | 119 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index fd4c362d36..bba03e77f2 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -12,6 +12,7 @@ ;;; Copyright © 2018 Tomáš Čech ;;; Copyright © 2018 Pierre-Antoine Rouby ;;; Copyright © 2018 Pierre Neidhardt +;;; Copyright @ 2018 Katherine Cox-Buday ;;; ;;; This file is part of GNU Guix. ;;; @@ -499,6 +500,124 @@ in the style of communicating sequential processes (@dfn{CSP}).") (setenv "HOME" "/tmp") #t))))))))) +(define-public go-1.11 + (package + (inherit go-1.10) + (name "go") + (version "1.11") + (source + (origin + (method url-fetch) + (uri (string-append "https://storage.googleapis.com/golang/" + name version ".src.tar.gz")) + (sha256 + (base32 + "1ysj04jzds6xa8kdflkdsgyv3mg9fdn90zdf78g4g6p4bwpy3hdg")))) + (arguments + (substitute-keyword-arguments (package-arguments go-1.10) + ((#:phases phases) + `(modify-phases ,phases + (replace 'prebuild + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((gcclib (string-append (assoc-ref inputs "gcc:lib") "/lib")) + (ld (string-append (assoc-ref inputs "libc") "/lib")) + (loader (car (find-files ld "^ld-linux.+"))) + (net-base (assoc-ref inputs "net-base")) + (tzdata-path + (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo")) + (output (assoc-ref outputs "out"))) + + (for-each delete-file + ;; Removing net/ tests, which fail when attempting to access + ;; network resources not present in the build container. + '("net/listen_test.go" + "net/parse_test.go" + "net/cgo_unix_test.go" + ;; A side affect of these test scripts is testing + ;; cgo. Attempts at using cgo flags and + ;; directives with these scripts as specified + ;; here (https://golang.org/cmd/cgo/) have not + ;; worked. The tests continue to state that they + ;; can not find crt1.o despite being present. + "cmd/go/testdata/script/list_compiled_imports.txt" + "cmd/go/testdata/script/mod_case_cgo.txt" + ;; https://github.com/golang/go/issues/24884 + "os/user/user_test.go")) + + (substitute* "os/os_test.go" + (("/usr/bin") (getcwd)) + (("/bin/pwd") (which "pwd")) + (("/bin/sh") (which "sh"))) + + (substitute* "cmd/vendor/golang.org/x/sys/unix/syscall_unix_test.go" + (("/usr/bin") "/tmp")) + + ;; Add libgcc to runpath + (substitute* "cmd/link/internal/ld/lib.go" + (("!rpath.set") "true")) + (substitute* "cmd/go/internal/work/gccgo.go" + (("cgoldflags := \\[\\]string\\{\\}") + (string-append "cgoldflags := []string{" + "\"-rpath=" gcclib "\"" + "}")) + (("\"-lgcc_s\", ") + (string-append + "\"-Wl,-rpath=" gcclib "\", \"-lgcc_s\", "))) + (substitute* "cmd/go/internal/work/gc.go" + (("ldflags = setextld\\(ldflags, compiler\\)") + (string-append + "ldflags = setextld(ldflags, compiler)\n" + "ldflags = append(ldflags, \"-r\")\n" + "ldflags = append(ldflags, \"" gcclib "\")\n"))) + + ;; Disable failing tests: these tests attempt to access + ;; commands or network resources which are neither available + ;; nor necessary for the build to succeed. + (for-each + (match-lambda + ((file regex) + (substitute* file + ((regex all before test_name) + (string-append before "Disabled" test_name))))) + '(("net/net_test.go" "(.+)(TestShutdownUnix.+)") + ("net/dial_test.go" "(.+)(TestDialTimeout.+)") + ("os/os_test.go" "(.+)(TestHostname.+)") + ("time/format_test.go" "(.+)(TestParseInSydney.+)") + ("time/format_test.go" "(.+)(TestParseInLocation.+)") + ("os/exec/exec_test.go" "(.+)(TestEcho.+)") + ("os/exec/exec_test.go" "(.+)(TestCommandRelativeName.+)") + ("os/exec/exec_test.go" "(.+)(TestCatStdin.+)") + ("os/exec/exec_test.go" "(.+)(TestCatGoodAndBadFile.+)") + ("os/exec/exec_test.go" "(.+)(TestExitStatus.+)") + ("os/exec/exec_test.go" "(.+)(TestPipes.+)") + ("os/exec/exec_test.go" "(.+)(TestStdinClose.+)") + ("os/exec/exec_test.go" "(.+)(TestIgnorePipeErrorOnSuccess.+)") + ("syscall/syscall_unix_test.go" "(.+)(TestPassFD\\(.+)") + ("os/exec/exec_test.go" "(.+)(TestExtraFiles/areturn.+)") + ("cmd/go/go_test.go" "(.+)(TestCoverageWithCgo.+)") + ("cmd/go/go_test.go" "(.+)(TestTwoPkgConfigs.+)") + ("os/exec/exec_test.go" "(.+)(TestOutputStderrCapture.+)") + ("os/exec/exec_test.go" "(.+)(TestExtraFiles.+)") + ("os/exec/exec_test.go" "(.+)(TestExtraFilesRace.+)") + ("net/lookup_test.go" "(.+)(TestLookupPort.+)") + ("syscall/exec_linux_test.go" + "(.+)(TestCloneNEWUSERAndRemapNoRootDisableSetgroups.+)"))) + + ;; fix shebang for testar script + ;; note the target script is generated at build time. + (substitute* "../misc/cgo/testcarchive/carchive_test.go" + (("#!/usr/bin/env") (string-append "#!" (which "env")))) + + (substitute* "net/lookup_unix.go" + (("/etc/protocols") (string-append net-base "/etc/protocols"))) + (substitute* "net/port_unix.go" + (("/etc/services") (string-append net-base "/etc/services"))) + (substitute* "time/zoneinfo_unix.go" + (("/usr/share/zoneinfo/") tzdata-path)) + (substitute* (find-files "cmd" "\\.go") + (("/lib(64)?/ld-linux.*\\.so\\.[0-9]") loader)) + #t))))))))) + (define-public go go-1.9) (define-public go-github-com-alsm-ioprogress From 844cc6f876b8dcadf210398e68b3f3f824cb7144 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sat, 22 Sep 2018 19:17:29 -0400 Subject: [PATCH 058/909] gnu: webkitgtk: Add version 2.22.2. * gnu/packages/webkit.scm (webkitgtk-2.22): New variable. --- gnu/packages/webkit.scm | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm index b671e44d18..976411dbbc 100644 --- a/gnu/packages/webkit.scm +++ b/gnu/packages/webkit.scm @@ -24,6 +24,7 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix utils) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (gnu packages) @@ -32,6 +33,7 @@ #:use-module (gnu packages databases) #:use-module (gnu packages enchant) #:use-module (gnu packages flex) + #:use-module (gnu packages gcc) #:use-module (gnu packages gettext) #:use-module (gnu packages gl) #:use-module (gnu packages glib) @@ -149,3 +151,34 @@ HTML/CSS applications to full-fledged web browsers.") license:lgpl2.1+ license:bsd-2 license:bsd-3)))) + +;; This version of webkitgtk needs to be kept separate, because it requires a +;; newer version of GCC than our default compiler, and this causes problems +;; when linked with C++ libraries built using our default compiler. For now, +;; we use this newer webkitgtk only for selected packages, e.g. epiphany. +(define-public webkitgtk-2.22 + (package/inherit webkitgtk + (name "webkitgtk") + (version "2.22.2") + (source (origin + (method url-fetch) + (uri (string-append "https://www.webkitgtk.org/releases/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1flrbr8pzbrlwv09b4pmgh6vklw7jghd2lgrhcb72vl9s7a8fm1l")))) + (native-inputs + `(("gcc" ,gcc-7) ; webkitgtk-2.22 requires gcc-6 or newer + ,@(package-native-inputs webkitgtk))) + (arguments + (substitute-keyword-arguments (package-arguments webkitgtk) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'add-gst-plugins-base-include-path + 'work-around-gcc-7-include-path-issue + ;; FIXME: Work around a problem with gcc-7 includes (see + ;; ). + (lambda _ + (unsetenv "C_INCLUDE_PATH") + (unsetenv "CPLUS_INCLUDE_PATH") + #t)))))))) From 480d39a600701621e4d5938c8753b8487baa2c7f Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sat, 22 Sep 2018 19:21:16 -0400 Subject: [PATCH 059/909] gnu: epiphany: Use webkitgtk-2.22. * gnu/packages/gnome.scm (epiphany)[native-inputs]: Add gcc-7. [inputs]: Replace webkitgtk with webkitgtk-2.22. --- gnu/packages/gnome.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 65716ce413..f9c9f1cf5c 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -4187,6 +4187,7 @@ a secret password store, an adblocker, and a modern UI.") `(("dconf" ,dconf))) (native-inputs `(("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database + ("gcc" ,gcc-7) ; needed because webkitgtk-2.22 is compiled with gcc-7 ("glib:bin" ,glib "bin") ; for glib-mkenums ("gtk+:bin" ,gtk+ "bin") ; for gtk-update-icon-cache ("intltool" ,intltool) @@ -4207,7 +4208,7 @@ a secret password store, an adblocker, and a modern UI.") ("libxslt" ,libxslt) ("nettle" ,nettle) ; for hogweed ("sqlite" ,sqlite) - ("webkitgtk" ,webkitgtk))) + ("webkitgtk" ,webkitgtk-2.22))) (home-page "https://wiki.gnome.org/Apps/Web") (synopsis "GNOME web browser") (description From 84b334362ebb7fb2e8bc0ec4df1d8b28aabe2413 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sat, 22 Sep 2018 19:25:36 -0400 Subject: [PATCH 060/909] gnu: eolie: Use webkitgtk-2.22. * gnu/packages/gnome.scm (eolie)[native-inputs]: Add gcc-7:lib. [inputs]: Replace webkitgtk with webkitgtk-2.22. [arguments]: Add "gcc:lib" to the list of libraries to add to LD_LIBRARY_PATH. Use invoke. --- gnu/packages/gnome.scm | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index f9c9f1cf5c..9f5ede8b07 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -4104,19 +4104,20 @@ work and the interface is well tested.") (delete 'configure) (replace 'build (lambda* (#:key outputs #:allow-other-keys) - (zero? (system* "meson" "build" - "--prefix" (assoc-ref outputs "out"))))) + (invoke "meson" "build" + "--prefix" (assoc-ref outputs "out")))) (replace 'check - (lambda _ (zero? (system* "ninja" "-C" "build" "test")))) + (lambda _ (invoke "ninja" "-C" "build" "test"))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) - (zero? (system* "ninja" "-C" "build" "install")))) + (invoke "ninja" "-C" "build" "install"))) (add-after 'wrap 'wrap-more (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) ;; These libraries must be on LD_LIBRARY_PATH. (libs '("gtkspell3" "webkitgtk" "libsoup" "libsecret" "atk" "gtk+" "gsettings-desktop-schemas" + "gcc:lib" ; needed b/c webkitgtk is built with gcc-7 "gobject-introspection")) (path (string-join (map (lambda (lib) @@ -4129,7 +4130,8 @@ work and the interface is well tested.") `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))) #t))))) (native-inputs - `(("intltool" ,intltool) + `(("gcc:lib" ,gcc-7 "lib") ; needed because webkitgtk is built with gcc-7 + ("intltool" ,intltool) ("itstool" ,itstool) ("pkg-config" ,pkg-config) ("meson" ,meson-for-build) @@ -4149,7 +4151,7 @@ work and the interface is well tested.") ("libsecret" ,libsecret) ("gtkspell3" ,gtkspell3) ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) - ("webkitgtk" ,webkitgtk))) + ("webkitgtk" ,webkitgtk-2.22))) (home-page "https://wiki.gnome.org/Apps/Eolie") (synopsis "Web browser for GNOME") (description From 94676ded5f2a68b07b94d83d2cfb768038c9c6c1 Mon Sep 17 00:00:00 2001 From: Rutger Helling Date: Sun, 23 Sep 2018 13:13:50 +0200 Subject: [PATCH 061/909] gnu: xpra: Update to 2.3.4. * gnu/packages/xorg.scm (xpra): Update to 2.3.4. --- gnu/packages/xorg.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index 90f4bf4f59..7c80e70dac 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -5936,7 +5936,7 @@ basic eye-candy effects.") (define-public xpra (package (name "xpra") - (version "2.3.3") + (version "2.3.4") (source (origin (method url-fetch) @@ -5944,7 +5944,7 @@ basic eye-candy effects.") version ".tar.xz")) (sha256 (base32 - "1azvvddjfq7lb5kmbn0ilgq2nf7pmymsc3b9lhbjld6w156qdv01")))) + "0wa3kx54himy3i1b2801hlzfilh3cf4kjk40k1cjl0ds28m5hija")))) (build-system python-build-system) (inputs `(("ffmpeg" ,ffmpeg) ("flac" ,flac) From e10bf49668472dcfc17ad10a2b5704fce838570d Mon Sep 17 00:00:00 2001 From: Pierre Neidhardt Date: Sun, 23 Sep 2018 17:19:56 +0200 Subject: [PATCH 062/909] gnu: Add emacs-synosaurus. * gnu/packages/emacs.scm (emacs-synosaurus): New variable. --- gnu/packages/emacs.scm | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 28d97f82c1..cff1898d72 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -118,6 +118,7 @@ #:use-module (gnu packages gnupg) #:use-module (gnu packages video) #:use-module (gnu packages haskell) + #:use-module (gnu packages wordnet) #:use-module (guix utils) #:use-module (srfi srfi-1) #:use-module (ice-9 match)) @@ -12197,3 +12198,41 @@ wrapper around all Imagemagick commands with descriptions, autocompletion (for some commands) and hints displayed in prompt using @command{eimp.el} to execute its commands and resize images.") (license license:gpl3+)))) + +(define-public emacs-synosaurus + (let ((commit "8bf95b935976ec0a1964cf175ed57cc5f6f93bdb")) + (package + (name "emacs-synosaurus") + (version (git-version "0.1.0" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/hpdeifel/synosaurus") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "15by9jccab6kyplxa6k0glzaivxkqdigl33gl2qi2cvy6f2q7gva")))) + (build-system emacs-build-system) + (propagated-inputs + `(("wordnet" ,wordnet))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((wn (assoc-ref inputs "wordnet"))) + ;; .el is read-only in git. + (chmod "synosaurus-wordnet.el" #o644) + ;; Specify the absolute file names of the various + ;; programs so that everything works out-of-the-box. + (emacs-substitute-variables + "synosaurus-wordnet.el" + ("wordnet-command" + (string-append wn "/bin/wn"))))))))) + (home-page "https://github.com/hpdeifel/synosaurus") + (synopsis "Extensible thesaurus mode for Emacs") + (description "Synosaurus is a thesaurus fontend for Emacs with pluggable +backends, including the @command{wordnet} offline backend.") + (license license:gpl3+)))) From 88600acc939365b4ffd45a8be74117a8cf8dc3dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 23 Sep 2018 22:10:50 +0200 Subject: [PATCH 063/909] system: Mention '--skip-checks' in initrd diagnostics. * gnu/system/mapped-devices.scm (check-device-initrd-modules): Add note about '--skip-checks'. --- gnu/system/mapped-devices.scm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnu/system/mapped-devices.scm b/gnu/system/mapped-devices.scm index af73dc608c..a874666463 100644 --- a/gnu/system/mapped-devices.scm +++ b/gnu/system/mapped-devices.scm @@ -157,7 +157,10 @@ these lines: ;; @dots{} (initrd-modules (append (list~{ ~s~}) %base-initrd-modules))) -@end example\n") +@end example + +If you think this diagnostic is inaccurate, use the @option{--skip-checks} +option of @command{guix system}.\n") missing))) (&error-location (location (source-properties->location location))))))))) From c122a2e509df98c4391750a066fecba37465eab3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 23 Sep 2018 22:11:35 +0200 Subject: [PATCH 064/909] serialization: Remove redundancy in 'write-file'. * guix/serialization.scm (write-file): Remove redundant 'member' call. --- guix/serialization.scm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/guix/serialization.scm b/guix/serialization.scm index 129374f541..87ad7eeec0 100644 --- a/guix/serialization.scm +++ b/guix/serialization.scm @@ -301,8 +301,7 @@ result of 'lstat'; exclude entries for which SELECT? does not return true." (filter-map (lambda (base) (let ((file (string-append directory "/" base))) - (and (not (member base '("." ".."))) - (select? file (lstat file)) + (and (select? file (lstat file)) base))) basenames)) From a387b0bebb151a766ca6a454a891f2370c96703c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 23 Sep 2018 22:24:07 +0200 Subject: [PATCH 065/909] store-copy: Display a progress bar when copying store items. * guix/build/store-copy.scm (populate-store): Add #:log-port parameter. Use 'progress-reporter/bar' to report progress. --- guix/build/store-copy.scm | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/guix/build/store-copy.scm b/guix/build/store-copy.scm index 2d9590d16f..64ade7885c 100644 --- a/guix/build/store-copy.scm +++ b/guix/build/store-copy.scm @@ -19,6 +19,7 @@ (define-module (guix build store-copy) #:use-module (guix build utils) #:use-module (guix sets) + #:use-module (guix progress) #:use-module (srfi srfi-1) #:use-module (srfi srfi-9) #:use-module (srfi srfi-26) @@ -167,7 +168,8 @@ REFERENCE-GRAPHS, a list of reference-graph files." (reduce + 0 (map file-size items))) -(define* (populate-store reference-graphs target) +(define* (populate-store reference-graphs target + #:key (log-port (current-error-port))) "Populate the store under directory TARGET with the items specified in REFERENCE-GRAPHS, a list of reference-graph files." (define store @@ -183,9 +185,20 @@ REFERENCE-GRAPHS, a list of reference-graph files." (mkdir-p store) (chmod store #o1775) - (for-each (lambda (thing) - (copy-recursively thing - (string-append target thing))) - (things-to-copy))) + + (let* ((things (things-to-copy)) + (len (length things)) + (progress (progress-reporter/bar len + (format #f "copying ~a store items" + len) + log-port))) + (call-with-progress-reporter progress + (lambda (report) + (for-each (lambda (thing) + (copy-recursively thing + (string-append target thing) + #:log (%make-void-port "w")) + (report)) + things))))) ;;; store-copy.scm ends here From f0addd6461658d13eadf5f6e3bdb89aa02a6e902 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 23 Sep 2018 22:51:51 +0200 Subject: [PATCH 066/909] database: 'register-items' shows a progress bar. * guix/store/database.scm (register-items): Add #:log-port. Use 'progress-reporter/bar' to show a progress report. (register-path): Pass #:log-port to 'register-items'. --- guix/store/database.scm | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/guix/store/database.scm b/guix/store/database.scm index 0879a95d0b..5d094faaf3 100644 --- a/guix/store/database.scm +++ b/guix/store/database.scm @@ -23,6 +23,7 @@ #:use-module (guix serialization) #:use-module (guix store deduplication) #:use-module (guix base16) + #:use-module (guix progress) #:use-module (guix build syscalls) #:use-module ((guix build utils) #:select (mkdir-p executable-file?)) @@ -234,7 +235,8 @@ be used internally by the daemon's build hook." #:prefix prefix #:state-directory state-directory #:deduplicate? deduplicate? #:reset-timestamps? reset-timestamps? - #:schema schema)) + #:schema schema + #:log-port (%make-void-port "w"))) (define %epoch ;; When it all began. @@ -245,12 +247,14 @@ be used internally by the daemon's build hook." (deduplicate? #t) (reset-timestamps? #t) registration-time - (schema (sql-schema))) + (schema (sql-schema)) + (log-port (current-error-port))) "Register all of ITEMS, a list of records as returned by 'read-reference-graph', in the database under PREFIX/STATE-DIRECTORY. ITEMS must be in topological order (with leaves first.) If the database is initially empty, apply SCHEMA to initialize it. REGISTRATION-TIME must be the -registration time to be recorded in the database; #f means \"now\"." +registration time to be recorded in the database; #f means \"now\". +Write a progress report to LOG-PORT." ;; Priority for options: first what is given, then environment variables, ;; then defaults. %state-directory, %store-directory, and @@ -302,4 +306,12 @@ registration time to be recorded in the database; #f means \"now\"." (mkdir-p db-dir) (parameterize ((sql-schema schema)) (with-database (string-append db-dir "/db.sqlite") db - (for-each (cut register db <>) items)))) + (let* ((prefix (format #f "registering ~a items" (length items))) + (progress (progress-reporter/bar (length items) + prefix log-port))) + (call-with-progress-reporter progress + (lambda (report) + (for-each (lambda (item) + (register db item) + (report)) + items))))))) From bb3b6ccb05550fbfbeb459c68819a752327d6e1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 23 Sep 2018 23:11:30 +0200 Subject: [PATCH 067/909] database: Register each store item only once. Fixes . Reported by Leo Famulari. * guix/store/database.scm (register-items): Check whether TO-REGISTER is in DB by calling 'path-id', and skip the reset-timestamps, registration, and deduplication phases when it is. --- guix/store/database.scm | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/guix/store/database.scm b/guix/store/database.scm index 5d094faaf3..341276bc30 100644 --- a/guix/store/database.scm +++ b/guix/store/database.scm @@ -290,18 +290,22 @@ Write a progress report to LOG-PORT." (define real-file-name (string-append store-dir "/" (basename (store-info-item item)))) - (let-values (((hash nar-size) (nar-sha256 real-file-name))) + ;; When TO-REGISTER is already registered, skip it. This makes a + ;; significant differences when 'register-closures' is called + ;; consecutively for overlapping closures such as 'system' and 'bootcfg'. + (unless (path-id db to-register) (when reset-timestamps? (reset-timestamps real-file-name)) - (sqlite-register db #:path to-register - #:references (store-info-references item) - #:deriver (store-info-deriver item) - #:hash (string-append "sha256:" - (bytevector->base16-string hash)) - #:nar-size nar-size - #:time registration-time) - (when deduplicate? - (deduplicate real-file-name hash #:store store-dir)))) + (let-values (((hash nar-size) (nar-sha256 real-file-name))) + (sqlite-register db #:path to-register + #:references (store-info-references item) + #:deriver (store-info-deriver item) + #:hash (string-append "sha256:" + (bytevector->base16-string hash)) + #:nar-size nar-size + #:time registration-time) + (when deduplicate? + (deduplicate real-file-name hash #:store store-dir))))) (mkdir-p db-dir) (parameterize ((sql-schema schema)) From b5460d95e970608bee7a794590be1b051b57d3a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 23 Sep 2018 23:29:31 +0200 Subject: [PATCH 068/909] vm: Disable deduplication for 'guix system vm-image'. * gnu/system/vm.scm (qemu-image): Pass #:deduplicate? #f to 'root-partition-initializer'. --- gnu/system/vm.scm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index 91e117b9f3..435501d726 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -390,7 +390,12 @@ the image." #:closures graphs #:copy-closures? #$copy-inputs? #:register-closures? #$register-closures? - #:system-directory #$os-drv)) + #:system-directory #$os-drv + + ;; Disable deduplication to speed things up, + ;; and because it doesn't help much for a + ;; single system generation. + #:deduplicate? #f)) (root-size #$(if (eq? 'guess disk-image-size) #~(max ;; Minimum 20 MiB root size From fce225471128c4a5246342b3aa1b7e53a8066211 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 23 Sep 2018 23:31:52 +0200 Subject: [PATCH 069/909] vm: Use "cache=loose" for all 9p mounts. This significantly improves read throughput when running things like "guix hash -r ...". * gnu/system/vm.scm (%linux-vm-file-systems): Add 'flags' for "store". Add "cache=loose" to every file system. --- gnu/system/vm.scm | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index 435501d726..a1b595d45d 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -99,21 +99,28 @@ (device "store") (type "9p") (needed-for-boot? #t) - (options "trans=virtio") + (flags '(read-only)) + (options "trans=virtio,cache=loose") (check? #f)) + + ;; The 9p documentation says that cache=loose is "intended for + ;; exclusive, read-only mounts", without additional details. In + ;; practice it seems to work well for these, and it's much faster than + ;; the default cache=none, especially when copying and registering + ;; store items. (file-system (mount-point "/xchg") (device "xchg") (type "9p") (needed-for-boot? #t) - (options "trans=virtio") + (options "trans=virtio,cache=loose") (check? #f)) (file-system (mount-point "/tmp") (device "tmp") (type "9p") (needed-for-boot? #t) - (options "trans=virtio") + (options "trans=virtio,cache=loose") (check? #f)))) (define not-config? From 8fa361ce63235335e266cb5ff21bf9da73f4d8dd Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 24 Sep 2018 00:23:19 +0200 Subject: [PATCH 070/909] gnu: fping: Update to 4.1. * gnu/packages/networking.scm (fping): Update to 4.1. --- gnu/packages/networking.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index abc616de3c..d1765cc46f 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -651,7 +651,7 @@ network frames.") (define-public fping (package (name "fping") - (version "4.0") + (version "4.1") (source (origin (method url-fetch) @@ -659,7 +659,7 @@ network frames.") version ".tar.gz")) (sha256 (base32 - "1kp81wchi79l8z8rrj602fpjrd8bi84y3i7fsaclzlwap5943sv7")))) + "0wxbvm480vij8dy4v1pi8f0c7010rx6bidg3qhsvkdf2ijhy4cr7")))) (build-system gnu-build-system) (home-page "http://fping.org/") (synopsis "Send ICMP ECHO_REQUEST packets to network hosts") From 25706b8fc9aa36085ecec085f08d5ad1808d4a96 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 24 Sep 2018 00:23:58 +0200 Subject: [PATCH 071/909] gnu: fping: Use HTTPS home page. * gnu/packages/networking.scm (fping)[home-page]: Use HTTPS. --- gnu/packages/networking.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index d1765cc46f..84224374c6 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -661,7 +661,7 @@ network frames.") (base32 "0wxbvm480vij8dy4v1pi8f0c7010rx6bidg3qhsvkdf2ijhy4cr7")))) (build-system gnu-build-system) - (home-page "http://fping.org/") + (home-page "https://fping.org/") (synopsis "Send ICMP ECHO_REQUEST packets to network hosts") (description "fping is a ping like program which uses the Internet Control Message From 0604d3cfceea13fad33c6188fa54f5fd16c74406 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 24 Sep 2018 00:29:46 +0200 Subject: [PATCH 072/909] gnu: nano: Update to 3.1. * gnu/packages/nano.scm (nano): Update to 3.1. --- gnu/packages/nano.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/nano.scm b/gnu/packages/nano.scm index 9396588fc8..8f96b605a6 100644 --- a/gnu/packages/nano.scm +++ b/gnu/packages/nano.scm @@ -30,7 +30,7 @@ (define-public nano (package (name "nano") - (version "3.0") + (version "3.1") (source (origin (method url-fetch) @@ -38,7 +38,7 @@ version ".tar.xz")) (sha256 (base32 - "1868hg9s584fwjrh0fzdrixmxc2qhw520z4q5iv68kjiajivr9g0")))) + "17kinzyv6vwgyx2d0ym1kp65qbf7kxzwpyg21ic1rijv1aj2rh0l")))) (build-system gnu-build-system) (inputs `(("gettext" ,gettext-minimal) From 899e1974a6f4a4ff041c035ff3494bd10a8069ac Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 21 Sep 2018 21:31:52 +0200 Subject: [PATCH 073/909] gnu: python-gitdb: Update to 2.0.4. * gnu/packages/version-control.scm (python-gitdb): Update to 2.0.4. [arguments]: Replace AND with equivalent but more 'accurate' BEGIN. --- gnu/packages/version-control.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 58c870df5a..204ec403f6 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -712,13 +712,13 @@ default) of the repository.") (define-public python-gitdb (package (name "python-gitdb") - (version "2.0.3") + (version "2.0.4") (source (origin (method url-fetch) (uri (pypi-uri "gitdb2" version)) (sha256 (base32 - "02azg62mr99b7cllyjrly77np3vw32y8nrxpa2xjapiyaga2j3mn")))) + "0i608q9c47rdsmyac1cn6s0hzwwj7cb957y8fc9wacc5lnw8ak5v")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases @@ -733,7 +733,7 @@ default) of the repository.") "file" (number->string filecount)) (lambda (port) (format port "~a" filecount)))) - (and + (begin (invoke "git" "init") (invoke "git" "config" "user.name" "Total Git") (invoke "git" "config" "user.email" "git@localhost") From 2f7ad2a788fa190dbe97038020322ce1c772feec Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 21 Sep 2018 20:24:51 +0200 Subject: [PATCH 074/909] gnu: workrave: Use Guix's built-in bootstrap phase. * gnu/packages/gnome.scm (workrave)[arguments]: Remove 'autoconf' phase. --- gnu/packages/gnome.scm | 7 ------- 1 file changed, 7 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 9f5ede8b07..ac898fb294 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -7244,13 +7244,6 @@ mp3, Ogg Vorbis and FLAC") (base32 "150qca8c552fakjlzkgarsxgp87l1xcwn19svqsa9d0cygqxjgia")))) (build-system glib-or-gtk-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'autogen - (lambda _ - (invoke "sh" "autogen.sh") - #t))))) (propagated-inputs `(("glib" ,glib) ("gtk+" ,gtk+) ("gdk-pixbuf" ,gdk-pixbuf) From 2c36baa56ffeaf451f42e5f5ff3b60705e17a30b Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Sun, 23 Sep 2018 14:58:06 +0200 Subject: [PATCH 075/909] gnu: parallel: Update to 20180922. * gnu/packages/parallel.scm (parallel): Update to 20180922. --- gnu/packages/parallel.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm index ec1fae6470..3dba2b8c00 100644 --- a/gnu/packages/parallel.scm +++ b/gnu/packages/parallel.scm @@ -48,7 +48,7 @@ (define-public parallel (package (name "parallel") - (version "20180822") + (version "20180922") (source (origin (method url-fetch) @@ -56,7 +56,7 @@ version ".tar.bz2")) (sha256 (base32 - "0jjs7fpvdjjb5v0j39a6k7hq9h5ap3db1j7vg1r2dq4swk23h9bm")))) + "07q7lzway2qf8mx6fb4q45jmirsc8pw6rgv03ifrp32jw3q8w1za")))) (build-system gnu-build-system) (arguments `(#:phases @@ -66,7 +66,7 @@ (for-each (lambda (file) (substitute* file - ;; Patch hard coded '/bin/sh' in the lin ending in: + ;; Patch hard coded '/bin/sh' in the line ending in: ;; $Global::shell = $ENV{'PARALLEL_SHELL'} || ;; parent_shell($$) || $ENV{'SHELL'} || "/bin/sh"; (("/bin/sh\\\";\n$") (string-append (which "sh") "\";\n")))) From c30fd002c8fe568d7a22ec2939825e68c88f8e31 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Sun, 23 Sep 2018 15:06:12 +0200 Subject: [PATCH 076/909] gnu: virtualgl: Update to 2.6. * gnu/packages/gl.scm (virtualgl): Update to 2.6. [inputs]: Add libxtst. --- gnu/packages/gl.scm | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index 28e283640d..b88fab4929 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -725,7 +725,7 @@ mixed vector/bitmap output.") (define-public virtualgl (package (name "virtualgl") - (version "2.5.2") + (version "2.6") (source (origin (method url-fetch) @@ -734,16 +734,17 @@ mixed vector/bitmap output.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0rnid3hwrry9d5d4m7sygq00xxx976rgk00a3557m9r5kxbmy476")))) + "1ck1d0w19cgyqvrb9mdlj6l5db90xf18yln71kdninlqxvpgj6h7")))) (arguments - `(#:tests? #f ;; no tests are available + `(#:tests? #f ; no tests are available #:configure-flags (list - (string-append "-DCMAKE_INSTALL_LIBDIR=" - (assoc-ref %outputs "out") "/lib") - "-DVGL_USESSL=1"))) ;; use OpenSSL + (string-append "-DCMAKE_INSTALL_LIBDIR=" + (assoc-ref %outputs "out") "/lib") + "-DVGL_USESSL=1"))) ; use OpenSSL (build-system cmake-build-system) (inputs `(("glu" ,glu) ("libjpeg-turbo" ,libjpeg-turbo) + ("libxtst" ,libxtst) ("mesa" ,mesa) ("openssl" ,openssl))) (native-inputs `(("pkg-config" ,pkg-config))) From a42b68480b3e73b8486ce808f6451ca880860574 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Sun, 23 Sep 2018 15:41:01 +0200 Subject: [PATCH 077/909] gnu: libiptcdata: Update to 1.0.5. * gnu/packages/image.scm (libiptcdata): Update to 1.0.5. [home-page]: Follow Debian's maintained upstream. --- gnu/packages/image.scm | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index c3eb48ad0d..b367e0799c 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -1368,16 +1368,18 @@ medical image data, e.g. magnetic resonance image (MRI) and functional MRI (define-public libiptcdata (package (name "libiptcdata") - (version "1.0.4") + (version "1.0.5") (source (origin (method url-fetch) - (uri (string-append "mirror://sourceforge/" name "/" name "/" - version "/" name "-" version ".tar.gz")) + (uri (string-append "https://github.com/ianw/libiptcdata" + "/releases/download/release_" + (string-join (string-split version #\.) "_") + "/" name "-" version ".tar.gz")) (sha256 (base32 - "03pfvkmmx762iydq0q207x2028d275pbdysfsgpmrr0ywy63pxkr")))) + "17m2bscc76r1bymjgb44fbbfrdsjfqyb2ivg9wchyllm8pgx1560")))) (build-system gnu-build-system) - (home-page "http://libiptcdata.sourceforge.net/") + (home-page "https://github.com/ianw/libiptcdata") (synopsis "IPTC metadata manipulation library") (description "Libiptcdata is a C library for manipulating the International Press From 3715e79ec8a310a0a957105b57d58b178f2f9d1a Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Sun, 23 Sep 2018 20:10:13 +0200 Subject: [PATCH 078/909] gnu: python-marshmallow: Update to 3.0.0b14. * gnu/packages/python.scm (python-marshmallow): Update to 3.0.0b14. --- gnu/packages/python.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 26829f050e..30bde632fb 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -12179,14 +12179,14 @@ address is valid and really exists.") (define-public python-marshmallow (package (name "python-marshmallow") - (version "3.0.0b3") + (version "3.0.0b14") (source (origin (method url-fetch) (uri (pypi-uri "marshmallow" version)) (sha256 (base32 - "07mcrij1yvk85lvgx44wwr9pc80xryghvlgayb057g1cazcypysd")))) + "1digk3f5cfk7wmlka65mc7bzsd96pbsgcsvp6pimd5b4ff9zb5p3")))) (build-system python-build-system) (propagated-inputs `(("python-dateutil" ,python-dateutil) From 68cbec027e8e48f1047b7cb1bfdd9b0dd65937ac Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Sun, 23 Sep 2018 23:58:51 +0200 Subject: [PATCH 079/909] gnu: python-decorator: Update to 4.3.0. * gnu/packages/python.scm (python-decorator): Update to 4.3.0. [arguments]: Run the test suite. --- gnu/packages/python.scm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 30bde632fb..0bd8086473 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -4340,15 +4340,14 @@ PNG, PostScript, PDF, and SVG file output.") (define-public python-decorator (package (name "python-decorator") - (version "4.2.1") + (version "4.3.0") (source (origin (method url-fetch) (uri (pypi-uri "decorator" version)) (sha256 - (base32 "03iaf116rm3w8b4agb8hzf6z9331mrvi4khfxq35zkx17sgxsikx")))) + (base32 "0308djallnh00v112y5b7nadl657ysmkp6vc8xn51d6yzc9zm7n3")))) (build-system python-build-system) - (arguments '(#:tests? #f)) ; no test target (home-page "https://pypi.python.org/pypi/decorator/") (synopsis "Python module to simplify usage of decorators") (description From dd29bd4ebcbfcdcb4c62e2c6c5cf4fd54c74af3b Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 24 Sep 2018 00:12:59 +0200 Subject: [PATCH 080/909] gnu: python-networkx: Update to 2.2. * gnu/packages/python.scm (python-networkx): Update to 2.2. --- gnu/packages/python.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 0bd8086473..69d87c6e17 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -5194,15 +5194,15 @@ interfaces in an easy and portable manner.") (define-public python-networkx (package (name "python-networkx") - (version "2.1") + (version "2.2") (source (origin (method url-fetch) (uri (pypi-uri "networkx" version ".zip")) (sha256 - (base32 "1ccb8mfz4m821k9y0cigkbq42q2sbb4dj5fbjshp0awp32j2q9v4")))) + (base32 "12swxb15299v9vqjsq4z8rgh5sdhvpx497xwnhpnb0gynrx6zra5")))) (build-system python-build-system) - ;; python-decorator is needed at runtime + ;; python-decorator is needed at runtime. (propagated-inputs `(("python-decorator" ,python-decorator))) (native-inputs From cd8aa06093f6491edc17b65608d1f528742f11a6 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 24 Sep 2018 00:15:18 +0200 Subject: [PATCH 081/909] gnu: python-networkx: Use HTTPS home page. * gnu/packages/python.scm (python-networkx)[home-page]: Use HTTPS. --- gnu/packages/python.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 69d87c6e17..ea641b8213 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -5208,7 +5208,7 @@ interfaces in an easy and portable manner.") (native-inputs `(("python-nose" ,python-nose) ("unzip" ,unzip))) - (home-page "http://networkx.github.io/") + (home-page "https://networkx.github.io/") (synopsis "Python module for creating and manipulating graphs and networks") (description "NetworkX is a Python package for the creation, manipulation, and study From 5c8031ff7382ec9079040d08ae5a05b4dd2352b7 Mon Sep 17 00:00:00 2001 From: Pierre Neidhardt Date: Mon, 17 Sep 2018 18:31:33 +0200 Subject: [PATCH 082/909] gnu: Prefix all Emacs packages with "emacs-". * gnu/packages/emacs.scm: Prefix all Emacs packages with "emacs-". This is to enforce consistency and so that `emacs-packages?' can reliably detect Emacs packages based on the "emacs-" prefix. --- gnu/packages/emacs.scm | 119 +++++++++++++++++++++++++++-------------- 1 file changed, 79 insertions(+), 40 deletions(-) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index cff1898d72..fbedd2f48d 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -335,9 +335,9 @@ editor (without an X toolkit)" ) ;;; Emacs hacking. ;;; -(define-public geiser +(define-public emacs-geiser (package - (name "geiser") + (name "emacs-geiser") (version "0.10") (source (origin (method url-fetch) @@ -370,7 +370,10 @@ implementation, Emacs and, ultimately, the schemer, giving them access to live metadata.") (license license:bsd-3))) -(define-public paredit +(define-public geiser + (deprecated-package "geiser" emacs-geiser)) + +(define-public emacs-paredit (package (name "emacs-paredit") (version "24") @@ -395,6 +398,9 @@ for those who may want transient periods of unbalanced parentheses, such as when typing parentheses directly or commenting out code line by line.") (license license:gpl3+))) +(define-public paredit + (deprecated-package "paredit" emacs-paredit)) + (define-public git-modes (package (name "emacs-git-modes") @@ -444,9 +450,9 @@ For remote processes a substitute is provided, which communicates with Emacs on stdout instead of using a socket as the Emacsclient does.") (license license:gpl3+))) -(define-public magit +(define-public emacs-magit (package - (name "magit") + (name "emacs-magit") (version "2.13.0") (source (origin (method url-fetch) @@ -512,9 +518,12 @@ cherry picking, reverting, merging, rebasing, and other common Git operations.") (license license:gpl3+))) -(define-public magit-svn +(define-public magit + (deprecated-package "magit" emacs-magit)) + +(define-public emacs-magit-svn (package - (name "magit-svn") + (name "emacs-magit-svn") (version "2.2.0") (source (origin (method url-fetch) @@ -531,7 +540,7 @@ operations.") ("gzip" ,gzip))) (propagated-inputs `(("dash" ,emacs-dash) ("with-editor" ,emacs-with-editor) - ("magit" ,magit))) + ("magit" ,emacs-magit))) (arguments `(#:modules ((guix build utils) (guix build emacs-utils)) @@ -577,6 +586,9 @@ operations.") support for Git-SVN.") (license license:gpl3+))) +(define-public magit-svn + (deprecated-package "magit-svn" emacs-magit-svn)) + (define-public emacs-magit-popup (package (name "emacs-magit-popup") @@ -641,9 +653,9 @@ Gitlab APIs from Emacs packages. It abstracts access to API resources using only a handful of functions that are not resource-specific.") (license license:gpl3+))) -(define-public haskell-mode +(define-public emacs-haskell-mode (package - (name "haskell-mode") + (name "emacs-haskell-mode") (version "16.1") (source (origin (method url-fetch) @@ -731,7 +743,10 @@ only a handful of functions that are not resource-specific.") programs.") (license license:gpl3+))) -(define-public flycheck +(define-public haskell-mode + (deprecated-package "haskell-mode" emacs-haskell-mode)) + +(define-public emacs-flycheck (package (name "emacs-flycheck") (version "31") @@ -767,6 +782,9 @@ different tools. It highlights errors and warnings inline in the buffer, and provides an optional IDE-like error list.") (license license:gpl3+))) ;+GFDLv1.3+ for the manual +(define-public flycheck + (deprecated-package "flycheck" emacs-flycheck)) + ;;; ;;; Web browsing. @@ -910,7 +928,7 @@ provides an optional IDE-like error list.") ;;; Multimedia. ;;; -(define-public emms +(define-public emacs-emms (package (name "emacs-emms") (version "5.0") @@ -1048,9 +1066,12 @@ light user interface.") (home-page "https://www.gnu.org/software/emms/") (license license:gpl3+))) +(define-public emms + (deprecated-package "emacs-emms" emacs-emms)) + (define-public emacs-emms-player-mpv ;; A new mpv backend is included in Emms from 5.0. - (deprecated-package "emacs-emms-player-mpv" emms)) + (deprecated-package "emacs-emms-player-mpv" emacs-emms)) (define-public emacs-emms-mode-line-cycle (package @@ -1080,9 +1101,9 @@ within a specified width. It is useful for displaying long track titles.") ;;; Miscellaneous. ;;; -(define-public bbdb +(define-public emacs-bbdb (package - (name "bbdb") + (name "emacs-bbdb") (version "3.1.2") (source (origin (method url-fetch) @@ -1121,6 +1142,9 @@ like. It can be linked with various Emacs mail clients (Message and Mail mode, Rmail, Gnus, MH-E, and VM). BBDB is fully customizable.") (license license:gpl3+))) +(define-public bbdb + (deprecated-package "bbdb" emacs-bbdb)) + (define-public emacs-aggressive-indent (package (name "emacs-aggressive-indent") @@ -1721,7 +1745,7 @@ type, for example: packages, buffers, files, etc.") `(("guile" ,guile-2.2) ("guix" ,guix))) (propagated-inputs - `(("geiser" ,geiser) + `(("geiser" ,emacs-geiser) ("guile-gcrypt" ,guile-gcrypt) ("dash" ,emacs-dash) ("bui" ,emacs-bui) @@ -2377,7 +2401,7 @@ in Lisp modes.") "1k0sm552iawi49v4zis6dbb81d1rzgky9v0dpv7nj31gnb7bmy7k")))) (build-system emacs-build-system) (native-inputs - `(("ert-runner" ,ert-runner))) + `(("ert-runner" ,emacs-ert-runner))) (arguments `(#:tests? #t #:test-command '("ert-runner"))) @@ -2663,7 +2687,7 @@ framework for Emacs Lisp to be used with @code{ert}.") (native-inputs `(("emacs-ert-expectations" ,emacs-ert-expectations) ("emacs-undercover" ,emacs-undercover) - ("ert-runner" ,ert-runner))) + ("ert-runner" ,emacs-ert-runner))) (synopsis "Simple asynchronous functions for Emacs Lisp") (description "The @code{deferred.el} library provides support for asynchronous tasks. @@ -2672,7 +2696,7 @@ The API is almost the same as that of for asynchronous tasks.") (license license:gpl3+))) -(define-public butler +(define-public emacs-butler (package (name "emacs-butler") (version "0.2.4") @@ -2698,6 +2722,9 @@ view the build status of those servers' build jobs, and possibly to trigger build jobs.") (license license:gpl3+))) +(define-public butler + (deprecated-package "emacs-butler" emacs-butler)) + (define-public emacs-company (package (name "emacs-company") @@ -2823,7 +2850,7 @@ completion candidate when using the Company text completion framework.") simultaneous cursors.") (license license:gpl3+))) -(define-public typo +(define-public emacs-typo (package (name "emacs-typo") (version "1.1") @@ -2847,6 +2874,9 @@ automatically inserts a Unicode opening or closing quotation mark, depending on context.") (license license:gpl3+))) +(define-public typo + (deprecated-package "emacs-typo" emacs-typo)) + (define-public emacs-scheme-complete (let ((commit "9b5cf224bf2a5994bc6d5b152ff487517f1a9bb5")) (package @@ -3982,7 +4012,7 @@ state and will work even without lispy being enabled.") (native-inputs `(("emacs-dash" ,emacs-dash) ("emacs-s" ,emacs-s) - ("ert-runner" ,ert-runner))) + ("ert-runner" ,emacs-ert-runner))) (arguments `(#:tests? #t #:test-command '("ert-runner"))) @@ -4354,7 +4384,7 @@ indentation and filling of comments and C preprocessor fontification.") (propagated-inputs `(("emacs-dash" ,emacs-dash) ("emacs-s" ,emacs-s) - ("emacs-flycheck" ,flycheck) + ("emacs-flycheck" ,emacs-flycheck) ("emacs-typescript-mode" ,emacs-typescript-mode))) (home-page "https://github.com/ananthakumaran/tide") (synopsis "Typescript IDE for Emacs") @@ -4519,7 +4549,7 @@ provide the historic behavior of @code{flet}, as well as `(#:tests? #t #:test-command '("ert-runner"))) (native-inputs - `(("ert-runner" ,ert-runner))) + `(("ert-runner" ,emacs-ert-runner))) (propagated-inputs `(("emacs-el-x" ,emacs-el-x))) (home-page "https://github.com/sigma/mocker.el") @@ -4585,7 +4615,7 @@ functions to assist in reviewing changes on files.") #:tests? #t #:test-command '("ert-runner"))) (native-inputs - `(("ert-runner" ,ert-runner) + `(("ert-runner" ,emacs-ert-runner) ("emacs-mocker" ,emacs-mocker))) (home-page "https://github.com/jorgenschaefer/pyvenv") (synopsis "Virtualenv minor mode for Emacs") @@ -4670,7 +4700,7 @@ indentation (space indentation only). ("pyvenv" ,emacs-pyvenv) ("s" ,emacs-s))) (native-inputs - `(("ert-runner" ,ert-runner) + `(("ert-runner" ,emacs-ert-runner) ("emacs-f" ,emacs-f) ("python" ,python-wrapper) ("python-autopep8" ,python-autopep8) @@ -6932,9 +6962,9 @@ Emacs.") ;; Tests for ert-runner have a circular dependency with ecukes, and therefore ;; cannot be run -(define-public ert-runner +(define-public emacs-ert-runner (package - (name "ert-runner") + (name "emacs-ert-runner") (version "0.7.0") (source (origin @@ -6977,6 +7007,9 @@ using ERT. It assumes a certain test structure setup and can therefore make running tests easier.") (license license:gpl3+))) +(define-public ert-runner + (deprecated-package "ert-runner" emacs-ert-runner)) + (define-public emacs-disable-mouse (package (name "emacs-disable-mouse") @@ -7020,7 +7053,7 @@ running a customisable handler command (@code{ignore} by default). ") (native-inputs `(("emacs-dash" ,emacs-dash) ("emacs-shut-up" ,emacs-shut-up) - ("ert-runner" ,ert-runner))) + ("ert-runner" ,emacs-ert-runner))) (arguments `(#:tests? #t #:test-command '("ert-runner"))) @@ -7251,7 +7284,7 @@ settings).") "1a4b0lsmwq84qfx51c5xy4fryhb1ysld4fhgw2vr37izf53379sb")))) (build-system emacs-build-system) (native-inputs - `(("ert-runner" ,ert-runner))) + `(("ert-runner" ,emacs-ert-runner))) (arguments `(#:tests? #t #:test-command '("ert-runner" "tests"))) @@ -7507,7 +7540,7 @@ Idris.") `(("emacs-f" ,emacs-f) ("emacs-s" ,emacs-s))) (native-inputs - `(("ert-runner" ,ert-runner))) + `(("ert-runner" ,emacs-ert-runner))) (arguments `(#:tests? #t #:test-command '("ert-runner"))) @@ -7977,9 +8010,9 @@ supports multiple backends such as @code{vlc}, @code{mpg123}, @code{afplay}.") (license license:gpl2+))) -(define-public groovy-emacs-modes +(define-public emacs-groovy-modes (package - (name "groovy-emacs-modes") + (name "emacs-groovy-modes") (version "2.0") (source (origin (method url-fetch) @@ -8001,7 +8034,10 @@ Groovy source files, REPL integration with run-groovy and Grails project navigation with the grails mode.") (license license:gpl3+))) -(define-public org-tree-slide +(define-public groovy-emacs-modes + (deprecated-package "groovy-emacs-modes" emacs-groovy-modes)) + +(define-public emacs-org-tree-slide (let ((commit "dff8f1a4a64c8dd0a1fde0b0131e2fe186747134") (revision "0")) (package @@ -8023,6 +8059,9 @@ navigation with the grails mode.") @kbd{C-<} to jump to the next and previous slide.") (license license:gpl3+)))) +(define-public org-tree-slide + (deprecated-package "emacs-org-tree-slide" emacs-org-tree-slide)) + (define-public emacs-scratch-el (let ((commit "2cdf2b841ce7a0987093f65b0cc431947549f897") (revision "1")) @@ -10095,7 +10134,7 @@ time is being spent during Emacs startup in order to optimize startup time.") (define-public emacs-emms-player-simple-mpv ;; A new mpv backend is included in Emms from 5.0. - (deprecated-package "emacs-emms-player-simple-mpv" emms)) + (deprecated-package "emacs-emms-player-simple-mpv" emacs-emms)) (define-public emacs-magit-org-todos-el (let ((commit "df206287737b9671f2e36ae7b1474ebbe9940d2a")) @@ -10113,7 +10152,7 @@ time is being spent during Emacs startup in order to optimize startup time.") (base32 "0kdp7k7jnnrkhsg0xh1c3h7iz0vgi120gf5xwl1hxy61avivnxrn")))) (propagated-inputs - `(("magit" ,magit))) + `(("magit" ,emacs-magit))) (build-system emacs-build-system) (home-page "https://github.com/danielma/magit-org-todos.el") (synopsis "Get todo.org into Emacs Magit status") @@ -10952,7 +10991,7 @@ through the symbol: @command{this-fn}.") `(("emacs-el-mock" ,emacs-el-mock) ("emacs-noflet" ,emacs-noflet) ("emacs-undercover" ,emacs-undercover) - ("ert-runner" ,ert-runner))) + ("ert-runner" ,emacs-ert-runner))) (propagated-inputs `(("emacs-f" ,emacs-f) ("emacs-popup" ,emacs-popup))) @@ -11139,7 +11178,7 @@ Org-mode file, and citations of Zotero items in Pandoc Markdown files.") (build-system emacs-build-system) (propagated-inputs `(("emacs-evil" ,emacs-evil) - ("magit" ,magit))) + ("magit" ,emacs-magit))) (home-page "https://github.com/emacs-evil/evil-magit") (synopsis "Evil-based key bindings for Magit") @@ -11412,7 +11451,7 @@ you searched for and execute it, or view its documentation.") (build-system emacs-build-system) (propagated-inputs `(("emacs-helm" ,emacs-helm) - ("emacs-emms" ,emms))) + ("emacs-emms" ,emacs-emms))) (home-page "https://github.com/emacs-helm/helm-emms") (synopsis "Emms for Helm") @@ -11467,7 +11506,7 @@ See @code{helm-exwm-switch-browser} for an example.") (build-system emacs-build-system) (propagated-inputs `(("emacs-dash" ,emacs-dash) - ("emacs-flycheck" ,flycheck) + ("emacs-flycheck" ,emacs-flycheck) ("emacs-helm" ,emacs-helm))) (home-page "https://github.com/yasuyk/helm-flycheck") (synopsis "Show Flycheck errors with Helm") @@ -12029,7 +12068,7 @@ buffers – other modes on the TODO list). ("emacs-dash" ,emacs-dash) ("emacs-f" ,emacs-f) ("emacs-hl-todo" ,emacs-hl-todo) - ("magit" ,magit) + ("magit" ,emacs-magit) ("emacs-pcre2el" ,emacs-pcre2el) ("emacs-s" ,emacs-s))) (home-page "https://github.com/alphapapa/magit-todos") From a434730f2ebc39fcda7a8d0709c7f5adffa69299 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 24 Sep 2018 13:23:32 +0200 Subject: [PATCH 083/909] gnu: Add r-xbioc. * gnu/packages/bioinformatics.scm (r-xbioc): New variable. --- gnu/packages/bioinformatics.scm | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index b619866ba3..d92fbd7de9 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -13760,3 +13760,36 @@ sequencing data.") ;; This is free software but the license variant is unclear: ;; . (license license:bsd-3))) + +(define-public r-xbioc + (let ((revision "1") + (commit "f798c187e376fd1ba27abd559f47bbae7e3e466b")) + (package + (name "r-xbioc") + (version (git-version "0.1.15" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/renozao/xbioc.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "03hffh2f6z71y6l6dqpa5cql3hdaw7zigdi8sm2dzgx379k9rgrr")))) + (build-system r-build-system) + (propagated-inputs + `(("r-annotationdbi" ,r-annotationdbi) + ("r-assertthat" ,r-assertthat) + ("r-biobase" ,r-biobase) + ("r-biocinstaller" ,r-biocinstaller) + ("r-digest" ,r-digest) + ("r-pkgmaker" ,r-pkgmaker) + ("r-plyr" ,r-plyr) + ("r-reshape2" ,r-reshape2) + ("r-stringr" ,r-stringr))) + (home-page "https://github.com/renozao/xbioc/") + (synopsis "Extra base functions for Bioconductor") + (description "This package provides extra utility functions to perform +common tasks in the analysis of omics data, leveraging and enhancing features +provided by Bioconductor packages.") + (license license:gpl3+)))) From 28829c040f92399c0705f968f232543e97e5f5f9 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 24 Sep 2018 13:23:44 +0200 Subject: [PATCH 084/909] gnu: Add r-cssam. * gnu/packages/bioinformatics.scm (r-cssam): New variable. --- gnu/packages/bioinformatics.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index d92fbd7de9..2366843d87 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -13793,3 +13793,34 @@ sequencing data.") common tasks in the analysis of omics data, leveraging and enhancing features provided by Bioconductor packages.") (license license:gpl3+)))) + +(define-public r-cssam + (let ((revision "1") + (commit "9ec58c982fa551af0d80b1a266890d92954833f2")) + (package + (name "r-cssam") + (version (git-version "1.4" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/shenorrLab/csSAM.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "128syf9v39gk0z3ip000qpsjbg6l1siyq6c8b0hz41dzg5achyb3")))) + (build-system r-build-system) + (propagated-inputs + `(("r-formula" ,r-formula) + ("r-ggplot2" ,r-ggplot2) + ("r-pkgmaker" ,r-pkgmaker) + ("r-plyr" ,r-plyr) + ("r-rngtools" ,r-rngtools) + ("r-scales" ,r-scales))) + (home-page "https://github.com/shenorrLab/csSAM/") + (synopsis "Cell type-specific statistical analysis of microarray") + (description "This package implements the method csSAM that computes +cell-specific differential expression from measured cell proportions using +SAM.") + ;; Any version + (license license:lgpl2.1+)))) From e72702475da2379e10ca09e724e10a9bceceef1b Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 24 Sep 2018 13:24:13 +0200 Subject: [PATCH 085/909] gnu: Add r-bseqsc. * gnu/packages/bioinformatics.scm (r-bseqsc): New variable. --- gnu/packages/bioinformatics.scm | 45 +++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 2366843d87..e74abf005f 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -13824,3 +13824,48 @@ cell-specific differential expression from measured cell proportions using SAM.") ;; Any version (license license:lgpl2.1+)))) + +(define-public r-bseqsc + (let ((revision "1") + (commit "fef3f3e38dcf3df37103348b5780937982b43b98")) + (package + (name "r-bseqsc") + (version (git-version "1.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/shenorrLab/bseqsc.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1prw13wa20f7wlc3gkkls66n1kxz8d28qrb8icfqdwdnnv8w5qg8")))) + (build-system r-build-system) + (propagated-inputs + `(("r-abind" ,r-abind) + ("r-annotationdbi" ,r-annotationdbi) + ("r-biobase" ,r-biobase) + ("r-cssam" ,r-cssam) + ("r-dplyr" ,r-dplyr) + ("r-e1071" ,r-e1071) + ("r-edger" ,r-edger) + ("r-ggplot2" ,r-ggplot2) + ("r-nmf" ,r-nmf) + ("r-openxlsx" ,r-openxlsx) + ("r-pkgmaker" ,r-pkgmaker) + ("r-plyr" ,r-plyr) + ("r-preprocesscore" ,r-preprocesscore) + ("r-rngtools" ,r-rngtools) + ("r-scales" ,r-scales) + ("r-stringr" ,r-stringr) + ("r-xbioc" ,r-xbioc))) + (home-page "https://github.com/shenorrLab/bseqsc") + (synopsis "Deconvolution of bulk sequencing experiments using single cell data") + (description "BSeq-sc is a bioinformatics analysis pipeline that +leverages single-cell sequencing data to estimate cell type proportion and +cell type-specific gene expression differences from RNA-seq data from bulk +tissue samples. This is a companion package to the publication \"A +single-cell transcriptomic map of the human and mouse pancreas reveals inter- +and intra-cell population structure.\" Baron et al. Cell Systems (2016) +@url{https://www.ncbi.nlm.nih.gov/pubmed/27667365}.") + (license license:gpl2+)))) From 94282358fd5ca5be85dbf3ccadc7693259f7a72f Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Mon, 24 Sep 2018 17:46:18 +0530 Subject: [PATCH 086/909] gnu: m17n-db: Update to 1.8.0. * gnu/packages/emacs.scm (m17n-db): Update to 1.8.0. --- gnu/packages/emacs.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index fbedd2f48d..cc2560dffa 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -5538,14 +5538,15 @@ extensibility.") (define-public m17n-db (package (name "m17n-db") - (version "1.7.0") + (version "1.8.0") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/m17n/m17n-db-" version ".tar.gz")) (sha256 - (base32 "1w08hnsbknrcjlzp42c99bgwc9hzsnf5m4apdv0dacql2s09zfm2")))) + (base32 + "0vfw7z9i2s9np6nmx1d4dlsywm044rkaqarn7akffmb6bf1j6zv5")))) (build-system gnu-build-system) (inputs `(("gettext" ,gettext-minimal))) From 53c64d7c9303d52cbacdaca5d182175d472c53db Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Mon, 24 Sep 2018 17:46:47 +0530 Subject: [PATCH 087/909] gnu: m17n-lib: Update to 1.8.0. * gnu/packages/emacs.scm (m17n-lib): Update to 1.8.0. --- gnu/packages/emacs.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index cc2560dffa..f29040c372 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -5573,14 +5573,15 @@ This package contains the library database.") (define-public m17n-lib (package (name "m17n-lib") - (version "1.7.0") + (version "1.8.0") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/m17n/m17n-lib-" version ".tar.gz")) (sha256 - (base32 "10yv730i25g1rpzv6q49m6xn4p8fjm7jdwvik2h70sn8w3hm7f4f")))) + (base32 + "0jp61y09xqj10mclpip48qlfhniw8gwy8b28cbzxy8hq8pkwmfkq")))) (build-system gnu-build-system) (inputs `(("fribidi" ,fribidi) From d08b3258435254cc6ade95b84a6c53e59cc191e6 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 24 Sep 2018 16:20:19 +0200 Subject: [PATCH 088/909] gnu: Add python-grequests. * gnu/packages/python-web.scm (python-grequests): New variable. --- gnu/packages/python-web.scm | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index 226b9b631b..6ded2f75ab 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2016, 2017 Danny Milosavljevic ;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge ;;; Copyright © 2016, 2017 Marius Bakke -;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus +;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus ;;; Copyright © 2017 Roel Janssen ;;; Copyright © 2016, 2017 Julien Lepiller ;;; Copyright © 2016, 2017 Nils Gillmann @@ -1592,6 +1592,29 @@ library.") (define-public python2-responses (package-with-python2 python-responses)) +(define-public python-grequests + (package + (name "python-grequests") + (version "0.3.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "grequests" version)) + (sha256 + (base32 + "1j9icncllbkv7x5719b20mx670c6q1jrdx1sakskkarvx3pc8h8g")))) + (build-system python-build-system) + (propagated-inputs + `(("python-gevent" ,python-gevent) + ("python-requests" ,python-requests))) + (native-inputs + `(("python-nose" ,python-nose))) + (home-page "https://github.com/kennethreitz/grequests") + (synopsis "Python library for asynchronous HTTP requests") + (description "GRequests is a Python library that allows you to use +@code{Requests} with @code{Gevent} to make asynchronous HTTP Requests easily") + (license license:bsd-2))) + (define-public python-geventhttpclient (package (name "python-geventhttpclient") From 0750f344eceb10e8ddd81ed146ae2e1aa897f2d4 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 24 Sep 2018 16:20:32 +0200 Subject: [PATCH 089/909] gnu: Add python-hawkauthlib. * gnu/packages/python-web.scm (python-hawkauthlib): New variable. --- gnu/packages/python-web.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index 6ded2f75ab..c38ccea216 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -2649,3 +2649,25 @@ for URL parsing and changing.") (define-public python2-google-api-client (package-with-python2 python-google-api-client)) + +(define-public python-hawkauthlib + (package + (name "python-hawkauthlib") + (version "2.0.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "hawkauthlib" version)) + (sha256 + (base32 + "03ai47s4h8nfnrf25shbfvkm1b9n1ccd4nmmj280sg1fayi69zgg")))) + (build-system python-build-system) + (propagated-inputs + `(("python-requests" ,python-requests) + ("python-webob" ,python-webob))) + (home-page "https://github.com/mozilla-services/hawkauthlib") + (synopsis "Hawk Access Authentication protocol") + (description + "This is a low-level Python library for implementing Hawk Access Authentication, +a simple HTTP request-signing scheme.") + (license license:mpl2.0))) From 084e14cc37d893703b526d8f8f9220f7ee3aa0b3 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 24 Sep 2018 16:20:42 +0200 Subject: [PATCH 090/909] gnu: Add python-pybrowserid. * gnu/packages/python-web.scm (python-pybrowserid): New variable. --- gnu/packages/python-web.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index c38ccea216..68a0d78db5 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -2671,3 +2671,26 @@ for URL parsing and changing.") "This is a low-level Python library for implementing Hawk Access Authentication, a simple HTTP request-signing scheme.") (license license:mpl2.0))) + +(define-public python-pybrowserid + (package + (name "python-pybrowserid") + (version "0.14.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "PyBrowserID" version)) + (sha256 + (base32 + "1qvi79kfb8x9kxkm5lw2mp42hm82cpps1xknmsb5ghkwx1lpc8kc")))) + (build-system python-build-system) + (propagated-inputs + `(("python-requests" ,python-requests))) + (native-inputs + `(("python-mock" ,python-mock))) + (home-page "https://github.com/mozilla/PyBrowserID") + (synopsis "Python library for the BrowserID protocol") + (description + "This is a Python client library for the BrowserID protocol that +underlies Mozilla Persona.") + (license license:mpl2.0))) From f45bb3cc0fc4e687f966a8f2fabce73e0c6f31f7 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 24 Sep 2018 16:20:51 +0200 Subject: [PATCH 091/909] gnu: Add python-pyfxa. * gnu/packages/python-web.scm (python-pyfxa): New variable. --- gnu/packages/python-web.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index 68a0d78db5..6df33fe41d 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -2694,3 +2694,34 @@ a simple HTTP request-signing scheme.") "This is a Python client library for the BrowserID protocol that underlies Mozilla Persona.") (license license:mpl2.0))) + +(define-public python-pyfxa + (package + (name "python-pyfxa") + (version "0.6.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "PyFxA" version)) + (sha256 + (base32 + "0axl16fyrz2r88gnw4b12mk7dpkqscv8c4wsc1y5hicl7bsbc4fm")))) + (build-system python-build-system) + (arguments '(#:tests? #f)) ; 17 tests require network access + (propagated-inputs + `(("python-cryptography" ,python-cryptography) + ("python-hawkauthlib" ,python-hawkauthlib) + ("python-pybrowserid" ,python-pybrowserid) + ("python-requests" ,python-requests) + ("python-six" ,python-six))) + (native-inputs + `(("python-grequests" ,python-grequests) + ("python-mock" ,python-mock) + ("python-responses" ,python-responses) + ("python-unittest2" ,python-unittest2))) + (home-page "https://github.com/mozilla/PyFxA") + (synopsis "Firefox Accounts client library for Python") + (description + "This is a Python library for interacting with the Firefox Accounts +ecosystem.") + (license license:mpl2.0))) From 000147811b15465cd0f67d2635ba7d807d865afd Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 24 Sep 2018 16:21:11 +0200 Subject: [PATCH 092/909] gnu: eolie: Update to 0.9.37. * gnu/packages/gnome.scm (eolie): Update to 0.9.37. [source]: Fetch from gitlab. [build-system]: Use meson-build-system. [arguments]: Remove custom phases; set #:glib-or-gtk?. [native-inputs]: Remove meson-for-build and ninja; add glib:bin. [inputs]: Add python-pyfxa and python-pycrypto. --- gnu/packages/gnome.scm | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index ac898fb294..1ca354a432 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -115,6 +115,8 @@ #:use-module (gnu packages pkg-config) #:use-module (gnu packages pulseaudio) #:use-module (gnu packages python) + #:use-module (gnu packages python-crypto) + #:use-module (gnu packages python-web) #:use-module (gnu packages rdesktop) #:use-module (gnu packages scanner) #:use-module (gnu packages selinux) @@ -4088,29 +4090,20 @@ work and the interface is well tested.") (define-public eolie (package (name "eolie") - (version "0.9.15") + (version "0.9.37") (source (origin (method url-fetch) - (uri (string-append "https://github.com/gnumdk/eolie/" - "releases/download/" version - "/eolie-" version ".tar.xz")) + (uri (string-append "https://gitlab.gnome.org/World/eolie/" + "uploads/4341cb428b7a45670308ee3fb3fa07dd/" + "eolie-" version ".tar.xz")) (sha256 (base32 - "0glydxp1xh85gfidk1l9miqn6qxdbvvk5s3iy0pjlv8nrs3263jd")))) - (build-system glib-or-gtk-build-system) + "126m0nwwy3lqv7z8aj9hiwangih03b1nlkg3xja9p7wbf7zcvp2n")))) + (build-system meson-build-system) (arguments - `(#:phases + `(#:glib-or-gtk? #t + #:phases (modify-phases %standard-phases - (delete 'configure) - (replace 'build - (lambda* (#:key outputs #:allow-other-keys) - (invoke "meson" "build" - "--prefix" (assoc-ref outputs "out")))) - (replace 'check - (lambda _ (invoke "ninja" "-C" "build" "test"))) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (invoke "ninja" "-C" "build" "install"))) (add-after 'wrap 'wrap-more (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -4134,9 +4127,8 @@ work and the interface is well tested.") ("intltool" ,intltool) ("itstool" ,itstool) ("pkg-config" ,pkg-config) - ("meson" ,meson-for-build) - ("ninja" ,ninja) ("python" ,python) + ("glib:bin" ,glib "bin") ("gtk+" ,gtk+ "bin"))) (inputs `(("gobject-introspection" ,gobject-introspection) @@ -4146,8 +4138,10 @@ work and the interface is well tested.") ("atk" ,atk) ; propagated by gtk+, but we need it in LD_LIBRARY_PATH ("python" ,python-wrapper) ("python-dateutil" ,python-dateutil) + ("python-pyfxa" ,python-pyfxa) ("python-pygobject" ,python-pygobject) ("python-pycairo" ,python-pycairo) + ("python-pycrypto" ,python-pycrypto) ("libsecret" ,libsecret) ("gtkspell3" ,gtkspell3) ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) From 8ae540a2c024f9b1b8bce65dbe1dfbf4e926bc77 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 24 Sep 2018 00:54:39 +0200 Subject: [PATCH 093/909] gnu: ocaml-ssl: Don't use unstable tarball. * gnu/packages/ocaml.scm (ocaml-ssl)[source]: Use GIT-FETCH and GIT-FILE-NAME. --- gnu/packages/ocaml.scm | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index 7859696406..0756aecd6d 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -65,6 +65,7 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system ocaml) #:use-module (guix download) + #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix svn-download) @@ -1650,12 +1651,13 @@ lets the client choose the concrete timeline.") (version "0.5.5") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/savonet/ocaml-ssl/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/savonet/ocaml-ssl.git") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "15p7652cvzdrlqxc1af11mg07wasxr1fsaj44gcmmh6bmav7wfzq")))) + "0fviq8xhp3qk7pmkl7knchywsipxgb7p0z489hj8qnf2sx8xzdmy")))) (build-system ocaml-build-system) (arguments `(#:tests? #f #:make-flags (list "OCAMLFIND_LDCONF=ignore") From c60d5a25280d77ae22061ac08677e07db38e8fbd Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 24 Sep 2018 01:08:09 +0200 Subject: [PATCH 094/909] gnu: libmesode: Don't use unstable tarball. * gnu/packages/messaging.scm (libmesode)[source]: Use GIT-FETCH and GIT-FILE-NAME. --- gnu/packages/messaging.scm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index 42a0847b7a..3174b4ef4e 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -1474,13 +1474,14 @@ is also scriptable and extensible via Guile.") (name "libmesode") (version "0.9.1") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/boothj5/libmesode/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/boothj5/libmesode.git") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "0iaj56fkd5bjvqpvq3324ni895rmbj1akbfqipjydnghfwaym4z6")))) + "1zb1x422zkpnxrz9d2b7pmi8ms60lbw49yh78mydqfypsmj2iyfh")))) (build-system gnu-build-system) (inputs `(("expat" ,expat) From b44a18c8f26e66c2cbfff4740bff29949a9eb684 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 24 Sep 2018 01:12:00 +0200 Subject: [PATCH 095/909] gnu: libmesode: Update to 0.9.2. * gnu/packages/messaging.scm (libmesode): Update to 0.9.2. --- gnu/packages/messaging.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index 3174b4ef4e..33e9d2ffe3 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -1472,7 +1472,7 @@ is also scriptable and extensible via Guile.") (define-public libmesode (package (name "libmesode") - (version "0.9.1") + (version "0.9.2") (source (origin (method git-fetch) (uri (git-reference @@ -1481,7 +1481,7 @@ is also scriptable and extensible via Guile.") (file-name (git-file-name name version)) (sha256 (base32 - "1zb1x422zkpnxrz9d2b7pmi8ms60lbw49yh78mydqfypsmj2iyfh")))) + "06f5nfaypvxrbsinxa1k2vrxrs7kqmg38g4wwwk5d63hpn1pj8ak")))) (build-system gnu-build-system) (inputs `(("expat" ,expat) From 25ab91c85c8901e6e9b36042fa126e24ceb57263 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 24 Sep 2018 01:35:17 +0200 Subject: [PATCH 096/909] gnu: gloox: Update to 1.0.21. * gnu/packages/messaging.scm (gloox): Update to 1.0.21. --- gnu/packages/messaging.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index 33e9d2ffe3..9b1aea788c 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -1135,7 +1135,7 @@ with several different talk daemons at the same time.") (define-public gloox (package (name "gloox") - (version "1.0.17") + (version "1.0.21") (source (origin (method url-fetch) @@ -1143,7 +1143,7 @@ with several different talk daemons at the same time.") version ".tar.bz2")) (sha256 (base32 - "09c01jr5nrm7f1ly42wg0pqqscmp48pv8y2fjx1vwbavjxdq59ri")))) + "1k57qgif1yii515m6jaqaibkdysfab6394bpawd2l67321f1a4rw")))) (build-system gnu-build-system) (inputs `(("libidn" ,libidn) From 4cb4af797a08047b5ca894fcb7930519dd2ef466 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 24 Sep 2018 01:37:35 +0200 Subject: [PATCH 097/909] gnu: lxterminal: Update to 0.3.2. * gnu/packages/lxde.scm (lxterminal): Update to 0.3.2. --- gnu/packages/lxde.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/lxde.scm b/gnu/packages/lxde.scm index 19938fa93c..c45beb8bbb 100644 --- a/gnu/packages/lxde.scm +++ b/gnu/packages/lxde.scm @@ -164,7 +164,7 @@ toolkit. It allows users to monitor and control of running processes.") (define-public lxterminal (package (name "lxterminal") - (version "0.3.1") + (version "0.3.2") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/lxde/LXTerminal" @@ -172,7 +172,7 @@ toolkit. It allows users to monitor and control of running processes.") version "/" name "-" version ".tar.xz")) (sha256 (base32 - "0jrc3m0hbxcmcgahwjlm46s2350gh80ggb6a90xy0h6xqa3z73fd")))) + "1124pghrhnx6q4391ri8nvi6bsmvbj1dx81an08mird8jf2b2rii")))) (build-system gnu-build-system) (inputs `(("gtk+" ,gtk+-2) ("vte" ,vte/gtk+-2))) From e6dcf9ca5f386c98fc03093032d65559c03164e2 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 24 Sep 2018 13:11:24 +0200 Subject: [PATCH 098/909] gnu: rename: Update to 1.00. * gnu/packages/admin.scm (rename): Update to 1.00. [arguments]: Wrap executable to find its own library. --- gnu/packages/admin.scm | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index e7e34ab97f..8f504cafef 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -869,7 +869,7 @@ over ssh connections.") (define-public rename (package (name "rename") - (version "0.35") + (version "1.00") (source (origin (method url-fetch) (uri (string-append @@ -877,8 +877,24 @@ over ssh connections.") version ".tar.gz")) (sha256 (base32 - "052iqmn7ya3w1nadpiyavmr3rx566r0lbflx94y8b5wx9q5c16rq")))) + "03yhf8nmqsb0zyliv501fdvwlp589jqfn44yqkrflmpzrbik3zxl")))) (build-system perl-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'find-itself + ;; Fix run-time 'Can't locate File/Rename.pm in @INC' failure. + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (with-directory-excursion bin + (for-each + (lambda (program) + (wrap-program program + `("PERL5LIB" ":" prefix + (,(string-append out "/lib/perl5/site_perl"))))) + (find-files "." ".*"))) + #t)))))) (native-inputs `(("perl-module-build" ,perl-module-build) ("perl-test-pod" ,perl-test-pod) From a68b45142373dd75bc96f9c4f8151bcd4e972888 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Wed, 19 Sep 2018 22:23:59 +0200 Subject: [PATCH 099/909] gnu: Add gandi.cli. * gnu/packages/networking.scm (gandi.cli): New public variable. --- gnu/packages/networking.scm | 50 +++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 84224374c6..4800c2496b 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -87,6 +87,7 @@ #:use-module (gnu packages perl-check) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages python-web) #:use-module (gnu packages qt) #:use-module (gnu packages readline) #:use-module (gnu packages ssh) @@ -673,6 +674,55 @@ send out a ping packet and move on to the next target in a round-robin fashion.") (license license:expat))) +(define-public gandi.cli + (package + (name "gandi.cli") + (version "1.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri name version)) + (sha256 + (base32 "0vfzkw1avybjkf6fwqpf5m4kjz4c0qkkmj62f3jd0zx00vh5ly1d")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'embed-store-file-names + (lambda _ + (substitute* (list "gandi/cli/modules/cert.py" + "gandi/cli/tests/commands/test_certificate.py") + (("openssl") (which "openssl"))) + #t)) + (add-after 'install 'install-documentation + ;; The included man page may be outdated but we install it anyway, + ;; since it's mentioned in 'gandi --help' and better than nothing. + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (man1 (string-append out "/share/man/man1"))) + (mkdir-p man1) + (with-output-to-file (string-append man1 "/gandi.1") + (lambda _ + (invoke "rst2man.py" "gandicli.man.rst"))) + #t)))))) + (native-inputs + `(("python-docutils" ,python-docutils) ; for rst2man.py + ("python-pytest-cov" ,python-pytest-cov) + ("python-tox" ,python-tox))) + (inputs + `(("openssl" ,openssl) + ("python-click" ,python-click) + ("python-ipy" ,python-ipy) + ("python-pyyaml" ,python-pyyaml) + ("python-requests" ,python-requests))) + (home-page "https://cli.gandi.net") + (synopsis "Command-line interface to the Gandi.net Web API") + (description + "This package provides a command-line client (@command{gandi}) to buy, +manage, and delete Internet resources from Gandi.net such as domain names, +virtual machines, and certificates.") + (license license:gpl3+))) + (define-public httping (package (name "httping") From 116af86f14f7789831d79815d5b4532afa82058c Mon Sep 17 00:00:00 2001 From: Kei Kebreau Date: Sun, 16 Sep 2018 22:17:06 -0400 Subject: [PATCH 100/909] gnu: octave: Add a search path for CURLOPT_CAPATH. * gnu/packages/maths.scm (octave)[native-search-paths]: New field. --- gnu/packages/maths.scm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 636b485260..b7d669ccea 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -1402,6 +1402,13 @@ can solve two kinds of problems: ("less" ,less) ("ghostscript" ,ghostscript) ("gnuplot" ,gnuplot))) + ;; Octave code uses this variable to detect directories holding multiple CA + ;; certificates to verify peers with. This is required for the networking + ;; functions that require encryption to work properly. + (native-search-paths + (list (search-path-specification + (variable "CURLOPT_CAPATH") + (files '("etc/ssl/certs"))))) (arguments `(#:configure-flags (list (string-append "--with-shell=" From f1ea0759f414084a62e29a0740f48d508f3dee73 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 25 Sep 2018 08:18:03 +0200 Subject: [PATCH 101/909] gnu: qjackctl: Update to 0.5.4. * gnu/packages/audio.scm (qjackctl): Update to 0.5.4. --- gnu/packages/audio.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 8bce6fa2c2..4465872732 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -2013,14 +2013,14 @@ and ALSA.") (define-public qjackctl (package (name "qjackctl") - (version "0.5.3") + (version "0.5.4") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/" version "/qjackctl-" version ".tar.gz")) (sha256 (base32 - "0x08af8m5l8qy9av3dlldsg58ny9nc69h1s4i6hqkvj24jwy6fw1")))) + "0qr71nb93gkz5q53nfcl5g168z173wc6s8w1yjs3rfn3m4hg0bcq")))) (build-system gnu-build-system) (arguments '(#:tests? #f)) ; no check target From 932839ff124ff3b0dd3070914fb1c5beec69bf32 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 25 Sep 2018 11:20:32 +0200 Subject: [PATCH 102/909] gnu: ibus: Update to 1.5.19. * gnu/packages/ibus.scm (ibus): Update to 1.5.19. [arguments]: Add configure flags to disable Python 2 support while building Python 3 bindings; adjust make flags; add phase prepare-ucd-dir. [inputs]: Replace python2-pygobject with python-pygobject; replace python-2 with python. [native-inputs]: Add unicode files. --- gnu/packages/ibus.scm | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/gnu/packages/ibus.scm b/gnu/packages/ibus.scm index 9f7e1f88b4..08fce5f6fb 100644 --- a/gnu/packages/ibus.scm +++ b/gnu/packages/ibus.scm @@ -44,7 +44,7 @@ (define-public ibus (package (name "ibus") - (version "1.5.17") + (version "1.5.19") (source (origin (method url-fetch) (uri (string-append "https://github.com/ibus/ibus/" @@ -52,22 +52,29 @@ version "/ibus-" version ".tar.gz")) (sha256 (base32 - "06fj7lawww5d5w73pk249191lvmpz7shlxfxia74bjkpb42shiq3")))) + "0a94bnpm24581317hdnihwr4cniriml10p4ffgxg14xhvaccfrjb")))) (build-system glib-or-gtk-build-system) (arguments `(#:tests? #f ; tests fail because there's no connection to dbus - #:configure-flags '("--disable-emoji-dict" ; cannot find emoji.json path + #:configure-flags `("--disable-emoji-dict" ; cannot find emoji.json path + "--disable-python2" + "--enable-python-library" + ,(string-append "--with-ucd-dir=" + (getcwd) "/ucd") "--enable-wayland") #:make-flags (list "CC=gcc" (string-append "pyoverridesdir=" (assoc-ref %outputs "out") - "/lib/python2.7/site-packages/gi/overrides/") - (string-append "py2overridesdir=" - (assoc-ref %outputs "out") - "/lib/python2.7/site-packages/gi/overrides/")) + "/lib/python3.6/site-packages/gi/overrides/")) #:phases (modify-phases %standard-phases + (add-after 'unpack 'prepare-ucd-dir + (lambda* (#:key inputs #:allow-other-keys) + (mkdir-p "../ucd") + (symlink (assoc-ref inputs "unicode-blocks") "../ucd/Blocks.txt") + (symlink (assoc-ref inputs "unicode-nameslist") "../ucd/NamesList.txt") + #t)) (add-before 'configure 'disable-dconf-update (lambda _ (substitute* "data/dconf/Makefile.in" @@ -117,11 +124,23 @@ ("wayland" ,wayland) ("xmodmap" ,xmodmap) ("iso-codes" ,iso-codes) - ("pygobject2" ,python2-pygobject) - ("python2" ,python-2))) + ("pygobject2" ,python-pygobject) + ("python" ,python))) (native-inputs `(("glib" ,glib "bin") ; for glib-genmarshal ("gobject-introspection" ,gobject-introspection) ; for g-ir-compiler + ("unicode-nameslist" + ,(origin + (method url-fetch) + (uri "https://www.unicode.org/Public/UNIDATA/NamesList.txt") + (sha256 + (base32 "0yr2h0nfqhirfi3bxl33z6cc94qqshlpgi06c25xh9754irqsgv8")))) + ("unicode-blocks" + ,(origin + (method url-fetch) + (uri "https://www.unicode.org/Public/UNIDATA/Blocks.txt") + (sha256 + (base32 "0lnh9iazikpr548bd7nkaq9r3vfljfvz0rg2462prac8qxk7ni8b")))) ("vala" ,vala) ("pkg-config" ,pkg-config))) (native-search-paths From 79374801d08c8b3e0df264340fd7212a3dac10ab Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 25 Sep 2018 03:44:19 +0200 Subject: [PATCH 103/909] gnu: python-flask-login: Don't use unstable tarball. * gnu/packages/python-web.scm (python-flask-login)[source]: Use GIT-FETCH and GIT-FILE-NAME. --- gnu/packages/python-web.scm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index 6df33fe41d..e3de0a0824 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -2056,13 +2056,13 @@ It comes with safe defaults and easily configurable options.") (version "0.4.0") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/maxcountryman/flask-login/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/maxcountryman/flask-login.git") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 - "1pdqp7a2gyb7k06xda004x0fi2w66s6kn2i0ndkqndmg12d83f9w")))) + (base32 "0sjbmk8m4mmd9g99n6c6lx9nv2jwwqp6qsqhl945w2m0f1sknwdh")))) (arguments ;; Tests fail PEP8 compliance. See: ;; https://github.com/maxcountryman/flask-login/issues/340 From bbc69023d86f5bd4ffec994453e5bdfbf5c429f4 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 25 Sep 2018 10:13:01 +0200 Subject: [PATCH 104/909] gnu: Add python-semantic-version. * gnu/packages/python.scm (python-semantic-version) (python2-semantic-version): New public variables. --- gnu/packages/python.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index ea641b8213..86ce70254d 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -907,6 +907,34 @@ API for locking files.") (define-public python2-lockfile (package-with-python2 python-lockfile)) +(define-public python-semantic-version + (package + (name "python-semantic-version") + (version "2.6.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "semantic_version" version)) + (sha256 + (base32 + "1h2l9xyg1zzsda6kjcmfcgycbvrafwci283vcr1v5sbk01l2hhra")))) + (build-system python-build-system) + (arguments + `(#:tests? #f)) ; PyPI tarball lacks tests + (home-page "https://github.com/rbarrois/python-semanticversion") + (synopsis "Semantic versioning module for Python") + (description + "The @code{semantic_version} class is a small library for handling +@uref{https://semver.org/, semantic versioning} (@dfn{SemVer}) in Python. + +It can compare versions, generate a new version that represents a bump in one of +the version levels, and check whether any given string is a proper semantic +version identifier.") + (license license:bsd-3))) + +(define-public python2-semantic-version + (package-with-python2 python-semantic-version)) + (define-public python-setuptools (package (name "python-setuptools") From d6ab1d0ac3047931a4e4daf0d48f23d2468a7341 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 25 Sep 2018 10:19:13 +0200 Subject: [PATCH 105/909] gnu: python-flask-login: Update to 0.4.1. * gnu/packages/python-web.scm (python-flask-login): Update to 0.4.1. [arguments]: Run the test suite. [propagated-inputs]: Add python-flask. [native-inputs]: Add test dependencies. --- gnu/packages/python-web.scm | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index e3de0a0824..456134c1ce 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -2053,7 +2053,7 @@ It comes with safe defaults and easily configurable options.") (define-public python-flask-login (package (name "python-flask-login") - (version "0.4.0") + (version "0.4.1") (source (origin (method git-fetch) @@ -2062,12 +2062,27 @@ It comes with safe defaults and easily configurable options.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0sjbmk8m4mmd9g99n6c6lx9nv2jwwqp6qsqhl945w2m0f1sknwdh")))) + (base32 "1rj0qwyxapxnp84fi4lhmvh3d91fdiwz7hibw77x3d5i72knqaa9")))) (arguments - ;; Tests fail PEP8 compliance. See: - ;; https://github.com/maxcountryman/flask-login/issues/340 - `(#:tests? #f)) + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'avoid-yanc + ;; Work around '.nosetests-real: error: no such option: --with-yanc'. + (lambda _ + (setenv "NOCOLOR" "set") + #t))))) (build-system python-build-system) + (propagated-inputs + `(("python-flask" ,python-flask))) + (native-inputs + ;; For tests. + `(("python-blinker" ,python-blinker) + ("python-mock" ,python-mock) + ("python-nose" ,python-nose) + ("python-pep8" ,python-pep8) + ("python-pyflakes" ,python-pyflakes) + ("python-semantic-version" ,python-semantic-version) + ("python-werkzeug" ,python-werkzeug))) (home-page "https://github.com/maxcountryman/flask-login") (synopsis "User session management for Flask") (description From 238d950b79b78365337e625d2a06247fe464d765 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 24 Sep 2018 13:52:11 +0200 Subject: [PATCH 106/909] gnu: python-nose-timer: Update to 0.7.3. * gnu/packages/check.scm (python-nose-timer): Update to 0.7.3. --- gnu/packages/check.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index f4596010ea..866fa801c0 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -1926,14 +1926,14 @@ create data based on random numbers and yet remain repeatable.") (define-public python-nose-timer (package (name "python-nose-timer") - (version "0.7.2") + (version "0.7.3") (source (origin (method url-fetch) (uri (pypi-uri "nose-timer" version)) (sha256 (base32 - "0ywg223p528014z5s0vzck74r4xyw3kvcp2casfnc85dkvir1zj7")))) + "0hfz5aqnhf493i9kyb6prm4zm8vx7wmfsyg3nvsnh24lzh2kwx44")))) (build-system python-build-system) (propagated-inputs `(("python-nose" ,python-nose) From 6d7ca74ba60053ddd53636d5850d8ee97fb4ccf5 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 25 Sep 2018 11:39:12 +0200 Subject: [PATCH 107/909] gnu: 389-ds-base: Fix build. * gnu/packages/openldap.scm (389-ds-base)[inputs]: Add openssl. --- gnu/packages/openldap.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/gnu/packages/openldap.scm b/gnu/packages/openldap.scm index 4b615b5d32..962a9c8cfe 100644 --- a/gnu/packages/openldap.scm +++ b/gnu/packages/openldap.scm @@ -295,6 +295,7 @@ servers from Python programs.") ("nspr" ,nspr) ("nss" ,nss) ("openldap" ,openldap) + ("openssl" ,openssl) ; #included by net-snmp ("pcre" ,pcre) ("perl" ,perl) ("python" ,python) From 06e6b17bd7ab0258536c62c3639fba38134d84ae Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 25 Sep 2018 10:14:58 +0200 Subject: [PATCH 108/909] gnu: python-pexpect: Use INVOKE. * gnu/packages/python.scm (python-pexpect)[arguments]: Substitute INVOKE for SYSTEM*. --- gnu/packages/python.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 86ce70254d..5c6c79da88 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -4550,7 +4550,7 @@ displayed.") ;; Why does it not work? Delete for now. (delete-file "tests/test_socket.py") #t)) - (replace 'check (lambda _ (zero? (system* "nosetests" "-v"))))))) + (replace 'check (lambda _ (invoke "nosetests" "-v")))))) (native-inputs `(("python-nose" ,python-nose) ("python-pytest" ,python-pytest) From 38e1095d8294e824444c8669765da2358c9b13bd Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 25 Sep 2018 03:38:24 +0200 Subject: [PATCH 109/909] gnu: python-wsgiproxy2: Update to 0.4.5. * gnu/packages/python-web.scm (python-wsgiproxy2): Update to 0.4.5. --- gnu/packages/python-web.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index 456134c1ce..2a7487202a 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -1351,14 +1351,14 @@ Amazon Web Services (AWS) API.") (define-public python-wsgiproxy2 (package (name "python-wsgiproxy2") - (version "0.4.4") + (version "0.4.5") (source (origin (method url-fetch) (uri (pypi-uri "WSGIProxy2" version ".tar.gz")) (sha256 (base32 - "16532rjc94h3w74x52jfckf3yzsp8h6z34522jk4xgjy82hpnd7r")))) + "19d9dva282vfjs784i0zkxp078lxfz4h3f621z30ij9wbf5rba6a")))) (build-system python-build-system) (native-inputs `(("python-webtest" ,python-webtest))) From 35f903778a658f9778e945acb8b26d47ca240163 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 24 Sep 2018 13:59:35 +0200 Subject: [PATCH 110/909] gnu: Add guile-next. * gnu/packages/guile.scm (guile-next): Rewrite to refer to Guile 3.0. --- gnu/packages/guile.scm | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index c66183b9db..6d8ab71c78 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -317,7 +317,45 @@ without requiring the source code to be rewritten.") "07p3g0v2ba2vlfbfidqzlgbhnzdx46wh2rgc5gszq1mjyx5bks6r")))))) (define-public guile-next - (deprecated-package "guile-next" guile-2.2)) + ;; This is the upcoming Guile 3.0, with JIT support. + (let ((commit "a74b4a45fab1a78e34954bce5f031e8a9765f827") + (revision "0")) + (package + (inherit guile-2.2) + (name "guile-next") + (version (git-version "2.99" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://git.savannah.gnu.org/git/guile.git") + (commit commit))) + (sha256 + (base32 + "0kq6mabv7j4gdlwmpz3iaddv98sc7awkl2358sg8j50sg10yw8nx")) + (file-name (git-file-name name version)))) + (native-inputs + `(("autoconf", autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("gettext" ,gnu-gettext) + ("texinfo" ,texinfo) + ("flex" ,flex) + ,@(package-native-inputs guile-2.2))) + (arguments + (substitute-keyword-arguments (package-arguments guile-2.2) + ((#:phases phases '%standard-phases) + ;; XXX: The default 'bootstrap' phase tries to execute the + ;; ./bootstrap directory. + `(modify-phases ,phases + (replace 'bootstrap + (lambda _ + (patch-shebang "build-aux/git-version-gen") + (invoke "autoreconf" "-vfi"))) + (add-before 'check 'skip-version-test + (lambda _ + ;; Remove this test that's bound to fail. + (delete-file "test-suite/tests/version.test") + #t))))))))) (define (make-guile-readline guile) (package From a7a887718ad0624940d782f9e9b25d275a8f40d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 24 Sep 2018 14:08:40 +0200 Subject: [PATCH 111/909] gnu: diffoscope: Update to 102. * gnu/packages/package-management.scm (diffoscope): Update to 102. --- gnu/packages/package-management.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 5edfb5dffb..3bc8ac6073 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -568,13 +568,13 @@ transactions from C or Python.") (define-public diffoscope (package (name "diffoscope") - (version "100") + (version "102") (source (origin (method url-fetch) (uri (pypi-uri name version)) (sha256 (base32 - "0sh7g26i5ndpa8l7xq6rnijbi3jz5izjn0b98zcnm6wpgghszw48")))) + "0v2z98xx7n4viw12yq83flpb9ir5ahy1gn44pic0i3dam18xhcm6")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases From 2e3a6250f8b1232c7f49f84ee7320bcd9869508a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 24 Sep 2018 14:16:13 +0200 Subject: [PATCH 112/909] gnupg: Change default keyserver. * guix/gnupg.scm (%openpgp-key-server): Change default to "pool.sks-keyservers.net". --- guix/gnupg.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guix/gnupg.scm b/guix/gnupg.scm index b30ce461b4..40feb44561 100644 --- a/guix/gnupg.scm +++ b/guix/gnupg.scm @@ -57,7 +57,7 @@ (define %openpgp-key-server ;; The default key server. Note that keys.gnupg.net appears to be ;; unreliable. - (make-parameter "pgp.mit.edu")) + (make-parameter "pool.sks-keyservers.net")) (define* (gnupg-verify sig file #:optional (keyring (current-keyring))) From cfe19684ea21feaee97d5c31e248b5a69921f784 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 25 Sep 2018 10:22:59 +0200 Subject: [PATCH 113/909] progress: 'progress-reporter-report!' takes any number of arguments. * guix/progress.scm (progress-reporter-report!): Accept an arbitrary number of arguments and pass them to REPORT. --- guix/progress.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guix/progress.scm b/guix/progress.scm index c9c3cd12a0..53aea1c56d 100644 --- a/guix/progress.scm +++ b/guix/progress.scm @@ -70,11 +70,11 @@ stopped." (($ start report stop) (start)))) -(define (progress-reporter-report! reporter) +(define (progress-reporter-report! reporter . args) "Low-level procedure to lead REPORTER to emit a report." (match reporter (($ start report stop) - (report)))) + (apply report args)))) (define (stop-progress-reporter! reporter) "Low-level procedure to stop REPORTER." From f85dbc4f3bcdc9f11cea9cca4feffee2e57a4412 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 25 Sep 2018 12:28:55 +0200 Subject: [PATCH 114/909] substitute: Progress port really closes underlying port. * guix/scripts/substitute.scm (progress-report-port): Use 'close-port' instead of 'close-connection'. Move 'stop' call first. --- guix/scripts/substitute.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm index 6d31dfdaa4..50c6a22064 100755 --- a/guix/scripts/substitute.scm +++ b/guix/scripts/substitute.scm @@ -837,8 +837,8 @@ REPORTER, which should be a object." (make-custom-binary-input-port "progress-port-proc" read! #f #f (lambda () - (close-connection port) - (stop))))))) + (stop) + (close-port port))))))) (define-syntax with-networking (syntax-rules () From 88268a34bc76c88c5c5e4ecc244924f3c8503d16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 25 Sep 2018 18:44:38 +0200 Subject: [PATCH 115/909] pull: Try harder to use the host's X.509 certificates. * guix/scripts/pull.scm (honor-x509-certificates): Use commonly-found certificate bundles. --- guix/scripts/pull.scm | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index 10e1a99e54..39aebb18e2 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -180,9 +180,25 @@ Download and deploy the latest version of Guix.\n")) (define (honor-x509-certificates store) "Use the right X.509 certificates for Git checkouts over HTTPS." - (let ((file (getenv "SSL_CERT_FILE")) + ;; On distros such as CentOS 7, /etc/ssl/certs contains only a couple of + ;; files (instead of all the certificates) among which "ca-bundle.crt". On + ;; other distros /etc/ssl/certs usually contains the whole set of + ;; certificates along with "ca-certificates.crt". Try to choose the right + ;; one. + (let ((file (letrec-syntax ((choose + (syntax-rules () + ((_ file rest ...) + (let ((f file)) + (if (and f (file-exists? f)) + f + (choose rest ...)))) + ((_) + #f)))) + (choose (getenv "SSL_CERT_FILE") + "/etc/ssl/certs/ca-certificates.crt" + "/etc/ssl/certs/ca-bundle.crt"))) (directory (or (getenv "SSL_CERT_DIR") "/etc/ssl/certs"))) - (if (or (and file (file-exists? file)) + (if (or file (and=> (stat directory #f) (lambda (st) (> (stat:nlink st) 2)))) From 280fc8351230a8fea086d9bbce919ba8395f312c Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Sat, 15 Sep 2018 11:53:40 +0200 Subject: [PATCH 116/909] git-download: Don't assume the working directory is the parent of ".git". This makes it do the right thing w.r.t. git worktrees. * guix/git-download.scm (git-file-list): Use REPOSITORY-WORKING-DIRECTORY to locate checkout. Rename from "top" to "workdir". --- guix/git-download.scm | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/guix/git-download.scm b/guix/git-download.scm index 24cf11be5e..fa94fad8f8 100644 --- a/guix/git-download.scm +++ b/guix/git-download.scm @@ -156,22 +156,23 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." The result is similar to that of the 'git ls-files' command, except that it also includes directories, not just regular files. The returned file names are relative to DIRECTORY, which is not necessarily the root of the checkout." - (let* ((directory (canonicalize-path directory)) + (let* (;; 'repository-working-directory' always returns a trailing "/", + ;; so add one here to ease the comparisons below. + (directory (string-append (canonicalize-path directory) "/")) (dot-git (repository-discover directory)) - (top (dirname dot-git)) (repository (repository-open dot-git)) + ;; XXX: This procedure is mistakenly private in Guile-Git 0.1.0. + (workdir ((@@ (git repository) repository-working-directory) + repository)) (head (repository-head repository)) (oid (reference-target head)) (commit (commit-lookup repository oid)) (tree (commit-tree commit)) (files (tree-list tree))) (repository-close! repository) - (if (string=? top directory) + (if (string=? workdir directory) files - (let ((relative (string-append - (string-drop directory - (+ 1 (string-length top))) - "/"))) + (let ((relative (string-drop directory (string-length workdir)))) (filter-map (lambda (file) (and (string-prefix? relative file) (string-drop file (string-length relative)))) From 52b87855ea64f02a254f6b510346dfb0e20dd5a7 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Tue, 28 Aug 2018 02:07:56 +0200 Subject: [PATCH 117/909] gnu: enchant: Update home page. * gnu/packages/enchant.scm (enchant)[home-page]: Set to URL mentioned on the legacy home page. --- gnu/packages/enchant.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/enchant.scm b/gnu/packages/enchant.scm index 8b2796d0e2..1c6506ebf1 100644 --- a/gnu/packages/enchant.scm +++ b/gnu/packages/enchant.scm @@ -57,5 +57,5 @@ Enchant steps in to provide uniformity and conformity on top of these libraries, and implement certain features that may be lacking in any individual provider library. Everything should \"just work\" for any and every definition of \"just working\".") - (home-page "http://www.abisource.com/projects/enchant") + (home-page "https://abiword.github.io/enchant/") (license lgpl2.1+))) From 18ef85b64a3433bccf8dc8b32d338de91fd85a8a Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Tue, 28 Aug 2018 03:47:45 +0200 Subject: [PATCH 118/909] gnu: enchant: Don't build libenchant.a. * gnu/packages/enchant.scm (enchant)[arguments]: Add #:configure-flags. --- gnu/packages/enchant.scm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gnu/packages/enchant.scm b/gnu/packages/enchant.scm index 1c6506ebf1..b5e9084a42 100644 --- a/gnu/packages/enchant.scm +++ b/gnu/packages/enchant.scm @@ -40,6 +40,8 @@ (base32 "0zq9yw1xzk8k9s6x83n1f9srzcwdavzazn3haln4nhp9wxxrxb1g")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (inputs `(("aspell" ,aspell) ;; Currently, the only supported backend in Guix ("glib" ,glib))) ;; is aspell. (This information might be old) From 9a59b29411e2f007a6ba32b88d3b6f50bd6c1f45 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Tue, 28 Aug 2018 17:15:00 +0200 Subject: [PATCH 119/909] gnu: enchant: Propagate Glib. * gnu/packages/enchant.scm (enchant)[inputs]: Move GLIB ... [propagated-inputs]: ... here. New field. --- gnu/packages/enchant.scm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gnu/packages/enchant.scm b/gnu/packages/enchant.scm index b5e9084a42..c3f75ccf2e 100644 --- a/gnu/packages/enchant.scm +++ b/gnu/packages/enchant.scm @@ -43,8 +43,10 @@ (arguments '(#:configure-flags '("--disable-static"))) (inputs - `(("aspell" ,aspell) ;; Currently, the only supported backend in Guix - ("glib" ,glib))) ;; is aspell. (This information might be old) + `(("aspell" ,aspell))) ;; Currently, the only supported backend in Guix + (propagated-inputs ;; is aspell. (This information might be old) + ;; Required by enchant.pc. + `(("glib" ,glib))) (native-inputs `(("glib:bin" ,glib "bin") ("pkg-config" ,pkg-config))) From c1d59b3c2a88427aa268a405116a01958db84a5b Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Tue, 28 Aug 2018 04:03:23 +0200 Subject: [PATCH 120/909] gnu: enchant: Update to 2.2.3. * gnu/packages/enchant.scm (enchant): Update to 2.2.3. [arguments]: Add "--enable-relocatable" to #:configure-flags. [native-inputs]: Add UNITTEST-CPP. (enchant-1.6): New public variable. * gnu/packages/fcitx.scm (fcitx)[inputs]: Change ENCHANT to ENCHANT-1.6. * gnu/packages/gnome.scm (gspell): Likewise. * gnu/packages/mate.scm (pluma): Likewise. * gnu/packages/gtk.scm (gtkspell3)[propagated-inputs]: Likewise. [inputs]: Remove duplicate ENCHANT. --- gnu/packages/enchant.scm | 50 +++++++++++++++++++++++++++++----------- gnu/packages/fcitx.scm | 2 +- gnu/packages/gnome.scm | 2 +- gnu/packages/gtk.scm | 5 ++-- gnu/packages/mate.scm | 2 +- 5 files changed, 41 insertions(+), 20 deletions(-) diff --git a/gnu/packages/enchant.scm b/gnu/packages/enchant.scm index c3f75ccf2e..0392a709e2 100644 --- a/gnu/packages/enchant.scm +++ b/gnu/packages/enchant.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Marek Benc +;;; Copyright © 2018 Marius Bakke ;;; ;;; This file is part of GNU Guix. ;;; @@ -19,29 +20,32 @@ (define-module (gnu packages enchant) #:use-module (gnu packages) #:use-module (gnu packages aspell) + #:use-module (gnu packages check) #:use-module (gnu packages glib) #:use-module (gnu packages pkg-config) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) - #:use-module (guix licenses)) + #:use-module (guix licenses) + #:use-module (srfi srfi-1)) (define-public enchant (package (name "enchant") - (version "1.6.0") - (source - (origin - (method url-fetch) - (uri - (string-append "http://www.abisource.com/downloads/" name "/" version - "/" name "-" version ".tar.gz")) - (sha256 - (base32 "0zq9yw1xzk8k9s6x83n1f9srzcwdavzazn3haln4nhp9wxxrxb1g")))) - + (version "2.2.3") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/AbiWord/enchant/releases" + "/download/v" version "/enchant-" + version ".tar.gz")) + (sha256 + (base32 + "0v87p1ls0gym95qirijpclk650sjbkcjjl6ssk059zswcwaykn5b")))) (build-system gnu-build-system) (arguments - '(#:configure-flags '("--disable-static"))) + '(#:configure-flags '("--disable-static" + ;; Tests require a relocatable build. + "--enable-relocatable"))) (inputs `(("aspell" ,aspell))) ;; Currently, the only supported backend in Guix (propagated-inputs ;; is aspell. (This information might be old) @@ -49,8 +53,8 @@ `(("glib" ,glib))) (native-inputs `(("glib:bin" ,glib "bin") - ("pkg-config" ,pkg-config))) - + ("pkg-config" ,pkg-config) + ("unittest-cpp" ,unittest-cpp))) (synopsis "Multi-backend spell-checking library wrapper") (description "On the surface, Enchant appears to be a generic spell checking library. @@ -63,3 +67,21 @@ library. Everything should \"just work\" for any and every definition of \"just working\".") (home-page "https://abiword.github.io/enchant/") (license lgpl2.1+))) + +;; Some packages are not ready for the 2.x API yet, so we keep this version +;; around. The library and executables of Enchant 2 have been designed not to +;; conflict with 1.x, so it's OK if both end up in the same profile. +(define-public enchant-1.6 + (package + (inherit enchant) + (version "1.6.0") + (arguments '(#:configure-flags '("--disable-static"))) + (native-inputs (alist-delete "unittest-cpp" + (package-native-inputs enchant))) + (source (origin + (method url-fetch) + (uri (string-append "http://www.abisource.com/downloads/enchant/" + version "/enchant-" version ".tar.gz")) + (sha256 + (base32 + "0zq9yw1xzk8k9s6x83n1f9srzcwdavzazn3haln4nhp9wxxrxb1g")))))) diff --git a/gnu/packages/fcitx.scm b/gnu/packages/fcitx.scm index bcd5f12dd1..b05d9b7146 100644 --- a/gnu/packages/fcitx.scm +++ b/gnu/packages/fcitx.scm @@ -75,7 +75,7 @@ ("pkg-config" ,pkg-config))) (inputs `(("dbus" ,dbus) - ("enchant" ,enchant) + ("enchant" ,enchant-1.6) ("gettext" ,gettext-minimal) ("gtk2" ,gtk+-2) ("gtk3" ,gtk+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 1ca354a432..8d684cd36d 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -6969,7 +6969,7 @@ that support the Assistive Technology Service Provider Interface (AT-SPI).") ("aspell-dict-en" ,aspell-dict-en) ("xorg-server" ,xorg-server))) (propagated-inputs - `(("enchant" ,enchant))) ; enchant.pc is required by gspell-1.pc + `(("enchant" ,enchant-1.6))) ; enchant.pc is required by gspell-1.pc (home-page "https://wiki.gnome.org/Projects/gspell") (synopsis "GNOME's alternative spell checker") (description diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 0b85a1723f..76e64b36bc 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -1582,12 +1582,11 @@ glass artworks done by Venicians glass blowers.") `(("intltool" ,intltool) ("pkg-config" ,pkg-config))) (inputs - `(("enchant" ,enchant) - ("gobject-introspection" ,gobject-introspection) + `(("gobject-introspection" ,gobject-introspection) ("gtk+" ,gtk+) ("pango" ,pango))) (propagated-inputs - `(("enchant" ,enchant))) ; gtkspell3-3.0.pc refers to it. + `(("enchant" ,enchant-1.6))) ;gtkspell3-3.0.pc refers to it (home-page "http://gtkspell.sourceforge.net") (synopsis "Spell-checking addon for GTK's TextView widget") (description diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm index 88f64fdb66..5919c714ee 100644 --- a/gnu/packages/mate.scm +++ b/gnu/packages/mate.scm @@ -1411,7 +1411,7 @@ can be used as backgrounds in the MATE Desktop environment.") (inputs `(("atk" ,atk) ("cairo" ,cairo) - ("enchant" ,enchant) + ("enchant" ,enchant-1.6) ("glib" ,glib) ("gtk+" ,gtk+) ("gtksourceview" ,gtksourceview) From 9b1bb75781118b1460563171aae503aa9ba702a8 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Tue, 28 Aug 2018 05:49:30 +0200 Subject: [PATCH 121/909] gnu: gspell: Update to 1.8.1. * gnu/packages/gnome.scm (gspell): Update to 1.8.1. [propagated-inputs]: Change ENCHANT-1.6 to ENCHANT. --- gnu/packages/gnome.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 8d684cd36d..1e8522c500 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -6927,7 +6927,7 @@ that support the Assistive Technology Service Provider Interface (AT-SPI).") (define-public gspell (package (name "gspell") - (version "1.4.2") + (version "1.8.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -6935,7 +6935,7 @@ that support the Assistive Technology Service Provider Interface (AT-SPI).") name "-" version ".tar.xz")) (sha256 (base32 - "1683vyyfq3q0ph665jj6id8hnlyid4qxzmqiwpv97gmz8zksg6x5")) + "1rdv873ixhwr15jwgc2z6k6y0hj353fqnwsy7zkh0c30qwiiv6l1")) (patches (search-patches "gspell-dash-test.patch")))) (build-system glib-or-gtk-build-system) (arguments @@ -6969,7 +6969,7 @@ that support the Assistive Technology Service Provider Interface (AT-SPI).") ("aspell-dict-en" ,aspell-dict-en) ("xorg-server" ,xorg-server))) (propagated-inputs - `(("enchant" ,enchant-1.6))) ; enchant.pc is required by gspell-1.pc + `(("enchant" ,enchant))) ;enchant.pc is required by gspell-1.pc (home-page "https://wiki.gnome.org/Projects/gspell") (synopsis "GNOME's alternative spell checker") (description From a0c9ba1d64be641192a22de3284aee2acb69214e Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Thu, 20 Sep 2018 16:56:15 +0200 Subject: [PATCH 122/909] gnu: webkitgtk: Remove obsolete phase. * gnu/packages/webkit.scm (webkitgtk)[arguments]: Remove #:phases. (webkitgtk-2.22)[arguments]: Don't reference removed phase. --- gnu/packages/webkit.scm | 38 ++++++++++---------------------------- 1 file changed, 10 insertions(+), 28 deletions(-) diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm index 976411dbbc..c5238a8a65 100644 --- a/gnu/packages/webkit.scm +++ b/gnu/packages/webkit.scm @@ -87,23 +87,7 @@ ;; XXX Disable WOFF2 ‘web fonts’. These were never ;; supported in our previous builds. Enabling them ;; requires building libwoff2 and possibly woff2dec. - "-DUSE_WOFF2=OFF") - #:phases - (modify-phases %standard-phases - (add-after - 'set-paths 'add-gst-plugins-base-include-path - (lambda* (#:key inputs #:allow-other-keys) - ;; XXX Work around a problem in the build system, which neglects - ;; to add -I for gst-plugins-base when compiling - ;; Source/WebKit2/UIProcess/WebPageProxy.cpp, apparently assuming - ;; that it will be in the same directory as gstreamer's header - ;; files. - (setenv "CPATH" - (string-append (getenv "C_INCLUDE_PATH") - ":" - (assoc-ref inputs "gst-plugins-base") - "/include/gstreamer-1.0")) - #t))))) + "-DUSE_WOFF2=OFF"))) (native-inputs `(("bison" ,bison) ("gettext" ,gettext-minimal) @@ -171,14 +155,12 @@ HTML/CSS applications to full-fledged web browsers.") `(("gcc" ,gcc-7) ; webkitgtk-2.22 requires gcc-6 or newer ,@(package-native-inputs webkitgtk))) (arguments - (substitute-keyword-arguments (package-arguments webkitgtk) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'add-gst-plugins-base-include-path - 'work-around-gcc-7-include-path-issue - ;; FIXME: Work around a problem with gcc-7 includes (see - ;; ). - (lambda _ - (unsetenv "C_INCLUDE_PATH") - (unsetenv "CPLUS_INCLUDE_PATH") - #t)))))))) + `(#:phases (modify-phases %standard-phases + (add-before 'configure 'work-around-gcc-7-include-path-issue + ;; FIXME: Work around a problem with gcc-7 includes (see + ;; ). + (lambda _ + (unsetenv "C_INCLUDE_PATH") + (unsetenv "CPLUS_INCLUDE_PATH") + #t))) + ,@(package-arguments webkitgtk))))) From 020c4ef18e2a1ab877de803d697ca96acfa46624 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Mon, 24 Sep 2018 14:43:53 +0200 Subject: [PATCH 123/909] gnu: node: Delete expired tests. * gnu/packages/node.scm (node)[arguments]: Delete tests for which the TLS certificates have expired. --- gnu/packages/node.scm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm index d1de7a536c..de7d59c6b5 100644 --- a/gnu/packages/node.scm +++ b/gnu/packages/node.scm @@ -125,6 +125,14 @@ "test/sequential/test-child-process-emfile.js" "test/sequential/test-benchmark-child-process.js" "test/sequential/test-http-regr-gh-2928.js")) + + ;; These tests have an expiry date: they depend on the validity of + ;; TLS certificates that are bundled with the source. We want this + ;; package to be reproducible forever, so remove those. + ;; TODO: Regenerate certs instead. + (for-each delete-file + '("test/parallel/test-tls-passphrase.js" + "test/parallel/test-tls-server-verify.js")) #t)) (replace 'configure ;; Node's configure script is actually a python script, so we can't From e789b85841aa013c4f6bd18f4dff99b30bf0b3a4 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Sun, 23 Sep 2018 13:12:23 +0200 Subject: [PATCH 124/909] gnu: Add Node LTS. * gnu/packages/node.scm (node)[arguments]: Adjust 'patch-files' phase to ignore missing files. (node-lts): New public variable. --- gnu/packages/node.scm | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm index de7d59c6b5..b525804bdb 100644 --- a/gnu/packages/node.scm +++ b/gnu/packages/node.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2016 Ludovic Courtès ;;; Copyright © 2017 Mike Gerwitz ;;; Copyright © 2018 Tobias Geerinckx-Rice +;;; Copyright © 2018 Marius Bakke ;;; ;;; This file is part of GNU Guix. ;;; @@ -86,6 +87,14 @@ (modify-phases %standard-phases (add-before 'configure 'patch-files (lambda* (#:key inputs #:allow-other-keys) + + ;; This phase is inherited by Node LTS, which does not have all + ;; the files listed here. Use this helper for convenience. + (define (delete-if-exists file) + (if (file-exists? file) + (delete-file file) + '())) + ;; Fix hardcoded /bin/sh references. (substitute* '("lib/child_process.js" "lib/internal/v8_prof_polyfill.js" @@ -103,7 +112,7 @@ ;; FIXME: These tests depend on being able to install eslint. ;; See https://github.com/nodejs/node/issues/17098. - (for-each delete-file + (for-each delete-if-exists '("test/parallel/test-eslint-alphabetize-errors.js" "test/parallel/test-eslint-buffer-constructor.js" "test/parallel/test-eslint-documented-errors.js" @@ -111,7 +120,7 @@ ;; FIXME: These tests fail in the build container, but they don't ;; seem to be indicative of real problems in practice. - (for-each delete-file + (for-each delete-if-exists '("test/async-hooks/test-ttywrap.readstream.js" "test/parallel/test-util-inspect.js" "test/parallel/test-v8-serdes.js" @@ -130,7 +139,7 @@ ;; TLS certificates that are bundled with the source. We want this ;; package to be reproducible forever, so remove those. ;; TODO: Regenerate certs instead. - (for-each delete-file + (for-each delete-if-exists '("test/parallel/test-tls-passphrase.js" "test/parallel/test-tls-server-verify.js")) #t)) @@ -188,3 +197,16 @@ devices.") (home-page "https://nodejs.org/") (license expat) (properties '((timeout . 3600))))) ; 1 h + +(define-public node-lts + (package + (inherit node) + (name "node-lts") + (version "8.12.0") + (source (origin + (inherit (package-source node)) + (uri (string-append "https://nodejs.org/dist/v" version + "/node-v" version ".tar.xz")) + (sha256 + (base32 + "16j1rrxkhmvpcw689ndw1raql1gz4jqn7n82z55zn63c05cgz7as")))))) From 5f33e9063b9b047801d0206e7a74eee8bf6fc52d Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Sun, 26 Aug 2018 23:31:10 +0200 Subject: [PATCH 125/909] gnu: varnish: Use absolute file name of "rm". * gnu/packages/web.scm (varnish)[arguments]: Rename 'patch-bin-sh-phase to 'use-absolute-file-names and add substitution. --- gnu/packages/web.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index b6bee57f9f..26c2e9128a 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -5019,12 +5019,14 @@ deployments.") "--localstatedir=/var") #:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-/bin/sh + (add-after 'unpack 'use-absolute-file-names (lambda _ (substitute* '("bin/varnishtest/vtc_varnish.c" "bin/varnishtest/vtc_process.c" "bin/varnishd/mgt/mgt_vcc.c") (("/bin/sh") (which "sh"))) + (substitute* "bin/varnishd/mgt/mgt_shmem.c" + (("rm -rf") (string-append (which "rm") " -rf"))) #t)) (add-before 'install 'patch-Makefile (lambda _ From 3b97a1779f3b65d582b8edc8c154b6414314b946 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Sun, 26 Aug 2018 23:33:48 +0200 Subject: [PATCH 126/909] services: Add Varnish service. * gnu/services/web.scm (): New record type. (%varnish-accounts, %varnish-service-type): New variables. (varnish-shepherd-service): New procedure. * gnu/tests/web.scm (%varnish-vcl, %varnish-os): New variables. (%test-varnish): New test. * doc/guix.texi (Web Services): Document it. --- doc/guix.texi | 80 ++++++++++++++++++++++++++++++++++++ gnu/services/web.scm | 96 +++++++++++++++++++++++++++++++++++++++++++- gnu/tests/web.scm | 41 +++++++++++++++++++ 3 files changed, 216 insertions(+), 1 deletion(-) diff --git a/doc/guix.texi b/doc/guix.texi index 76ec718b07..6b4b06f46d 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -16888,6 +16888,86 @@ body of a named location block cannot contain location blocks. @end table @end deftp +@subsubheading Varnish Cache +@cindex Varnish +Varnish is a fast cache server that sits in between web applications +and end users. It proxies requests from clients and caches the +accessed URLs such that multiple requests for the same resource only +creates one request to the back-end. + +@defvr {Scheme Variable} varnish-service-type +Service type for the Varnish daemon. +@end defvr + +@deftp {Data Type} varnish-configuration +Data type representing the @code{varnish} service configuration. +This type has the following parameters: + +@table @asis +@item @code{package} (default: @code{varnish}) +The Varnish package to use. + +@item @code{name} (default: @code{"default"}) +A name for this Varnish instance. Varnish will create a directory in +@file{/var/varnish/} with this name and keep temporary files there. If +the name starts with a forward slash, it is interpreted as an absolute +directory name. + +Pass the @code{-n} argument to other Varnish programs to connect to the +named instance, e.g. @command{varnishncsa -n default}. + +@item @code{backend} (default: @code{"localhost:8080"}) +The backend to use. This option has no effect if @code{vcl} is set. + +@item @code{vcl} (default: #f) +The @dfn{VCL} (Varnish Configuration Language) program to run. If this +is @code{#f}, Varnish will proxy @code{backend} using the default +configuration. Otherwise this must be a file-like object with valid +VCL syntax. + +@c Varnish does not support HTTPS, so keep this URL to avoid confusion. +For example, to mirror @url{http://www.gnu.org,www.gnu.org} with VCL you +can do something along these lines: + +@example +(define %gnu-mirror + (plain-file + "gnu.vcl" + "vcl 4.1; +backend gnu @{ .host = "www.gnu.org"; @}")) + +(operating-system + ... + (services (cons (service varnish-service-type + (varnish-configuration + (listen '(":80")) + (vcl %gnu-mirror))) + %base-services))) +@end example + +The configuration of an already running Varnish instance can be inspected +and changed using the @command{varnishadm} program. + +Consult the @url{https://varnish-cache.org/docs/,Varnish User Guide} and +@url{https://book.varnish-software.com/4.0/,Varnish Book} for +comprehensive documentation on Varnish and its configuration language. + +@item @code{listen} (default: @code{'("localhost:80")}) +List of addresses Varnish will listen on. + +@item @code{storage} (default: @code{'("malloc,128m")}) +List of storage backends that will be available in VCL. + +@item @code{parameters} (default: @code{'()}) +List of run-time parameters in the form @code{'(("parameter" . "value"))}. + +@item @code{extra-options} (default: @code{'()}) +Additional arguments to pass to the @command{varnishd} process. + +@end table +@end deftp + +@subsubheading FastCGI @cindex fastcgi @cindex fcgiwrap FastCGI is an interface between the front-end and the back-end of a web diff --git a/gnu/services/web.scm b/gnu/services/web.scm index 1c38e7d8d3..1edb1f4d34 100644 --- a/gnu/services/web.scm +++ b/gnu/services/web.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2017, 2018 Clément Lassieur ;;; Copyright © 2018 Pierre-Antoine Rouby ;;; Copyright © 2017 Christopher Baines +;;; Copyright © 2018 Marius Bakke ;;; ;;; This file is part of GNU Guix. ;;; @@ -190,7 +191,21 @@ tailon-configuration-config-file tailon-configuration-package - tailon-service-type)) + tailon-service-type + + + varnish-configuration + varnish-configuration? + varnish-configuration-package + varnish-configuration-name + varnish-configuration-backend + varnish-configuration-vcl + varnish-configuration-listen + varnish-configuration-storage + varnish-configuration-parameters + varnish-configuration-extra-options + + varnish-service-type)) ;;; Commentary: ;;; @@ -1162,3 +1177,82 @@ files.") (files (append (tailon-configuration-file-files old-config-file) files)))))))) (default-value (tailon-configuration)))) + + +;;; +;;; Varnish +;;; + +(define-record-type* + varnish-configuration make-varnish-configuration + varnish-configuration? + (package varnish-configuration-package ; + (default varnish)) + (name varnish-configuration-name ;string + (default "default")) + (backend varnish-configuration-backend ;string + (default "localhost:8080")) + (vcl varnish-configuration-vcl ;#f | + (default #f)) + (listen varnish-configuration-listen ;list of strings + (default '("localhost:80"))) + (storage varnish-configuration-storage ;list of strings + (default '("malloc,128m"))) + (parameters varnish-configuration-parameters ;list of string pairs + (default '())) + (extra-options varnish-configuration-extra-options ;list of strings + (default '()))) + +(define %varnish-accounts + (list (user-group + (name "varnish") + (system? #t)) + (user-account + (name "varnish") + (group "varnish") + (system? #t) + (comment "Varnish Cache User") + (home-directory "/var/varnish") + (shell (file-append shadow "/sbin/nologin"))))) + +(define varnish-shepherd-service + (match-lambda + (($ package name backend vcl listen storage + parameters extra-options) + (list (shepherd-service + (provision (list (symbol-append 'varnish- (string->symbol name)))) + (documentation (string-append "The Varnish Web Accelerator" + " (" name ")")) + (requirement '(networking)) + (start #~(make-forkexec-constructor + (list #$(file-append package "/sbin/varnishd") + "-n" #$name + #$@(if vcl + #~("-f" #$vcl) + #~("-b" #$backend)) + #$@(append-map (lambda (a) (list "-a" a)) listen) + #$@(append-map (lambda (s) (list "-s" s)) storage) + #$@(append-map (lambda (p) + (list "-p" (format #f "~a=~a" + (car p) (cdr p)))) + parameters) + #$@extra-options) + ;; Varnish will drop privileges to the "varnish" user when + ;; it exists. Not passing #:user here allows the service + ;; to bind to ports < 1024. + #:pid-file (if (string-prefix? "/" #$name) + (string-append #$name "/_.pid") + (string-append "/var/varnish/" #$name "/_.pid")))) + (stop #~(make-kill-destructor))))))) + +(define varnish-service-type + (service-type + (name 'varnish) + (description "Run the Varnish cache server.") + (extensions + (list (service-extension account-service-type + (const %varnish-accounts)) + (service-extension shepherd-root-service-type + varnish-shepherd-service))) + (default-value + (varnish-configuration)))) diff --git a/gnu/tests/web.scm b/gnu/tests/web.scm index 45fcb668fb..bcc919137b 100644 --- a/gnu/tests/web.scm +++ b/gnu/tests/web.scm @@ -32,6 +32,7 @@ #:use-module (guix store) #:export (%test-httpd %test-nginx + %test-varnish %test-php-fpm %test-hpcguix-web %test-tailon)) @@ -167,6 +168,46 @@ HTTP-PORT." (value (run-webserver-test name %nginx-os #:log-file "/var/log/nginx/access.log")))) + +;;; +;;; Varnish +;;; + +(define %varnish-vcl + (mixed-text-file + "varnish-test.vcl" + "vcl 4.0; +backend dummy { .host = \"127.1.1.1\"; } +sub vcl_recv { return(synth(200, \"OK\")); } +sub vcl_synth { + synthetic(\"" %index.html-contents "\"); + set resp.http.Content-Type = \"text/plain\"; + return(deliver); +}")) + +(define %varnish-os + (simple-operating-system + (dhcp-client-service) + ;; Pretend to be a web server that serves %index.html-contents. + (service varnish-service-type + (varnish-configuration + (name "/tmp/server") + ;; Use a small VSL buffer to fit in the test VM. + (parameters '(("vsl_space" . "4M"))) + (vcl %varnish-vcl))) + ;; Proxy the "server" using the builtin configuration. + (service varnish-service-type + (varnish-configuration + (parameters '(("vsl_space" . "4M"))) + (backend "localhost:80") + (listen '(":8080")))))) + +(define %test-varnish + (system-test + (name "varnish") + (description "Test the Varnish Cache server.") + (value (run-webserver-test "varnish-default" %varnish-os)))) + ;;; ;;; PHP-FPM From ffec356a29a58d97ec34e1152aa3136e78471dc6 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Sun, 23 Sep 2018 14:45:34 +0200 Subject: [PATCH 127/909] gnu: node: Build against libuv@1.19. * gnu/packages/libevent.scm (libuv-1.19): New public variable. * gnu/packages/node.scm (node)[inputs]: Change LIBUV to LIBUV-1.19. --- gnu/packages/libevent.scm | 13 +++++++++++++ gnu/packages/node.scm | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/gnu/packages/libevent.scm b/gnu/packages/libevent.scm index bc7f6c670d..2de29707ca 100644 --- a/gnu/packages/libevent.scm +++ b/gnu/packages/libevent.scm @@ -152,6 +152,19 @@ resolution, asynchronous file system operations, and threading primitives.") ;; details. Documentation is CC-BY 4.0 as of 1.12.0; see 'LICENSE-docs'. (license (list expat cc-by4.0)))) +;; This version is required for Node versions < 10. +(define-public libuv-1.19 + (package + (inherit libuv) + (version "1.19.2") + (source (origin + (method url-fetch) + (uri (string-append "https://dist.libuv.org/dist/v" version + "/libuv-v" version ".tar.gz")) + (sha256 + (base32 + "1msk9ac1z69whww88ibrwjqkd1apdla6l77cm2fwy5kigq0z5g3w")))))) + (define-public perl-anyevent (package (name "perl-anyevent") diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm index b525804bdb..a0221601dd 100644 --- a/gnu/packages/node.scm +++ b/gnu/packages/node.scm @@ -184,7 +184,7 @@ `(("c-ares" ,c-ares) ("http-parser" ,http-parser) ("icu4c" ,icu4c) - ("libuv" ,libuv) + ("libuv" ,libuv-1.19) ("nghttp2" ,nghttp2 "lib") ("openssl" ,openssl) ("zlib" ,zlib))) From 257e3247910610fe24ae1b86f38e85552d53e48c Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Sun, 23 Sep 2018 04:46:59 -0400 Subject: [PATCH 128/909] gnu: icecat: Unbundle graphite2 and harfbuzz. * gnu/packages/patches/icecat-use-system-graphite2+harfbuzz.patch: New file. * gnu/packages/patches/icecat-use-system-graphite2.patch, gnu/packages/patches/icecat-use-system-harfbuzz.patch: Delete files. * gnu/local.mk (dist_patch_DATA): Update accordingly. * gnu/packages/gnuzilla.scm (icecat)[source]: Add new patch. Delete bundled graphite2 and harfbuzz in snippet. [inputs]: Add graphite2 and harfbuzz. [arguments]: Add --with-system-{graphite2,harfbuzz} to configure flags. --- gnu/local.mk | 3 +- gnu/packages/gnuzilla.scm | 19 +- ...icecat-use-system-graphite2+harfbuzz.patch | 226 ++++++++++++++ .../patches/icecat-use-system-graphite2.patch | 248 ---------------- .../patches/icecat-use-system-harfbuzz.patch | 279 ------------------ 5 files changed, 236 insertions(+), 539 deletions(-) create mode 100644 gnu/packages/patches/icecat-use-system-graphite2+harfbuzz.patch delete mode 100644 gnu/packages/patches/icecat-use-system-graphite2.patch delete mode 100644 gnu/packages/patches/icecat-use-system-harfbuzz.patch diff --git a/gnu/local.mk b/gnu/local.mk index fe2b573dd5..35e78e7816 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -811,8 +811,7 @@ dist_patch_DATA = \ %D%/packages/patches/hydra-disable-darcs-test.patch \ %D%/packages/patches/icecat-avoid-bundled-libraries.patch \ %D%/packages/patches/icecat-CVE-2018-12383.patch \ - %D%/packages/patches/icecat-use-system-graphite2.patch \ - %D%/packages/patches/icecat-use-system-harfbuzz.patch \ + %D%/packages/patches/icecat-use-system-graphite2+harfbuzz.patch \ %D%/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch \ %D%/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch \ %D%/packages/patches/id3lib-CVE-2007-4460.patch \ diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 653cee93d5..ad83444e3c 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -495,9 +495,8 @@ security standards.") "0lqx7g79x15941rhjr3qsfwsny6vzc7d7abdmvjy6jjbqkqlc1zl")) (patches (list - (search-patch "icecat-avoid-bundled-libraries.patch") - ;; FIXME (search-patch "icecat-use-system-harfbuzz.patch") - ;; FIXME (search-patch "icecat-use-system-graphite2.patch") + (search-patch "icecat-avoid-bundled-libraries.patch") + (search-patch "icecat-use-system-graphite2+harfbuzz.patch") (mozilla-patch "icecat-CVE-2018-12385.patch" "80a4a7ef2813" "1vgcbimpnfjqj934v0cryq1g13xac3wfmd4jyhcb5s60x8xyssf5") (search-patch "icecat-CVE-2018-12383.patch") (mozilla-patch "icecat-bug-1489744.patch" "6546ee839d30" "11mhvj77r789b428bfxqq5wdx8yr7lbrdjzr8qjj6fw197pldn51"))) @@ -535,8 +534,8 @@ security standards.") "media/libvpx" "security/nss" ;; UNBUNDLE-ME "gfx/cairo" - ;; UNBUNDLE-ME "gfx/harfbuzz" - ;; UNBUNDLE-ME "gfx/graphite2" + "gfx/harfbuzz" + "gfx/graphite2" "js/src/ctypes/libffi" "db/sqlite3")) ;; Delete .pyc files, typically present in icecat source tarballs @@ -557,10 +556,10 @@ security standards.") ("glib" ,glib) ("gtk+" ,gtk+) ("gtk+-2" ,gtk+-2) - ;; UNBUNDLE-ME ("graphite2" ,graphite2) + ("graphite2" ,graphite2) ("pango" ,pango) ("freetype" ,freetype) - ;; UNBUNDLE-ME ("harfbuzz" ,harfbuzz) + ("harfbuzz" ,harfbuzz) ("hunspell" ,hunspell) ("libcanberra" ,libcanberra) ("libgnome" ,libgnome) @@ -643,8 +642,8 @@ security standards.") "--with-system-icu" "--with-system-nspr" "--with-system-nss" - ;; UNBUNDLE-ME "--with-system-harfbuzz" - ;; UNBUNDLE-ME "--with-system-graphite2" + "--with-system-harfbuzz" + "--with-system-graphite2" "--enable-system-pixman" ;; UNBUNDLE-ME "--enable-system-cairo" "--enable-system-ffi" @@ -697,7 +696,7 @@ security standards.") all))) #t)) (add-after 'patch-source-shebangs 'patch-cargo-checksums - (lambda* _ + (lambda _ (use-modules (guix build cargo-build-system)) (let ((null-file "/dev/null") (null-hash "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")) diff --git a/gnu/packages/patches/icecat-use-system-graphite2+harfbuzz.patch b/gnu/packages/patches/icecat-use-system-graphite2+harfbuzz.patch new file mode 100644 index 0000000000..94c211b797 --- /dev/null +++ b/gnu/packages/patches/icecat-use-system-graphite2+harfbuzz.patch @@ -0,0 +1,226 @@ +Allow building against system-wide graphite2/harfbuzz. +See +Based on: + https://svnweb.freebsd.org/ports/head/www/firefox-esr/files/patch-bug847568?revision=472833&view=co +Modified for use with patch -p1, and to apply cleanly to GNU IceCat. + +--- icecat-60.2.0/config/system-headers.mozbuild ++++ icecat-60.2.0/config/system-headers.mozbuild +@@ -1311,6 +1311,19 @@ + 'pixman.h', + ] + ++if CONFIG['MOZ_SYSTEM_GRAPHITE2']: ++ system_headers += [ ++ 'graphite2/Font.h', ++ 'graphite2/Segment.h', ++ ] ++ ++if CONFIG['MOZ_SYSTEM_HARFBUZZ']: ++ system_headers += [ ++ 'harfbuzz/hb-glib.h', ++ 'harfbuzz/hb-ot.h', ++ 'harfbuzz/hb.h', ++ ] ++ + if CONFIG['MOZ_SYSTEM_LIBVPX']: + system_headers += [ + 'vpx_mem/vpx_mem.h', +--- icecat-60.2.0/dom/base/moz.build ++++ icecat-60.2.0/dom/base/moz.build +@@ -474,6 +474,9 @@ + if CONFIG['MOZ_X11']: + CXXFLAGS += CONFIG['TK_CFLAGS'] + ++if CONFIG['MOZ_SYSTEM_HARFBUZZ']: ++ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] ++ + GENERATED_FILES += [ + 'PropertyUseCounterMap.inc', + 'UseCounterList.h', +--- icecat-60.2.0/gfx/graphite2/moz-gr-update.sh ++++ icecat-60.2.0/gfx/graphite2/moz-gr-update.sh +@@ -1,6 +1,7 @@ + #!/bin/bash + + # Script used to update the Graphite2 library in the mozilla source tree ++# and bump version for --with-system-graphite2 + + # This script lives in gfx/graphite2, along with the library source, + # but must be run from the top level of the mozilla-central tree. +@@ -37,12 +38,16 @@ echo "See" $0 "for update procedure." >> gfx/graphite2/README.mozilla + #find gfx/graphite2/ -name "*.cpp" -exec perl -p -i -e "s///;s/Windows.h/windows.h/;" {} \; + #find gfx/graphite2/ -name "*.h" -exec perl -p -i -e "s///;s/Windows.h/windows.h/;" {} \; + ++# chase version for --with-system-graphite2 ++perl -p -i -e "s/[0-9]+\,[0-9]+\,[0-9]+/$RELEASE/ and tr/./,/ \ ++ if /GR2_VERSION_REQUIRE/" old-configure.in ++ + # summarize what's been touched + echo Updated to $RELEASE. + echo Here is what changed in the gfx/graphite2 directory: + echo + +-hg stat gfx/graphite2 ++hg stat old-configure.in gfx/graphite2 + + echo + echo If gfx/graphite2/src/files.mk has changed, please make corresponding +--- icecat-60.2.0/gfx/moz.build ++++ icecat-60.2.0/gfx/moz.build +@@ -10,6 +10,12 @@ with Files('**'): + if CONFIG['MOZ_TREE_CAIRO']: + DIRS += ['cairo'] + ++if not CONFIG['MOZ_SYSTEM_GRAPHITE2']: ++ DIRS += ['graphite2/src' ] ++ ++if not CONFIG['MOZ_SYSTEM_HARFBUZZ']: ++ DIRS += ['harfbuzz/src'] ++ + DIRS += [ + '2d', + 'ycbcr', +@@ -18,8 +24,6 @@ DIRS += [ + 'qcms', + 'gl', + 'layers', +- 'graphite2/src', +- 'harfbuzz/src', + 'ots/src', + 'thebes', + 'ipc', +--- icecat-60.2.0/gfx/skia/generate_mozbuild.py ++++ icecat-60.2.0/gfx/skia/generate_mozbuild.py +@@ -148,6 +148,9 @@ + '-Wno-unused-private-field', + ] + ++if CONFIG['MOZ_SYSTEM_HARFBUZZ']: ++ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] ++ + if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk3', 'android'): + CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS'] + CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS'] +--- icecat-60.2.0/gfx/skia/moz.build ++++ icecat-60.2.0/gfx/skia/moz.build +@@ -822,6 +822,9 @@ + '-Wno-unused-private-field', + ] + ++if CONFIG['MOZ_SYSTEM_HARFBUZZ']: ++ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] ++ + if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk3', 'android'): + CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS'] + CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS'] +--- icecat-60.2.0/gfx/thebes/moz.build ++++ icecat-60.2.0/gfx/thebes/moz.build +@@ -272,7 +272,13 @@ + + LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES'] + +-DEFINES['GRAPHITE2_STATIC'] = True ++if CONFIG['MOZ_SYSTEM_GRAPHITE2']: ++ CXXFLAGS += CONFIG['MOZ_GRAPHITE2_CFLAGS'] ++else: ++ DEFINES['GRAPHITE2_STATIC'] = True ++ ++if CONFIG['MOZ_SYSTEM_HARFBUZZ']: ++ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] + + if CONFIG['CC_TYPE'] == 'clang': + # Suppress warnings from Skia header files. +--- icecat-60.2.0/intl/unicharutil/util/moz.build ++++ icecat-60.2.0/intl/unicharutil/util/moz.build +@@ -25,4 +25,7 @@ UNIFIED_SOURCES += [ + 'nsUnicodeProperties.cpp', + ] + ++if CONFIG['MOZ_SYSTEM_HARFBUZZ']: ++ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] ++ + FINAL_LIBRARY = 'xul' +--- icecat-60.2.0/netwerk/dns/moz.build ++++ icecat-60.2.0/netwerk/dns/moz.build +@@ -76,3 +76,6 @@ + + if CONFIG['CC_TYPE'] in ('clang', 'gcc'): + CXXFLAGS += ['-Wno-error=shadow'] ++ ++if CONFIG['MOZ_SYSTEM_HARFBUZZ']: ++ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] +--- icecat-60.2.0/old-configure.in ++++ icecat-60.2.0/old-configure.in +@@ -3995,6 +3995,27 @@ + AC_SUBST(MOZ_LINUX_32_SSE2_STARTUP_ERROR) + + dnl ======================================================== ++dnl Check for graphite2 ++dnl ======================================================== ++if test -n "$MOZ_SYSTEM_GRAPHITE2"; then ++ dnl graphite2.pc has bogus version, check manually ++ _SAVE_CFLAGS=$CFLAGS ++ CFLAGS="$CFLAGS $MOZ_GRAPHITE2_CFLAGS" ++ AC_TRY_COMPILE([ #include ++ #define GR2_VERSION_REQUIRE(major,minor,bugfix) \ ++ ( GR2_VERSION_MAJOR * 10000 + GR2_VERSION_MINOR \ ++ * 100 + GR2_VERSION_BUGFIX >= \ ++ (major) * 10000 + (minor) * 100 + (bugfix) ) ++ ], [ ++ #if !GR2_VERSION_REQUIRE(1,3,10) ++ #error "Insufficient graphite2 version." ++ #endif ++ ], [], ++ [AC_MSG_ERROR([--with-system-graphite2 requested but no working libgraphite2 found])]) ++ CFLAGS=$_SAVE_CFLAGS ++fi ++ ++dnl ======================================================== + dnl Check for pixman and cairo + dnl ======================================================== + +--- icecat-60.2.0/toolkit/library/moz.build ++++ icecat-60.2.0/toolkit/library/moz.build +@@ -235,6 +235,12 @@ + if CONFIG['MOZ_SYSTEM_PNG']: + OS_LIBS += CONFIG['MOZ_PNG_LIBS'] + ++if CONFIG['MOZ_SYSTEM_GRAPHITE2']: ++ OS_LIBS += CONFIG['MOZ_GRAPHITE2_LIBS'] ++ ++if CONFIG['MOZ_SYSTEM_HARFBUZZ']: ++ OS_LIBS += CONFIG['MOZ_HARFBUZZ_LIBS'] ++ + if CONFIG['MOZ_SYSTEM_HUNSPELL']: + OS_LIBS += CONFIG['MOZ_HUNSPELL_LIBS'] + +--- icecat-60.2.0/toolkit/moz.configure ++++ icecat-60.2.0/toolkit/moz.configure +@@ -1051,6 +1051,26 @@ + add_old_configure_assignment('FT2_CFLAGS', + ft2_info.cflags) + ++# Graphite2 ++# ============================================================== ++option('--with-system-graphite2', ++ help="Use system graphite2 (located with pkgconfig)") ++ ++system_graphite2 = pkg_check_modules('MOZ_GRAPHITE2', 'graphite2', ++ when='--with-system-graphite2') ++ ++set_config('MOZ_SYSTEM_GRAPHITE2', depends_if(system_graphite2)(lambda _: True)) ++ ++# HarfBuzz ++# ============================================================== ++option('--with-system-harfbuzz', ++ help="Use system harfbuzz (located with pkgconfig)") ++ ++system_harfbuzz = pkg_check_modules('MOZ_HARFBUZZ', 'harfbuzz >= 1.7.4', ++ when='--with-system-harfbuzz') ++ ++set_config('MOZ_SYSTEM_HARFBUZZ', depends_if(system_harfbuzz)(lambda _: True)) ++ + # Mortar + # ============================================================== + option('--enable-mortar', help='Enable mortar extension') diff --git a/gnu/packages/patches/icecat-use-system-graphite2.patch b/gnu/packages/patches/icecat-use-system-graphite2.patch deleted file mode 100644 index 188fba2bc9..0000000000 --- a/gnu/packages/patches/icecat-use-system-graphite2.patch +++ /dev/null @@ -1,248 +0,0 @@ -Copied from -See - -diff --git a/config/Makefile.in b/config/Makefile.in ---- a/config/Makefile.in -+++ b/config/Makefile.in -@@ -36,16 +36,17 @@ ifdef WRAP_SYSTEM_INCLUDES - export-preqs = \ - $(call mkdir_deps,system_wrappers) \ - $(NULL) - - export:: $(export-preqs) - $(PYTHON) -m mozbuild.action.preprocessor $(DEFINES) $(ACDEFINES) \ - -DMOZ_TREE_CAIRO=$(MOZ_TREE_CAIRO) \ - -DMOZ_TREE_PIXMAN=$(MOZ_TREE_PIXMAN) \ -+ -DMOZ_SYSTEM_GRAPHITE2=$(MOZ_SYSTEM_GRAPHITE2) \ - -DMOZ_SYSTEM_HARFBUZZ=$(MOZ_SYSTEM_HARFBUZZ) \ - -DMOZ_SYSTEM_HUNSPELL=$(MOZ_SYSTEM_HUNSPELL) \ - -DMOZ_SYSTEM_BZ2=$(MOZ_SYSTEM_BZ2) \ - -DMOZ_SYSTEM_ZLIB=$(MOZ_SYSTEM_ZLIB) \ - -DMOZ_SYSTEM_PNG=$(MOZ_SYSTEM_PNG) \ - -DMOZ_SYSTEM_JPEG=$(MOZ_SYSTEM_JPEG) \ - -DMOZ_SYSTEM_LIBEVENT=$(MOZ_SYSTEM_LIBEVENT) \ - -DMOZ_SYSTEM_LIBVPX=$(MOZ_SYSTEM_LIBVPX) \ -diff --git a/config/system-headers b/config/system-headers ---- a/config/system-headers -+++ b/config/system-headers -@@ -1260,16 +1260,20 @@ zlib.h - #ifdef MOZ_ENABLE_STARTUP_NOTIFICATION - libsn/sn.h - libsn/sn-common.h - libsn/sn-launchee.h - libsn/sn-launcher.h - libsn/sn-monitor.h - libsn/sn-util.h - #endif -+#if MOZ_SYSTEM_GRAPHITE2==1 -+graphite2/Font.h -+graphite2/Segment.h -+#endif - #if MOZ_SYSTEM_HARFBUZZ==1 - harfbuzz/hb-glib.h - harfbuzz/hb-ot.h - harfbuzz/hb.h - #endif - #if MOZ_SYSTEM_HUNSPELL==1 - hunspell.hxx - #endif -diff --git a/gfx/graphite2/moz-gr-update.sh b/gfx/graphite2/moz-gr-update.sh ---- a/gfx/graphite2/moz-gr-update.sh -+++ b/gfx/graphite2/moz-gr-update.sh -@@ -1,11 +1,12 @@ - #!/bin/bash - - # Script used to update the Graphite2 library in the mozilla source tree -+# and bump version for --with-system-graphite2 - - # This script lives in gfx/graphite2, along with the library source, - # but must be run from the top level of the mozilla-central tree. - - # Run as - # - # ./gfx/graphite2/moz-gr-update.sh RELEASE - # -@@ -32,22 +33,26 @@ echo "This directory contains the Graphi - echo "$TARBALL" >> gfx/graphite2/README.mozilla - echo "" - echo "See" $0 "for update procedure." >> gfx/graphite2/README.mozilla - - # fix up includes because of bug 721839 (cstdio) and bug 803066 (Windows.h) - #find gfx/graphite2/ -name "*.cpp" -exec perl -p -i -e "s///;s/Windows.h/windows.h/;" {} \; - #find gfx/graphite2/ -name "*.h" -exec perl -p -i -e "s///;s/Windows.h/windows.h/;" {} \; - -+# chase version for --with-system-graphite2 -+perl -p -i -e "s/[0-9]+\,[0-9]+\,[0-9]+/$RELEASE/ and tr/./,/ \ -+ if /GR2_VERSION_REQUIRE/" old-configure.in -+ - # summarize what's been touched - echo Updated to $RELEASE. - echo Here is what changed in the gfx/graphite2 directory: - echo - --hg stat gfx/graphite2 -+hg stat old-configure.in gfx/graphite2 - - echo - echo If gfx/graphite2/src/files.mk has changed, please make corresponding - echo changes to gfx/graphite2/src/moz.build - echo - - echo - echo Now use hg commands to create a patch for the mozilla tree. -diff --git a/gfx/moz.build b/gfx/moz.build ---- a/gfx/moz.build -+++ b/gfx/moz.build -@@ -2,28 +2,30 @@ - # vim: set filetype=python: - # This Source Code Form is subject to the terms of the Mozilla Public - # License, v. 2.0. If a copy of the MPL was not distributed with this - # file, You can obtain one at http://mozilla.org/MPL/2.0/. - - if CONFIG['MOZ_TREE_CAIRO']: - DIRS += ['cairo'] - -+if not CONFIG['MOZ_SYSTEM_GRAPHITE2']: -+ DIRS += ['graphite2/src' ] -+ - if not CONFIG['MOZ_SYSTEM_HARFBUZZ']: - DIRS += ['harfbuzz/src'] - - DIRS += [ - '2d', - 'ycbcr', - 'angle', - 'src', - 'qcms', - 'gl', - 'layers', -- 'graphite2/src', - 'ots/src', - 'thebes', - 'ipc', - 'vr', - 'config', - ] - - if CONFIG['MOZ_ENABLE_SKIA']: -diff --git a/gfx/thebes/moz.build b/gfx/thebes/moz.build ---- a/gfx/thebes/moz.build -+++ b/gfx/thebes/moz.build -@@ -261,16 +261,19 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('and - CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS'] - - if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3'): - CXXFLAGS += CONFIG['MOZ_PANGO_CFLAGS'] - - LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES'] - LOCAL_INCLUDES += ['/media/libyuv/include'] - --DEFINES['GRAPHITE2_STATIC'] = True -+if CONFIG['MOZ_SYSTEM_GRAPHITE2']: -+ CXXFLAGS += CONFIG['MOZ_GRAPHITE2_CFLAGS'] -+else: -+ DEFINES['GRAPHITE2_STATIC'] = True - - if CONFIG['MOZ_SYSTEM_HARFBUZZ']: - CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] - - if CONFIG['CLANG_CXX']: - # Suppress warnings from Skia header files. - SOURCES['gfxPlatform.cpp'].flags += ['-Wno-implicit-fallthrough'] -diff --git a/moz.configure b/moz.configure ---- a/moz.configure -+++ b/moz.configure -@@ -260,16 +260,28 @@ def extra_programs(target): - - check_prog('DSYMUTIL', delayed_getattr(extra_programs, 'DSYMUTIL'), - allow_missing=True) - check_prog('GENISOIMAGE', delayed_getattr(extra_programs, 'GENISOIMAGE'), - allow_missing=True) - check_prog('RPMBUILD', delayed_getattr(extra_programs, 'RPMBUILD'), - allow_missing=True) - -+option('--with-system-graphite2', -+ help="Use system graphite2 (located with pkgconfig)") -+ -+@depends('--with-system-graphite2', compile_environment) -+def check_for_graphite2(value, compile_env): -+ return value and compile_env -+ -+system_graphite2 = pkg_check_modules('MOZ_GRAPHITE2', 'graphite2', -+ check_for_graphite2) -+ -+set_config('MOZ_SYSTEM_GRAPHITE2', depends_if(system_graphite2)(lambda _: True)) -+ - option('--with-system-harfbuzz', - help="Use system harfbuzz (located with pkgconfig)") - - @depends('--with-system-harfbuzz', compile_environment) - def check_for_harfbuzz(value, compile_env): - return value and compile_env - - system_harfbuzz = pkg_check_modules('MOZ_HARFBUZZ', 'harfbuzz >= 1.3.3', -diff --git a/old-configure.in b/old-configure.in ---- a/old-configure.in -+++ b/old-configure.in -@@ -5060,16 +5060,37 @@ if test "$USE_FC_FREETYPE"; then - CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS" - MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], , - [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include ]) - CPPFLAGS="$_SAVE_CPPFLAGS" - fi - fi - - dnl ======================================================== -+dnl Check for graphite2 -+dnl ======================================================== -+if test -n "$MOZ_SYSTEM_GRAPHITE2"; then -+ dnl graphite2.pc has bogus version, check manually -+ _SAVE_CFLAGS=$CFLAGS -+ CFLAGS="$CFLAGS $MOZ_GRAPHITE2_CFLAGS" -+ AC_TRY_COMPILE([ #include -+ #define GR2_VERSION_REQUIRE(major,minor,bugfix) \ -+ ( GR2_VERSION_MAJOR * 10000 + GR2_VERSION_MINOR \ -+ * 100 + GR2_VERSION_BUGFIX >= \ -+ (major) * 10000 + (minor) * 100 + (bugfix) ) -+ ], [ -+ #if !GR2_VERSION_REQUIRE(1,3,8) -+ #error "Insufficient graphite2 version." -+ #endif -+ ], [], -+ [AC_MSG_ERROR([--with-system-graphite2 requested but no working libgraphite2 found])]) -+ CFLAGS=$_SAVE_CFLAGS -+fi -+ -+dnl ======================================================== - dnl Check for pixman and cairo - dnl ======================================================== - - MOZ_TREE_CAIRO=1 - MOZ_ARG_ENABLE_BOOL(system-cairo, - [ --enable-system-cairo Use system cairo (located with pkgconfig)], - MOZ_TREE_CAIRO=, - MOZ_TREE_CAIRO=1 ) -diff --git a/toolkit/library/moz.build b/toolkit/library/moz.build ---- a/toolkit/library/moz.build -+++ b/toolkit/library/moz.build -@@ -221,16 +221,19 @@ if CONFIG['SERVO_TARGET_DIR']: - OS_LIBS += ['-L%s' % CONFIG['SERVO_TARGET_DIR'], '-lgeckoservo'] - - if CONFIG['MOZ_SYSTEM_JPEG']: - OS_LIBS += CONFIG['MOZ_JPEG_LIBS'] - - if CONFIG['MOZ_SYSTEM_PNG']: - OS_LIBS += CONFIG['MOZ_PNG_LIBS'] - -+if CONFIG['MOZ_SYSTEM_GRAPHITE2']: -+ OS_LIBS += CONFIG['MOZ_GRAPHITE2_LIBS'] -+ - if CONFIG['MOZ_SYSTEM_HARFBUZZ']: - OS_LIBS += CONFIG['MOZ_HARFBUZZ_LIBS'] - - if CONFIG['MOZ_SYSTEM_HUNSPELL']: - OS_LIBS += CONFIG['MOZ_HUNSPELL_LIBS'] - - if CONFIG['MOZ_SYSTEM_LIBEVENT']: - OS_LIBS += CONFIG['MOZ_LIBEVENT_LIBS'] - diff --git a/gnu/packages/patches/icecat-use-system-harfbuzz.patch b/gnu/packages/patches/icecat-use-system-harfbuzz.patch deleted file mode 100644 index 083d404c13..0000000000 --- a/gnu/packages/patches/icecat-use-system-harfbuzz.patch +++ /dev/null @@ -1,279 +0,0 @@ -Copied from -See - -diff --git a/config/Makefile.in b/config/Makefile.in ---- a/config/Makefile.in -+++ b/config/Makefile.in -@@ -36,16 +36,17 @@ ifdef WRAP_SYSTEM_INCLUDES - export-preqs = \ - $(call mkdir_deps,system_wrappers) \ - $(NULL) - - export:: $(export-preqs) - $(PYTHON) -m mozbuild.action.preprocessor $(DEFINES) $(ACDEFINES) \ - -DMOZ_TREE_CAIRO=$(MOZ_TREE_CAIRO) \ - -DMOZ_TREE_PIXMAN=$(MOZ_TREE_PIXMAN) \ -+ -DMOZ_SYSTEM_HARFBUZZ=$(MOZ_SYSTEM_HARFBUZZ) \ - -DMOZ_SYSTEM_HUNSPELL=$(MOZ_SYSTEM_HUNSPELL) \ - -DMOZ_SYSTEM_BZ2=$(MOZ_SYSTEM_BZ2) \ - -DMOZ_SYSTEM_ZLIB=$(MOZ_SYSTEM_ZLIB) \ - -DMOZ_SYSTEM_PNG=$(MOZ_SYSTEM_PNG) \ - -DMOZ_SYSTEM_JPEG=$(MOZ_SYSTEM_JPEG) \ - -DMOZ_SYSTEM_LIBEVENT=$(MOZ_SYSTEM_LIBEVENT) \ - -DMOZ_SYSTEM_LIBVPX=$(MOZ_SYSTEM_LIBVPX) \ - -DMOZ_SYSTEM_ICU=$(MOZ_SYSTEM_ICU) \ -diff --git a/config/system-headers b/config/system-headers ---- a/config/system-headers -+++ b/config/system-headers -@@ -1260,16 +1260,21 @@ zlib.h - #ifdef MOZ_ENABLE_STARTUP_NOTIFICATION - libsn/sn.h - libsn/sn-common.h - libsn/sn-launchee.h - libsn/sn-launcher.h - libsn/sn-monitor.h - libsn/sn-util.h - #endif -+#if MOZ_SYSTEM_HARFBUZZ==1 -+harfbuzz/hb-glib.h -+harfbuzz/hb-ot.h -+harfbuzz/hb.h -+#endif - #if MOZ_SYSTEM_HUNSPELL==1 - hunspell.hxx - #endif - #if MOZ_SYSTEM_BZ2==1 - bzlib.h - #endif - #ifdef MOZ_ENABLE_GIO - gio/gio.h -diff --git a/dom/base/moz.build b/dom/base/moz.build ---- a/dom/base/moz.build -+++ b/dom/base/moz.build -@@ -474,16 +474,19 @@ for var in ('MOZ_B2G_RIL'): - DEFINES[var] = True - - if CONFIG['MOZ_BUILD_APP'] in ['browser', 'mobile/android', 'xulrunner']: - DEFINES['HAVE_SIDEBAR'] = True - - if CONFIG['MOZ_X11']: - CXXFLAGS += CONFIG['TK_CFLAGS'] - -+if CONFIG['MOZ_SYSTEM_HARFBUZZ']: -+ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] -+ - GENERATED_FILES += [ - 'PropertyUseCounterMap.inc', - 'UseCounterList.h', - ] - - countermap = GENERATED_FILES['PropertyUseCounterMap.inc'] - countermap.script = 'gen-usecounters.py:property_map' - countermap.inputs = ['UseCounters.conf'] -diff --git a/gfx/harfbuzz/README-mozilla b/gfx/harfbuzz/README-mozilla ---- a/gfx/harfbuzz/README-mozilla -+++ b/gfx/harfbuzz/README-mozilla -@@ -14,8 +14,13 @@ this file when updating harfbuzz, and ch - - The normal approach to updating harfbuzz, therefore, is to pull the latest HB - source into a scratch directory and do a local build; then copy the original - sources AND the generated header mentioned above from the build directory into - the mozilla tree. - - If the collection of source files changes, manual updates to moz.build may be - needed, as we don't use the upstream makefiles. -+ -+The in-tree copy may be omitted during build by --with-system-harfbuzz. -+Make sure to keep pkg-config version check within old-configure.in in sync -+with checkout version or increment latest tag by one if it's not based -+on upstream release. -diff --git a/gfx/moz.build b/gfx/moz.build ---- a/gfx/moz.build -+++ b/gfx/moz.build -@@ -2,26 +2,28 @@ - # vim: set filetype=python: - # This Source Code Form is subject to the terms of the Mozilla Public - # License, v. 2.0. If a copy of the MPL was not distributed with this - # file, You can obtain one at http://mozilla.org/MPL/2.0/. - - if CONFIG['MOZ_TREE_CAIRO']: - DIRS += ['cairo'] - -+if not CONFIG['MOZ_SYSTEM_HARFBUZZ']: -+ DIRS += ['harfbuzz/src'] -+ - DIRS += [ - '2d', - 'ycbcr', - 'angle', - 'src', - 'qcms', - 'gl', - 'layers', - 'graphite2/src', -- 'harfbuzz/src', - 'ots/src', - 'thebes', - 'ipc', - 'vr', - 'config', - ] - - if CONFIG['MOZ_ENABLE_SKIA']: -diff --git a/gfx/skia/generate_mozbuild.py b/gfx/skia/generate_mozbuild.py ---- a/gfx/skia/generate_mozbuild.py -+++ b/gfx/skia/generate_mozbuild.py -@@ -138,16 +138,19 @@ if CONFIG['GNU_CXX'] and not CONFIG['CLA - if CONFIG['CLANG_CXX'] or CONFIG['CLANG_CL']: - CXXFLAGS += [ - '-Wno-implicit-fallthrough', - '-Wno-inconsistent-missing-override', - '-Wno-macro-redefined', - '-Wno-unused-private-field', - ] - -+if CONFIG['MOZ_SYSTEM_HARFBUZZ']: -+ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] -+ - if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3', 'android'): - CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS'] - CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS'] - - if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3'): - CXXFLAGS += CONFIG['MOZ_PANGO_CFLAGS'] - """ - -diff --git a/gfx/skia/moz.build b/gfx/skia/moz.build ---- a/gfx/skia/moz.build -+++ b/gfx/skia/moz.build -@@ -748,14 +748,17 @@ if CONFIG['GNU_CXX'] and not CONFIG['CLA - if CONFIG['CLANG_CXX'] or CONFIG['CLANG_CL']: - CXXFLAGS += [ - '-Wno-implicit-fallthrough', - '-Wno-inconsistent-missing-override', - '-Wno-macro-redefined', - '-Wno-unused-private-field', - ] - -+if CONFIG['MOZ_SYSTEM_HARFBUZZ']: -+ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] -+ - if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3', 'android'): - CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS'] - CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS'] - - if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3'): - CXXFLAGS += CONFIG['MOZ_PANGO_CFLAGS'] -diff --git a/gfx/thebes/moz.build b/gfx/thebes/moz.build ---- a/gfx/thebes/moz.build -+++ b/gfx/thebes/moz.build -@@ -263,11 +263,14 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('and - if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3'): - CXXFLAGS += CONFIG['MOZ_PANGO_CFLAGS'] - - LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES'] - LOCAL_INCLUDES += ['/media/libyuv/include'] - - DEFINES['GRAPHITE2_STATIC'] = True - -+if CONFIG['MOZ_SYSTEM_HARFBUZZ']: -+ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] -+ - if CONFIG['CLANG_CXX']: - # Suppress warnings from Skia header files. - SOURCES['gfxPlatform.cpp'].flags += ['-Wno-implicit-fallthrough'] -diff --git a/intl/unicharutil/util/moz.build b/intl/unicharutil/util/moz.build ---- a/intl/unicharutil/util/moz.build -+++ b/intl/unicharutil/util/moz.build -@@ -37,9 +37,12 @@ if CONFIG['_MSC_VER']: - DEFINES['_USE_ANSI_CPP'] = True - # Don't include directives about which CRT to use - CFLAGS += ['-Zl'] - CXXFLAGS += ['-Zl'] - - if CONFIG['ENABLE_INTL_API']: - USE_LIBS += ['icu'] - -+if CONFIG['MOZ_SYSTEM_HARFBUZZ']: -+ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] -+ - DIST_INSTALL = True -diff --git a/moz.configure b/moz.configure ---- a/moz.configure -+++ b/moz.configure -@@ -260,16 +260,28 @@ def extra_programs(target): - - check_prog('DSYMUTIL', delayed_getattr(extra_programs, 'DSYMUTIL'), - allow_missing=True) - check_prog('GENISOIMAGE', delayed_getattr(extra_programs, 'GENISOIMAGE'), - allow_missing=True) - check_prog('RPMBUILD', delayed_getattr(extra_programs, 'RPMBUILD'), - allow_missing=True) - -+option('--with-system-harfbuzz', -+ help="Use system harfbuzz (located with pkgconfig)") -+ -+@depends('--with-system-harfbuzz', compile_environment) -+def check_for_harfbuzz(value, compile_env): -+ return value and compile_env -+ -+system_harfbuzz = pkg_check_modules('MOZ_HARFBUZZ', 'harfbuzz >= 1.3.3', -+ check_for_harfbuzz) -+ -+set_config('MOZ_SYSTEM_HARFBUZZ', depends_if(system_harfbuzz)(lambda _: True)) -+ - option('--enable-system-hunspell', - help="Use system hunspell (located with pkgconfig)") - - @depends('--enable-system-hunspell', compile_environment) - def check_for_hunspell(value, compile_env): - return value and compile_env - - system_hunspell = pkg_check_modules('MOZ_HUNSPELL', 'hunspell', -diff --git a/netwerk/dns/moz.build b/netwerk/dns/moz.build ---- a/netwerk/dns/moz.build -+++ b/netwerk/dns/moz.build -@@ -61,16 +61,19 @@ etld_data = GENERATED_FILES['etld_data.i - etld_data.script = 'prepare_tlds.py' - etld_data.inputs = ['effective_tld_names.dat'] - - # need to include etld_data.inc - LOCAL_INCLUDES += [ - '/netwerk/base', - ] - -+if CONFIG['MOZ_SYSTEM_HARFBUZZ']: -+ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] -+ - if CONFIG['ENABLE_INTL_API']: - DEFINES['IDNA2008'] = True - USE_LIBS += ['icu'] - else: - UNIFIED_SOURCES += [ - 'nameprep.c', - ] - -diff --git a/toolkit/library/moz.build b/toolkit/library/moz.build ---- a/toolkit/library/moz.build -+++ b/toolkit/library/moz.build -@@ -221,16 +221,19 @@ if CONFIG['SERVO_TARGET_DIR']: - OS_LIBS += ['-L%s' % CONFIG['SERVO_TARGET_DIR'], '-lgeckoservo'] - - if CONFIG['MOZ_SYSTEM_JPEG']: - OS_LIBS += CONFIG['MOZ_JPEG_LIBS'] - - if CONFIG['MOZ_SYSTEM_PNG']: - OS_LIBS += CONFIG['MOZ_PNG_LIBS'] - -+if CONFIG['MOZ_SYSTEM_HARFBUZZ']: -+ OS_LIBS += CONFIG['MOZ_HARFBUZZ_LIBS'] -+ - if CONFIG['MOZ_SYSTEM_HUNSPELL']: - OS_LIBS += CONFIG['MOZ_HUNSPELL_LIBS'] - - if CONFIG['MOZ_SYSTEM_LIBEVENT']: - OS_LIBS += CONFIG['MOZ_LIBEVENT_LIBS'] - - if CONFIG['MOZ_SYSTEM_LIBVPX']: - OS_LIBS += CONFIG['MOZ_LIBVPX_LIBS'] - From 94e96f7f68c3b9053fdb5dee5b0ab614163aaa08 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Mon, 24 Sep 2018 00:10:37 -0400 Subject: [PATCH 129/909] gnu: icecat: Unbundle libevent, libogg, and libvorbis. * gnu/packages/patches/icecat-use-system-media-libs.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/patches/icecat-avoid-bundled-libraries.patch: Add another hunk to enable removal of libevent. * gnu/packages/gnuzilla.scm (icecat)[source]: Add patch. In the snippet, add libevent, libogg, libvorbis, and libtremor to the list of bundled libraries to remove. Add a comment regarding theora. Remove comments regarding unbundling cairo, which is no longer supported. [inputs]: Add libevent, libogg, and libvorbis. [arguments]: Add --with-system-{libevent,ogg,vorbis} to configure flags. Add custom bootstrap phase. Add comments. --- gnu/local.mk | 1 + gnu/packages/gnuzilla.scm | 39 +- .../icecat-avoid-bundled-libraries.patch | 14 + .../icecat-use-system-media-libs.patch | 381 ++++++++++++++++++ 4 files changed, 423 insertions(+), 12 deletions(-) create mode 100644 gnu/packages/patches/icecat-use-system-media-libs.patch diff --git a/gnu/local.mk b/gnu/local.mk index 35e78e7816..244c79d221 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -812,6 +812,7 @@ dist_patch_DATA = \ %D%/packages/patches/icecat-avoid-bundled-libraries.patch \ %D%/packages/patches/icecat-CVE-2018-12383.patch \ %D%/packages/patches/icecat-use-system-graphite2+harfbuzz.patch \ + %D%/packages/patches/icecat-use-system-media-libs.patch \ %D%/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch \ %D%/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch \ %D%/packages/patches/id3lib-CVE-2007-4460.patch \ diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index ad83444e3c..6834d82426 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -36,6 +36,7 @@ #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (guix build-system cargo) + #:use-module (gnu packages audio) #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages databases) @@ -62,6 +63,7 @@ #:use-module (gnu packages rust) #:use-module (gnu packages icu4c) #:use-module (gnu packages video) + #:use-module (gnu packages xiph) #:use-module (gnu packages xdisorg) #:use-module (gnu packages readline)) @@ -497,6 +499,7 @@ security standards.") (list (search-patch "icecat-avoid-bundled-libraries.patch") (search-patch "icecat-use-system-graphite2+harfbuzz.patch") + (search-patch "icecat-use-system-media-libs.patch") (mozilla-patch "icecat-CVE-2018-12385.patch" "80a4a7ef2813" "1vgcbimpnfjqj934v0cryq1g13xac3wfmd4jyhcb5s60x8xyssf5") (search-patch "icecat-CVE-2018-12383.patch") (mozilla-patch "icecat-bug-1489744.patch" "6546ee839d30" "11mhvj77r789b428bfxqq5wdx8yr7lbrdjzr8qjj6fw197pldn51"))) @@ -516,24 +519,29 @@ security standards.") ;; FIXME: A script from the bundled nspr is used. ;;"nsprpub" ;; - ;; TODO: Use system media libraries. Waiting for: + ;; TODO: Use more system media libraries. See: ;; - ;; * libogg - ;; * libtheora - ;; * libvorbis - ;; * libtremor (not yet in guix) + ;; * libtheora: esr60 wants v1.2, not yet released. + ;; * soundtouch: avoiding the bundled library would + ;; result in some loss of functionality. There's + ;; also an issue with exception handling + ;; configuration. It seems that this is needed in + ;; some moz.build: + ;; DEFINES['ST_NO_EXCEPTION_HANDLING'] = 1 ;; * libopus ;; * speex - ;; * soundtouch (not yet in guix) ;; "modules/freetype2" "modules/zlib" "modules/libbz2" - ;; UNBUNDLE-ME "ipc/chromium/src/third_party/libevent" + "ipc/chromium/src/third_party/libevent" "media/libjpeg" "media/libvpx" + "media/libogg" + "media/libvorbis" + ;; "media/libtheora" ; wants theora-1.2, not yet released + "media/libtremor" "security/nss" - ;; UNBUNDLE-ME "gfx/cairo" "gfx/harfbuzz" "gfx/graphite2" "js/src/ctypes/libffi" @@ -549,7 +557,6 @@ security standards.") (inputs `(("alsa-lib" ,alsa-lib) ("bzip2" ,bzip2) - ;; UNBUNDLE-ME ("cairo" ,cairo) ("cups" ,cups) ("dbus-glib" ,dbus-glib) ("gdk-pixbuf" ,gdk-pixbuf) @@ -564,8 +571,11 @@ security standards.") ("libcanberra" ,libcanberra) ("libgnome" ,libgnome) ("libjpeg-turbo" ,libjpeg-turbo) + ("libogg" ,libogg) + ;; ("libtheora" ,libtheora) ; wants theora-1.2, not yet released + ("libvorbis" ,libvorbis) ("libxft" ,libxft) - ;; UNBUNDLE-ME ("libevent" ,libevent-2.0) + ("libevent" ,libevent) ("libxinerama" ,libxinerama) ("libxscrnsaver" ,libxscrnsaver) ("libxcomposite" ,libxcomposite) @@ -637,7 +647,10 @@ security standards.") "--with-system-zlib" "--with-system-bz2" "--with-system-jpeg" ; must be libjpeg-turbo - ;; UNBUNDLE-ME "--with-system-libevent" + "--with-system-libevent" + "--with-system-ogg" + "--with-system-vorbis" + ;; "--with-system-theora" ; wants theora-1.2, not yet released "--with-system-libvpx" "--with-system-icu" "--with-system-nspr" @@ -645,7 +658,6 @@ security standards.") "--with-system-harfbuzz" "--with-system-graphite2" "--enable-system-pixman" - ;; UNBUNDLE-ME "--enable-system-cairo" "--enable-system-ffi" "--enable-system-hunspell" "--enable-system-sqlite" @@ -695,6 +707,9 @@ security standards.") 'avcodec', 'avutil', 'pulse' ]\n\n" all))) #t)) + (replace 'bootstrap + (lambda _ + (invoke "sh" "-c" "autoconf old-configure.in > old-configure"))) (add-after 'patch-source-shebangs 'patch-cargo-checksums (lambda _ (use-modules (guix build cargo-build-system)) diff --git a/gnu/packages/patches/icecat-avoid-bundled-libraries.patch b/gnu/packages/patches/icecat-avoid-bundled-libraries.patch index b5e9fb887e..33203b1a33 100644 --- a/gnu/packages/patches/icecat-avoid-bundled-libraries.patch +++ b/gnu/packages/patches/icecat-avoid-bundled-libraries.patch @@ -33,3 +33,17 @@ Fixes needed when avoiding bundled libraries. '/dom/base', '/dom/storage', '/ipc/glue', +--- icecat-60.2.0/media/webrtc/trunk/webrtc/base/rtc_task_queue_gn/moz.build.orig 2018-09-13 17:40:54.000000000 -0400 ++++ icecat-60.2.0/media/webrtc/trunk/webrtc/base/rtc_task_queue_gn/moz.build 2018-09-23 21:33:12.319975105 -0400 +@@ -130,11 +130,6 @@ + DEFINES["WEBRTC_POSIX"] = True + DEFINES["_FILE_OFFSET_BITS"] = "64" + +- LOCAL_INCLUDES += [ +- "/ipc/chromium/src/third_party/libevent/include/", +- "/ipc/chromium/src/third_party/libevent/linux/" +- ] +- + UNIFIED_SOURCES += [ + "/media/webrtc/trunk/webrtc/base/task_queue_libevent.cc", + "/media/webrtc/trunk/webrtc/base/task_queue_posix.cc" diff --git a/gnu/packages/patches/icecat-use-system-media-libs.patch b/gnu/packages/patches/icecat-use-system-media-libs.patch new file mode 100644 index 0000000000..648585a6f0 --- /dev/null +++ b/gnu/packages/patches/icecat-use-system-media-libs.patch @@ -0,0 +1,381 @@ +Support building with system media libraries. +See + +Based on: + https://svnweb.freebsd.org/ports/head/www/firefox-esr/files/patch-z-bug517422?revision=472833&view=markup + +Changes to files within the bundled libraries are omitted, since those files +are removed from Guix sources. Modified for use with patch -p1, and to apply +cleanly to GNU IceCat. + +--- icecat-60.2.0/build/moz.configure/old.configure ++++ icecat-60.2.0/build/moz.configure/old.configure +@@ -273,7 +273,12 @@ + '--with-system-libvpx', + '--with-system-nspr', + '--with-system-nss', ++ '--with-system-ogg', + '--with-system-png', ++ '--with-system-soundtouch', ++ '--with-system-theora', ++ '--with-system-tremor', ++ '--with-system-vorbis', + '--with-system-zlib', + '--with-thumb', + '--with-thumb-interwork', +--- icecat-60.2.0/config/external/moz.build ++++ icecat-60.2.0/config/external/moz.build +@@ -23,12 +23,21 @@ + + external_dirs += ['modules/xz-embedded'] + +-if CONFIG['MOZ_VORBIS']: ++if not CONFIG['MOZ_SYSTEM_OGG']: ++ external_dirs += ['media/libogg'] ++ ++if CONFIG['MOZ_VORBIS'] and not CONFIG['MOZ_SYSTEM_VORBIS']: + external_dirs += ['media/libvorbis'] + +-if CONFIG['MOZ_TREMOR']: ++if CONFIG['MOZ_TREMOR'] and not CONFIG['MOZ_SYSTEM_TREMOR']: + external_dirs += ['media/libtremor'] + ++if not CONFIG['MOZ_SYSTEM_THEORA']: ++ external_dirs += ['media/libtheora'] ++ ++if not CONFIG['MOZ_SYSTEM_SOUNDTOUCH']: ++ external_dirs += ['media/libsoundtouch'] ++ + if CONFIG['MOZ_WEBM_ENCODER']: + external_dirs += ['media/libmkv'] + +@@ -51,11 +60,8 @@ + 'media/kiss_fft', + 'media/libcubeb', + 'media/libnestegg', +- 'media/libogg', + 'media/libopus', +- 'media/libtheora', + 'media/libspeex_resampler', +- 'media/libsoundtouch', + 'media/mp4parse-rust', + 'media/psshparser' + ] +--- icecat-60.2.0/config/system-headers.mozbuild ++++ icecat-60.2.0/config/system-headers.mozbuild +@@ -1324,6 +1324,28 @@ + 'harfbuzz/hb.h', + ] + ++if CONFIG['MOZ_SYSTEM_OGG']: ++ system_headers += [ ++ 'ogg/ogg.h', ++ 'ogg/os_types.h', ++ ] ++ ++if CONFIG['MOZ_SYSTEM_THEORA']: ++ system_headers += [ ++ 'theora/theoradec.h', ++ ] ++ ++if CONFIG['MOZ_SYSTEM_VORBIS']: ++ system_headers += [ ++ 'vorbis/codec.h', ++ 'vorbis/vorbisenc.h', ++ ] ++ ++if CONFIG['MOZ_SYSTEM_TREMOR']: ++ system_headers += [ ++ 'tremor/ivorbiscodec.h', ++ ] ++ + if CONFIG['MOZ_SYSTEM_LIBVPX']: + system_headers += [ + 'vpx_mem/vpx_mem.h', +--- icecat-60.2.0/dom/media/AudioStream.cpp ++++ icecat-60.2.0/dom/media/AudioStream.cpp +@@ -121,7 +121,9 @@ + : mMonitor("AudioStream") + , mChannels(0) + , mOutChannels(0) ++#ifndef MOZ_SYSTEM_SOUNDTOUCH + , mTimeStretcher(nullptr) ++#endif + , mDumpFile(nullptr) + , mState(INITIALIZED) + , mDataSource(aSource) +@@ -142,9 +144,11 @@ + if (mDumpFile) { + fclose(mDumpFile); + } ++#ifndef MOZ_SYSTEM_SOUNDTOUCH + if (mTimeStretcher) { + soundtouch::destroySoundTouchObj(mTimeStretcher); + } ++#endif + #if defined(XP_WIN) + if (XRE_IsContentProcess()) { + audio::AudioNotificationReceiver::Unregister(this); +@@ -168,7 +172,11 @@ + { + mMonitor.AssertCurrentThreadOwns(); + if (!mTimeStretcher) { ++#ifdef MOZ_SYSTEM_SOUNDTOUCH ++ mTimeStretcher = new soundtouch::SoundTouch(); ++#else + mTimeStretcher = soundtouch::createSoundTouchObj(); ++#endif + mTimeStretcher->setSampleRate(mAudioClock.GetInputRate()); + mTimeStretcher->setChannels(mOutChannels); + mTimeStretcher->setPitch(1.0); +--- icecat-60.2.0/dom/media/AudioStream.h ++++ icecat-60.2.0/dom/media/AudioStream.h +@@ -15,7 +15,11 @@ + #include "mozilla/TimeStamp.h" + #include "mozilla/UniquePtr.h" + #include "CubebUtils.h" ++#ifdef MOZ_SYSTEM_SOUNDTOUCH ++#include "soundtouch/SoundTouch.h" ++#else + #include "soundtouch/SoundTouchFactory.h" ++#endif + + #if defined(XP_WIN) + #include "mozilla/audio/AudioNotificationReceiver.h" +@@ -297,7 +301,11 @@ + uint32_t mChannels; + uint32_t mOutChannels; + AudioClock mAudioClock; ++#ifdef MOZ_SYSTEM_SOUNDTOUCH ++ nsAutoPtr mTimeStretcher; ++#else + soundtouch::SoundTouch* mTimeStretcher; ++#endif + + // Output file for dumping audio + FILE* mDumpFile; +--- icecat-60.2.0/dom/media/moz.build ++++ icecat-60.2.0/dom/media/moz.build +@@ -327,6 +327,21 @@ + + DEFINES['MOZILLA_INTERNAL_API'] = True + ++if CONFIG['MOZ_SYSTEM_OGG']: ++ CXXFLAGS += CONFIG['MOZ_OGG_CFLAGS'] ++ ++if CONFIG['MOZ_SYSTEM_THEORA']: ++ CXXFLAGS += CONFIG['MOZ_THEORA_CFLAGS'] ++ ++if CONFIG['MOZ_SYSTEM_VORBIS']: ++ CXXFLAGS += CONFIG['MOZ_VORBIS_CFLAGS'] ++ ++if CONFIG['MOZ_SYSTEM_TREMOR']: ++ CXXFLAGS += CONFIG['MOZ_TREMOR_CFLAGS'] ++ ++if CONFIG['MOZ_SYSTEM_SOUNDTOUCH']: ++ CXXFLAGS += CONFIG['MOZ_SOUNDTOUCH_CFLAGS'] ++ + if CONFIG['MOZ_ANDROID_HLS_SUPPORT']: + DEFINES['MOZ_ANDROID_HLS_SUPPORT'] = True + +--- icecat-60.2.0/dom/media/platforms/ffmpeg/ffvpx/FFVPXRuntimeLinker.cpp ++++ icecat-60.2.0/dom/media/platforms/ffmpeg/ffvpx/FFVPXRuntimeLinker.cpp +@@ -15,9 +15,13 @@ + #include + #endif + ++#ifdef MOZ_SYSTEM_SOUNDTOUCH ++#include "nsXPCOMPrivate.h" // for XUL_DLL ++#else + // We use a known symbol located in lgpllibs to determine its location. + // soundtouch happens to be always included in lgpllibs + #include "soundtouch/SoundTouch.h" ++#endif + + namespace mozilla { + +@@ -64,6 +68,12 @@ + + sLinkStatus = LinkStatus_FAILED; + ++#ifdef MOZ_SYSTEM_SOUNDTOUCH ++ // We retrieve the path of the XUL library as this is where mozavcodec and ++ // mozavutil libs are located. ++ char* path = ++ PR_GetLibraryFilePathname(XUL_DLL, (PRFuncPtr)&FFVPXRuntimeLinker::Init); ++#else + // We retrieve the path of the lgpllibs library as this is where mozavcodec + // and mozavutil libs are located. + PathString lgpllibsname = GetLibraryName(nullptr, "lgpllibs"); +@@ -73,6 +83,7 @@ + PathString path = + GetLibraryFilePathname(lgpllibsname.get(), + (PRFuncPtr)&soundtouch::SoundTouch::getVersionId); ++#endif + if (path.IsEmpty()) { + return false; + } +--- icecat-60.2.0/old-configure.in ++++ icecat-60.2.0/old-configure.in +@@ -2451,6 +2451,111 @@ + fi + fi # COMPILE_ENVIRONMENT + ++dnl ======================================================== ++dnl Check for libogg ++dnl ======================================================== ++ ++MOZ_ARG_WITH_BOOL(system-ogg, ++[ --with-system-ogg Use system libogg (located with pkgconfig)], ++MOZ_SYSTEM_OGG=1, ++MOZ_SYSTEM_OGG=) ++ ++if test -n "$MOZ_SYSTEM_OGG"; then ++ PKG_CHECK_MODULES(MOZ_OGG, ogg >= 1.3.3) ++ ++ _SAVE_LIBS=$LIBS ++ LIBS="$LIBS $MOZ_OGG_LIBS" ++ AC_CHECK_FUNC(ogg_set_mem_functions, [], ++ [AC_DEFINE(MOZ_OGG_NO_MEM_REPORTING)]) ++ LIBS=$_SAVE_LIBS ++fi ++ ++AC_SUBST(MOZ_SYSTEM_OGG) ++ ++dnl ======================================================== ++dnl Check for libvorbis ++dnl ======================================================== ++ ++MOZ_ARG_WITH_BOOL(system-vorbis, ++[ --with-system-vorbis Use system libvorbis (located with pkgconfig)], ++MOZ_SYSTEM_VORBIS=1, ++MOZ_SYSTEM_VORBIS=) ++ ++if test -n "$MOZ_SYSTEM_VORBIS"; then ++ PKG_CHECK_MODULES(MOZ_VORBIS, vorbis vorbisenc >= 1.3.6) ++fi ++ ++AC_SUBST(MOZ_SYSTEM_VORBIS) ++ ++dnl ======================================================== ++dnl Check for integer-only libvorbis aka tremor ++dnl ======================================================== ++ ++MOZ_ARG_WITH_BOOL(system-tremor, ++[ --with-system-tremor Use system libtremor (located with pkgconfig)], ++MOZ_SYSTEM_TREMOR=1, ++MOZ_SYSTEM_TREMOR=) ++ ++if test -n "$MOZ_SYSTEM_TREMOR"; then ++ PKG_CHECK_MODULES(MOZ_TREMOR, vorbisidec >= 1.2.1) ++fi ++ ++AC_SUBST(MOZ_SYSTEM_TREMOR) ++ ++dnl ======================================================== ++dnl Check for libtheora ++dnl ======================================================== ++ ++MOZ_ARG_WITH_BOOL(system-theora, ++[ --with-system-theora Use system libtheora (located with pkgconfig)], ++MOZ_SYSTEM_THEORA=1, ++MOZ_SYSTEM_THEORA=) ++ ++if test -n "$MOZ_SYSTEM_THEORA"; then ++ PKG_CHECK_MODULES(MOZ_THEORA, theora >= 1.2) ++fi ++ ++AC_SUBST(MOZ_SYSTEM_THEORA) ++ ++dnl ======================================================== ++dnl Check for libSoundTouch ++dnl ======================================================== ++ ++MOZ_ARG_WITH_BOOL(system-soundtouch, ++[ --with-system-soundtouch Use system libSoundTouch (located with pkgconfig)], ++MOZ_SYSTEM_SOUNDTOUCH=1, ++MOZ_SYSTEM_SOUNDTOUCH=) ++ ++if test -n "$MOZ_SYSTEM_SOUNDTOUCH"; then ++ PKG_CHECK_MODULES(MOZ_SOUNDTOUCH, soundtouch >= 1.9.0) ++ ++ AC_LANG_SAVE ++ AC_LANG_CPLUSPLUS ++ _SAVE_CXXFLAGS=$CXXFLAGS ++ CXXFLAGS="$CXXFLAGS $MOZ_SOUNDTOUCH_CFLAGS" ++ AC_CACHE_CHECK(for soundtouch sample type, ++ ac_cv_soundtouch_sample_type, ++ [AC_TRY_COMPILE([#include ++ #ifndef SOUNDTOUCH_INTEGER_SAMPLES ++ #error soundtouch expects float samples ++ #endif], ++ [], ++ [ac_cv_soundtouch_sample_type=short], ++ [ac_cv_soundtouch_sample_type=float])]) ++ CXXFLAGS=$_SAVE_CXXFLAGS ++ AC_LANG_RESTORE ++ ++ if test \( -n "$MOZ_SAMPLE_TYPE_S16" -a "$ac_cv_soundtouch_sample_type" != short \) \ ++ -o \( -n "$MOZ_SAMPLE_TYPE_FLOAT32" -a "$ac_cv_soundtouch_sample_type" != float \) ; then ++ AC_MSG_ERROR([SoundTouch library is built with incompatible sample type. Either rebuild the library with/without --enable-integer-samples, chase default Mozilla sample type or remove --with-system-soundtouch.]) ++ fi ++fi ++ ++if test -n "$MOZ_SYSTEM_SOUNDTOUCH"; then ++ AC_DEFINE(MOZ_SYSTEM_SOUNDTOUCH) ++fi ++AC_SUBST(MOZ_SYSTEM_SOUNDTOUCH) ++ + dnl system libvpx Support + dnl ======================================================== + MOZ_ARG_WITH_BOOL(system-libvpx, +--- icecat-60.2.0/toolkit/library/moz.build ++++ icecat-60.2.0/toolkit/library/moz.build +@@ -244,6 +244,21 @@ + if CONFIG['MOZ_SYSTEM_HUNSPELL']: + OS_LIBS += CONFIG['MOZ_HUNSPELL_LIBS'] + ++if CONFIG['MOZ_SYSTEM_OGG']: ++ OS_LIBS += CONFIG['MOZ_OGG_LIBS'] ++ ++if CONFIG['MOZ_SYSTEM_THEORA']: ++ OS_LIBS += CONFIG['MOZ_THEORA_LIBS'] ++ ++if CONFIG['MOZ_SYSTEM_VORBIS']: ++ OS_LIBS += CONFIG['MOZ_VORBIS_LIBS'] ++ ++if CONFIG['MOZ_SYSTEM_TREMOR']: ++ OS_LIBS += CONFIG['MOZ_TREMOR_LIBS'] ++ ++if CONFIG['MOZ_SYSTEM_SOUNDTOUCH']: ++ OS_LIBS += CONFIG['MOZ_SOUNDTOUCH_LIBS'] ++ + if CONFIG['MOZ_SYSTEM_LIBEVENT']: + OS_LIBS += CONFIG['MOZ_LIBEVENT_LIBS'] + +--- icecat-60.2.0/xpcom/build/XPCOMInit.cpp ++++ icecat-60.2.0/xpcom/build/XPCOMInit.cpp +@@ -138,7 +138,9 @@ + + #include "mozilla/ipc/GeckoChildProcessHost.h" + ++#ifndef MOZ_OGG_NO_MEM_REPORTING + #include "ogg/ogg.h" ++#endif + #if defined(MOZ_VPX) && !defined(MOZ_VPX_NO_MEM_REPORTING) + #if defined(HAVE_STDINT_H) + // mozilla-config.h defines HAVE_STDINT_H, and then it's defined *again* in +@@ -639,11 +641,13 @@ + // this oddness. + mozilla::SetICUMemoryFunctions(); + ++#ifndef MOZ_OGG_NO_MEM_REPORTING + // Do the same for libogg. + ogg_set_mem_functions(OggReporter::CountingMalloc, + OggReporter::CountingCalloc, + OggReporter::CountingRealloc, + OggReporter::CountingFree); ++#endif + + #if defined(MOZ_VPX) && !defined(MOZ_VPX_NO_MEM_REPORTING) + // And for VPX. From 6d328879378fac95240005233331f596fb5c68ed Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 25 Sep 2018 17:13:59 -0400 Subject: [PATCH 130/909] gnu: icecat: Rebundle NSPR and NSS [security fix]. Works around . * gnu/packages/gnuzilla.scm (icecat)[source]: In snippet, don't remove NSS. [inputs]: Remove 'nspr' and 'nss'. [arguments]: Remove --with-system-{nspr,nss} from configure flags. --- gnu/packages/gnuzilla.scm | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 6834d82426..ea3b61c231 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -519,6 +519,13 @@ security standards.") ;; FIXME: A script from the bundled nspr is used. ;;"nsprpub" ;; + ;; FIXME: With the update to IceCat 60, using system NSS + ;; broke certificate validation. See + ;; . For now, we use + ;; the bundled NSPR and NSS. TODO: Investigate, + ;; and try to unbundle these libraries again. + ;; UNBUNDLE-ME! "security/nss" + ;; ;; TODO: Use more system media libraries. See: ;; ;; * libtheora: esr60 wants v1.2, not yet released. @@ -541,7 +548,6 @@ security standards.") "media/libvorbis" ;; "media/libtheora" ; wants theora-1.2, not yet released "media/libtremor" - "security/nss" "gfx/harfbuzz" "gfx/graphite2" "js/src/ctypes/libffi" @@ -588,8 +594,10 @@ security standards.") ("pulseaudio" ,pulseaudio) ("mesa" ,mesa) ("mit-krb5" ,mit-krb5) - ("nspr" ,nspr) - ("nss" ,nss) + ;; See + ;; and related comments in the 'snippet' above. + ;; UNBUNDLE-ME! ("nspr" ,nspr) + ;; UNBUNDLE-ME! ("nss" ,nss) ("sqlite" ,sqlite) ("startup-notification" ,startup-notification) ("unzip" ,unzip) @@ -653,8 +661,12 @@ security standards.") ;; "--with-system-theora" ; wants theora-1.2, not yet released "--with-system-libvpx" "--with-system-icu" - "--with-system-nspr" - "--with-system-nss" + + ;; See + ;; and related comments in the 'snippet' above. + ;; UNBUNDLE-ME! "--with-system-nspr" + ;; UNBUNDLE-ME! "--with-system-nss" + "--with-system-harfbuzz" "--with-system-graphite2" "--enable-system-pixman" From fe73352e8073ea0a0e6f6b5591f24395671998ab Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 25 Sep 2018 19:31:50 -0400 Subject: [PATCH 131/909] gnu: linux-libre: Enable SHPC PCI Hotplug driver, now built-in only. Fixes . * gnu/packages/aux-files/linux-libre/4.18-x86_64.conf, gnu/packages/aux-files/linux-libre/4.18-i686.conf: Add CONFIG_HOTPLUG_PCI_SHPC=y, plus updates made by 'make oldconfig'. --- gnu/packages/aux-files/linux-libre/4.18-i686.conf | 6 ++++-- gnu/packages/aux-files/linux-libre/4.18-x86_64.conf | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/gnu/packages/aux-files/linux-libre/4.18-i686.conf b/gnu/packages/aux-files/linux-libre/4.18-i686.conf index 606616b9fa..859b8b10b6 100644 --- a/gnu/packages/aux-files/linux-libre/4.18-i686.conf +++ b/gnu/packages/aux-files/linux-libre/4.18-i686.conf @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 4.18.0-gnu Kernel Configuration +# Linux/x86 4.18.9-gnu Kernel Configuration # # @@ -255,6 +255,7 @@ CONFIG_PROFILING=y CONFIG_TRACEPOINTS=y CONFIG_CRASH_CORE=y CONFIG_KEXEC_CORE=y +CONFIG_HOTPLUG_SMT=y CONFIG_OPROFILE=m # CONFIG_OPROFILE_EVENT_MULTIPLEX is not set CONFIG_HAVE_OPROFILE=y @@ -294,6 +295,7 @@ CONFIG_HAVE_PERF_REGS=y CONFIG_HAVE_PERF_USER_STACK_DUMP=y CONFIG_HAVE_ARCH_JUMP_LABEL=y CONFIG_HAVE_RCU_TABLE_FREE=y +CONFIG_HAVE_RCU_TABLE_INVALIDATE=y CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y CONFIG_HAVE_CMPXCHG_LOCAL=y @@ -853,7 +855,7 @@ CONFIG_HOTPLUG_PCI_ACPI_IBM=m CONFIG_HOTPLUG_PCI_CPCI=y CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m -# CONFIG_HOTPLUG_PCI_SHPC is not set +CONFIG_HOTPLUG_PCI_SHPC=y # # PCI controller drivers diff --git a/gnu/packages/aux-files/linux-libre/4.18-x86_64.conf b/gnu/packages/aux-files/linux-libre/4.18-x86_64.conf index 81fd822756..2a66c483d6 100644 --- a/gnu/packages/aux-files/linux-libre/4.18-x86_64.conf +++ b/gnu/packages/aux-files/linux-libre/4.18-x86_64.conf @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 4.18.0-gnu Kernel Configuration +# Linux/x86 4.18.9-gnu Kernel Configuration # # @@ -265,6 +265,7 @@ CONFIG_PROFILING=y CONFIG_TRACEPOINTS=y CONFIG_CRASH_CORE=y CONFIG_KEXEC_CORE=y +CONFIG_HOTPLUG_SMT=y CONFIG_OPROFILE=m # CONFIG_OPROFILE_EVENT_MULTIPLEX is not set CONFIG_HAVE_OPROFILE=y @@ -304,6 +305,7 @@ CONFIG_HAVE_PERF_REGS=y CONFIG_HAVE_PERF_USER_STACK_DUMP=y CONFIG_HAVE_ARCH_JUMP_LABEL=y CONFIG_HAVE_RCU_TABLE_FREE=y +CONFIG_HAVE_RCU_TABLE_INVALIDATE=y CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y CONFIG_HAVE_CMPXCHG_LOCAL=y @@ -869,7 +871,7 @@ CONFIG_HOTPLUG_PCI_ACPI_IBM=m CONFIG_HOTPLUG_PCI_CPCI=y CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m -# CONFIG_HOTPLUG_PCI_SHPC is not set +CONFIG_HOTPLUG_PCI_SHPC=y # # PCI controller drivers From 06619128274c0f7e3ebfefab03db337e886fec51 Mon Sep 17 00:00:00 2001 From: Pierre Neidhardt Date: Tue, 25 Sep 2018 17:57:59 +0200 Subject: [PATCH 132/909] Fix URL in emacs-magit and emacs-groovy-modes. * gnu/packages/emacs.scm (emacs-magit)[source]: Fix URL. * gnu/packages/emacs.scm (emacs-groovy-modes)[source]: Fix URL. --- gnu/packages/emacs.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index f29040c372..c541c51483 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -458,7 +458,7 @@ on stdout instead of using a socket as the Emacsclient does.") (method url-fetch) (uri (string-append "https://github.com/magit/magit/releases/download/" - version "/" name "-" version ".tar.gz")) + version "/magit-" version ".tar.gz")) (sha256 (base32 "1ygaah3dd3nxpyd17297xgvdcgr7pgzzwlmpnmchki0kiwgg3sbc")))) @@ -8019,7 +8019,7 @@ supports multiple backends such as @code{vlc}, @code{mpg123}, (source (origin (method url-fetch) (uri (string-append - "https://github.com/Groovy-Emacs-Modes/" name + "https://github.com/Groovy-Emacs-Modes/groovy-emacs-modes" "/archive/" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz")) (sha256 From 9bd85a785f47d039b027de854b78b9ded0892e02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 26 Sep 2018 15:42:15 +0200 Subject: [PATCH 133/909] gnu: shepherd: Update to 0.5.0. * gnu/packages/admin.scm (shepherd): Update to 0.5.0. --- gnu/packages/admin.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 8f504cafef..ded7ce3b97 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -173,14 +173,14 @@ and provides a \"top-like\" mode (monitoring).") (define-public shepherd (package (name "shepherd") - (version "0.4.0") + (version "0.5.0") (source (origin (method url-fetch) (uri (string-append "https://alpha.gnu.org/gnu/shepherd/shepherd-" version ".tar.gz")) (sha256 (base32 - "1lgmsbxn8i8xdasxzkdp2cml75n128pplw6icvmspl6s0n9xmw8n")))) + "1wmciqml9yplnx1s4ynn00giqyk06rbrcsgvpjj2df47sawk2jp8")))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--localstatedir=/var"))) From 4245ddcbc9f935804c17c97872b90ec1050c2d75 Mon Sep 17 00:00:00 2001 From: Carlo Zancanaro Date: Sun, 26 Aug 2018 21:54:14 +1000 Subject: [PATCH 134/909] guix system: Load all services on reconfigure, not just stopped ones. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This uses the 'replacement' service slot introduced in the Shepherd version 0.5.0. * gnu/services/shepherd.scm (shepherd-service-upgrade): Return a list of services that need to be restarted to complete their upgrade. * guix/scripts/system.scm (call-with-service-upgrade-info): Rename an internal variable to reflect the change to shepherd-service-upgrade. (upgrade-shepherd-services): Call 'load-services/safe' instead of 'load-services'. Print a message about services that need to be manually restarted. * gnu/services/herd.scm (load-services/safe): New procedure. * doc/guix.texi (Invoking guix system): Document the new behaviour. Co-authored-by: Ludovic Courtès --- doc/guix.texi | 8 ++++---- gnu/services/herd.scm | 20 ++++++++++++++++++++ gnu/services/shepherd.scm | 23 ++++++++--------------- guix/scripts/system.scm | 25 ++++++++++++++++--------- 4 files changed, 48 insertions(+), 28 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 6b4b06f46d..e1046eb512 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -33,7 +33,7 @@ Copyright @copyright{} 2016 Alex ter Weele@* Copyright @copyright{} 2017, 2018 Clément Lassieur@* Copyright @copyright{} 2017 Mathieu Othacehe@* Copyright @copyright{} 2017 Federico Beffa@* -Copyright @copyright{} 2017 Carlo Zancanaro@* +Copyright @copyright{} 2017, 2018 Carlo Zancanaro@* Copyright @copyright{} 2017 Thomas Danckaert@* Copyright @copyright{} 2017 humanitiesNerd@* Copyright @copyright{} 2017 Christopher Allan Webber@* @@ -21920,9 +21920,9 @@ systems already running GuixSD.}. This effects all the configuration specified in @var{file}: user accounts, system services, global package list, setuid programs, etc. The command starts system services specified in @var{file} that are not -currently running; if a service is currently running, it does not -attempt to upgrade it since this would not be possible without stopping it -first. +currently running; if a service is currently running this command will +arrange for it to be upgraded the next time it is stopped (eg. by +@code{herd stop X} or @code{herd restart X}). This command creates a new generation whose number is one greater than the current generation (as reported by @command{guix system diff --git a/gnu/services/herd.scm b/gnu/services/herd.scm index 8c96b70731..8ff817759d 100644 --- a/gnu/services/herd.scm +++ b/gnu/services/herd.scm @@ -50,6 +50,7 @@ unload-services unload-service load-services + load-services/safe start-service stop-service)) @@ -232,6 +233,25 @@ returns a shepherd object." `(primitive-load ,file)) files)))) +(define (load-services/safe files) + "This is like 'load-services', but make sure only the subset of FILES that +can be safely reloaded is actually reloaded. + +This is done to accommodate the Shepherd < 0.15.0 where services lacked the +'replacement' slot, and where 'register-services' would throw an exception +when passed a service with an already-registered name." + (eval-there `(let* ((services (map primitive-load ',files)) + (slots (map slot-definition-name + (class-slots ))) + (can-replace? (memq 'replacement slots))) + (define (registered? service) + (not (null? (lookup-services (canonical-name service))))) + + (apply register-services + (if can-replace? + services + (remove registered? services)))))) + (define (start-service name) (with-shepherd-action name ('start) result result)) diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm index 4cd2249841..4c7e72049f 100644 --- a/gnu/services/shepherd.scm +++ b/gnu/services/shepherd.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015, 2016, 2018 Ludovic Courtès ;;; Copyright © 2017 Clément Lassieur +;;; Copyright © 2018 Carlo Zancanaro ;;; ;;; This file is part of GNU Guix. ;;; @@ -329,7 +330,7 @@ symbols provided/required by a service." (define (shepherd-service-upgrade live target) "Return two values: the subset of LIVE (a list of ) that needs to be unloaded, and the subset of TARGET (a list of ) that -needs to be loaded." +need to be restarted to complete their upgrade." (define (essential? service) (memq (first (live-service-provision service)) '(root shepherd))) @@ -346,12 +347,6 @@ needs to be loaded." (and=> (lookup-live (shepherd-service-canonical-name service)) live-service-running)) - (define (stopped service) - (match (lookup-live (shepherd-service-canonical-name service)) - (#f #f) - (service (and (not (live-service-running service)) - service)))) - (define live-service-dependents (shepherd-service-back-edges live #:provision live-service-provision @@ -362,16 +357,14 @@ needs to be loaded." (#f (every obsolete? (live-service-dependents service))) (_ #f))) - (define to-load - ;; Only load services that are either new or currently stopped. - (remove running? target)) + (define to-restart + ;; Restart services that are currently running. + (filter running? target)) (define to-unload - ;; Unload services that are (1) no longer required, or (2) are in TO-LOAD. - (remove essential? - (append (filter obsolete? live) - (filter-map stopped to-load)))) + ;; Unload services that are no longer required. + (remove essential? (filter obsolete? live))) - (values to-unload to-load)) + (values to-unload to-restart)) ;;; shepherd.scm ends here diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index 69bd05b516..1e7620f147 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -310,9 +310,9 @@ names of services to load (upgrade), and the list of names of services to unload." (match (current-services) ((services ...) - (let-values (((to-unload to-load) + (let-values (((to-unload to-restart) (shepherd-service-upgrade services new-services))) - (mproc to-load + (mproc to-restart (map (compose first live-service-provision) to-unload)))) (#f @@ -335,25 +335,32 @@ bring the system down." ;; Arrange to simply emit a warning if the service upgrade fails. (with-shepherd-error-handling (call-with-service-upgrade-info new-services - (lambda (to-load to-unload) + (lambda (to-restart to-unload) (for-each (lambda (unload) (info (G_ "unloading service '~a'...~%") unload) (unload-service unload)) to-unload) (with-monad %store-monad - (munless (null? to-load) - (let ((to-load-names (map shepherd-service-canonical-name to-load)) - (to-start (filter shepherd-service-auto-start? to-load))) - (info (G_ "loading new services:~{ ~a~}...~%") to-load-names) + (munless (null? new-services) + (let ((new-service-names (map shepherd-service-canonical-name new-services)) + (to-restart-names (map shepherd-service-canonical-name to-restart)) + (to-start (filter shepherd-service-auto-start? new-services))) + (info (G_ "loading new services:~{ ~a~}...~%") new-service-names) + (unless (null? to-restart-names) + ;; Listing TO-RESTART-NAMES in the message below wouldn't help + ;; because many essential services cannot be meaningfully + ;; restarted. See . + (format #t (G_ "To complete the upgrade, run 'herd restart SERVICE' to stop, +upgrade, and restart each service that was not automatically restarted.\n"))) (mlet %store-monad ((files (mapm %store-monad (compose lower-object shepherd-service-file) - to-load))) + new-services))) ;; Here we assume that FILES are exactly those that were computed ;; as part of the derivation that built OS, which is normally the ;; case. - (load-services (map derivation->output-path files)) + (load-services/safe (map derivation->output-path files)) (for-each start-service (map shepherd-service-canonical-name to-start)) From 2a5f2b1f7550db701172a338e98179e1cac55a1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 26 Sep 2018 16:35:37 +0200 Subject: [PATCH 135/909] gnu: Remove incorrect Emacs package deprecations. This is a followup to 5c8031ff7382ec9079040d08ae5a05b4dd2352b7. An upgrade would wrongfully report things like: guix package: package 'emacs-typo' has been superseded by 'emacs-typo' guix package: package 'emacs-org-tree-slide' has been superseded by 'emacs-org-tree-slide' guix package: package 'emacs-emms' has been superseded by 'emacs-emms' * gnu/packages/emacs.scm (flycheck, emms, typo, org-tree-slide) (butler): Remove. (emacs-emms-mode-line-cycle)[propagated-inputs]: Use EMACS-EMMS instead of EMMS. --- gnu/packages/emacs.scm | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index c541c51483..9dc11c59fc 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -782,9 +782,6 @@ different tools. It highlights errors and warnings inline in the buffer, and provides an optional IDE-like error list.") (license license:gpl3+))) ;+GFDLv1.3+ for the manual -(define-public flycheck - (deprecated-package "flycheck" emacs-flycheck)) - ;;; ;;; Web browsing. @@ -1066,9 +1063,6 @@ light user interface.") (home-page "https://www.gnu.org/software/emms/") (license license:gpl3+))) -(define-public emms - (deprecated-package "emacs-emms" emacs-emms)) - (define-public emacs-emms-player-mpv ;; A new mpv backend is included in Emms from 5.0. (deprecated-package "emacs-emms-player-mpv" emacs-emms)) @@ -1088,7 +1082,7 @@ light user interface.") "0ifszi930pnaxk1x8pcydmvnp06868gc7nfx14q17zbajbx735k6")))) (build-system emacs-build-system) (propagated-inputs - `(("emms" ,emms))) + `(("emms" ,emacs-emms))) (home-page "https://github.com/momomo5717/emms-mode-line-cycle") (synopsis "Display the EMMS mode line as a ticker") (description @@ -2722,9 +2716,6 @@ view the build status of those servers' build jobs, and possibly to trigger build jobs.") (license license:gpl3+))) -(define-public butler - (deprecated-package "emacs-butler" emacs-butler)) - (define-public emacs-company (package (name "emacs-company") @@ -2874,9 +2865,6 @@ automatically inserts a Unicode opening or closing quotation mark, depending on context.") (license license:gpl3+))) -(define-public typo - (deprecated-package "emacs-typo" emacs-typo)) - (define-public emacs-scheme-complete (let ((commit "9b5cf224bf2a5994bc6d5b152ff487517f1a9bb5")) (package @@ -8061,9 +8049,6 @@ navigation with the grails mode.") @kbd{C-<} to jump to the next and previous slide.") (license license:gpl3+)))) -(define-public org-tree-slide - (deprecated-package "emacs-org-tree-slide" emacs-org-tree-slide)) - (define-public emacs-scratch-el (let ((commit "2cdf2b841ce7a0987093f65b0cc431947549f897") (revision "1")) From 6f03b08089167ec863361352ab200830bffeb0b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 26 Sep 2018 22:30:16 +0200 Subject: [PATCH 136/909] services: dhcp-client: Use 'read-pid-file'. * gnu/services/networking.scm (dhcp-client-service-type)[start]: Use 'read-pid-file' instead of the custom and possibly infinite loop. --- gnu/services/networking.scm | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index bd1d5a2706..3fdb2bb9f7 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès ;;; Copyright © 2015 Mark H Weaver ;;; Copyright © 2016, 2018 Efraim Flashner ;;; Copyright © 2016 John Darrington @@ -191,19 +191,7 @@ fe80::1%lo0 apps.facebook.com\n") (cons* #$dhclient "-nw" "-pf" #$pid-file ifaces)))) (and (zero? (cdr (waitpid pid))) - (let loop () - (catch 'system-error - (lambda () - (call-with-input-file #$pid-file read)) - (lambda args - ;; 'dhclient' returned before PID-FILE was created, - ;; so try again. - (let ((errno (system-error-errno args))) - (if (= ENOENT errno) - (begin - (sleep 1) - (loop)) - (apply throw args)))))))))) + (read-pid-file #$pid-file))))) (stop #~(make-kill-destructor)))))) (define* (dhcp-client-service #:key (dhcp isc-dhcp)) From a56c4eb8f43ae5555985d8a84308d150c0763c5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 26 Sep 2018 22:52:38 +0200 Subject: [PATCH 137/909] services: shepherd: Add workaround for 0.5.0 in containers. * gnu/services/shepherd.scm (%containerized-shepherd-service): New service. * gnu/system.scm (essential-services): Use it when CONTAINER? is true. --- gnu/services/shepherd.scm | 16 ++++++++++++++++ gnu/system.scm | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm index 4c7e72049f..49d08cc30f 100644 --- a/gnu/services/shepherd.scm +++ b/gnu/services/shepherd.scm @@ -59,6 +59,7 @@ %default-modules shepherd-service-file + %containerized-shepherd-service shepherd-service-lookup-procedure shepherd-service-back-edges @@ -327,6 +328,21 @@ symbols provided/required by a service." (lambda (service) (vhash-foldq* cons '() service edges))) +(define %containerized-shepherd-service + ;; XXX: This service works around a bug in the Shepherd 0.5.0: shepherd + ;; calls reboot(2) (via 'disable-reboot-on-ctrl-alt-del') when it starts, + ;; but in a container that fails with EINVAL. This was fixed in Shepherd + ;; commit 92e806bac1abaeeaf5d60f0ab50d1ae85ba6a62f. + (simple-service 'containerized-shepherd + shepherd-root-service-type + (list (shepherd-service + (provision '(containerized-shepherd)) + (start #~(lambda () + (set! (@@ (shepherd) + disable-reboot-on-ctrl-alt-del) + (const #t)) + #t)))))) + (define (shepherd-service-upgrade live target) "Return two values: the subset of LIVE (a list of ) that needs to be unloaded, and the subset of TARGET (a list of ) that diff --git a/gnu/system.scm b/gnu/system.scm index e4a57475a9..99bc09873d 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -501,7 +501,7 @@ a container or that of a \"bare metal\" system." ;; Add the firmware service, unless we are building for a ;; container. (if container? - '() + (list %containerized-shepherd-service) (list %linux-bare-metal-service (service firmware-service-type (operating-system-firmware os)))))))) From 23784f0c3342a0fab5bf2a1c15c300b9f0856872 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 26 Sep 2018 22:58:23 +0200 Subject: [PATCH 138/909] services: udev: Don't attempt to read "modules.devname" from a container. Fixes . Reported by Julien Lepiller . * gnu/services/base.scm (udev-shepherd-service)[start]: Check whether DIRECTORY exists and skip 'make-static-device-nodes' call if it doesn't. --- gnu/services/base.scm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 5ba2c6b86d..9dfabd9807 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -1881,7 +1881,12 @@ item of @var{packages}." (string-append linux-module-directory "/" kernel-release)) (old-umask (umask #o022))) - (make-static-device-nodes directory) + ;; If we're in a container, DIRECTORY might not exist, + ;; for instance because the host runs a different + ;; kernel. In that case, skip it; we'll just miss a few + ;; nodes like /dev/fuse. + (when (file-exists? directory) + (make-static-device-nodes directory)) (umask old-umask)) (let ((pid (fork+exec-command (list udevd)))) From 09b7300c01a8e7100467c6caae9b2c8d8e673971 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 26 Sep 2018 23:01:33 +0200 Subject: [PATCH 139/909] services: virtual-terminal: Write to "default_utf8" only if necessary. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes a bug in containers whereby 'virtual-terminal' would always fail to start because writing to /sys/…/default_utf8 would fail with EROFS. * gnu/services/base.scm (virtual-terminal-service-type): Read from "default_utf8" before attempting to write to it. --- gnu/services/base.scm | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 9dfabd9807..47c7d8bb27 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -685,17 +685,20 @@ to add @var{device} to the kernel's entropy pool. The service will fail if (shepherd-service-type 'virtual-terminal (lambda (utf8?) - (shepherd-service - (documentation "Set virtual terminals in UTF-8 module.") - (provision '(virtual-terminal)) - (requirement '(root-file-system)) - (start #~(lambda _ - (call-with-output-file - "/sys/module/vt/parameters/default_utf8" - (lambda (port) - (display 1 port))) - #t)) - (stop #~(const #f)))) + (let ((knob "/sys/module/vt/parameters/default_utf8")) + (shepherd-service + (documentation "Set virtual terminals in UTF-8 module.") + (provision '(virtual-terminal)) + (requirement '(root-file-system)) + (start #~(lambda _ + ;; In containers /sys is read-only so don't insist on + ;; writing to this file. + (unless (= 1 (call-with-input-file #$knob read)) + (call-with-output-file #$knob + (lambda (port) + (display 1 port)))) + #t)) + (stop #~(const #f))))) #t)) ;default to UTF-8 (define console-keymap-service-type From e15ede6e28cfaf5fe951faf88d7c1e3213a476a4 Mon Sep 17 00:00:00 2001 From: Timo Eisenmann Date: Wed, 26 Sep 2018 17:01:33 +0200 Subject: [PATCH 140/909] gnu: enlightenment: Fix initial locale and keyboard selection. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/enlightenment.scm (enlightenment)[arguments]: In 'set-system-actions', set absolute file name to 'locale' and 'xorg.lst'. Signed-off-by: Ludovic Courtès --- gnu/packages/enlightenment.scm | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm index 45dc1dbbeb..c7812e8874 100644 --- a/gnu/packages/enlightenment.scm +++ b/gnu/packages/enlightenment.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner ;;; Copyright © 2017 Nils Gillmann ;;; Copyright © 2018 Tobias Geerinckx-Rice +;;; Copyright © 2018 Timo Eisenmann ;;; ;;; This file is part of GNU Guix. ;;; @@ -268,13 +269,19 @@ Libraries with some extra bells and whistles.") (add-before 'configure 'set-system-actions (lambda* (#:key inputs #:allow-other-keys) (let ((xkeyboard (assoc-ref inputs "xkeyboard-config")) - (utils (assoc-ref inputs "util-linux"))) + (utils (assoc-ref inputs "util-linux")) + (libc (assoc-ref inputs "libc"))) ;; We need to patch the path to 'base.lst' to be able ;; to switch the keyboard layout in E. - (substitute* "src/modules/xkbswitch/e_mod_parse.c" + (substitute* (list "src/modules/xkbswitch/e_mod_parse.c" + "src/modules/wizard/page_011.c") (("/usr/share/X11/xkb/rules/xorg.lst") (string-append xkeyboard "/share/X11/xkb/rules/base.lst"))) + (substitute* (list "src/bin/e_intl.c" + "src/modules/conf_intl/e_int_config_intl.c" + "src/modules/wizard/page_010.c") + (("locale -a") (string-append libc "/bin/locale -a"))) (substitute* "src/modules/everything/evry_plug_apps.c" (("/usr/bin/") "")) (substitute* "configure" From a9994b273585914a273f5c50bf2d39af1f657fd0 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 25 Sep 2018 20:58:07 +0200 Subject: [PATCH 141/909] gnu: perl-crypt-openssl-rsa: Update to 0.31. * gnu/packages/tls.scm (perl-crypt-openssl-rsa): Update to 0.31. --- gnu/packages/tls.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index 0cdb02b0aa..bdb63c0dbf 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -681,7 +681,7 @@ servers or clients for more complicated applications.") (define-public perl-crypt-openssl-rsa (package (name "perl-crypt-openssl-rsa") - (version "0.30") + (version "0.31") (source (origin (method url-fetch) @@ -691,7 +691,7 @@ servers or clients for more complicated applications.") ".tar.gz")) (sha256 (base32 - "1b19kaaw4wda8dy6kjiwqa2prpbs2dqcyjyj9zdh5wbs74qkbq93")))) + "0djl5i6kibl7862b6ih29q8dhg5zpwzq77q9j8hp6xngshx40ws1")))) (build-system perl-build-system) (native-inputs `(("perl-crypt-openssl-guess" ,perl-crypt-openssl-guess))) From 6f52db245564b5732577e4e40e0f3127d37fcaf0 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 25 Sep 2018 23:27:44 +0200 Subject: [PATCH 142/909] gnu: perl-catalyst-runtime: Update to 5.90119. * gnu/packages/web.scm (perl-catalyst-runtime): Update to 5.90119. --- gnu/packages/web.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 26c2e9128a..2251daabf7 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1862,15 +1862,15 @@ MIME type directly to the browser, without being processed through Catalyst.") (define-public perl-catalyst-runtime (package (name "perl-catalyst-runtime") - (version "5.90118") + (version "5.90119") (source (origin (method url-fetch) - (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/" + (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/" "Catalyst-Runtime-" version ".tar.gz")) (sha256 (base32 - "0cws3szx3vvh0372qdx8fypgv6qphcc3v81rbq30sl1ghby7ksd3")))) + "1iw7x9rqk3sz2hm1bw01blz5vwm7zlljdf4xj3r8vz54f1yggzqr")))) (build-system perl-build-system) (native-inputs `(("perl-test-fatal" ,perl-test-fatal))) From af44f05af78e3187589c2c628c3d3436df7ceed0 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 24 Sep 2018 12:38:47 +0200 Subject: [PATCH 143/909] gnu: perl-net-dns: Update to 1.18. * gnu/packages/networking.scm (perl-net-dns): Update to 1.18. --- gnu/packages/networking.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 4800c2496b..0d6de040e5 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -902,7 +902,7 @@ private (reserved).") (define-public perl-net-dns (package (name "perl-net-dns") - (version "1.17") + (version "1.18") (source (origin (method url-fetch) @@ -914,7 +914,7 @@ private (reserved).") version ".tar.gz"))) (sha256 (base32 - "1q62w9rf2w8kjzqagzr0rdn20ybl8gj3l6cdq4k8fw0sxa7zsycs")))) + "1lx902cbvlfl63bqfdrnyavmfwbjvrfdnwgdc1dgs1wpzja19kjj")))) (build-system perl-build-system) (inputs `(("perl-digest-hmac" ,perl-digest-hmac))) From 3d190d6a219d03dc94c8d33614766df0fed1473f Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Thu, 27 Sep 2018 03:47:24 +0200 Subject: [PATCH 144/909] gnu: dico: Update to 2.7. * gnu/packages/dico.scm (dico): Update to 2.7. [arguments]: Work around dodgy test in 'check' phase. --- gnu/packages/dico.scm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/gnu/packages/dico.scm b/gnu/packages/dico.scm index a85987d9b1..d96dbb86d9 100644 --- a/gnu/packages/dico.scm +++ b/gnu/packages/dico.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015, 2016, 2018 Ludovic Courtès ;;; Copyright © 2016, 2018 Efraim Flashner +;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. ;;; @@ -37,14 +38,14 @@ (define-public dico (package (name "dico") - (version "2.6") + (version "2.7") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/dico/dico-" version ".tar.xz")) (sha256 (base32 - "0zmi041gv5nd5fmyzgdrgrsy2pvjaq9p8dvvhxwi842hiyng5b7i")))) + "0dg4aacnmlf3ljssd7dwh8z5644xzq8k1501mbsx8nz8p8a9mbsq")))) (build-system gnu-build-system) (arguments '(#:configure-flags (list (string-append "--with-guile-site-dir=" %output @@ -57,7 +58,11 @@ ;; infrastructure. Gag it. (setenv "GUILE_AUTO_COMPILE" "0") (setenv "GUILE_WARN_DEPRECATED" "no") - #t))))) + #t)) + (replace 'check + (lambda _ + ;; Test '71: append + dooffs + env' fails if $V is not 2. + (invoke "make" "check" "V=2")))))) (inputs `(("m4" ,m4) ;used at run time ("pcre" ,pcre) From b733dbc0fb5bd1648f1fdce6471f048886e69e73 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Tue, 25 Sep 2018 10:15:37 +0200 Subject: [PATCH 145/909] gnu: python-setproctitle: Use INVOKE. * gnu/packages/python.scm (python-setproctitle)[arguments]: Substitute INVOKE for SYSTEM*. --- gnu/packages/python.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 5c6c79da88..4703d95a2d 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -10482,7 +10482,7 @@ theme for the Sphinx documentation system. It's the default theme of Sphinx.") (setenv "CC" "gcc") ;; No need to extend PYTHONPATH to find the built package, since ;; the Makefile will build anyway - (zero? (system* "make" "check"))))))) + (invoke "make" "check")))))) (native-inputs `(("procps" ,procps))) ; required for tests (home-page From 428d2ca2ecc57780fb4be90ca6009ea1d00eeade Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 24 Sep 2018 20:33:00 +0200 Subject: [PATCH 146/909] gnu: youtube-dl: Update to 2018.09.18. * gnu/packages/video.scm (youtube-dl): Update to 2018.09.18. --- gnu/packages/video.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 448773e0d9..54ffef86de 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -1271,7 +1271,7 @@ access to mpv's powerful playback capabilities.") (define-public youtube-dl (package (name "youtube-dl") - (version "2018.09.08") + (version "2018.09.18") (source (origin (method url-fetch) (uri (string-append "https://yt-dl.org/downloads/" @@ -1279,7 +1279,7 @@ access to mpv's powerful playback capabilities.") version ".tar.gz")) (sha256 (base32 - "0vwc4faqdddrb3nm4fzmkr60n5rc2zwyy8jwrrjad60kcp8isf05")))) + "0mlsdmddmyy3xaqy366k48xds14g17l81al3kglndjkbrrji63sb")))) (build-system python-build-system) (arguments ;; The problem here is that the directory for the man page and completion From c4a3ea38850e97cdc12252440c7fa9cdefd5790f Mon Sep 17 00:00:00 2001 From: Rutger Helling Date: Thu, 27 Sep 2018 09:50:01 +0200 Subject: [PATCH 147/909] gnu: mame: Update to 0.202. * gnu/packages/emulators.scm (mame): Update to 0.202. --- gnu/packages/emulators.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm index 782bff5b18..443137f141 100644 --- a/gnu/packages/emulators.scm +++ b/gnu/packages/emulators.scm @@ -1184,7 +1184,7 @@ play them on systems for which they were never designed!") (define-public mame (package (name "mame") - (version "0.201") + (version "0.202") (source (origin (method git-fetch) @@ -1194,7 +1194,7 @@ play them on systems for which they were never designed!") (file-name (git-file-name name version)) (sha256 (base32 - "00whiig4ld3d4fkl34q48vlf28ygvvp5g7fp0rb5n31ymhl4kajk")) + "1v9gm124p65nbj678gfkcvwphp9qc15ky2p12ca6g3rllma94di5")) (modules '((guix build utils))) (snippet ;; Remove bundled libraries. From e07cb04d40eaea8aa792e2375f7f127ef54a79f3 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 27 Sep 2018 05:51:20 -0400 Subject: [PATCH 148/909] gnu: linux-libre@4.4: Update to 4.4.158. * gnu/packages/linux.scm (linux-libre-4.4): Update to 4.4.158. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 170c77374d..95a5234c76 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -452,8 +452,8 @@ It has been modified to remove all non-free binary blobs.") #:configuration-file kernel-config)) (define-public linux-libre-4.4 - (make-linux-libre "4.4.157" - "00bnfqwkr0jfdabmwx5qk5bqxn5vwnnzwqbm5rfg7lggii74kk54" + (make-linux-libre "4.4.158" + "1l3blfaw50a8l9bp735vzsmk1naq4l40qidza10dwkkrd2ip3n41" %intel-compatible-systems #:configuration-file kernel-config)) From 202190ec392d3284b0dae753b356cb74f4962682 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 27 Sep 2018 05:52:00 -0400 Subject: [PATCH 149/909] gnu: linux-libre@4.9: Update to 4.9.129. * gnu/packages/linux.scm (linux-libre-4.9): Update to 4.9.129. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 95a5234c76..b3ccaef89f 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -446,8 +446,8 @@ It has been modified to remove all non-free binary blobs.") #:configuration-file kernel-config)) (define-public linux-libre-4.9 - (make-linux-libre "4.9.128" - "0lww23xcyyg0dwzrap5x9d700gy3lbxln55n6sqqkm7m89dkqwha" + (make-linux-libre "4.9.129" + "0y7p1xgbpn4nmr5pmqb58shr54lvryr5rxwm9m66knwzj332f3rh" %intel-compatible-systems #:configuration-file kernel-config)) From e0b6085a7f69a8b2a8ff4fe90d8ef28f9ef50769 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 27 Sep 2018 05:52:52 -0400 Subject: [PATCH 150/909] gnu: linux-libre@4.14: Update to 4.14.72. * gnu/packages/linux.scm (%linux-libre-4.14-version): Update to 4.14.72. (%linux-libre-4.14-hash): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index b3ccaef89f..93005e16da 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -436,8 +436,8 @@ It has been modified to remove all non-free binary blobs.") #:patches %linux-libre-4.18-patches #:configuration-file kernel-config)) -(define %linux-libre-4.14-version "4.14.71") -(define %linux-libre-4.14-hash "1akvykaccy7ikl8v04grwxvgs4z2rrs7drf2s85ysqwq79mdh3gq") +(define %linux-libre-4.14-version "4.14.72") +(define %linux-libre-4.14-hash "1ngz5p8mvga45y1n6hbw6niy0ji5mfl4vc3bxlckjg42dcp5qf64") (define-public linux-libre-4.14 (make-linux-libre %linux-libre-4.14-version From 1d1e4f8f9c46b13ed2c4a61bc4c5f25c6748649b Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 27 Sep 2018 05:53:46 -0400 Subject: [PATCH 151/909] gnu: linux-libre: Update to 4.18.10. * gnu/packages/linux.scm (%linux-libre-version): Update to 4.18.10. (%linux-libre-hash): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 93005e16da..2503676396 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -405,8 +405,8 @@ It has been modified to remove all non-free binary blobs.") ;; supports qemu "virt" machine and possibly a large number of ARM boards. ;; See : https://wiki.debian.org/DebianKernel/ARMMP. -(define %linux-libre-version "4.18.9") -(define %linux-libre-hash "0wwmhnfvcsdlqhzwwwyz1x5a3ldjky6l0xir1pi6pysr0lak402x") +(define %linux-libre-version "4.18.10") +(define %linux-libre-hash "1znc6kh3j8plmxail6hn2ss0r0fvbcp50s3xv5gxys7jc7k42znj") (define %linux-libre-4.18-patches (list %boot-logo-patch From de1158d53fd106103214e79f8523a91b9cfa89d7 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 27 Sep 2018 19:55:49 +0200 Subject: [PATCH 152/909] gnu: eolie: Update to 0.9.38. * gnu/packages/gnome.scm (eolie): Update to 0.9.38. --- gnu/packages/gnome.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 1e8522c500..de938e4b14 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -4090,15 +4090,15 @@ work and the interface is well tested.") (define-public eolie (package (name "eolie") - (version "0.9.37") + (version "0.9.38") (source (origin (method url-fetch) (uri (string-append "https://gitlab.gnome.org/World/eolie/" - "uploads/4341cb428b7a45670308ee3fb3fa07dd/" + "uploads/9814c06a1bc83ea09c3da8719a9ed11b/" "eolie-" version ".tar.xz")) (sha256 (base32 - "126m0nwwy3lqv7z8aj9hiwangih03b1nlkg3xja9p7wbf7zcvp2n")))) + "10vrh91rapgfmqwc6jkcybpmlvn4q0y8bnklw3rddzigf9kvqsff")))) (build-system meson-build-system) (arguments `(#:glib-or-gtk? #t From ea1a3601999887a0762a942460317145f3f53b30 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 27 Sep 2018 20:02:55 +0200 Subject: [PATCH 153/909] gnu: emacs-ert-runner: Do not use package name in directory. * gnu/packages/emacs.scm (emacs-ert-runner)[arguments]: Use the upstream name instead of the Guix package name in the "install-executable" phase. This is a follow-up to commit 5c8031ff7382ec9079040d08ae5a05b4dd2352b7. --- gnu/packages/emacs.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 9dc11c59fc..8da5add886 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -6982,8 +6982,8 @@ Emacs.") (substitute* "bin/ert-runner" (("ERT_RUNNER=\"\\$\\(dirname \\$\\(dirname \\$0\\)\\)") (string-append "ERT_RUNNER=\"" out - "/share/emacs/site-lisp/guix.d/" - ,name "-" ,version))) + "/share/emacs/site-lisp/guix.d/ert-runner-" + ,version))) (install-file "bin/ert-runner" (string-append out "/bin")) (wrap-program (string-append out "/bin/ert-runner") (list "EMACSLOADPATH" ":" 'prefix From 363d7d6608d599776f78525e50a920b1d641805b Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 27 Sep 2018 21:52:07 +0200 Subject: [PATCH 154/909] gnu: yoshimi: Update to 1.5.9. * gnu/packages/music.scm (yoshimi): Update to 1.5.9. --- gnu/packages/music.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index e563062018..2d834d8c1f 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -1996,7 +1996,7 @@ capabilities, custom envelopes, effects, etc.") (define-public yoshimi (package (name "yoshimi") - (version "1.5.8.2") + (version "1.5.9") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/yoshimi/" @@ -2004,7 +2004,7 @@ capabilities, custom envelopes, effects, etc.") "/yoshimi-" version ".tar.bz2")) (sha256 (base32 - "1kg7d6mnzdwzsqhrf7pmrf1hzgfpbpm5lv8xkaz32wiv391qrnxc")))) + "1nqwxwq6814m860zrh33r85vdyi2bgkvjg5372h3ngcdmxnb7wr0")))) (build-system cmake-build-system) (arguments `(#:tests? #f ; there are no tests From fe65b559a671390ed5034d2d0b2c58c276e5abff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 25 Sep 2018 10:30:21 +0200 Subject: [PATCH 155/909] progress: Add 'display-download-progress'. * guix/progress.scm (display-download-progress): New procedure. (progress-reporter/file)[render]: Rewrite in terms of 'display-download-progress'. --- guix/progress.scm | 72 +++++++++++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 31 deletions(-) diff --git a/guix/progress.scm b/guix/progress.scm index 53aea1c56d..d4ebb32991 100644 --- a/guix/progress.scm +++ b/guix/progress.scm @@ -39,6 +39,7 @@ progress-reporter/file progress-reporter/bar + display-download-progress byte-count->string current-terminal-columns @@ -183,6 +184,42 @@ width of the bar is BAR-WIDTH." move the cursor to the beginning of the line." (display "\r\x1b[K" port)) +(define* (display-download-progress file size + #:key + start-time (transferred 0) + (log-port (current-error-port))) + "Write the progress report to LOG-PORT. Use START-TIME (a SRFI-19 time +object) and TRANSFERRED (a total number of bytes) to determine the +throughput." + (define elapsed + (duration->seconds + (time-difference (current-time time-monotonic) start-time))) + (if (number? size) + (let* ((% (* 100.0 (/ transferred size))) + (throughput (/ transferred elapsed)) + (left (format #f " ~a ~a" file + (byte-count->string size))) + (right (format #f "~a/s ~a ~a~6,1f%" + (byte-count->string throughput) + (seconds->string elapsed) + (progress-bar %) %))) + (erase-current-line log-port) + (display (string-pad-middle left right + (current-terminal-columns)) + log-port) + (force-output log-port)) + (let* ((throughput (/ transferred elapsed)) + (left (format #f " ~a" file)) + (right (format #f "~a/s ~a | ~a transferred" + (byte-count->string throughput) + (seconds->string elapsed) + (byte-count->string transferred)))) + (erase-current-line log-port) + (display (string-pad-middle left right + (current-terminal-columns)) + log-port) + (force-output log-port)))) + (define* (progress-reporter/file file size #:optional (log-port (current-output-port)) #:key (abbreviation basename)) @@ -192,37 +229,10 @@ ABBREVIATION used to shorten FILE for display." (let ((start-time (current-time time-monotonic)) (transferred 0)) (define (render) - "Write the progress report to LOG-PORT." - (define elapsed - (duration->seconds - (time-difference (current-time time-monotonic) start-time))) - (if (number? size) - (let* ((% (* 100.0 (/ transferred size))) - (throughput (/ transferred elapsed)) - (left (format #f " ~a ~a" - (abbreviation file) - (byte-count->string size))) - (right (format #f "~a/s ~a ~a~6,1f%" - (byte-count->string throughput) - (seconds->string elapsed) - (progress-bar %) %))) - (erase-current-line log-port) - (display (string-pad-middle left right - (current-terminal-columns)) - log-port) - (force-output log-port)) - (let* ((throughput (/ transferred elapsed)) - (left (format #f " ~a" - (abbreviation file))) - (right (format #f "~a/s ~a | ~a transferred" - (byte-count->string throughput) - (seconds->string elapsed) - (byte-count->string transferred)))) - (erase-current-line log-port) - (display (string-pad-middle left right - (current-terminal-columns)) - log-port) - (force-output log-port)))) + (display-download-progress (abbreviation file) size + #:start-time start-time + #:transferred transferred + #:log-port log-port)) (progress-reporter (start render) From dc0f74e5fc26977a3ee6c4f2aa74a141f4359982 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 18 Jan 2017 23:21:29 +0100 Subject: [PATCH 156/909] Add (guix status) and use it for pretty colored output. * guix/progress.scm (progress-reporter/trace): New procedure. (%progress-interval): New variable. (progress-reporter/file): Use it. * guix/scripts/build.scm (set-build-options-from-command-line): Pass #:print-extended-build-trace?. (%default-options): Add 'print-extended-build-trace?'. (guix-build): Parameterize CURRENT-TERMINAL-COLUMNS. Use 'build-status-updater'. * guix/scripts/environment.scm (%default-options): Add 'print-extended-build-trace?'. (guix-environment): Wrap body in 'with-status-report'. * guix/scripts/pack.scm (%default-options): Add 'print-build-trace?' and 'print-extended-build-trace?'. (guix-pack): Wrap body in 'with-status-report'. * guix/scripts/package.scm (%default-options, guix-package): Likewise. * guix/scripts/system.scm (%default-options, guix-system): Likewise. * guix/scripts/pull.scm (%default-options, guix-pull): Likewise. * guix/scripts/substitute.scm (progress-report-port): Don't call STOP when TOTAL is zero. (process-substitution): Add #:print-build-trace? and honor it. (guix-substitute)[print-build-trace?]: New variable. Pass #:print-build-trace? to 'process-substitution'. * guix/status.scm: New file. * guix/store.scm (set-build-options): Add #:print-extended-build-trace?; pass it into PAIRS. (%protocol-version): Bump. (protocol-version, nix-server-version): New procedures. (current-store-protocol-version): New variable. (with-store, build-things): Parameterize it. * guix/ui.scm (build-output-port): Remove. (colorize-string): Export. * po/guix/POTFILES.in: Add guix/status.scm. * tests/status.scm: New file. * Makefile.am (SCM_TESTS): Add it. * nix/libstore/worker-protocol.hh (PROTOCOL_VERSION): Bump to 0x162. * nix/libstore/build.cc (DerivationGoal::registerOutputs) (SubstitutionGoal::finished): Print a "@ hash-mismatch" trace before throwing. --- .dir-locals.el | 1 + Makefile.am | 2 + guix/progress.scm | 38 ++- guix/scripts/build.scm | 13 +- guix/scripts/environment.scm | 110 +++---- guix/scripts/pack.scm | 140 ++++----- guix/scripts/package.scm | 25 +- guix/scripts/perform-download.scm | 1 + guix/scripts/pull.scm | 64 ++-- guix/scripts/substitute.scm | 42 ++- guix/scripts/system.scm | 11 +- guix/status.scm | 493 ++++++++++++++++++++++++++++++ guix/store.scm | 53 +++- guix/ui.scm | 122 +------- nix/libstore/build.cc | 27 +- nix/libstore/worker-protocol.hh | 2 +- po/guix/POTFILES.in | 1 + tests/status.scm | 115 +++++++ 18 files changed, 934 insertions(+), 326 deletions(-) create mode 100644 guix/status.scm create mode 100644 tests/status.scm diff --git a/.dir-locals.el b/.dir-locals.el index eb99a5bcc1..793117c0ae 100644 --- a/.dir-locals.el +++ b/.dir-locals.el @@ -59,6 +59,7 @@ (eval . (put 'emacs-substitute-variables 'scheme-indent-function 1)) (eval . (put 'with-derivation-narinfo 'scheme-indent-function 1)) (eval . (put 'with-derivation-substitute 'scheme-indent-function 2)) + (eval . (put 'with-status-report 'scheme-indent-function 1)) (eval . (put 'mlambda 'scheme-indent-function 1)) (eval . (put 'mlambdaq 'scheme-indent-function 1)) diff --git a/Makefile.am b/Makefile.am index 5c8639d665..7fd29b90a8 100644 --- a/Makefile.am +++ b/Makefile.am @@ -131,6 +131,7 @@ MODULES = \ guix/svn-download.scm \ guix/i18n.scm \ guix/ui.scm \ + guix/status.scm \ guix/build/android-ndk-build-system.scm \ guix/build/ant-build-system.scm \ guix/build/download.scm \ @@ -340,6 +341,7 @@ SCM_TESTS = \ tests/glob.scm \ tests/grafts.scm \ tests/ui.scm \ + tests/status.scm \ tests/records.scm \ tests/upstream.scm \ tests/combinators.scm \ diff --git a/guix/progress.scm b/guix/progress.scm index d4ebb32991..3b9ff408cd 100644 --- a/guix/progress.scm +++ b/guix/progress.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017 Sou Bunnbu ;;; Copyright © 2015 Steve Sprang -;;; Copyright © 2017 Ludovic Courtès +;;; Copyright © 2017, 2018 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -38,8 +38,11 @@ progress-reporter/silent progress-reporter/file progress-reporter/bar + progress-reporter/trace display-download-progress + erase-current-line + progress-bar byte-count->string current-terminal-columns @@ -220,6 +223,10 @@ throughput." log-port) (force-output log-port)))) +(define %progress-interval + ;; Default interval between subsequent outputs for rate-limited displays. + (make-time time-monotonic 200000000 0)) + (define* (progress-reporter/file file size #:optional (log-port (current-output-port)) #:key (abbreviation basename)) @@ -238,8 +245,7 @@ ABBREVIATION used to shorten FILE for display." (start render) ;; Report the progress every 300ms or longer. (report - (let ((rate-limited-render - (rate-limited render (make-time time-monotonic 300000000 0)))) + (let ((rate-limited-render (rate-limited render %progress-interval))) (lambda (value) (set! transferred value) (rate-limited-render)))) @@ -279,6 +285,32 @@ tasks is performed. Write PREFIX at the beginning of the line." (newline port)) (force-output port))))) +(define* (progress-reporter/trace file url size + #:optional (log-port (current-output-port))) + "Like 'progress-reporter/file', but instead of returning human-readable +progress reports, write \"build trace\" lines to be processed elsewhere." + (define (report-progress transferred) + (define message + (format #f "@ download-progress ~a ~a ~a ~a~%" + file url (or size "-") transferred)) + + (display message log-port) ;should be atomic + (flush-output-port log-port)) + + (progress-reporter + (start (lambda () + (display (format #f "@ download-started ~a ~a ~a~%" + file url (or size "-")) + log-port))) + (report (rate-limited report-progress %progress-interval)) + (stop (lambda () + (report-progress size) + (display (format #f "@ download-succeeded ~a ~a ~a~%" + file url + (or (and=> (stat file #f) stat:size) + size)) + log-port))))) + ;; TODO: replace '(@ (guix build utils) dump-port))'. (define* (dump-port* in out #:key (buffer-size 16384) diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm index 9d38610633..5a6ba62bc3 100644 --- a/guix/scripts/build.scm +++ b/guix/scripts/build.scm @@ -45,6 +45,9 @@ #:use-module (srfi srfi-37) #:autoload (gnu packages) (specification->package %package-module-path) #:autoload (guix download) (download-to-store) + #:use-module (guix status) + #:use-module ((guix progress) #:select (current-terminal-columns)) + #:use-module ((guix build syscalls) #:select (terminal-columns)) #:export (%standard-build-options set-build-options-from-command-line set-build-options-from-command-line* @@ -390,6 +393,8 @@ options handled by 'set-build-options-from-command-line', and listed in #:max-silent-time (assoc-ref opts 'max-silent-time) #:timeout (assoc-ref opts 'timeout) #:print-build-trace (assoc-ref opts 'print-build-trace?) + #:print-extended-build-trace? + (assoc-ref opts 'print-extended-build-trace?) #:verbosity (assoc-ref opts 'verbosity))) (define set-build-options-from-command-line* @@ -499,6 +504,7 @@ options handled by 'set-build-options-from-command-line', and listed in (substitutes? . #t) (build-hook? . #t) (print-build-trace? . #t) + (print-extended-build-trace? . #t) (verbosity . 0))) (define (show-help) @@ -733,11 +739,12 @@ needed." ;; Set the build options before we do anything else. (set-build-options-from-command-line store opts) - (parameterize ((current-build-output-port + (parameterize ((current-terminal-columns (terminal-columns)) + (current-build-output-port (if quiet? (%make-void-port "w") - (build-output-port #:verbose? #t - #:port (duplicate-port (current-error-port) "w"))))) + (build-event-output-port + (build-status-updater print-build-event))))) (let* ((mode (assoc-ref opts 'build-mode)) (drv (options->derivations store opts)) (urls (map (cut string-append <> "/log") diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm index 1c04800e42..9fc7edcd36 100644 --- a/guix/scripts/environment.scm +++ b/guix/scripts/environment.scm @@ -21,6 +21,7 @@ (define-module (guix scripts environment) #:use-module (guix ui) #:use-module (guix store) + #:use-module (guix status) #:use-module (guix grafts) #:use-module (guix derivations) #:use-module (guix packages) @@ -173,6 +174,8 @@ COMMAND or an interactive shell in that environment.\n")) (substitutes? . #t) (build-hook? . #t) (graft? . #t) + (print-build-trace? . #t) + (print-extended-build-trace? . #t) (verbosity . 0))) (define (tag-package-arg opts arg) @@ -661,59 +664,60 @@ message if any test fails." (leave (G_ "'--user' cannot be used without '--container'~%"))) (with-store store - (set-build-options-from-command-line store opts) + (with-status-report print-build-event + (set-build-options-from-command-line store opts) - ;; Use the bootstrap Guile when requested. - (parameterize ((%graft? (assoc-ref opts 'graft?)) - (%guile-for-build - (package-derivation - store - (if bootstrap? - %bootstrap-guile - (canonical-package guile-2.2))))) - (run-with-store store - ;; Containers need a Bourne shell at /bin/sh. - (mlet* %store-monad ((bash (environment-bash container? - bootstrap? - system)) - (prof-drv (manifest->derivation - manifest system bootstrap?)) - (profile -> (derivation->output-path prof-drv)) - (gc-root -> (assoc-ref opts 'gc-root))) + ;; Use the bootstrap Guile when requested. + (parameterize ((%graft? (assoc-ref opts 'graft?)) + (%guile-for-build + (package-derivation + store + (if bootstrap? + %bootstrap-guile + (canonical-package guile-2.2))))) + (run-with-store store + ;; Containers need a Bourne shell at /bin/sh. + (mlet* %store-monad ((bash (environment-bash container? + bootstrap? + system)) + (prof-drv (manifest->derivation + manifest system bootstrap?)) + (profile -> (derivation->output-path prof-drv)) + (gc-root -> (assoc-ref opts 'gc-root))) - ;; First build the inputs. This is necessary even for - ;; --search-paths. Additionally, we might need to build bash for - ;; a container. - (mbegin %store-monad - (build-environment (if (derivation? bash) - (list prof-drv bash) - (list prof-drv)) - opts) - (mwhen gc-root - (register-gc-root profile gc-root)) + ;; First build the inputs. This is necessary even for + ;; --search-paths. Additionally, we might need to build bash for + ;; a container. + (mbegin %store-monad + (build-environment (if (derivation? bash) + (list prof-drv bash) + (list prof-drv)) + opts) + (mwhen gc-root + (register-gc-root profile gc-root)) - (cond - ((assoc-ref opts 'dry-run?) - (return #t)) - ((assoc-ref opts 'search-paths) - (show-search-paths profile manifest #:pure? pure?) - (return #t)) - (container? - (let ((bash-binary - (if bootstrap? - bash - (string-append (derivation->output-path bash) - "/bin/sh")))) - (launch-environment/container #:command command - #:bash bash-binary - #:user user - #:user-mappings mappings - #:profile profile - #:manifest manifest - #:link-profile? link-prof? - #:network? network?))) - (else - (return - (exit/status - (launch-environment/fork command profile manifest - #:pure? pure?))))))))))))) + (cond + ((assoc-ref opts 'dry-run?) + (return #t)) + ((assoc-ref opts 'search-paths) + (show-search-paths profile manifest #:pure? pure?) + (return #t)) + (container? + (let ((bash-binary + (if bootstrap? + bash + (string-append (derivation->output-path bash) + "/bin/sh")))) + (launch-environment/container #:command command + #:bash bash-binary + #:user user + #:user-mappings mappings + #:profile profile + #:manifest manifest + #:link-profile? link-prof? + #:network? network?))) + (else + (return + (exit/status + (launch-environment/fork command profile manifest + #:pure? pure?)))))))))))))) diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm index 1916f3b9d7..163f5b1dc1 100644 --- a/guix/scripts/pack.scm +++ b/guix/scripts/pack.scm @@ -25,6 +25,7 @@ #:use-module (guix gexp) #:use-module (guix utils) #:use-module (guix store) + #:use-module (guix status) #:use-module (guix grafts) #:use-module (guix monads) #:use-module (guix modules) @@ -538,6 +539,8 @@ please email '~a'~%") (substitutes? . #t) (build-hook? . #t) (graft? . #t) + (print-build-trace? . #t) + (print-extended-build-trace? . #t) (verbosity . 0) (symlinks . ()) (compressor . ,(first %compressors)))) @@ -684,72 +687,73 @@ Create a bundle of PACKAGE.\n")) (with-error-handling (with-store store - ;; Set the build options before we do anything else. - (set-build-options-from-command-line store opts) + (with-status-report print-build-event + ;; Set the build options before we do anything else. + (set-build-options-from-command-line store opts) - (parameterize ((%graft? (assoc-ref opts 'graft?)) - (%guile-for-build (package-derivation - store - (if (assoc-ref opts 'bootstrap?) - %bootstrap-guile - (canonical-package guile-2.2)) - (assoc-ref opts 'system) - #:graft? (assoc-ref opts 'graft?)))) - (let* ((dry-run? (assoc-ref opts 'dry-run?)) - (relocatable? (assoc-ref opts 'relocatable?)) - (manifest (let ((manifest (manifest-from-args store opts))) - ;; Note: We cannot honor '--bootstrap' here because - ;; 'glibc-bootstrap' lacks 'libc.a'. - (if relocatable? - (map-manifest-entries wrapped-package manifest) - manifest))) - (pack-format (assoc-ref opts 'format)) - (name (string-append (symbol->string pack-format) - "-pack")) - (target (assoc-ref opts 'target)) - (bootstrap? (assoc-ref opts 'bootstrap?)) - (compressor (if bootstrap? - bootstrap-xz - (assoc-ref opts 'compressor))) - (archiver (if (equal? pack-format 'squashfs) - squashfs-tools-next - (if bootstrap? - %bootstrap-coreutils&co - tar))) - (symlinks (assoc-ref opts 'symlinks)) - (build-image (match (assq-ref %formats pack-format) - ((? procedure? proc) proc) - (#f - (leave (G_ "~a: unknown pack format~%") - pack-format)))) - (localstatedir? (assoc-ref opts 'localstatedir?))) - (run-with-store store - (mlet* %store-monad ((profile (profile-derivation - manifest - #:relative-symlinks? relocatable? - #:hooks (if bootstrap? - '() - %default-profile-hooks) - #:locales? (not bootstrap?) - #:target target)) - (drv (build-image name profile - #:target - target - #:compressor - compressor - #:symlinks - symlinks - #:localstatedir? - localstatedir? - #:archiver - archiver))) - (mbegin %store-monad - (show-what-to-build* (list drv) - #:use-substitutes? - (assoc-ref opts 'substitutes?) - #:dry-run? dry-run?) - (munless dry-run? - (built-derivations (list drv)) - (return (format #t "~a~%" - (derivation->output-path drv)))))) - #:system (assoc-ref opts 'system))))))) + (parameterize ((%graft? (assoc-ref opts 'graft?)) + (%guile-for-build (package-derivation + store + (if (assoc-ref opts 'bootstrap?) + %bootstrap-guile + (canonical-package guile-2.2)) + (assoc-ref opts 'system) + #:graft? (assoc-ref opts 'graft?)))) + (let* ((dry-run? (assoc-ref opts 'dry-run?)) + (relocatable? (assoc-ref opts 'relocatable?)) + (manifest (let ((manifest (manifest-from-args store opts))) + ;; Note: We cannot honor '--bootstrap' here because + ;; 'glibc-bootstrap' lacks 'libc.a'. + (if relocatable? + (map-manifest-entries wrapped-package manifest) + manifest))) + (pack-format (assoc-ref opts 'format)) + (name (string-append (symbol->string pack-format) + "-pack")) + (target (assoc-ref opts 'target)) + (bootstrap? (assoc-ref opts 'bootstrap?)) + (compressor (if bootstrap? + bootstrap-xz + (assoc-ref opts 'compressor))) + (archiver (if (equal? pack-format 'squashfs) + squashfs-tools-next + (if bootstrap? + %bootstrap-coreutils&co + tar))) + (symlinks (assoc-ref opts 'symlinks)) + (build-image (match (assq-ref %formats pack-format) + ((? procedure? proc) proc) + (#f + (leave (G_ "~a: unknown pack format~%") + pack-format)))) + (localstatedir? (assoc-ref opts 'localstatedir?))) + (run-with-store store + (mlet* %store-monad ((profile (profile-derivation + manifest + #:relative-symlinks? relocatable? + #:hooks (if bootstrap? + '() + %default-profile-hooks) + #:locales? (not bootstrap?) + #:target target)) + (drv (build-image name profile + #:target + target + #:compressor + compressor + #:symlinks + symlinks + #:localstatedir? + localstatedir? + #:archiver + archiver))) + (mbegin %store-monad + (show-what-to-build* (list drv) + #:use-substitutes? + (assoc-ref opts 'substitutes?) + #:dry-run? dry-run?) + (munless dry-run? + (built-derivations (list drv)) + (return (format #t "~a~%" + (derivation->output-path drv)))))) + #:system (assoc-ref opts 'system)))))))) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index c3ed2ac935..93a77915fe 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -24,6 +24,7 @@ (define-module (guix scripts package) #:use-module (guix ui) + #:use-module (guix status) #:use-module (guix store) #:use-module (guix grafts) #:use-module (guix derivations) @@ -330,7 +331,8 @@ ENTRIES, a list of manifest entries, in the context of PROFILE." (graft? . #t) (substitutes? . #t) (build-hook? . #t) - (print-build-trace? . #t))) + (print-build-trace? . #t) + (print-extended-build-trace? . #t))) (define (show-help) (display (G_ "Usage: guix package [OPTION]... @@ -941,15 +943,12 @@ processed, #f otherwise." (or (process-query opts) (parameterize ((%store (open-connection)) (%graft? (assoc-ref opts 'graft?))) - (set-build-options-from-command-line (%store) opts) - - (parameterize ((%guile-for-build - (package-derivation - (%store) - (if (assoc-ref opts 'bootstrap?) - %bootstrap-guile - (canonical-package guile-2.2)))) - (current-build-output-port - (build-output-port #:verbose? verbose? - #:port (duplicate-port (current-error-port) "w")))) - (process-actions (%store) opts)))))) + (with-status-report print-build-event/quiet + (set-build-options-from-command-line (%store) opts) + (parameterize ((%guile-for-build + (package-derivation + (%store) + (if (assoc-ref opts 'bootstrap?) + %bootstrap-guile + (canonical-package guile-2.2))))) + (process-actions (%store) opts))))))) diff --git a/guix/scripts/perform-download.scm b/guix/scripts/perform-download.scm index 18e2fc92f2..9f6ecc00d2 100644 --- a/guix/scripts/perform-download.scm +++ b/guix/scripts/perform-download.scm @@ -48,6 +48,7 @@ OUTPUT. Note: Unless OUTPUT is #f, we don't read the value of 'out' in DRV since the actual output is different from that when we're doing a 'bmCheck' or 'bmRepair' build." + ;; TODO: Use 'trace-progress-proc' when possible. (derivation-let drv ((url "url") (output* "out") (executable "executable") diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index 39aebb18e2..803f7cf142 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -20,6 +20,7 @@ (define-module (guix scripts pull) #:use-module (guix ui) #:use-module (guix utils) + #:use-module (guix status) #:use-module (guix scripts) #:use-module (guix store) #:use-module (guix config) @@ -61,6 +62,8 @@ `((system . ,(%current-system)) (substitutes? . #t) (build-hook? . #t) + (print-build-trace? . #t) + (print-extended-build-trace? . #t) (graft? . #t) (verbosity . 0))) @@ -447,36 +450,37 @@ Use '~/.config/guix/channels.scm' instead.")) #t) ;XXX: not very useful (else (with-store store - (parameterize ((%graft? (assoc-ref opts 'graft?)) - (%repository-cache-directory cache)) - (set-build-options-from-command-line store opts) - (honor-x509-certificates store) + (with-status-report print-build-event + (parameterize ((%graft? (assoc-ref opts 'graft?)) + (%repository-cache-directory cache)) + (set-build-options-from-command-line store opts) + (honor-x509-certificates store) - (let ((instances (latest-channel-instances store channels))) - (format (current-error-port) - (N_ "Building from this channel:~%" - "Building from these channels:~%" - (length instances))) - (for-each (lambda (instance) - (let ((channel - (channel-instance-channel instance))) - (format (current-error-port) - " ~10a~a\t~a~%" - (channel-name channel) - (channel-url channel) - (string-take - (channel-instance-commit instance) - 7)))) - instances) - (parameterize ((%guile-for-build - (package-derivation - store - (if (assoc-ref opts 'bootstrap?) - %bootstrap-guile - (canonical-package guile-2.2))))) - (run-with-store store - (build-and-install instances profile - #:verbose? - (assoc-ref opts 'verbose?))))))))))))) + (let ((instances (latest-channel-instances store channels))) + (format (current-error-port) + (N_ "Building from this channel:~%" + "Building from these channels:~%" + (length instances))) + (for-each (lambda (instance) + (let ((channel + (channel-instance-channel instance))) + (format (current-error-port) + " ~10a~a\t~a~%" + (channel-name channel) + (channel-url channel) + (string-take + (channel-instance-commit instance) + 7)))) + instances) + (parameterize ((%guile-for-build + (package-derivation + store + (if (assoc-ref opts 'bootstrap?) + %bootstrap-guile + (canonical-package guile-2.2))))) + (run-with-store store + (build-and-install instances profile + #:verbose? + (assoc-ref opts 'verbose?)))))))))))))) ;;; pull.scm ends here diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm index 50c6a22064..eb82224016 100755 --- a/guix/scripts/substitute.scm +++ b/guix/scripts/substitute.scm @@ -837,7 +837,16 @@ REPORTER, which should be a object." (make-custom-binary-input-port "progress-port-proc" read! #f #f (lambda () - (stop) + ;; XXX: Kludge! When used through + ;; 'decompressed-port', this port ends + ;; up being closed twice: once in a + ;; child process early on, and at the + ;; end in the parent process. Ignore + ;; the early close so we don't output + ;; a spurious "download-succeeded" + ;; trace. + (unless (zero? total) + (stop)) (close-port port))))))) (define-syntax with-networking @@ -930,7 +939,7 @@ authorized substitutes." (error "unknown `--query' command" wtf)))) (define* (process-substitution store-item destination - #:key cache-urls acl) + #:key cache-urls acl print-build-trace?) "Substitute STORE-ITEM (a store file name) from CACHE-URLS, and write it to DESTINATION as a nar file. Verify the substitute against ACL." (let* ((narinfo (lookup-narinfo cache-urls store-item @@ -943,8 +952,10 @@ DESTINATION as a nar file. Verify the substitute against ACL." ;; Tell the daemon what the expected hash of the Nar itself is. (format #t "~a~%" (narinfo-hash narinfo)) - (format (current-error-port) - (G_ "Downloading ~a...~%") (uri->string uri)) + (unless print-build-trace? + (format (current-error-port) + (G_ "Downloading ~a...~%") (uri->string uri))) + (let*-values (((raw download-size) ;; Note that Hydra currently generates Nars on the fly ;; and doesn't specify a Content-Length, so @@ -955,10 +966,15 @@ DESTINATION as a nar file. Verify the substitute against ACL." (dl-size (or download-size (and (equal? comp "none") (narinfo-size narinfo)))) - (reporter (progress-reporter/file - (uri->string uri) dl-size - (current-error-port) - #:abbreviation nar-uri-abbreviation))) + (reporter (if print-build-trace? + (progress-reporter/trace + destination + (uri->string uri) dl-size + (current-error-port)) + (progress-reporter/file + (uri->string uri) dl-size + (current-error-port) + #:abbreviation nar-uri-abbreviation)))) (progress-report-port reporter raw))) ((input pids) ;; NOTE: This 'progress' port of current process will be @@ -1058,6 +1074,13 @@ default value." (define (guix-substitute . args) "Implement the build daemon's substituter protocol." + (define print-build-trace? + (match (or (find-daemon-option "untrusted-print-extended-build-trace") + (find-daemon-option "print-extended-build-trace")) + (#f #f) + ((= string->number number) (> number 0)) + (_ #f))) + (mkdir-p %narinfo-cache-directory) (maybe-remove-expired-cache-entries %narinfo-cache-directory cached-narinfo-files @@ -1111,7 +1134,8 @@ default value." (parameterize ((current-terminal-columns (client-terminal-columns))) (process-substitution store-path destination #:cache-urls (substitute-urls) - #:acl (current-acl)))) + #:acl (current-acl) + #:print-build-trace? print-build-trace?))) ((or ("-V") ("--version")) (show-version-and-exit "guix substitute")) (("--help") diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index 1e7620f147..f9d6b9e5b6 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -23,6 +23,7 @@ (define-module (guix scripts system) #:use-module (guix config) #:use-module (guix ui) + #:use-module (guix status) #:use-module (guix store) #:autoload (guix store database) (register-path) #:use-module (guix grafts) @@ -1079,6 +1080,8 @@ Some ACTIONS support additional ARGS.\n")) `((system . ,(%current-system)) (substitutes? . #t) (build-hook? . #t) + (print-build-trace? . #t) + (print-extended-build-trace? . #t) (graft? . #t) (verbosity . 0) (file-system-type . "ext4") @@ -1253,9 +1256,11 @@ argument list and OPTS is the option alist." parse-sub-command)) (args (option-arguments opts)) (command (assoc-ref opts 'action))) - (parameterize ((%graft? (assoc-ref opts 'graft?)) - (current-terminal-columns (terminal-columns))) - (process-command command args opts))))) + (parameterize ((%graft? (assoc-ref opts 'graft?))) + (with-status-report (if (memq command '(init reconfigure)) + print-build-event/quiet + print-build-event) + (process-command command args opts)))))) ;;; Local Variables: ;;; eval: (put 'call-with-service-upgrade-info 'scheme-indent-function 1) diff --git a/guix/status.scm b/guix/status.scm new file mode 100644 index 0000000000..94d4748af5 --- /dev/null +++ b/guix/status.scm @@ -0,0 +1,493 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2017, 2018 Ludovic Courtès +;;; +;;; 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 . + +(define-module (guix status) + #:use-module (guix records) + #:use-module (guix i18n) + #:use-module ((guix ui) #:select (colorize-string)) + #:use-module (guix progress) + #:autoload (guix build syscalls) (terminal-columns) + #:use-module ((guix build download) + #:select (nar-uri-abbreviation)) + #:use-module ((guix store) + #:select (current-build-output-port + current-store-protocol-version + log-file)) + #:use-module (guix derivations) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-9) + #:use-module (srfi srfi-19) + #:use-module (srfi srfi-26) + #:use-module (ice-9 regex) + #:use-module (ice-9 match) + #:use-module (ice-9 format) + #:use-module (ice-9 binary-ports) + #:use-module (rnrs bytevectors) + #:use-module ((system foreign) + #:select (bytevector->pointer pointer->bytevector)) + #:export (build-event-output-port + compute-status + + build-status + build-status? + build-status-building + build-status-downloading + build-status-builds-completed + build-status-downloads-completed + + download? + download + download-item + download-uri + download-size + download-start + download-end + download-transferred + + build-status-updater + print-build-event + print-build-event/quiet + print-build-status + + with-status-report)) + +;;; Commentary: +;;; +;;; This module provides facilities to track the status of ongoing builds and +;;; downloads in a given session, as well as tools to report about the current +;;; status to user interfaces. It does so by analyzing the output of +;;; 'current-build-output-port'. The build status is maintained in a +;;; record. +;;; +;;; Code: + + +;;; +;;; Build status tracking. +;;; + +;; Builds and substitutions performed by the daemon. +(define-record-type* build-status make-build-status + build-status? + (building build-status-building ;list of drv + (default '())) + (downloading build-status-downloading ;list of + (default '())) + (builds-completed build-status-builds-completed ;list of drv + (default '())) + (downloads-completed build-status-downloads-completed ;list of store items + (default '()))) + +;; On-going or completed downloads. Downloads can be stem from substitutes +;; and from "builtin:download" fixed-output derivations. +(define-record-type + (%download item uri size start end transferred) + download? + (item download-item) ;store item + (uri download-uri) ;string | #f + (size download-size) ;integer | #f + (start download-start) ;