mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 13:28:12 -05:00
Merge branch 'master' into core-updates
This commit is contained in:
commit
6a0427af6c
78 changed files with 2290 additions and 2381 deletions
211
doc/guix.texi
211
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}
|
||||
|
@ -16757,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
|
||||
|
|
|
@ -808,14 +808,12 @@ 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 \
|
||||
%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-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 \
|
||||
|
@ -918,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 \
|
||||
|
@ -1114,7 +1113,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 \
|
||||
|
|
|
@ -869,7 +869,7 @@ (define-public clusterssh
|
|||
(define-public rename
|
||||
(package
|
||||
(name "rename")
|
||||
(version "0.35")
|
||||
(version "1.00")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
|
@ -877,8 +877,24 @@ (define-public rename
|
|||
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)
|
||||
|
|
|
@ -2015,14 +2015,14 @@ (define-public patchage
|
|||
(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
|
||||
|
|
|
@ -2936,18 +2936,15 @@ (define-public hisat2
|
|||
(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 @@ (define-public hmmer
|
|||
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
|
||||
|
@ -4800,66 +4795,79 @@ (define-public raxml
|
|||
(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")
|
||||
|
@ -13723,3 +13731,141 @@ (define-public python-hic2cool
|
|||
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:
|
||||
;; <https://github.com/mw55309/poRe_docs/issues/10>.
|
||||
(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+))))
|
||||
|
||||
(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+))))
|
||||
|
||||
(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+))))
|
||||
|
|
|
@ -409,7 +409,7 @@ (define-public libtorrent-rasterbar
|
|||
(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 @@ (define-public qbittorrent
|
|||
(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 @@ (define-public qbittorrent
|
|||
`(("boost" ,boost)
|
||||
("libtorrent-rasterbar" ,libtorrent-rasterbar)
|
||||
("openssl" ,openssl)
|
||||
("python" ,python)
|
||||
("python" ,python-wrapper)
|
||||
("qtbase" ,qtbase)
|
||||
("qtsvg" ,qtsvg)
|
||||
("zlib" ,zlib)))
|
||||
|
|
|
@ -1920,14 +1920,14 @@ (define-public python2-nose-randomly
|
|||
(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)
|
||||
|
|
|
@ -5875,3 +5875,23 @@ (define-public r-abps
|
|||
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+)))
|
||||
|
|
|
@ -1457,15 +1457,15 @@ (define-public perl-dbd-pg
|
|||
(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
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;;
|
||||
;;; 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
|
||||
|
@ -71,7 +74,7 @@ (define-public debian-archive-keyring
|
|||
(define-public ubuntu-keyring
|
||||
(package
|
||||
(name "ubuntu-keyring")
|
||||
(version "2018.02.28")
|
||||
(version "2018.09.18.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -79,7 +82,7 @@ (define-public ubuntu-keyring
|
|||
"+files/" name "_" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1zj3012cz7rlx9pm39wnwa0lmi1h38n6bkgbz81vnmcsvqsc9a3a"))))
|
||||
"0csx2n62rj9rxjv4y8qhby7l9rbybfwrb0406pc2cjr7f2yk91af"))))
|
||||
(build-system trivial-build-system)
|
||||
(arguments
|
||||
`(#:modules ((guix build utils))
|
||||
|
|
|
@ -243,7 +243,7 @@ (define-public tipp10
|
|||
(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 @@ (define-public snap
|
|||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0n32hg8rx6alk5j58l76gzmicrg1bp7jagz5mh1zrg7591aicjal"))))
|
||||
"0yc0w0cdhvi0nwqqrann2v3y0n7shxh7irgixqvlavp4k49d7aqj"))))
|
||||
(build-system trivial-build-system)
|
||||
(arguments
|
||||
`(#:modules ((guix build utils))
|
||||
|
|
|
@ -118,6 +118,7 @@ (define-module (gnu packages emacs)
|
|||
#: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))
|
||||
|
@ -334,9 +335,9 @@ (define-public guile-emacs
|
|||
;;; Emacs hacking.
|
||||
;;;
|
||||
|
||||
(define-public geiser
|
||||
(define-public emacs-geiser
|
||||
(package
|
||||
(name "geiser")
|
||||
(name "emacs-geiser")
|
||||
(version "0.10")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
|
@ -369,7 +370,10 @@ (define-public geiser
|
|||
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")
|
||||
|
@ -394,6 +398,9 @@ (define-public paredit
|
|||
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")
|
||||
|
@ -443,9 +450,9 @@ (define-public emacs-with-editor
|
|||
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)
|
||||
|
@ -511,9 +518,12 @@ (define-public magit
|
|||
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)
|
||||
|
@ -530,7 +540,7 @@ (define-public magit-svn
|
|||
("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))
|
||||
|
@ -576,6 +586,9 @@ (define-public magit-svn
|
|||
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")
|
||||
|
@ -640,9 +653,9 @@ (define-public emacs-ghub
|
|||
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)
|
||||
|
@ -730,7 +743,10 @@ (define (copy-to-dir dir files)
|
|||
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")
|
||||
|
@ -766,6 +782,9 @@ (define-public flycheck
|
|||
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.
|
||||
|
@ -909,7 +928,7 @@ (define-public emacs-wget
|
|||
;;; Multimedia.
|
||||
;;;
|
||||
|
||||
(define-public emms
|
||||
(define-public emacs-emms
|
||||
(package
|
||||
(name "emacs-emms")
|
||||
(version "5.0")
|
||||
|
@ -1047,9 +1066,12 @@ (define-public emms
|
|||
(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
|
||||
|
@ -1079,9 +1101,9 @@ (define-public emacs-emms-mode-line-cycle
|
|||
;;; Miscellaneous.
|
||||
;;;
|
||||
|
||||
(define-public bbdb
|
||||
(define-public emacs-bbdb
|
||||
(package
|
||||
(name "bbdb")
|
||||
(name "emacs-bbdb")
|
||||
(version "3.1.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
|
@ -1120,6 +1142,9 @@ (define-public bbdb
|
|||
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")
|
||||
|
@ -1720,7 +1745,7 @@ (define-public emacs-guix
|
|||
`(("guile" ,guile-2.2)
|
||||
("guix" ,guix)))
|
||||
(propagated-inputs
|
||||
`(("geiser" ,geiser)
|
||||
`(("geiser" ,emacs-geiser)
|
||||
("guile-gcrypt" ,guile-gcrypt)
|
||||
("dash" ,emacs-dash)
|
||||
("bui" ,emacs-bui)
|
||||
|
@ -2376,7 +2401,7 @@ (define-public emacs-string-inflection
|
|||
"1k0sm552iawi49v4zis6dbb81d1rzgky9v0dpv7nj31gnb7bmy7k"))))
|
||||
(build-system emacs-build-system)
|
||||
(native-inputs
|
||||
`(("ert-runner" ,ert-runner)))
|
||||
`(("ert-runner" ,emacs-ert-runner)))
|
||||
(arguments
|
||||
`(#:tests? #t
|
||||
#:test-command '("ert-runner")))
|
||||
|
@ -2662,7 +2687,7 @@ (define-public emacs-deferred
|
|||
(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.
|
||||
|
@ -2671,7 +2696,7 @@ (define-public emacs-deferred
|
|||
for asynchronous tasks.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public butler
|
||||
(define-public emacs-butler
|
||||
(package
|
||||
(name "emacs-butler")
|
||||
(version "0.2.4")
|
||||
|
@ -2697,6 +2722,9 @@ (define-public butler
|
|||
build jobs.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public butler
|
||||
(deprecated-package "emacs-butler" emacs-butler))
|
||||
|
||||
(define-public emacs-company
|
||||
(package
|
||||
(name "emacs-company")
|
||||
|
@ -2822,7 +2850,7 @@ (define-public emacs-multiple-cursors
|
|||
simultaneous cursors.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public typo
|
||||
(define-public emacs-typo
|
||||
(package
|
||||
(name "emacs-typo")
|
||||
(version "1.1")
|
||||
|
@ -2846,6 +2874,9 @@ (define-public typo
|
|||
on context.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public typo
|
||||
(deprecated-package "emacs-typo" emacs-typo))
|
||||
|
||||
(define-public emacs-scheme-complete
|
||||
(let ((commit "9b5cf224bf2a5994bc6d5b152ff487517f1a9bb5"))
|
||||
(package
|
||||
|
@ -3981,7 +4012,7 @@ (define-public emacs-clojure-mode
|
|||
(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")))
|
||||
|
@ -4353,7 +4384,7 @@ (define-public emacs-tide
|
|||
(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")
|
||||
|
@ -4518,7 +4549,7 @@ (define-public emacs-mocker
|
|||
`(#: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")
|
||||
|
@ -4584,7 +4615,7 @@ (define-public emacs-pyvenv
|
|||
#: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")
|
||||
|
@ -4669,7 +4700,7 @@ (define-public emacs-elpy
|
|||
("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)
|
||||
|
@ -5252,7 +5283,7 @@ (define-public emacs-monroe
|
|||
(define-public emacs-orgalist
|
||||
(package
|
||||
(name "emacs-orgalist")
|
||||
(version "1.8")
|
||||
(version "1.9")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -5260,7 +5291,7 @@ (define-public emacs-orgalist
|
|||
"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")
|
||||
|
@ -5318,14 +5349,14 @@ (define-public emacs-org
|
|||
(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")
|
||||
|
@ -5507,14 +5538,15 @@ (define-public emacs-auto-complete
|
|||
(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)))
|
||||
|
@ -5541,14 +5573,15 @@ (define-public m17n-db
|
|||
(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)
|
||||
|
@ -6931,9 +6964,9 @@ (define-public emacs-commander
|
|||
|
||||
;; 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
|
||||
|
@ -6976,6 +7009,9 @@ (define-public ert-runner
|
|||
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")
|
||||
|
@ -7019,7 +7055,7 @@ (define-public emacs-json-reformat
|
|||
(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")))
|
||||
|
@ -7250,7 +7286,7 @@ (define-public emacs-ws-butler
|
|||
"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")))
|
||||
|
@ -7506,7 +7542,7 @@ (define-public emacs-browse-at-remote
|
|||
`(("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")))
|
||||
|
@ -7976,9 +8012,9 @@ (define-public emacs-bongo
|
|||
@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)
|
||||
|
@ -8000,7 +8036,10 @@ (define-public groovy-emacs-modes
|
|||
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
|
||||
|
@ -8022,6 +8061,9 @@ (define-public org-tree-slide
|
|||
@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"))
|
||||
|
@ -8394,7 +8436,7 @@ (define-public emacs-ergoemacs-mode
|
|||
(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 +8444,7 @@ (define-public emacs-password-store
|
|||
"password-store-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1sl0d7nc85c6c2bmmmyb8rpmn47vhkj831l153mjlkawjvhwas27"))))
|
||||
"1x53k5dn3cdmvy8m4fqdld4hji5n676ksl0ql4armkmsds26av1b"))))
|
||||
(build-system emacs-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
|
@ -10094,7 +10136,7 @@ (define-public emacs-benchmark-init
|
|||
|
||||
(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"))
|
||||
|
@ -10112,7 +10154,7 @@ (define-public emacs-magit-org-todos-el
|
|||
(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")
|
||||
|
@ -10951,7 +10993,7 @@ (define-public emacs-dumb-jump
|
|||
`(("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)))
|
||||
|
@ -11138,7 +11180,7 @@ (define-public emacs-evil-magit
|
|||
(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")
|
||||
|
@ -11411,7 +11453,7 @@ (define-public emacs-helm-emms
|
|||
(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")
|
||||
|
@ -11466,7 +11508,7 @@ (define-public emacs-helm-flycheck
|
|||
(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")
|
||||
|
@ -11705,8 +11747,8 @@ (define-public emacs-mu4e-conversation
|
|||
(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.")
|
||||
|
@ -12028,7 +12070,7 @@ (define-public emacs-magit-todos
|
|||
("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")
|
||||
|
@ -12197,3 +12239,41 @@ (define-public emacs-blimp
|
|||
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+))))
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2014 Marek Benc <merkur32@gmail.com>
|
||||
;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -19,34 +20,41 @@
|
|||
(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"
|
||||
;; Tests require a relocatable build.
|
||||
"--enable-relocatable")))
|
||||
(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)))
|
||||
|
||||
("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.
|
||||
|
@ -57,5 +65,23 @@ (define-public enchant
|
|||
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+)))
|
||||
|
||||
;; 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"))))))
|
||||
|
|
|
@ -75,7 +75,7 @@ (define-public fcitx
|
|||
("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("dbus" ,dbus)
|
||||
("enchant" ,enchant)
|
||||
("enchant" ,enchant-1.6)
|
||||
("gettext" ,gettext-minimal)
|
||||
("gtk2" ,gtk+-2)
|
||||
("gtk3" ,gtk+)
|
||||
|
|
|
@ -170,15 +170,15 @@ (define-public weex
|
|||
(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)
|
||||
|
@ -207,16 +207,14 @@ (define-public libfilezilla
|
|||
(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.
|
||||
|
|
|
@ -725,7 +725,7 @@ (define-public gl2ps
|
|||
(define-public virtualgl
|
||||
(package
|
||||
(name "virtualgl")
|
||||
(version "2.5.2")
|
||||
(version "2.6")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -734,16 +734,17 @@ (define-public virtualgl
|
|||
(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)))
|
||||
|
|
|
@ -115,6 +115,8 @@ (define-module (gnu packages gnome)
|
|||
#: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)
|
||||
|
@ -4094,35 +4096,27 @@ (define-public simple-scan
|
|||
(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)
|
||||
(zero? (system* "meson" "build"
|
||||
"--prefix" (assoc-ref outputs "out")))))
|
||||
(replace 'check
|
||||
(lambda _ (zero? (system* "ninja" "-C" "build" "test"))))
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(zero? (system* "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)
|
||||
|
@ -4135,12 +4129,12 @@ (define-public eolie
|
|||
`("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)
|
||||
("ninja" ,ninja)
|
||||
("python" ,python)
|
||||
("glib:bin" ,glib "bin")
|
||||
("gtk+" ,gtk+ "bin")))
|
||||
(inputs
|
||||
`(("gobject-introspection" ,gobject-introspection)
|
||||
|
@ -4150,12 +4144,14 @@ (define-public eolie
|
|||
("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)
|
||||
("webkitgtk" ,webkitgtk)))
|
||||
("webkitgtk" ,webkitgtk-2.22)))
|
||||
(home-page "https://wiki.gnome.org/Apps/Eolie")
|
||||
(synopsis "Web browser for GNOME")
|
||||
(description
|
||||
|
@ -4193,6 +4189,7 @@ (define-public epiphany
|
|||
`(("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)
|
||||
|
@ -4213,7 +4210,7 @@ (define-public epiphany
|
|||
("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
|
||||
|
@ -6936,7 +6933,7 @@ (define-public orca
|
|||
(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 "/"
|
||||
|
@ -6944,7 +6941,7 @@ (define-public gspell
|
|||
name "-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1683vyyfq3q0ph665jj6id8hnlyid4qxzmqiwpv97gmz8zksg6x5"))
|
||||
"1rdv873ixhwr15jwgc2z6k6y0hj353fqnwsy7zkh0c30qwiiv6l1"))
|
||||
(patches (search-patches "gspell-dash-test.patch"))))
|
||||
(build-system glib-or-gtk-build-system)
|
||||
(arguments
|
||||
|
@ -6978,7 +6975,7 @@ (define-public gspell
|
|||
("aspell-dict-en" ,aspell-dict-en)
|
||||
("xorg-server" ,xorg-server)))
|
||||
(propagated-inputs
|
||||
`(("enchant" ,enchant))) ; 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
|
||||
|
@ -7230,7 +7227,7 @@ (define-public sound-juicer
|
|||
(license license:gpl2+)))
|
||||
|
||||
(define-public workrave
|
||||
(let ((commit "v1_10_20"))
|
||||
(let ((commit "v1_10_21"))
|
||||
(package
|
||||
(name "workrave")
|
||||
(version (string-map (match-lambda
|
||||
|
@ -7242,18 +7239,11 @@ (define-public workrave
|
|||
(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
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'autogen
|
||||
(lambda _
|
||||
(invoke "sh" "autogen.sh")
|
||||
#t)))))
|
||||
(propagated-inputs `(("glib" ,glib)
|
||||
("gtk+" ,gtk+)
|
||||
("gdk-pixbuf" ,gdk-pixbuf)
|
||||
|
|
|
@ -35,6 +35,7 @@ (define-module (gnu packages gnuzilla)
|
|||
#: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 @@ (define-module (gnu packages gnuzilla)
|
|||
#: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)
|
||||
|
@ -467,10 +469,10 @@ (define-public nss
|
|||
(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)))
|
||||
|
@ -478,112 +480,27 @@ (define (mozilla-patch file-name changeset hash)
|
|||
(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")
|
||||
(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
|
||||
|
@ -613,13 +530,13 @@ (define-public icecat
|
|||
"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 +550,29 @@ (define-public icecat
|
|||
(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 +587,9 @@ (define-public icecat
|
|||
("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 +606,12 @@ (define-public icecat
|
|||
;; practice somehow. See <http://hydra.gnu.org/build/378133>.
|
||||
#: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 +621,9 @@ (define-public icecat
|
|||
"--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 +638,15 @@ (define-public icecat
|
|||
"--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 +696,24 @@ (define-public icecat
|
|||
'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
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
|
||||
;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
|
||||
;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
|
||||
;;; Copyright @ 2018 Katherine Cox-Buday <cox.katherine.e@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -499,6 +500,124 @@ (define-public go-1.10
|
|||
(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
|
||||
|
|
|
@ -27,15 +27,18 @@ (define-module (gnu packages gprolog)
|
|||
(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
|
||||
|
|
|
@ -406,7 +406,7 @@ (define-public openimageio
|
|||
(define-public openscenegraph
|
||||
(package
|
||||
(name "openscenegraph")
|
||||
(version "3.6.2")
|
||||
(version "3.6.3")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
|
@ -415,8 +415,8 @@ (define-public openscenegraph
|
|||
(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 @@ (define-public openscenegraph
|
|||
("jasper" ,jasper)
|
||||
("librsvg" ,librsvg)
|
||||
("libxrandr" ,libxrandr)
|
||||
("pth" ,pth)
|
||||
("qtbase" ,qtbase)
|
||||
("ffmpeg" ,ffmpeg)
|
||||
("mesa" ,mesa)))
|
||||
(synopsis "High performance real-time graphics toolkit")
|
||||
|
|
|
@ -220,17 +220,18 @@ (define-public xdot
|
|||
(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")
|
||||
|
|
|
@ -1579,12 +1579,11 @@ (define-public gtkspell3
|
|||
`(("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
|
||||
|
|
|
@ -286,7 +286,45 @@ (define-public guile-2.2/fixed
|
|||
; when heavily loaded)
|
||||
|
||||
(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
|
||||
|
|
|
@ -6729,7 +6729,7 @@ (define-public ghc-xml-types
|
|||
(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 @@ (define-public ghc-xml-conduit
|
|||
"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)
|
||||
|
@ -6762,7 +6763,7 @@ (define-public ghc-xml-conduit
|
|||
(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)
|
||||
|
@ -6771,7 +6772,7 @@ (define-public ghc-pandoc-citeproc
|
|||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1l58nbflcnlznc93qimkk7ghk2gv8kipf45zf88piqa2zys41yyx"))))
|
||||
"0yj6rckwsc9vig40cm15ry0j3d01xpk04qma9n4byhal6v4b5h22"))))
|
||||
(build-system haskell-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
|
|
|
@ -44,7 +44,7 @@ (define-module (gnu packages ibus)
|
|||
(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 @@ (define-public ibus
|
|||
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 @@ (define-public ibus
|
|||
("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
|
||||
|
|
|
@ -1347,16 +1347,18 @@ (define-public gpick
|
|||
(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
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
;;; Copyright © 2015 David Thompson <davet@gnu.org>
|
||||
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
|
||||
;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
|
||||
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -92,22 +93,22 @@ (define-public crossguid
|
|||
(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")))
|
||||
|
@ -294,7 +295,7 @@ (define-public kodi
|
|||
"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)
|
||||
|
@ -335,7 +336,7 @@ (define-public kodi
|
|||
#t))
|
||||
(add-before 'check 'build-kodi-test
|
||||
(lambda _
|
||||
(zero? (system* "make" "kodi-test")))))))
|
||||
(invoke "make" "kodi-test"))))))
|
||||
;; TODO: Add dependencies for:
|
||||
;; - nfs
|
||||
;; - cec
|
||||
|
|
|
@ -399,8 +399,8 @@ (define %linux-compatible-systems '("x86_64-linux" "i686-linux" "armhf-linux" "a
|
|||
;; 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
|
||||
|
@ -430,8 +430,8 @@ (define-public linux-libre
|
|||
#: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
|
||||
|
@ -440,14 +440,14 @@ (define-public linux-libre-4.14
|
|||
#: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))
|
||||
|
||||
(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))
|
||||
|
||||
|
|
|
@ -164,7 +164,7 @@ (define-public lxtask
|
|||
(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 @@ (define-public lxterminal
|
|||
version "/" name "-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0jrc3m0hbxcmcgahwjlm46s2350gh80ggb6a90xy0h6xqa3z73fd"))))
|
||||
"1124pghrhnx6q4391ri8nvi6bsmvbj1dx81an08mird8jf2b2rii"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("gtk+" ,gtk+-2)
|
||||
("vte" ,vte/gtk+-2)))
|
||||
|
|
|
@ -750,7 +750,24 @@ (define-public python-scikit-learn
|
|||
(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")
|
||||
|
|
|
@ -1411,7 +1411,7 @@ (define-public pluma
|
|||
(inputs
|
||||
`(("atk" ,atk)
|
||||
("cairo" ,cairo)
|
||||
("enchant" ,enchant)
|
||||
("enchant" ,enchant-1.6)
|
||||
("glib" ,glib)
|
||||
("gtk+" ,gtk+)
|
||||
("gtksourceview" ,gtksourceview)
|
||||
|
|
|
@ -814,8 +814,11 @@ (define-public 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))))
|
||||
|
@ -1034,10 +1037,13 @@ (define-public hdf5-parallel-openmpi
|
|||
`(("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
|
||||
|
@ -1396,6 +1402,13 @@ (define-public octave
|
|||
("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="
|
||||
|
|
|
@ -1135,7 +1135,7 @@ (define-public ytalk
|
|||
(define-public gloox
|
||||
(package
|
||||
(name "gloox")
|
||||
(version "1.0.17")
|
||||
(version "1.0.21")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -1143,7 +1143,7 @@ (define-public gloox
|
|||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"09c01jr5nrm7f1ly42wg0pqqscmp48pv8y2fjx1vwbavjxdq59ri"))))
|
||||
"1k57qgif1yii515m6jaqaibkdysfab6394bpawd2l67321f1a4rw"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("libidn" ,libidn)
|
||||
|
@ -1472,15 +1472,16 @@ (define-public freetalk
|
|||
(define-public libmesode
|
||||
(package
|
||||
(name "libmesode")
|
||||
(version "0.9.1")
|
||||
(version "0.9.2")
|
||||
(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"))))
|
||||
"06f5nfaypvxrbsinxa1k2vrxrs7kqmg38g4wwwk5d63hpn1pj8ak"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("expat" ,expat)
|
||||
|
|
|
@ -30,7 +30,7 @@ (define-module (gnu packages nano)
|
|||
(define-public nano
|
||||
(package
|
||||
(name "nano")
|
||||
(version "3.0")
|
||||
(version "3.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -38,7 +38,7 @@ (define-public nano
|
|||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1868hg9s584fwjrh0fzdrixmxc2qhw520z4q5iv68kjiajivr9g0"))))
|
||||
"17kinzyv6vwgyx2d0ym1kp65qbf7kxzwpyg21ic1rijv1aj2rh0l"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("gettext" ,gettext-minimal)
|
||||
|
|
|
@ -87,6 +87,7 @@ (define-module (gnu packages networking)
|
|||
#: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)
|
||||
|
@ -651,7 +652,7 @@ (define-public wireshark
|
|||
(define-public fping
|
||||
(package
|
||||
(name "fping")
|
||||
(version "4.0")
|
||||
(version "4.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -659,9 +660,9 @@ (define-public fping
|
|||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1kp81wchi79l8z8rrj602fpjrd8bi84y3i7fsaclzlwap5943sv7"))))
|
||||
"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
|
||||
|
@ -673,6 +674,55 @@ (define-public fping
|
|||
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")
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2017 Mike Gerwitz <mtg@gnu.org>
|
||||
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -86,6 +87,14 @@ (define-public node
|
|||
(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 @@ (define-public node
|
|||
|
||||
;; 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 @@ (define-public node
|
|||
|
||||
;; 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"
|
||||
|
@ -125,6 +134,14 @@ (define-public node
|
|||
"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-if-exists
|
||||
'("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
|
||||
|
@ -180,3 +197,16 @@ (define-public node
|
|||
(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"))))))
|
||||
|
|
|
@ -65,6 +65,7 @@ (define-module (gnu packages ocaml)
|
|||
#: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 @@ (define-public ocaml-ssl
|
|||
(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")
|
||||
|
|
|
@ -293,6 +293,7 @@ (define-public 389-ds-base
|
|||
("nspr" ,nspr)
|
||||
("nss" ,nss)
|
||||
("openldap" ,openldap)
|
||||
("openssl" ,openssl) ; #included by net-snmp
|
||||
("pcre" ,pcre)
|
||||
("perl" ,perl)
|
||||
("python" ,python)
|
||||
|
|
|
@ -566,13 +566,13 @@ (define-public rpm
|
|||
(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
|
||||
|
|
|
@ -48,7 +48,7 @@ (define-module (gnu packages parallel)
|
|||
(define-public parallel
|
||||
(package
|
||||
(name "parallel")
|
||||
(version "20180822")
|
||||
(version "20180922")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -56,7 +56,7 @@ (define-public parallel
|
|||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0jjs7fpvdjjb5v0j39a6k7hq9h5ap3db1j7vg1r2dq4swk23h9bm"))))
|
||||
"07q7lzway2qf8mx6fb4q45jmirsc8pw6rgv03ifrp32jw3q8w1za"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
|
@ -66,7 +66,7 @@ (define-public parallel
|
|||
(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"))))
|
||||
|
|
|
@ -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
|
103
gnu/packages/patches/icecat-CVE-2018-12383.patch
Normal file
103
gnu/packages/patches/icecat-CVE-2018-12383.patch
Normal file
|
@ -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 <dkeeler@mozilla.com>
|
||||
# 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<nsIFile> 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);
|
|
@ -1,441 +0,0 @@
|
|||
Based on <https://hg.mozilla.org/releases/mozilla-esr52/rev/608e76ec5ba2>
|
||||
Adapted to apply cleanly to GNU IceCat.
|
||||
|
||||
# HG changeset patch
|
||||
# User Ryan VanderMeulen <ryanvm@gmail.com>
|
||||
# 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
|
||||
+}));
|
||||
|
|
@ -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',
|
||||
|
|
|
@ -1,663 +0,0 @@
|
|||
Based on <https://hg.mozilla.org/releases/mozilla-esr52/rev/431fa5dd4016>
|
||||
Adapted to apply cleanly to GNU IceCat.
|
||||
|
||||
# HG changeset patch
|
||||
# User Honza Bambas <honzab.moz@firemni.cz>
|
||||
# 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<nsString> Paths;
|
||||
+
|
||||
+static Paths& PathArray()
|
||||
+{
|
||||
+ static Paths sPaths;
|
||||
+ return sPaths;
|
||||
+}
|
||||
+
|
||||
+static void AllowDirectory(char const* directory)
|
||||
+{
|
||||
+ nsCOMPtr<nsIFile> 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<nsDependentSubstring> 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 <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <mbstring.h>
|
||||
|
||||
#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<nsIFile> 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 += [
|
||||
|
34
gnu/packages/patches/libvpx-use-after-free-in-postproc.patch
Normal file
34
gnu/packages/patches/libvpx-use-after-free-in-postproc.patch
Normal file
|
@ -0,0 +1,34 @@
|
|||
From 52add5896661d186dec284ed646a4b33b607d2c7 Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Jiang <jianj@google.com>
|
||||
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
|
||||
|
|
@ -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 <ricardo.wurmus@mdc-berlin.de>
|
||||
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 <ricardo.wurmus@mdc-berlin.de>
|
||||
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 <ricardo.wurmus@mdc-berlin.de>
|
||||
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 <ricardo.wurmus@mdc-berlin.de>
|
||||
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 <ricardo.wurmus@mdc-berlin.de>
|
||||
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 <ricardo.wurmus@mdc-berlin.de>
|
||||
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 <ricardo.wurmus@mdc-berlin.de>
|
||||
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
|
||||
|
|
@ -203,14 +203,14 @@ (define-public python-pyblake2
|
|||
(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.
|
||||
|
@ -220,7 +220,7 @@ (define-public python-paramiko
|
|||
("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
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
;;; Copyright © 2016, 2017 Danny Milosavljevic <dannym+a@scratchpost.org>
|
||||
;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
|
||||
;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
|
||||
;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
|
||||
;;; Copyright © 2016, 2017 Julien Lepiller <julien@lepiller.eu>
|
||||
;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
|
||||
|
@ -1351,14 +1351,14 @@ (define-public awscli
|
|||
(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)))
|
||||
|
@ -1592,6 +1592,29 @@ (define-public python-responses
|
|||
(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")
|
||||
|
@ -2030,21 +2053,36 @@ (define-public python2-flask-htmlmin
|
|||
(define-public python-flask-login
|
||||
(package
|
||||
(name "python-flask-login")
|
||||
(version "0.4.0")
|
||||
(version "0.4.1")
|
||||
(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 "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
|
||||
|
@ -2626,3 +2664,79 @@ (define-public python-google-api-client
|
|||
|
||||
(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)))
|
||||
|
||||
(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)))
|
||||
|
||||
(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)))
|
||||
|
|
|
@ -715,8 +715,8 @@ (define-public python-hdf4
|
|||
(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
|
||||
|
@ -855,6 +855,34 @@ (define-public python-lockfile
|
|||
(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")
|
||||
|
@ -3263,16 +3291,13 @@ (define-public python2-pygit2
|
|||
(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
|
||||
|
@ -3295,7 +3320,7 @@ (define-public python-pyparsing
|
|||
(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
|
||||
|
@ -4239,15 +4264,14 @@ (define-public python2-cairocffi
|
|||
(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
|
||||
|
@ -4422,7 +4446,7 @@ (define-public python-pexpect
|
|||
;; 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)
|
||||
|
@ -5099,21 +5123,21 @@ (define-public python2-netifaces
|
|||
(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
|
||||
`(("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
|
||||
|
@ -12117,14 +12141,14 @@ (define-public python2-flex
|
|||
(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)
|
||||
|
@ -12391,15 +12415,24 @@ (define-public python2-pyopengl-accelerate
|
|||
(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")
|
||||
|
|
|
@ -514,6 +514,26 @@ (define-public rust-1.20
|
|||
(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))
|
||||
(replace 'configure
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
|
@ -542,7 +562,6 @@ (define-public rust-1.20
|
|||
prefix = \"" out "\"
|
||||
docdir = \"" doc "/share/doc/rust" "\"
|
||||
sysconfdir = \"etc\"
|
||||
localstatedir = \"var/lib\"
|
||||
[rust]
|
||||
default-linker = \"" gcc "/bin/gcc" "\"
|
||||
channel = \"stable\"
|
||||
|
@ -579,10 +598,11 @@ (define-public rust-1.20
|
|||
(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
|
||||
|
@ -651,34 +671,6 @@ (define-public rust-1.23
|
|||
;; 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
|
||||
|
@ -698,8 +690,7 @@ (define-public rust-1.24
|
|||
;; 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
|
||||
|
|
|
@ -105,7 +105,7 @@ (define-public execline
|
|||
(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 @@ (define-public s6
|
|||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"02canrzmhr66gi16ldyylk378jlmyfl73vn72ayr12h2wyxgqm5g"))))
|
||||
"0vyl4wr2l4mp9ams0dyg224qxhl8ksxsv2shs6606lhhp9g1rb6b"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("skalibs" ,skalibs)
|
||||
("execline" ,execline)))
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;;
|
||||
;;; 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
|
||||
|
|
|
@ -712,13 +712,13 @@ (define-public python2-ghp-import
|
|||
(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 @@ (define-public python-gitdb
|
|||
"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")
|
||||
|
|
|
@ -1242,7 +1242,8 @@ (define-public libvpx
|
|||
(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"
|
||||
|
|
|
@ -5019,12 +5019,14 @@ (define-public varnish
|
|||
"--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 _
|
||||
|
|
|
@ -24,6 +24,7 @@ (define-module (gnu packages webkit)
|
|||
#: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 @@ (define-module (gnu packages webkit)
|
|||
#: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)
|
||||
|
@ -85,23 +87,7 @@ (define-public webkitgtk
|
|||
;; 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)
|
||||
|
@ -149,3 +135,32 @@ (define-public webkitgtk
|
|||
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
|
||||
`(#: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
|
||||
;; <https://bugs.gnu.org/30756>).
|
||||
(lambda _
|
||||
(unsetenv "C_INCLUDE_PATH")
|
||||
(unsetenv "CPLUS_INCLUDE_PATH")
|
||||
#t)))
|
||||
,@(package-arguments webkitgtk)))))
|
||||
|
|
|
@ -49,7 +49,7 @@ (define-module (gnu packages wxwidgets)
|
|||
(define-public wxwidgets
|
||||
(package
|
||||
(name "wxwidgets")
|
||||
(version "3.0.3")
|
||||
(version "3.0.4")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -57,7 +57,7 @@ (define-public wxwidgets
|
|||
"releases/download/v" version
|
||||
"/wxWidgets-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32 "0yrhp5cs2g33cpbdwdzicmm5m4mfnlvxwv031x9266zc90zh7j08"))))
|
||||
(base32 "1w7pgfqjab7n84lc4aarydl3g55d1hdgl2ilwml766r6inc7y5cn"))))
|
||||
(build-system glib-or-gtk-build-system)
|
||||
(inputs
|
||||
`(("glu" ,glu)
|
||||
|
|
|
@ -681,20 +681,23 @@ (define-public perl-xml-compile-tester
|
|||
(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
|
||||
|
|
|
@ -5910,7 +5910,7 @@ (define-public xcompmgr
|
|||
(define-public xpra
|
||||
(package
|
||||
(name "xpra")
|
||||
(version "2.3.3")
|
||||
(version "2.3.4")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -5918,7 +5918,7 @@ (define-public xpra
|
|||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1azvvddjfq7lb5kmbn0ilgq2nf7pmymsc3b9lhbjld6w156qdv01"))))
|
||||
"0wa3kx54himy3i1b2801hlzfilh3cf4kjk40k1cjl0ds28m5hija"))))
|
||||
(build-system python-build-system)
|
||||
(inputs `(("ffmpeg" ,ffmpeg)
|
||||
("flac" ,flac)
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
|
||||
;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
|
||||
;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
|
||||
;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -190,7 +191,21 @@ (define-module (gnu services web)
|
|||
tailon-configuration-config-file
|
||||
tailon-configuration-package
|
||||
|
||||
tailon-service-type))
|
||||
tailon-service-type
|
||||
|
||||
<varnish-configuration>
|
||||
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 @@ (define tailon-service-type
|
|||
(files (append (tailon-configuration-file-files old-config-file)
|
||||
files))))))))
|
||||
(default-value (tailon-configuration))))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Varnish
|
||||
;;;
|
||||
|
||||
(define-record-type* <varnish-configuration>
|
||||
varnish-configuration make-varnish-configuration
|
||||
varnish-configuration?
|
||||
(package varnish-configuration-package ;<package>
|
||||
(default varnish))
|
||||
(name varnish-configuration-name ;string
|
||||
(default "default"))
|
||||
(backend varnish-configuration-backend ;string
|
||||
(default "localhost:8080"))
|
||||
(vcl varnish-configuration-vcl ;#f | <file-like>
|
||||
(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
|
||||
(($ <varnish-configuration> 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))))
|
||||
|
|
|
@ -157,7 +157,10 @@ (define aliases
|
|||
;; @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)))))))))
|
||||
|
|
|
@ -99,21 +99,28 @@ (define %linux-vm-file-systems
|
|||
(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?
|
||||
|
@ -390,7 +397,12 @@ (define schema
|
|||
#: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
|
||||
|
|
|
@ -32,6 +32,7 @@ (define-module (gnu tests web)
|
|||
#:use-module (guix store)
|
||||
#:export (%test-httpd
|
||||
%test-nginx
|
||||
%test-varnish
|
||||
%test-php-fpm
|
||||
%test-hpcguix-web
|
||||
%test-tailon))
|
||||
|
@ -167,6 +168,46 @@ (define %test-nginx
|
|||
(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
|
||||
|
|
|
@ -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 @@ (define items
|
|||
|
||||
(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 @@ (define (graph-from-file file)
|
|||
|
||||
(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
|
||||
|
|
|
@ -47,9 +47,9 @@ (define-module (guix channels)
|
|||
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 @@ (define instance->entry
|
|||
(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)))
|
||||
|
|
|
@ -156,22 +156,23 @@ (define (git-file-list directory)
|
|||
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))))
|
||||
|
|
|
@ -57,7 +57,7 @@ (define current-keyring
|
|||
(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)))
|
||||
|
|
|
@ -19,24 +19,68 @@
|
|||
(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
|
||||
version>? version-prefix?
|
||||
cache-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 (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
|
||||
inferior-eval
|
||||
inferior-object?
|
||||
|
||||
inferior-packages
|
||||
lookup-inferior-packages
|
||||
|
||||
inferior-package?
|
||||
inferior-package-name
|
||||
inferior-package-version
|
||||
|
||||
inferior-packages
|
||||
inferior-package-synopsis
|
||||
inferior-package-description
|
||||
inferior-package-home-page
|
||||
inferior-package-location))
|
||||
inferior-package-location
|
||||
inferior-package-inputs
|
||||
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
|
||||
|
||||
inferior-package->manifest-entry
|
||||
|
||||
%inferior-cache-directory
|
||||
inferior-for-channels))
|
||||
|
||||
;;; Commentary:
|
||||
;;;
|
||||
|
@ -48,11 +92,13 @@ (define-module (guix inferior)
|
|||
|
||||
;; Inferior Guix process.
|
||||
(define-record-type <inferior>
|
||||
(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
|
||||
|
@ -96,9 +142,12 @@ (define pipe
|
|||
|
||||
(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 '(use-modules (ice-9 match)) result)
|
||||
(inferior-eval '(define %package-table (make-hash-table))
|
||||
result)
|
||||
result))
|
||||
|
@ -123,8 +172,7 @@ (define (write-inferior-object object port)
|
|||
|
||||
(set-record-type-printer! <inferior-object> 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 +180,21 @@ (define sexp->object
|
|||
(('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.
|
||||
|
@ -162,8 +217,8 @@ (define (write-inferior-package package port)
|
|||
|
||||
(set-record-type-printer! <inferior-package> 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)))
|
||||
|
@ -179,6 +234,33 @@ (define (inferior-packages inferior)
|
|||
(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))
|
||||
|
@ -216,3 +298,261 @@ (define (inferior-package-location package)
|
|||
(location->source-properties
|
||||
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 (%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
|
||||
input/output ports.)"
|
||||
(define (select* read write except)
|
||||
;; This is a workaround for <https://bugs.gnu.org/30365> 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 <https://bugs.gnu.org/30066>.
|
||||
(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 <inferior-package>) system
|
||||
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))
|
||||
|
||||
|
||||
;;;
|
||||
;;; 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)))))))))
|
||||
|
|
|
@ -314,12 +314,31 @@ (define (packages->manifest packages)
|
|||
"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)
|
||||
|
|
|
@ -70,11 +70,11 @@ (define (start-progress-reporter! reporter)
|
|||
(($ <progress-reporter> 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
|
||||
(($ <progress-reporter> start report stop)
|
||||
(report))))
|
||||
(apply report args))))
|
||||
|
||||
(define (stop-progress-reporter! reporter)
|
||||
"Low-level procedure to stop REPORTER."
|
||||
|
|
|
@ -180,9 +180,25 @@ (define (honor-lets-encrypt-certificates! store)
|
|||
|
||||
(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))))
|
||||
|
|
|
@ -837,8 +837,8 @@ (define (progress-report-port reporter port)
|
|||
(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 ()
|
||||
|
|
|
@ -301,8 +301,7 @@ (define basenames
|
|||
(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))
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ (define-module (guix store database)
|
|||
#: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 @@ (define* (register-path path
|
|||
#: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 @@ (define* (register-items items
|
|||
(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 <store-info> 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
|
||||
|
@ -286,20 +290,32 @@ (define to-register
|
|||
(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))
|
||||
(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)))))))
|
||||
|
|
|
@ -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"<<EOF
|
||||
(use-modules (guix inferior))
|
||||
|
||||
(define i
|
||||
(open-inferior "$abs_top_srcdir" #:command "scripts/guix"))
|
||||
|
||||
(let ((guile (car (lookup-inferior-packages i "guile-bootstrap"))))
|
||||
(packages->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"<<EOF
|
||||
|
|
|
@ -17,11 +17,18 @@
|
|||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (test-inferior)
|
||||
#:use-module (guix tests)
|
||||
#: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)
|
||||
#: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")))
|
||||
|
@ -29,6 +36,16 @@ (define %top-srcdir
|
|||
(define %top-builddir
|
||||
(dirname (search-path %load-compiled-path "guix.go")))
|
||||
|
||||
(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")
|
||||
|
||||
|
@ -72,4 +89,108 @@ (define result
|
|||
(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-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-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")
|
||||
(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-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-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")
|
||||
|
|
Loading…
Reference in a new issue