Merge branch 'staging'
This commit is contained in:
		
						commit
						4dadb49779
					
				
					 92 changed files with 6441 additions and 7313 deletions
				
			
		| 
						 | 
				
			
			@ -68,7 +68,7 @@ Copyright @copyright{} 2019 Ivan Petkov@*
 | 
			
		|||
Copyright @copyright{} 2019 Jakob L. Kreuze@*
 | 
			
		||||
Copyright @copyright{} 2019 Kyle Andrews@*
 | 
			
		||||
Copyright @copyright{} 2019 Alex Griffin@*
 | 
			
		||||
Copyright @copyright{} 2019 Guillaume Le Vaillant@*
 | 
			
		||||
Copyright @copyright{} 2019, 2020 Guillaume Le Vaillant@*
 | 
			
		||||
Copyright @copyright{} 2020 Leo Prikler@*
 | 
			
		||||
Copyright @copyright{} 2019, 2020 Simon Tournier@*
 | 
			
		||||
Copyright @copyright{} 2020 Wiktor Żelazny@*
 | 
			
		||||
| 
						 | 
				
			
			@ -7261,30 +7261,27 @@ Additionally, the corresponding source package should be labeled using
 | 
			
		|||
the same convention as python packages (see @ref{Python Modules}), using
 | 
			
		||||
the @code{cl-} prefix.
 | 
			
		||||
 | 
			
		||||
For binary packages, each system should be defined as a Guix package.
 | 
			
		||||
If one package @code{origin} contains several systems, package variants
 | 
			
		||||
can be created in order to build all the systems.  Source packages,
 | 
			
		||||
which use @code{asdf-build-system/source}, may contain several systems.
 | 
			
		||||
 | 
			
		||||
In order to create executable programs and images, the build-side
 | 
			
		||||
procedures @code{build-program} and @code{build-image} can be used.
 | 
			
		||||
They should be called in a build phase after the @code{create-symlinks}
 | 
			
		||||
phase, so that the system which was just built can be used within the
 | 
			
		||||
resulting image.  @code{build-program} requires a list of Common Lisp
 | 
			
		||||
expressions to be passed as the @code{#:entry-program} argument.
 | 
			
		||||
They should be called in a build phase after the
 | 
			
		||||
@code{create-asdf-configuration} phase, so that the system which was
 | 
			
		||||
just built can be used within the resulting image.  @code{build-program}
 | 
			
		||||
requires a list of Common Lisp expressions to be passed as the
 | 
			
		||||
@code{#:entry-program} argument.
 | 
			
		||||
 | 
			
		||||
If the system is not defined within its own @file{.asd} file of the same
 | 
			
		||||
name, then the @code{#:asd-file} parameter should be used to specify
 | 
			
		||||
which file the system is defined in.  Furthermore, if the package
 | 
			
		||||
defines a system for its tests in a separate file, it will be loaded
 | 
			
		||||
before the tests are run if it is specified by the
 | 
			
		||||
By default, all the @file{.asd} files present in the sources are read to
 | 
			
		||||
find system definitions.  The @code{#:asd-files} parameter can be used
 | 
			
		||||
to specify the list of @file{.asd} files to read.  Furthermore, if the
 | 
			
		||||
package defines a system for its tests in a separate file, it will be
 | 
			
		||||
loaded before the tests are run if it is specified by the
 | 
			
		||||
@code{#:test-asd-file} parameter.  If it is not set, the files
 | 
			
		||||
@code{<system>-tests.asd}, @code{<system>-test.asd}, @code{tests.asd},
 | 
			
		||||
and @code{test.asd} will be tried if they exist.
 | 
			
		||||
 | 
			
		||||
If for some reason the package must be named in a different way than the
 | 
			
		||||
naming conventions suggest, the @code{#:asd-system-name} parameter can
 | 
			
		||||
be used to specify the name of the system.
 | 
			
		||||
naming conventions suggest, or if several systems must be compiled, the
 | 
			
		||||
@code{#:asd-systems} parameter can be used to specify the list of system
 | 
			
		||||
names.
 | 
			
		||||
 | 
			
		||||
@end defvr
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										23
									
								
								gnu/local.mk
									
										
									
									
									
								
							
							
						
						
									
										23
									
								
								gnu/local.mk
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -913,7 +913,6 @@ dist_patch_DATA =						\
 | 
			
		|||
  %D%/packages/patches/dbus-c++-gcc-compat.patch		\
 | 
			
		||||
  %D%/packages/patches/dbus-c++-threading-mutex.patch		\
 | 
			
		||||
  %D%/packages/patches/dbxfs-remove-sentry-sdk.patch		\
 | 
			
		||||
  %D%/packages/patches/dconf-meson-0.52.patch			\
 | 
			
		||||
  %D%/packages/patches/debops-constants-for-external-program-names.patch \
 | 
			
		||||
  %D%/packages/patches/debops-debops-defaults-fall-back-to-less.patch \
 | 
			
		||||
  %D%/packages/patches/dee-vapi.patch			\
 | 
			
		||||
| 
						 | 
				
			
			@ -1040,6 +1039,7 @@ dist_patch_DATA =						\
 | 
			
		|||
  %D%/packages/patches/gcc-8-strmov-store-file-names.patch	\
 | 
			
		||||
  %D%/packages/patches/gcc-9-asan-fix-limits-include.patch	\
 | 
			
		||||
  %D%/packages/patches/gcc-9-strmov-store-file-names.patch	\
 | 
			
		||||
  %D%/packages/patches/gdb-hurd.patch				\
 | 
			
		||||
  %D%/packages/patches/gd-fix-tests-on-i686.patch		\
 | 
			
		||||
  %D%/packages/patches/gd-brect-bounds.patch			\
 | 
			
		||||
  %D%/packages/patches/gdm-default-session.patch		\
 | 
			
		||||
| 
						 | 
				
			
			@ -1110,7 +1110,6 @@ dist_patch_DATA =						\
 | 
			
		|||
  %D%/packages/patches/gpsbabel-qstring.patch     		\
 | 
			
		||||
  %D%/packages/patches/grantlee-merge-theme-dirs.patch		\
 | 
			
		||||
  %D%/packages/patches/grep-timing-sensitive-test.patch		\
 | 
			
		||||
  %D%/packages/patches/grim-revert-output-rotation.patch	\
 | 
			
		||||
  %D%/packages/patches/grocsvs-dont-use-admiral.patch		\
 | 
			
		||||
  %D%/packages/patches/gromacs-tinyxml2.patch			\
 | 
			
		||||
  %D%/packages/patches/groovy-add-exceptionutilsgenerator.patch	\
 | 
			
		||||
| 
						 | 
				
			
			@ -1167,8 +1166,8 @@ dist_patch_DATA =						\
 | 
			
		|||
  %D%/packages/patches/icecat-use-older-reveal-hidden-html.patch	\
 | 
			
		||||
  %D%/packages/patches/icecat-use-system-graphite2+harfbuzz.patch	\
 | 
			
		||||
  %D%/packages/patches/icecat-use-system-media-libs.patch	\
 | 
			
		||||
  %D%/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch  \
 | 
			
		||||
  %D%/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch  \
 | 
			
		||||
  %D%/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch	\
 | 
			
		||||
  %D%/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch	\
 | 
			
		||||
  %D%/packages/patches/icu4c-CVE-2020-10531.patch  		\
 | 
			
		||||
  %D%/packages/patches/id3lib-CVE-2007-4460.patch			\
 | 
			
		||||
  %D%/packages/patches/id3lib-UTF16-writing-bug.patch			\
 | 
			
		||||
| 
						 | 
				
			
			@ -1184,10 +1183,14 @@ dist_patch_DATA =						\
 | 
			
		|||
  %D%/packages/patches/json-c-0.13-CVE-2020-12762.patch	\
 | 
			
		||||
  %D%/packages/patches/json-c-0.12-CVE-2020-12762.patch	\
 | 
			
		||||
  %D%/packages/patches/jacal-fix-texinfo.patch			\
 | 
			
		||||
  %D%/packages/patches/jamvm-1.5.1-aarch64-support.patch	\
 | 
			
		||||
  %D%/packages/patches/jamvm-1.5.1-armv7-support.patch	\
 | 
			
		||||
  %D%/packages/patches/jamvm-2.0.0-aarch64-support.patch	\
 | 
			
		||||
  %D%/packages/patches/jamvm-2.0.0-disable-branch-patching.patch	\
 | 
			
		||||
  %D%/packages/patches/jamvm-arm.patch				\
 | 
			
		||||
  %D%/packages/patches/jamvm-2.0.0-opcode-guard.patch		\
 | 
			
		||||
  %D%/packages/patches/java-antlr4-Add-standalone-generator.patch	\
 | 
			
		||||
  %D%/packages/patches/java-antlr4-fix-code-too-large.java	\
 | 
			
		||||
  %D%/packages/patches/java-tunnelvisionlabs-antlr-code-too-large.patch	\
 | 
			
		||||
  %D%/packages/patches/java-apache-ivy-port-to-latest-bouncycastle.patch	\
 | 
			
		||||
  %D%/packages/patches/java-commons-collections-fix-java8.patch \
 | 
			
		||||
  %D%/packages/patches/java-jeromq-fix-tests.patch		\
 | 
			
		||||
| 
						 | 
				
			
			@ -1252,7 +1255,7 @@ dist_patch_DATA =						\
 | 
			
		|||
  %D%/packages/patches/libbonobo-activation-test-race.patch	\
 | 
			
		||||
  %D%/packages/patches/libcanberra-sound-theme-freedesktop.patch \
 | 
			
		||||
  %D%/packages/patches/libcanberra-wayland-crash.patch \
 | 
			
		||||
  %D%/packages/patches/libdrm-realpath-virtio.patch		\
 | 
			
		||||
  %D%/packages/patches/libcyaml-libyaml-compat.patch		\
 | 
			
		||||
  %D%/packages/patches/libgeotiff-adapt-test-script-for-proj-6.2.patch		\
 | 
			
		||||
  %D%/packages/patches/libgit2-mtime-0.patch			\
 | 
			
		||||
  %D%/packages/patches/libgnome-encoding.patch			\
 | 
			
		||||
| 
						 | 
				
			
			@ -1276,10 +1279,6 @@ dist_patch_DATA =						\
 | 
			
		|||
  %D%/packages/patches/libmygpo-qt-missing-qt5-modules.patch	\
 | 
			
		||||
  %D%/packages/patches/libqalculate-3.8.0-libcurl-ssl-fix.patch	\
 | 
			
		||||
  %D%/packages/patches/libquicktime-ffmpeg.patch 		\
 | 
			
		||||
  %D%/packages/patches/libsndfile-armhf-type-checks.patch	\
 | 
			
		||||
  %D%/packages/patches/libsndfile-CVE-2017-8361-8363-8365.patch	\
 | 
			
		||||
  %D%/packages/patches/libsndfile-CVE-2017-8362.patch		\
 | 
			
		||||
  %D%/packages/patches/libsndfile-CVE-2017-12562.patch		\
 | 
			
		||||
  %D%/packages/patches/libtar-CVE-2013-4420.patch 		\
 | 
			
		||||
  %D%/packages/patches/libtgvoip-disable-sse2.patch 		\
 | 
			
		||||
  %D%/packages/patches/libtgvoip-disable-webrtc.patch 		\
 | 
			
		||||
| 
						 | 
				
			
			@ -1327,7 +1326,6 @@ dist_patch_DATA =						\
 | 
			
		|||
  %D%/packages/patches/lvm2-static-link.patch			\
 | 
			
		||||
  %D%/packages/patches/mailutils-fix-uninitialized-variable.patch	\
 | 
			
		||||
  %D%/packages/patches/make-impure-dirs.patch			\
 | 
			
		||||
  %D%/packages/patches/mariadb-client-test-32bit.patch		\
 | 
			
		||||
  %D%/packages/patches/mars-install.patch			\
 | 
			
		||||
  %D%/packages/patches/mars-sfml-2.3.patch			\
 | 
			
		||||
  %D%/packages/patches/maxima-defsystem-mkdir.patch		\
 | 
			
		||||
| 
						 | 
				
			
			@ -1389,7 +1387,6 @@ dist_patch_DATA =						\
 | 
			
		|||
  %D%/packages/patches/nginx-socket-cloexec.patch		\
 | 
			
		||||
  %D%/packages/patches/nsis-env-passthru.patch			\
 | 
			
		||||
  %D%/packages/patches/nss-increase-test-timeout.patch		\
 | 
			
		||||
  %D%/packages/patches/nss-pkgconfig.patch			\
 | 
			
		||||
  %D%/packages/patches/nss-3.56-pkgconfig.patch			\
 | 
			
		||||
  %D%/packages/patches/ntfs-3g-CVE-2019-9755.patch		\
 | 
			
		||||
  %D%/packages/patches/nvi-assume-preserve-path.patch		\
 | 
			
		||||
| 
						 | 
				
			
			@ -1521,7 +1518,6 @@ dist_patch_DATA =						\
 | 
			
		|||
  %D%/packages/patches/python2-larch-coverage-4.0a6-compatibility.patch \
 | 
			
		||||
  %D%/packages/patches/python-configobj-setuptools.patch	\
 | 
			
		||||
  %D%/packages/patches/python-flask-restful-werkzeug-compat.patch	\
 | 
			
		||||
  %D%/packages/patches/python-gst-fix-build-with-python-3.8.patch	\
 | 
			
		||||
  %D%/packages/patches/python-keras-integration-test.patch	\
 | 
			
		||||
  %D%/packages/patches/python-pep8-stdlib-tokenize-compat.patch \
 | 
			
		||||
  %D%/packages/patches/python-pyfakefs-remove-bad-test.patch	\
 | 
			
		||||
| 
						 | 
				
			
			@ -1598,7 +1594,6 @@ dist_patch_DATA =						\
 | 
			
		|||
  %D%/packages/patches/rust-openssl-sys-no-vendor.patch	\
 | 
			
		||||
  %D%/packages/patches/rxvt-unicode-escape-sequences.patch	\
 | 
			
		||||
  %D%/packages/patches/sbcl-geco-fix-organism-class.patch	\
 | 
			
		||||
  %D%/packages/patches/sbcl-graph-asdf-definitions.patch	\
 | 
			
		||||
  %D%/packages/patches/scalapack-blacs-mpi-deprecations.patch	\
 | 
			
		||||
  %D%/packages/patches/scheme48-tests.patch			\
 | 
			
		||||
  %D%/packages/patches/scotch-build-parallelism.patch		\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -74,7 +74,7 @@
 | 
			
		|||
       ("expat" ,expat)
 | 
			
		||||
       ("gdbm" ,gdbm)
 | 
			
		||||
       ("glib" ,glib)
 | 
			
		||||
       ("libcap" ,libcap)            ;to enable chroot support in avahi-daemon
 | 
			
		||||
       ("libcap" ,libcap-2.31)       ;to enable chroot support in avahi-daemon
 | 
			
		||||
       ("libdaemon" ,libdaemon)
 | 
			
		||||
       ("libevent" ,libevent)))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1103,7 +1103,7 @@ interactive mode.")
 | 
			
		|||
    (native-inputs
 | 
			
		||||
     `(("autoconf" ,autoconf)
 | 
			
		||||
       ("automake" ,automake)
 | 
			
		||||
       ("check" ,check)
 | 
			
		||||
       ("check" ,check-0.14)
 | 
			
		||||
       ("pkg-config" ,pkg-config)))
 | 
			
		||||
    (home-page "https://burp.grke.org")
 | 
			
		||||
    (synopsis "Differential backup and restore")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -324,7 +324,7 @@ used to apply commands with arbitrarily long arguments.")
 | 
			
		|||
             ,@(if (and (not (%current-target-system))
 | 
			
		||||
                        (member (%current-system)
 | 
			
		||||
                                (package-supported-systems libcap)))
 | 
			
		||||
             `(("libcap" ,libcap))  ;capability support in 'ls', etc.
 | 
			
		||||
             `(("libcap" ,libcap-2.31))        ;capability support in 'ls', etc.
 | 
			
		||||
             '())))
 | 
			
		||||
   (native-inputs
 | 
			
		||||
    ;; Perl is needed to run tests in native builds, and to run the bundled
 | 
			
		||||
| 
						 | 
				
			
			@ -1229,7 +1229,7 @@ command.")
 | 
			
		|||
(define-public tzdata
 | 
			
		||||
  (package
 | 
			
		||||
    (name "tzdata")
 | 
			
		||||
    (version "2020a")
 | 
			
		||||
    (version "2020d")
 | 
			
		||||
    (source (origin
 | 
			
		||||
             (method url-fetch)
 | 
			
		||||
             (uri (string-append
 | 
			
		||||
| 
						 | 
				
			
			@ -1237,10 +1237,10 @@ command.")
 | 
			
		|||
                   version ".tar.gz"))
 | 
			
		||||
             (sha256
 | 
			
		||||
              (base32
 | 
			
		||||
               "18lrp0zh8m931jjlrv8lvjas4ka5dfkzdbwnbw5lwd2dlbn62wal"))))
 | 
			
		||||
               "1wxskk9mh1x2073n99qna2mq58mgi648mbq5dxlqfcrnvrbkk0cd"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:tests? #f
 | 
			
		||||
     `(#:tests? #f
 | 
			
		||||
       #:make-flags (let ((out (assoc-ref %outputs "out"))
 | 
			
		||||
                          (tmp (getenv "TMPDIR")))
 | 
			
		||||
                      (list (string-append "TOPDIR=" out)
 | 
			
		||||
| 
						 | 
				
			
			@ -1252,6 +1252,16 @@ command.")
 | 
			
		|||
                            (string-append "LIBDIR=" tmp "/lib")
 | 
			
		||||
                            (string-append "MANDIR=" tmp "/man")
 | 
			
		||||
 | 
			
		||||
                            ;; XXX: tzdata 2020b changed the on-disk format
 | 
			
		||||
                            ;; of the time zone files from 'fat' to 'slim'.
 | 
			
		||||
                            ;; Many packages (particularly evolution-data-server)
 | 
			
		||||
                            ;; can not yet handle the latter, so we stick with
 | 
			
		||||
                            ;; 'fat' for now.
 | 
			
		||||
                            ,@(if (version>=? (package-version this-package)
 | 
			
		||||
                                              "2020b")
 | 
			
		||||
                                  '("CPPFLAGS=-DZIC_BLOAT_DEFAULT='\"fat\"'")
 | 
			
		||||
                                  '())
 | 
			
		||||
 | 
			
		||||
                            "AWK=awk"
 | 
			
		||||
                            "CC=gcc"))
 | 
			
		||||
       #:modules ((guix build utils)
 | 
			
		||||
| 
						 | 
				
			
			@ -1287,7 +1297,7 @@ command.")
 | 
			
		|||
                                version ".tar.gz"))
 | 
			
		||||
                          (sha256
 | 
			
		||||
                           (base32
 | 
			
		||||
                            "0sfnlqw1p93r7klny69rwr94fh22mz632h52phgzfgg01q9gfakx"))))))
 | 
			
		||||
                            "1mgsckixmmk9qxzsflfxnp3999qi3ls72bgksclk01g852x51w3c"))))))
 | 
			
		||||
    (home-page "https://www.iana.org/time-zones")
 | 
			
		||||
    (synopsis "Database of current and historical time zones")
 | 
			
		||||
    (description "The Time Zone Database (often called tz or zoneinfo)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11386,7 +11386,6 @@ models.  TADbit is complemented by TADkit for visualizing 3D models.")
 | 
			
		|||
       ("tcsh" ,tcsh)
 | 
			
		||||
       ("perl" ,perl)
 | 
			
		||||
       ("libpng" ,libpng)
 | 
			
		||||
       ("mariadb" ,mariadb "lib")
 | 
			
		||||
       ("mariadb-dev" ,mariadb "dev")
 | 
			
		||||
       ("openssl" ,openssl-1.0)))
 | 
			
		||||
    (home-page "https://genome.cse.ucsc.edu/index.html")
 | 
			
		||||
| 
						 | 
				
			
			@ -15786,7 +15785,7 @@ than is possible with plain-text methods alone.")
 | 
			
		|||
    (propagated-inputs
 | 
			
		||||
     `(("libxml2" ,libxml2)))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("check" ,check)
 | 
			
		||||
     `(("check" ,check-0.14)
 | 
			
		||||
       ("swig" ,swig)))
 | 
			
		||||
    (home-page "http://sbml.org/Software/libSBML")
 | 
			
		||||
    (synopsis "Process SBML files and data streams")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,6 +38,7 @@
 | 
			
		|||
  #:use-module (gnu packages base)
 | 
			
		||||
  #:use-module (gnu packages check)
 | 
			
		||||
  #:use-module (gnu packages dav)
 | 
			
		||||
  #:use-module (gnu packages docbook)
 | 
			
		||||
  #:use-module (gnu packages freedesktop)
 | 
			
		||||
  #:use-module (gnu packages glib)
 | 
			
		||||
  #:use-module (gnu packages gnome)
 | 
			
		||||
| 
						 | 
				
			
			@ -125,12 +126,20 @@ the <tz.h> library for handling time zones and leap seconds.")
 | 
			
		|||
    (build-system cmake-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:tests? #f ; test suite appears broken
 | 
			
		||||
       #:parallel-build? #f             ;may cause GIR generation failure
 | 
			
		||||
       #:configure-flags '("-DSHARED_ONLY=true"
 | 
			
		||||
                           ;; required by evolution-data-server
 | 
			
		||||
                           "-DGOBJECT_INTROSPECTION=true"
 | 
			
		||||
                           "-DICAL_GLIB_VAPI=true")
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (add-after 'unpack 'patch-docbook-reference
 | 
			
		||||
           (lambda* (#:key inputs #:allow-other-keys)
 | 
			
		||||
             (substitute* "doc/reference/libical-glib/libical-glib-docs.sgml.in"
 | 
			
		||||
               (("http://www.oasis-open.org/docbook/xml/4.3/")
 | 
			
		||||
                (string-append (assoc-ref inputs "docbook-xml")
 | 
			
		||||
                               "/xml/dtd/docbook/")))
 | 
			
		||||
             #t))
 | 
			
		||||
         (add-before 'configure 'patch-paths
 | 
			
		||||
           (lambda* (#:key inputs #:allow-other-keys)
 | 
			
		||||
             ;; TODO: libical 3.1.0 supports using TZDIR instead of a hard-coded
 | 
			
		||||
| 
						 | 
				
			
			@ -145,7 +154,8 @@ the <tz.h> library for handling time zones and leap seconds.")
 | 
			
		|||
                 (("\\\"/usr/share/lib/zoneinfo\\\"") "")))
 | 
			
		||||
             #t)))))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("gobject-introspection" ,gobject-introspection)
 | 
			
		||||
     `(("docbook-xml" ,docbook-xml-4.3)
 | 
			
		||||
       ("gobject-introspection" ,gobject-introspection)
 | 
			
		||||
       ("gtk-doc" ,gtk-doc)
 | 
			
		||||
       ("perl" ,perl)
 | 
			
		||||
       ("pkg-config" ,pkg-config)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -76,7 +76,7 @@
 | 
			
		|||
(define-public nss-certs
 | 
			
		||||
  (package
 | 
			
		||||
    (name "nss-certs")
 | 
			
		||||
    (version "3.52.1")
 | 
			
		||||
    (version "3.57")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (let ((version-with-underscores
 | 
			
		||||
| 
						 | 
				
			
			@ -87,7 +87,7 @@
 | 
			
		|||
                      "nss-" version ".tar.gz")))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0y4jb9095f7bbgw7d7kvzm4c3g4p5i6y68fwhb8wlkpb7b1imj5w"))))
 | 
			
		||||
                "10n3pncg6k81ikjz12la147rppwqn57bkrdl9gb820w6pq0nra2m"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (outputs '("out"))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -135,7 +135,7 @@ like Jasmine or Mocha.")
 | 
			
		|||
(define-public check
 | 
			
		||||
  (package
 | 
			
		||||
    (name "check")
 | 
			
		||||
    (version "0.14.0")
 | 
			
		||||
    (version "0.15.2")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
      (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -143,7 +143,7 @@ like Jasmine or Mocha.")
 | 
			
		|||
                          version "/check-" version ".tar.gz"))
 | 
			
		||||
      (sha256
 | 
			
		||||
       (base32
 | 
			
		||||
        "02zkfiyklckmivrfvdsrlzvzphkdsgjrz3igncw05dv5pshhq3xx"))))
 | 
			
		||||
        "02m25y9m46pb6n46s51av62kpd936lkfv3b13kfpckgvmh5lxpm8"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (home-page "https://libcheck.github.io/check/")
 | 
			
		||||
    (synopsis "Unit test framework for C")
 | 
			
		||||
| 
						 | 
				
			
			@ -156,7 +156,19 @@ faults or other signals.  The output from unit tests can be used within
 | 
			
		|||
source code editors and IDEs.")
 | 
			
		||||
    (license license:lgpl2.1+)))
 | 
			
		||||
 | 
			
		||||
;; Some packages require this older version.  Removed once no longer needed.
 | 
			
		||||
;; Some packages require older versions.  Removed once no longer needed.
 | 
			
		||||
(define-public check-0.14
 | 
			
		||||
  (package
 | 
			
		||||
    (inherit check)
 | 
			
		||||
    (version "0.14.0")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "https://github.com/libcheck/check/releases"
 | 
			
		||||
                                  "/download/" version "/check-" version ".tar.gz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "02zkfiyklckmivrfvdsrlzvzphkdsgjrz3igncw05dv5pshhq3xx"))))))
 | 
			
		||||
 | 
			
		||||
(define-public check-0.12
 | 
			
		||||
  (package
 | 
			
		||||
   (inherit check)
 | 
			
		||||
| 
						 | 
				
			
			@ -924,13 +936,13 @@ and many external plugins.")
 | 
			
		|||
  (package
 | 
			
		||||
    (inherit (strip-python2-variant python-pytest))
 | 
			
		||||
    (name "python2-pytest")
 | 
			
		||||
    (version "4.6.9")
 | 
			
		||||
    (version "4.6.11")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (pypi-uri "pytest" version))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0fgkmpc31nzy97fxfrkqbzycigdwxwwmninx3qhkzp81migggs0r"))))
 | 
			
		||||
                "0ls3pqr86xgif6bphsb6wrww9r2vc7p7a2naq8zcq8115wwq5yjh"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:python ,python-2
 | 
			
		||||
| 
						 | 
				
			
			@ -1562,14 +1574,14 @@ have failed since the last commit or what tests are currently failing.")))
 | 
			
		|||
(define-public python-coverage
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-coverage")
 | 
			
		||||
    (version "5.0.3")
 | 
			
		||||
    (version "5.2.1")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (pypi-uri "coverage" version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "1vrg8panqw79pswg52ygbrff3wdnxarrd9qz6c64ah0c4h2cmbvp"))))
 | 
			
		||||
         "16z8i18msgs8k74n73dj9x49wzkl0vk4vq8k5pl1bsj70y7b4k53"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     ;; FIXME: 95 tests failed, 539 passed, 6 skipped, 2 errors.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -787,42 +787,43 @@ decompression of some loosely related file formats used by Microsoft.")
 | 
			
		|||
(define-public lz4
 | 
			
		||||
  (package
 | 
			
		||||
    (name "lz4")
 | 
			
		||||
    (version "1.9.2")
 | 
			
		||||
    (version "1.9.3")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method git-fetch)
 | 
			
		||||
       (uri (git-reference (url "https://github.com/lz4/lz4")
 | 
			
		||||
                           (commit (string-append "v" version))))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "0lpaypmk70ag2ks3kf2dl4ac3ba40n5kc1ainkp9wfjawz76mh61"))
 | 
			
		||||
        (base32 "1w02kazh1fps3sji2sn89fz862j1199c5ajrqcgl1bnlxj09kcbz"))
 | 
			
		||||
       (file-name (git-file-name name version))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (outputs (list "out" "static"))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(;; For tests.
 | 
			
		||||
       ("python" ,python)
 | 
			
		||||
       ("valgrind" ,valgrind)))
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:test-target "test"
 | 
			
		||||
       ;; TODO: Integrate in next rebuild cycle.
 | 
			
		||||
       #:make-flags (list ,(if (%current-target-system)
 | 
			
		||||
                             (string-append "CC=" (cc-for-target))
 | 
			
		||||
                             "CC=gcc")
 | 
			
		||||
       #:make-flags (list (string-append "CC=" ,(cc-for-target))
 | 
			
		||||
                          (string-append "prefix=" (assoc-ref %outputs "out")))
 | 
			
		||||
       #:phases (modify-phases %standard-phases
 | 
			
		||||
                  (delete 'configure)            ;no configure script
 | 
			
		||||
                  (add-before 'check 'disable-broken-test
 | 
			
		||||
                    (lambda _
 | 
			
		||||
                      ;; XXX: test_install.sh fails when prefix is a subdirectory.
 | 
			
		||||
                      (substitute* "tests/Makefile"
 | 
			
		||||
                        (("^test: (.*) test-install" _ targets)
 | 
			
		||||
                         (string-append "test: " targets)))
 | 
			
		||||
                      #t))
 | 
			
		||||
                  (add-after 'install 'delete-static-library
 | 
			
		||||
                    (lambda* (#:key outputs #:allow-other-keys)
 | 
			
		||||
                      (let ((out (assoc-ref outputs "out")))
 | 
			
		||||
                        (delete-file (string-append out "/lib/liblz4.a"))
 | 
			
		||||
                        #t))))))
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (delete 'configure)            ; no configure script
 | 
			
		||||
         (add-before 'check 'disable-broken-test
 | 
			
		||||
           (lambda _
 | 
			
		||||
             (substitute* "tests/Makefile"
 | 
			
		||||
               ;; This fails when $prefix is not a single top-level directory.
 | 
			
		||||
               (("^test: (.*) test-install" _ targets)
 | 
			
		||||
                (string-append "test: " targets)))
 | 
			
		||||
             #t))
 | 
			
		||||
         (add-after 'install 'move-static-library
 | 
			
		||||
           (lambda* (#:key outputs #:allow-other-keys)
 | 
			
		||||
             (let ((out (assoc-ref outputs "out"))
 | 
			
		||||
                   (static (assoc-ref outputs "static")))
 | 
			
		||||
               (mkdir-p (string-append static "/lib"))
 | 
			
		||||
               (rename-file (string-append out "/lib/liblz4.a")
 | 
			
		||||
                            (string-append static "/lib/liblz4.a"))
 | 
			
		||||
               #t))))))
 | 
			
		||||
    (home-page "https://www.lz4.org")
 | 
			
		||||
    (synopsis "Compression algorithm focused on speed")
 | 
			
		||||
    (description "LZ4 is a lossless compression algorithm, providing
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3331,8 +3331,7 @@ dimensioned arrays.")
 | 
			
		|||
    (properties `((upstream-name . "RMySQL")))
 | 
			
		||||
    (build-system r-build-system)
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("mariadb" ,mariadb "lib")
 | 
			
		||||
       ("mariadb-dev" ,mariadb "dev")
 | 
			
		||||
     `(("mariadb-dev" ,mariadb "dev")
 | 
			
		||||
       ("zlib" ,zlib)))
 | 
			
		||||
    (propagated-inputs
 | 
			
		||||
     `(("r-dbi" ,r-dbi)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -898,7 +898,7 @@ Language.")
 | 
			
		|||
(define-public mariadb
 | 
			
		||||
  (package
 | 
			
		||||
    (name "mariadb")
 | 
			
		||||
    (version "10.1.45")
 | 
			
		||||
    (version "10.5.6")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "https://downloads.mariadb.com/MariaDB"
 | 
			
		||||
| 
						 | 
				
			
			@ -906,8 +906,7 @@ Language.")
 | 
			
		|||
                                  version ".tar.gz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1mfs0x4c0z7d306n128dxdawk3llk25vxif5zwl20fv1z5qhz3wx"))
 | 
			
		||||
              (patches (search-patches "mariadb-client-test-32bit.patch"))
 | 
			
		||||
                "1i257h0zdypdfj5wkg6ck9pxlkph0jvjs92k22pjr6gnx5lxs1gz"))
 | 
			
		||||
              (modules '((guix build utils)))
 | 
			
		||||
              (snippet
 | 
			
		||||
               '(begin
 | 
			
		||||
| 
						 | 
				
			
			@ -925,8 +924,8 @@ Language.")
 | 
			
		|||
                  (for-each (lambda (file)
 | 
			
		||||
                              (unless (string-suffix? "CMakeLists.txt" file)
 | 
			
		||||
                                (delete-file file)))
 | 
			
		||||
                            (append (find-files "extra/yassl")
 | 
			
		||||
                                    (find-files "pcre") (find-files "zlib")))
 | 
			
		||||
                            (append (find-files "extra/wolfssl")
 | 
			
		||||
                                    (find-files "zlib")))
 | 
			
		||||
                  #t))))
 | 
			
		||||
    (build-system cmake-build-system)
 | 
			
		||||
    (outputs '("out" "lib" "dev"))
 | 
			
		||||
| 
						 | 
				
			
			@ -980,29 +979,20 @@ Language.")
 | 
			
		|||
         "-DINSTALL_SHAREDIR=share")
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         ,@(if (string-prefix? "arm" (%current-system))
 | 
			
		||||
               ;; XXX: Because of the GCC 5 input, we need to hide GCC 7 from
 | 
			
		||||
               ;; CPLUS_INCLUDE_PATH so that its headers do not shadow GCC 5.
 | 
			
		||||
               '((add-after 'set-paths 'hide-default-gcc
 | 
			
		||||
                   (lambda* (#:key inputs #:allow-other-keys)
 | 
			
		||||
                     (let ((gcc (assoc-ref inputs "gcc")))
 | 
			
		||||
                       (setenv "CPLUS_INCLUDE_PATH"
 | 
			
		||||
                               (string-join
 | 
			
		||||
                                (delete (string-append gcc "/include/c++")
 | 
			
		||||
                                        (string-split (getenv "CPLUS_INCLUDE_PATH")
 | 
			
		||||
                                                      #\:))
 | 
			
		||||
                                ":"))
 | 
			
		||||
                       #t))))
 | 
			
		||||
               '())
 | 
			
		||||
         (add-after 'unpack 'fix-pcre-detection
 | 
			
		||||
         (add-after 'unpack 'adjust-output-references
 | 
			
		||||
           (lambda _
 | 
			
		||||
             ;; The bundled PCRE in MariaDB has a patch that was upstreamed
 | 
			
		||||
             ;; in version 8.34.  Unfortunately the upstream patch behaves
 | 
			
		||||
             ;; slightly differently and the build system fails to detect it.
 | 
			
		||||
             ;; See <https://bugs.exim.org/show_bug.cgi?id=2173>.
 | 
			
		||||
             ;; XXX: Consider patching PCRE instead.
 | 
			
		||||
             (substitute* "cmake/pcre.cmake"
 | 
			
		||||
               ((" OR NOT PCRE_STACK_SIZE_OK") ""))
 | 
			
		||||
             ;; The build system invariably prepends $CMAKE_INSTALL_PREFIX
 | 
			
		||||
             ;; to other variables such as $INSTALL_INCLUDEDIR, which does
 | 
			
		||||
             ;; not work when the latter uses an absolute file name.
 | 
			
		||||
             (substitute* "libmariadb/mariadb_config/mariadb_config.c.in"
 | 
			
		||||
               (("@CMAKE_INSTALL_PREFIX@/@INSTALL_INCLUDEDIR@")
 | 
			
		||||
                "@INSTALL_INCLUDEDIR@"))
 | 
			
		||||
             (substitute* "libmariadb/mariadb_config/libmariadb.pc.in"
 | 
			
		||||
               (("\\$\\{prefix\\}/@INSTALL_INCLUDEDIR@")
 | 
			
		||||
                "@INSTALL_INCLUDEDIR@"))
 | 
			
		||||
             (substitute* "include/CMakeLists.txt"
 | 
			
		||||
               (("\\\\\\$\\{CMAKE_INSTALL_PREFIX\\}/\\$\\{INSTALL_INCLUDEDIR\\}")
 | 
			
		||||
                "${INSTALL_INCLUDEDIR}"))
 | 
			
		||||
             #t))
 | 
			
		||||
         (add-after 'unpack 'adjust-tests
 | 
			
		||||
           (lambda _
 | 
			
		||||
| 
						 | 
				
			
			@ -1010,6 +1000,7 @@ Language.")
 | 
			
		|||
                    '(;; These fail because root@hostname == root@localhost in
 | 
			
		||||
                      ;; the build environment, causing a user count mismatch.
 | 
			
		||||
                      ;; See <https://jira.mariadb.org/browse/MDEV-7761>.
 | 
			
		||||
                      "funcs_1.is_columns_mysql"
 | 
			
		||||
                      "main.join_cache"
 | 
			
		||||
                      "main.explain_non_select"
 | 
			
		||||
                      "main.stat_tables"
 | 
			
		||||
| 
						 | 
				
			
			@ -1018,20 +1009,7 @@ Language.")
 | 
			
		|||
 | 
			
		||||
                      ;; This file contains a time bomb which makes it fail after
 | 
			
		||||
                      ;; 2030-12-31.  See <https://bugs.gnu.org/34351> for details.
 | 
			
		||||
                      "main.mysqldump"
 | 
			
		||||
 | 
			
		||||
                      ;; FIXME: This test fails on i686:
 | 
			
		||||
                      ;; -myisampack: Can't create/write to file (Errcode: 17 "File exists")
 | 
			
		||||
                      ;; +myisampack: Can't create/write to file (Errcode: 17 "File exists)
 | 
			
		||||
                      ;; When running "myisampack --join=foo/t3 foo/t1 foo/t2"
 | 
			
		||||
                      ;; (all three tables must exist and be identical)
 | 
			
		||||
                      ;; in a loop it produces the same error around 1/240 times.
 | 
			
		||||
                      ;; montywi on #maria suggested removing the real_end check in
 | 
			
		||||
                      ;; "strings/my_vsnprintf.c" on line 503, yet it still does not
 | 
			
		||||
                      ;; reach the ending quote occasionally.  Disable it for now.
 | 
			
		||||
                      "main.myisampack"
 | 
			
		||||
                      ;; FIXME: This test fails on armhf-linux:
 | 
			
		||||
                      "mroonga/storage.index_read_multiple_double"))
 | 
			
		||||
                      "main.mysqldump"))
 | 
			
		||||
 | 
			
		||||
                   ;; This file contains a list of known-flaky tests for this
 | 
			
		||||
                   ;; release.  Append our own items.
 | 
			
		||||
| 
						 | 
				
			
			@ -1042,9 +1020,10 @@ Language.")
 | 
			
		|||
                         disabled-tests)
 | 
			
		||||
               (close-port unstable-tests)
 | 
			
		||||
 | 
			
		||||
               ;; XXX: This test fails because it expects a latin1 charset and
 | 
			
		||||
               ;; XXX: These fail because they expect a latin1 charset and
 | 
			
		||||
               ;; collation.  See <https://jira.mariadb.org/browse/MDEV-21264>.
 | 
			
		||||
               (substitute* "mysql-test/r/gis_notembedded.result"
 | 
			
		||||
               (substitute* '("mysql-test/main/gis_notembedded.result"
 | 
			
		||||
                              "mysql-test/main/system_mysql_db.result")
 | 
			
		||||
                 (("latin1_swedish_ci") "utf8_general_ci")
 | 
			
		||||
                 (("\tlatin1") "\tutf8"))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1077,6 +1056,10 @@ Language.")
 | 
			
		|||
                           "--testcase-timeout=40"
 | 
			
		||||
                           "--suite-timeout=600"
 | 
			
		||||
                           "--parallel" (number->string (parallel-job-count))
 | 
			
		||||
                           ;; Skip the replication tests: they are very I/O
 | 
			
		||||
                           ;; intensive and frequently causes indeterministic
 | 
			
		||||
                           ;; failures even on powerful hardware.
 | 
			
		||||
                           "--skip-rpl"
 | 
			
		||||
                           "--skip-test-list=unstable-tests"))
 | 
			
		||||
                 (format #t "test suite not run~%"))
 | 
			
		||||
             #t))
 | 
			
		||||
| 
						 | 
				
			
			@ -1087,56 +1070,57 @@ Language.")
 | 
			
		|||
                   (dev     (assoc-ref outputs "dev"))
 | 
			
		||||
                   (lib     (assoc-ref outputs "lib"))
 | 
			
		||||
                   (openssl (assoc-ref inputs "openssl")))
 | 
			
		||||
              (substitute* (string-append out "/bin/mysql_install_db")
 | 
			
		||||
              (substitute* (list (string-append out "/bin/mariadb-install-db")
 | 
			
		||||
                                 (string-append out "/bin/mysql_install_db"))
 | 
			
		||||
                (("basedir=\"\"")
 | 
			
		||||
                 (string-append "basedir=\"" out "\"")))
 | 
			
		||||
                 (string-append "basedir=\"" out "\""))
 | 
			
		||||
                (("\\$basedir/share/mysql")
 | 
			
		||||
                 (string-append lib "/share/mysql")))
 | 
			
		||||
 | 
			
		||||
              ;; Remove unneeded files for testing.
 | 
			
		||||
              (with-directory-excursion lib
 | 
			
		||||
                (for-each delete-file-recursively
 | 
			
		||||
                          '("data" "mysql-test" "sql-bench"))
 | 
			
		||||
                          '("mysql-test" "sql-bench"))
 | 
			
		||||
                ;; And static libraries.
 | 
			
		||||
                (for-each delete-file (find-files "lib" "\\.a$")))
 | 
			
		||||
              (with-directory-excursion out
 | 
			
		||||
                (delete-file "share/man/man1/mysql-test-run.pl.1")
 | 
			
		||||
                ;; Delete huge and unnecessary executables.
 | 
			
		||||
                (for-each delete-file (find-files "bin" "(test|embedded)")))
 | 
			
		||||
                (for-each delete-file (find-files "bin" "test$")))
 | 
			
		||||
              (mkdir-p (string-append dev "/share"))
 | 
			
		||||
              (mkdir-p (string-append dev "/bin"))
 | 
			
		||||
              (rename-file (string-append lib "/bin/mariadbd")
 | 
			
		||||
                           (string-append out "/bin/mariadbd"))
 | 
			
		||||
              (rename-file (string-append lib "/bin/mysqld")
 | 
			
		||||
                           (string-append out "/bin/mysqld"))
 | 
			
		||||
              (rename-file (string-append lib "/share/pkgconfig")
 | 
			
		||||
                           (string-append dev "/share/pkgconfig"))
 | 
			
		||||
              (mkdir-p (string-append dev "/lib"))
 | 
			
		||||
              (rename-file (string-append lib "/lib/pkgconfig")
 | 
			
		||||
                           (string-append dev "/lib/pkgconfig"))
 | 
			
		||||
              (rename-file (string-append lib "/bin/mariadb_config")
 | 
			
		||||
                           (string-append dev "/bin/mariadb_config"))
 | 
			
		||||
              (rename-file (string-append out "/bin/mysql_config")
 | 
			
		||||
                           (string-append dev "/bin/mysql_config"))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
              (substitute*  (string-append out "/bin/mysql_install_db")
 | 
			
		||||
                (("\\$basedir/share/mysql")
 | 
			
		||||
                 (string-append lib "/share/mysql")))
 | 
			
		||||
 | 
			
		||||
              ;; Embed an absolute reference to OpenSSL in mysql_config
 | 
			
		||||
              ;; and the pkg-config file to avoid propagation.
 | 
			
		||||
              ;; XXX: how to do this for mariadb_config.c.in?
 | 
			
		||||
              (substitute* (list (string-append dev "/bin/mysql_config")
 | 
			
		||||
                                 (string-append dev "/share/pkgconfig/mariadb.pc"))
 | 
			
		||||
                                 (string-append dev "/lib/pkgconfig/mariadb.pc"))
 | 
			
		||||
                (("-lssl -lcrypto" all)
 | 
			
		||||
                 (string-append "-L" openssl "/lib " all)))
 | 
			
		||||
 | 
			
		||||
              #t))))))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("bison" ,bison)
 | 
			
		||||
       ;; XXX: On armhf, use GCC 5 to work around <https://bugs.gnu.org/37605>.
 | 
			
		||||
       ,@(if (string-prefix? "armhf" (%current-system))
 | 
			
		||||
             `(("gcc@5" ,gcc-5))
 | 
			
		||||
             '())
 | 
			
		||||
       ("perl" ,perl)))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("jemalloc" ,jemalloc)
 | 
			
		||||
       ("libaio" ,libaio)
 | 
			
		||||
       ("libxml2" ,libxml2)
 | 
			
		||||
       ("ncurses" ,ncurses)
 | 
			
		||||
       ("openssl" ,openssl-1.0)
 | 
			
		||||
       ("openssl" ,openssl)
 | 
			
		||||
       ("pam" ,linux-pam)
 | 
			
		||||
       ("pcre" ,pcre)
 | 
			
		||||
       ("pcre2" ,pcre2)
 | 
			
		||||
       ("xz" ,xz)
 | 
			
		||||
       ("zlib" ,zlib)))
 | 
			
		||||
    ;; The test suite is very resource intensive and can take more than three
 | 
			
		||||
| 
						 | 
				
			
			@ -1323,7 +1307,7 @@ organized in a hash table or B+ tree.")
 | 
			
		|||
 | 
			
		||||
    (native-inputs `(("bc" ,bc)
 | 
			
		||||
                     ("bash:include" ,bash "include")
 | 
			
		||||
                     ("check" ,check)
 | 
			
		||||
                     ("check" ,check-0.14)
 | 
			
		||||
                     ("pkg-config" ,pkg-config)))
 | 
			
		||||
 | 
			
		||||
    ;; TODO: Add more optional inputs.
 | 
			
		||||
| 
						 | 
				
			
			@ -2086,7 +2070,7 @@ valid SQL query.")
 | 
			
		|||
(define-public unixodbc
 | 
			
		||||
  (package
 | 
			
		||||
   (name "unixodbc")
 | 
			
		||||
   (version "2.3.7")
 | 
			
		||||
   (version "2.3.9")
 | 
			
		||||
   (source (origin
 | 
			
		||||
            (method url-fetch)
 | 
			
		||||
            (uri
 | 
			
		||||
| 
						 | 
				
			
			@ -2094,7 +2078,7 @@ valid SQL query.")
 | 
			
		|||
              "ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-"
 | 
			
		||||
              version ".tar.gz"))
 | 
			
		||||
            (sha256
 | 
			
		||||
             (base32 "0xry3sg497wly8f7715a7gwkn2k36bcap0mvzjw74jj53yx6kwa5"))))
 | 
			
		||||
             (base32 "01xj65d02i3yjy7p9z08y9jakcs5szmz4rask868n7387nn3x0sj"))))
 | 
			
		||||
   (build-system gnu-build-system)
 | 
			
		||||
   (synopsis "Data source abstraction library")
 | 
			
		||||
   (description "Unixodbc is a library providing an API with which to access
 | 
			
		||||
| 
						 | 
				
			
			@ -3222,8 +3206,7 @@ files or Python scripts that define a list of migration steps.")
 | 
			
		|||
    (build-system python-build-system)
 | 
			
		||||
    (arguments '(#:tests? #f))          ;XXX: requires a live database
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("mysql" ,mariadb "lib")
 | 
			
		||||
       ("mysql-dev" ,mariadb "dev")))
 | 
			
		||||
     `(("mysql-dev" ,mariadb "dev")))
 | 
			
		||||
    (home-page "https://github.com/PyMySQL/mysqlclient-python")
 | 
			
		||||
    (synopsis "MySQLdb is an interface to the popular MySQL database server for Python")
 | 
			
		||||
    (description "MySQLdb is an interface to the popular MySQL database server
 | 
			
		||||
| 
						 | 
				
			
			@ -3905,8 +3888,7 @@ The drivers officially supported by @code{libdbi} are:
 | 
			
		|||
       ("sqlite" ,sqlite)
 | 
			
		||||
       ("odbc" ,unixodbc)
 | 
			
		||||
       ("boost" ,boost)
 | 
			
		||||
       ("mariadb:dev" ,mariadb "dev")
 | 
			
		||||
       ("mariadb:lib" ,mariadb "lib")))
 | 
			
		||||
       ("mariadb:dev" ,mariadb "dev")))
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:configure-flags
 | 
			
		||||
       ;; C++11 (-DSOCI_CXX11) is OFF by default.  hyperledger-iroha needs it.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -88,7 +88,7 @@ to take care of the OS-specific details when writing software that uses serial p
 | 
			
		|||
                                              "/share/doc/libsigrokdecode"))
 | 
			
		||||
             #t)))))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("check" ,check)
 | 
			
		||||
     `(("check" ,check-0.14)
 | 
			
		||||
       ("doxygen" ,doxygen)
 | 
			
		||||
       ("graphviz" ,graphviz)
 | 
			
		||||
       ("pkg-config" ,pkg-config)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,6 +7,7 @@
 | 
			
		|||
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 | 
			
		||||
;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
 | 
			
		||||
;;; Copyright © 2020 Mark Wielaard <mark@klomp.org>
 | 
			
		||||
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -214,7 +215,7 @@ static analysis of the ELF binaries at hand.")
 | 
			
		|||
(define-public patchelf
 | 
			
		||||
  (package
 | 
			
		||||
    (name "patchelf")
 | 
			
		||||
    (version "0.10")
 | 
			
		||||
    (version "0.11")
 | 
			
		||||
    (source (origin
 | 
			
		||||
             (method url-fetch)
 | 
			
		||||
             (uri (string-append
 | 
			
		||||
| 
						 | 
				
			
			@ -223,7 +224,7 @@ static analysis of the ELF binaries at hand.")
 | 
			
		|||
                   "/patchelf-" version ".tar.bz2"))
 | 
			
		||||
             (sha256
 | 
			
		||||
              (base32
 | 
			
		||||
               "1wzwvnlyf853hw9zgqq5522bvf8gqadk8icgqa41a5n7593csw7n"))))
 | 
			
		||||
               "16ms3ijcihb88j3x6cl8cbvhia72afmfcphczb9cfwr0gbc22chx"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:phases
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -79,7 +79,7 @@
 | 
			
		|||
                "0svybbrvpf6q955y6fclxh3md64z0dgmh0x54x2j60503hhs071m"))))
 | 
			
		||||
    (build-system meson-build-system)
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("check" ,check)
 | 
			
		||||
     `(("check" ,check-0.14)
 | 
			
		||||
       ("gettext" ,gettext-minimal)
 | 
			
		||||
       ("pkg-config" ,pkg-config)))
 | 
			
		||||
    (inputs
 | 
			
		||||
| 
						 | 
				
			
			@ -470,7 +470,7 @@ Libraries stack (eo, evas, ecore, edje, emotion, ethumb and elementary).")
 | 
			
		|||
           (lambda _ (setenv "HOME" "/tmp") #t)))
 | 
			
		||||
       #:tests? #f)) ; tests require running dbus service
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("check" ,check)
 | 
			
		||||
     `(("check" ,check-0.14)
 | 
			
		||||
       ("gettext" ,gettext-minimal)
 | 
			
		||||
       ("pkg-config" ,pkg-config)))
 | 
			
		||||
    (inputs
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
;;; GNU Guix --- Functional package management for GNU
 | 
			
		||||
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 | 
			
		||||
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 | 
			
		||||
;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -97,14 +98,14 @@ by the different predictive algorithms.")
 | 
			
		|||
(define-public fcitx
 | 
			
		||||
  (package
 | 
			
		||||
    (name "fcitx")
 | 
			
		||||
    (version "4.2.9.7")
 | 
			
		||||
    (version "4.2.9.8")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "http://download.fcitx-im.org/fcitx/"
 | 
			
		||||
                                  "fcitx-" version "_dict.tar.xz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "13vg7yzfq0vj2r8zdf9ly3n243nwwggkhd5qv3z6yqdyj0m3ncyg"))))
 | 
			
		||||
                "1iik80l7g8yk9iwsls6nl9whwgm0sj8i7s6s0bz4c5anl35iaddw"))))
 | 
			
		||||
    (build-system cmake-build-system)
 | 
			
		||||
    (outputs '("out" "gtk2" "gtk3"))
 | 
			
		||||
    (arguments
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -373,14 +373,14 @@ freedesktop.org project.")
 | 
			
		|||
  ;; Updating this will rebuild over 700 packages through libinput-minimal.
 | 
			
		||||
  (package
 | 
			
		||||
    (name "libinput")
 | 
			
		||||
    (version "1.15.5")
 | 
			
		||||
    (version "1.16.2")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "https://freedesktop.org/software/libinput/"
 | 
			
		||||
                                  "libinput-" version ".tar.xz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "15ww4jl3lcxyi8m8idg8canklbqv729gnwpkz7r98c1w8a7zq3m9"))))
 | 
			
		||||
                "1ab0q4iya07kvjd2g1vzamj9h57qldi15h3b8324vg3szr88qggw"))))
 | 
			
		||||
    (build-system meson-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:configure-flags '("-Ddocumentation=false")
 | 
			
		||||
| 
						 | 
				
			
			@ -459,7 +459,7 @@ the freedesktop.org XDG Base Directory specification.")
 | 
			
		|||
(define-public elogind
 | 
			
		||||
  (package
 | 
			
		||||
    (name "elogind")
 | 
			
		||||
    (version "243.4")
 | 
			
		||||
    (version "243.7")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method git-fetch)
 | 
			
		||||
              (uri (git-reference
 | 
			
		||||
| 
						 | 
				
			
			@ -468,7 +468,7 @@ the freedesktop.org XDG Base Directory specification.")
 | 
			
		|||
              (file-name (git-file-name name version))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "141frvgyk4fafcxsix94qc0d9ffrwksld8lqq4hq6xsgjlvv0mrs"))))
 | 
			
		||||
                "1ccj3cbs9nsfg497wg195in1a7b9csm1jdm7z6q7vvx1ynpjxlxz"))))
 | 
			
		||||
    (build-system meson-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:configure-flags
 | 
			
		||||
| 
						 | 
				
			
			@ -507,14 +507,6 @@ the freedesktop.org XDG Base Directory specification.")
 | 
			
		|||
               (("join_paths\\(bindir, 'pkttyagent'\\)")
 | 
			
		||||
                "'\"/run/current-system/profile/bin/pkttyagent\"'"))
 | 
			
		||||
             #t))
 | 
			
		||||
         (add-after 'unpack 'adjust-dbus-socket-address
 | 
			
		||||
           (lambda _
 | 
			
		||||
             ;; Look for the D-Bus socket in /var/run instead of /run.  Remove
 | 
			
		||||
             ;; this for versions > 243.4.
 | 
			
		||||
             (substitute* "src/libelogind/sd-bus/bus-internal.h"
 | 
			
		||||
               (("=/run/dbus/system_bus_socket")
 | 
			
		||||
                "=/var/run/dbus/system_bus_socket"))
 | 
			
		||||
             #t))
 | 
			
		||||
         (add-after 'unpack 'adjust-tests
 | 
			
		||||
           (lambda _
 | 
			
		||||
             ;; This test tries to copy some bytes from /usr/lib/os-release,
 | 
			
		||||
| 
						 | 
				
			
			@ -825,14 +817,14 @@ Python.")
 | 
			
		|||
(define-public wayland
 | 
			
		||||
  (package
 | 
			
		||||
    (name "wayland")
 | 
			
		||||
    (version "1.17.0")
 | 
			
		||||
    (version "1.18.0")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "https://wayland.freedesktop.org/releases/"
 | 
			
		||||
                                  name "-" version ".tar.xz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "194ibzwpdcn6fvk4xngr4bf5axpciwg2bj82fdvz88kfmjw13akj"))))
 | 
			
		||||
                "0k995rn96xkplrapz5k648j651wc43kq817xk1x8280h16gsfxa6"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:parallel-tests? #f))
 | 
			
		||||
| 
						 | 
				
			
			@ -861,7 +853,7 @@ applications, X servers (rootless or fullscreen) or other display servers.")
 | 
			
		|||
(define-public wayland-protocols
 | 
			
		||||
  (package
 | 
			
		||||
    (name "wayland-protocols")
 | 
			
		||||
    (version "1.18")
 | 
			
		||||
    (version "1.20")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append
 | 
			
		||||
| 
						 | 
				
			
			@ -869,7 +861,7 @@ applications, X servers (rootless or fullscreen) or other display servers.")
 | 
			
		|||
                    "wayland-protocols-" version ".tar.xz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1cvl93h83ymbfhb567jv5gzyq08181w7c46rsw4xqqqpcvkvfwrx"))))
 | 
			
		||||
                "1rsdgvkkvxs3cjhpl6agvbkm53vm7k8rg127j9y2vn33m2hvg0lp"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("wayland" ,wayland)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -40,17 +40,18 @@
 | 
			
		|||
  #:use-module (guix build-system gnu)
 | 
			
		||||
  #:use-module (srfi srfi-1))
 | 
			
		||||
 | 
			
		||||
(define-public gdb-9.1
 | 
			
		||||
(define-public gdb-9.2
 | 
			
		||||
  (package
 | 
			
		||||
    (name "gdb")
 | 
			
		||||
    (version "9.1")
 | 
			
		||||
    (version "9.2")
 | 
			
		||||
    (source (origin
 | 
			
		||||
             (method url-fetch)
 | 
			
		||||
             (uri (string-append "mirror://gnu/gdb/gdb-"
 | 
			
		||||
                                 version ".tar.xz"))
 | 
			
		||||
             (patches (search-patches "gdb-hurd.patch"))
 | 
			
		||||
             (sha256
 | 
			
		||||
              (base32
 | 
			
		||||
               "0dqp1p7w836iwijg1zb4a784n0j4pyjiw5v6h8fg5lpx6b40x7k9"))))
 | 
			
		||||
               "0mf5fn8v937qwnal4ykn3ji1y2sxk0fa1yfqi679hxmpg6pdf31n"))))
 | 
			
		||||
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
| 
						 | 
				
			
			@ -70,20 +71,14 @@
 | 
			
		|||
                     #t))
 | 
			
		||||
                  (add-after
 | 
			
		||||
                   'install 'remove-libs-already-in-binutils
 | 
			
		||||
                   (lambda* (#:key inputs outputs
 | 
			
		||||
                             ;; TODO: Inline the native-inputs addition and
 | 
			
		||||
                             ;; below usage in the next rebuild cycle.
 | 
			
		||||
                             ,@(if (%current-target-system)
 | 
			
		||||
                                   '(native-inputs)
 | 
			
		||||
                                   '())
 | 
			
		||||
                   (lambda* (#:key native-inputs inputs outputs
 | 
			
		||||
                             #:allow-other-keys)
 | 
			
		||||
                     ;; Like Binutils, GDB installs libbfd, libopcodes, etc.
 | 
			
		||||
                     ;; However, this leads to collisions when both are
 | 
			
		||||
                     ;; installed, and really is none of its business,
 | 
			
		||||
                     ;; conceptually.  So remove them.
 | 
			
		||||
                     (let* ((binutils ,@(if (%current-target-system)
 | 
			
		||||
                                            '((assoc-ref native-inputs "binutils"))
 | 
			
		||||
                                            '((assoc-ref inputs "binutils"))))
 | 
			
		||||
                     (let* ((binutils (or (assoc-ref inputs "binutils")
 | 
			
		||||
                                          (assoc-ref native-inputs "binutils")))
 | 
			
		||||
                            (out      (assoc-ref outputs "out"))
 | 
			
		||||
                            (files1   (with-directory-excursion binutils
 | 
			
		||||
                                        (append (find-files "lib")
 | 
			
		||||
| 
						 | 
				
			
			@ -137,7 +132,7 @@ written in C, C++, Ada, Objective-C, Pascal and more.")
 | 
			
		|||
;; <https://bugs.gnu.org/37810>.
 | 
			
		||||
(define-public gdb-8.2
 | 
			
		||||
  (package
 | 
			
		||||
    (inherit gdb-9.1)
 | 
			
		||||
    (inherit gdb-9.2)
 | 
			
		||||
    (version "8.2.1")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -150,7 +145,7 @@ written in C, C++, Ada, Objective-C, Pascal and more.")
 | 
			
		|||
(define-public gdb
 | 
			
		||||
  ;; This is the fixed version that packages depend on.  Update it rarely
 | 
			
		||||
  ;; enough to avoid massive rebuilds.
 | 
			
		||||
  gdb-9.1)
 | 
			
		||||
  gdb-9.2)
 | 
			
		||||
 | 
			
		||||
(define-public gdb-10
 | 
			
		||||
  (package
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -233,14 +233,7 @@ also known as DXTn or DXTC) for Mesa.")
 | 
			
		|||
(define-public mesa
 | 
			
		||||
  (package
 | 
			
		||||
    (name "mesa")
 | 
			
		||||
    (version "20.0.7")
 | 
			
		||||
 | 
			
		||||
    ;; Mesa 20.0.5 through 20.0.7 has problems with some graphic drivers, so
 | 
			
		||||
    ;; we need this newer version.
 | 
			
		||||
    ;; https://gitlab.freedesktop.org/mesa/mesa/-/issues/2882
 | 
			
		||||
    ;; https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4861
 | 
			
		||||
    (replacement mesa-20.0.8)
 | 
			
		||||
 | 
			
		||||
    (version "20.1.9")
 | 
			
		||||
    (source
 | 
			
		||||
      (origin
 | 
			
		||||
        (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -252,7 +245,7 @@ also known as DXTn or DXTC) for Mesa.")
 | 
			
		|||
                                  version "/mesa-" version ".tar.xz")))
 | 
			
		||||
        (sha256
 | 
			
		||||
         (base32
 | 
			
		||||
          "0y517qpdg6v6dsdgzb365p03m30511sbyh8pq0mcvhvjwy7javpy"))
 | 
			
		||||
          "10kk8a8k7f4ip8yaiqdyrx162nbw8pw4h3b4hs4ha8mpd43wlldj"))
 | 
			
		||||
        (patches
 | 
			
		||||
         (search-patches "mesa-skip-disk-cache-test.patch"))))
 | 
			
		||||
    (build-system meson-build-system)
 | 
			
		||||
| 
						 | 
				
			
			@ -446,21 +439,6 @@ device drivers allows Mesa to be used in many different environments ranging
 | 
			
		|||
from software emulation to complete hardware acceleration for modern GPUs.")
 | 
			
		||||
    (license license:x11)))
 | 
			
		||||
 | 
			
		||||
;; Replacement package to fix <https://gitlab.freedesktop.org/mesa/mesa/-/issues/2863>.
 | 
			
		||||
(define mesa-20.0.8
 | 
			
		||||
  (package
 | 
			
		||||
    (inherit mesa)
 | 
			
		||||
    (version "20.0.8")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (inherit (package-source mesa))
 | 
			
		||||
              (uri (list (string-append "https://mesa.freedesktop.org/archive/"
 | 
			
		||||
                                        "mesa-" version ".tar.xz")
 | 
			
		||||
                         (string-append "ftp://ftp.freedesktop.org/pub/mesa/"
 | 
			
		||||
                                        "mesa-" version ".tar.xz")))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0v0bfh3ay07s6msxmklvwfaif0q02kq2yhy65fdhys49vw8c1w3c"))))))
 | 
			
		||||
 | 
			
		||||
(define-public mesa-opencl
 | 
			
		||||
  (package/inherit mesa
 | 
			
		||||
    (name "mesa-opencl")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4438,17 +4438,16 @@ and RDP protocols.")
 | 
			
		|||
(define-public dconf
 | 
			
		||||
  (package
 | 
			
		||||
    (name "dconf")
 | 
			
		||||
    (version "0.34.0")
 | 
			
		||||
    (version "0.36.0")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append
 | 
			
		||||
                    "mirror://gnome/sources/" name "/"
 | 
			
		||||
                    (version-major+minor version) "/"
 | 
			
		||||
                    name "-" version ".tar.xz"))
 | 
			
		||||
              (patches (search-patches "dconf-meson-0.52.patch"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0lnsl85cp2vpzgp8pkf6l6yd2i3lp02jdvga1icfa78j2smr8fll"))))
 | 
			
		||||
                "0bfs069pjv6lhp7xrzmrhz3876ay2ryqxzc6mlva1hhz34ibprlz"))))
 | 
			
		||||
    (build-system meson-build-system)
 | 
			
		||||
    (propagated-inputs
 | 
			
		||||
     ;; In Requires of dconf.pc.
 | 
			
		||||
| 
						 | 
				
			
			@ -4467,10 +4466,17 @@ and RDP protocols.")
 | 
			
		|||
       ("pkg-config" ,pkg-config)
 | 
			
		||||
       ("vala" ,vala)))
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:tests? #f ; To contact dbus it needs to load /var/lib/dbus/machine-id
 | 
			
		||||
                   ; or /etc/machine-id.
 | 
			
		||||
       #:glib-or-gtk? #t
 | 
			
		||||
       #:configure-flags '("-Denable-gtk-doc=true")))
 | 
			
		||||
     `(#:glib-or-gtk? #t
 | 
			
		||||
       #:configure-flags '("-Denable-gtk-doc=true")
 | 
			
		||||
       #:phases (modify-phases %standard-phases
 | 
			
		||||
                  (add-after 'unpack 'increase-test-timeout
 | 
			
		||||
                    (lambda _
 | 
			
		||||
                      ;; On big-memory systems, the engine test may take
 | 
			
		||||
                      ;; much longer than the default of 30 seconds.
 | 
			
		||||
                      (substitute* "tests/meson.build"
 | 
			
		||||
                        (("test\\(unit_test\\[0\\], exe" all)
 | 
			
		||||
                         (string-append all ", timeout : 90")))
 | 
			
		||||
                      #t)))))
 | 
			
		||||
    (home-page "https://developer.gnome.org/dconf/")
 | 
			
		||||
    (synopsis "Low-level GNOME configuration system")
 | 
			
		||||
    (description "Dconf is a low-level configuration system.  Its main purpose
 | 
			
		||||
| 
						 | 
				
			
			@ -6071,6 +6077,14 @@ discovery protocols.")
 | 
			
		|||
             (substitute* "meson_post_install.py"
 | 
			
		||||
               (("gtk-update-icon-cache") "true"))
 | 
			
		||||
             #t))
 | 
			
		||||
         (add-after 'unpack 'patch-failing-test
 | 
			
		||||
           (lambda _
 | 
			
		||||
             ;; Work around test failure with GStreamer 1.18, because the test
 | 
			
		||||
             ;; relies on "und" not being mapped to a particular language:
 | 
			
		||||
             ;; https://gitlab.gnome.org/GNOME/totem/-/issues/450
 | 
			
		||||
            (substitute* "src/test-totem.c"
 | 
			
		||||
              (("und") "nosuchlang"))
 | 
			
		||||
            #t))
 | 
			
		||||
         (add-before
 | 
			
		||||
          'install 'disable-cache-generation
 | 
			
		||||
          (lambda _
 | 
			
		||||
| 
						 | 
				
			
			@ -8100,7 +8114,7 @@ libxml2.")
 | 
			
		|||
       ("xmllint" ,libxml2)))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("accountsservice" ,accountsservice)
 | 
			
		||||
       ("check" ,check) ; for testing
 | 
			
		||||
       ("check" ,check-0.14)            ;for testing
 | 
			
		||||
       ("elogind" ,elogind)
 | 
			
		||||
       ("gnome-session" ,gnome-session)
 | 
			
		||||
       ("gnome-settings-daemon" ,gnome-settings-daemon)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -168,7 +168,7 @@ generation.")
 | 
			
		|||
(define-public libassuan
 | 
			
		||||
  (package
 | 
			
		||||
    (name "libassuan")
 | 
			
		||||
    (version "2.5.3")
 | 
			
		||||
    (version "2.5.4")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
      (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -176,7 +176,7 @@ generation.")
 | 
			
		|||
                          version ".tar.bz2"))
 | 
			
		||||
      (sha256
 | 
			
		||||
       (base32
 | 
			
		||||
        "00p7cpvzf0q3qwcgg51r9d0vbab4qga2xi8wpk2fgd36710b1g4i"))))
 | 
			
		||||
        "1w7vnnycq4z7gf4bk38pi4hrb8qrrzgfpz3cd7frwldxnfbfx060"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (propagated-inputs
 | 
			
		||||
     `(("libgpg-error" ,libgpg-error)
 | 
			
		||||
| 
						 | 
				
			
			@ -196,7 +196,7 @@ provided.")
 | 
			
		|||
(define-public libksba
 | 
			
		||||
  (package
 | 
			
		||||
    (name "libksba")
 | 
			
		||||
    (version "1.3.5")
 | 
			
		||||
    (version "1.5.0")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
      (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -205,7 +205,7 @@ provided.")
 | 
			
		|||
            version ".tar.bz2"))
 | 
			
		||||
      (sha256
 | 
			
		||||
       (base32
 | 
			
		||||
        "0h53q4sns1jz1pkmhcz5wp9qrfn9f5g9i3vjv6dafwzzlvblyi21"))))
 | 
			
		||||
        "1fm0mf3wq9fmyi1rmc1vk2fafn6liiw2mgxml3g7ybbb44lz2jmf"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (propagated-inputs
 | 
			
		||||
     `(("libgpg-error" ,libgpg-error)))
 | 
			
		||||
| 
						 | 
				
			
			@ -255,7 +255,7 @@ compatible to GNU Pth.")
 | 
			
		|||
(define-public gnupg
 | 
			
		||||
  (package
 | 
			
		||||
    (name "gnupg")
 | 
			
		||||
    (version "2.2.23")
 | 
			
		||||
    (version "2.2.25")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "mirror://gnupg/gnupg/gnupg-" version
 | 
			
		||||
| 
						 | 
				
			
			@ -263,7 +263,7 @@ compatible to GNU Pth.")
 | 
			
		|||
              (patches (search-patches "gnupg-default-pinentry.patch"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0p6ss4f3vlkf91pmp27bmvfr5bdxxi0pb3dmxpqljglbsx4mxd8h"))))
 | 
			
		||||
                "02n3klqbyzxyil13sg4wa0pcwr7vs7zjaslis926yjxg8yr0fly5"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("pkg-config" ,pkg-config)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1430,7 +1430,7 @@ standards of the IceCat project.")
 | 
			
		|||
       ("mesa" ,mesa)
 | 
			
		||||
       ("mit-krb5" ,mit-krb5)
 | 
			
		||||
       ("nspr" ,nspr)
 | 
			
		||||
       ("nss" ,nss-3.57)
 | 
			
		||||
       ("nss" ,nss)
 | 
			
		||||
       ("pango" ,pango)
 | 
			
		||||
       ("pixman" ,pixman)
 | 
			
		||||
       ("pulseaudio" ,pulseaudio)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,6 +20,7 @@
 | 
			
		|||
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 | 
			
		||||
;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.com>
 | 
			
		||||
;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
 | 
			
		||||
;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
 | 
			
		||||
;;; Copyright © 2020 raingloom <raingloom@riseup.net>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
| 
						 | 
				
			
			@ -149,6 +150,11 @@
 | 
			
		|||
                  ("os/os_test.go" "(.+)(TestHostname.+)")
 | 
			
		||||
                  ("time/format_test.go" "(.+)(TestParseInSydney.+)")
 | 
			
		||||
 | 
			
		||||
                  ;; XXX: This test fails with tzdata 2020b and newer.  Later
 | 
			
		||||
                  ;; Go releases work fine, so just disable this for the
 | 
			
		||||
                  ;; bootstrap Go.
 | 
			
		||||
                  ("time/example_test.go" "(.+)(ExampleParseInLocation.+)")
 | 
			
		||||
 | 
			
		||||
                  ("os/exec/exec_test.go" "(.+)(TestEcho.+)")
 | 
			
		||||
                  ("os/exec/exec_test.go" "(.+)(TestCommandRelativeName.+)")
 | 
			
		||||
                  ("os/exec/exec_test.go" "(.+)(TestCatStdin.+)")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							| 
						 | 
				
			
			@ -34,6 +34,7 @@
 | 
			
		|||
  #:use-module (guix build-system cmake)
 | 
			
		||||
  #:use-module (guix build-system gnu)
 | 
			
		||||
  #:use-module (guix build-system meson)
 | 
			
		||||
  #:use-module (guix build-system trivial)
 | 
			
		||||
  #:use-module (guix utils)
 | 
			
		||||
  #:use-module (gnu packages)
 | 
			
		||||
  #:use-module (gnu packages audio)
 | 
			
		||||
| 
						 | 
				
			
			@ -43,7 +44,6 @@
 | 
			
		|||
  #:use-module (gnu packages cdrom)
 | 
			
		||||
  #:use-module (gnu packages curl)
 | 
			
		||||
  #:use-module (gnu packages compression)
 | 
			
		||||
  #:use-module (gnu packages docbook)
 | 
			
		||||
  #:use-module (gnu packages documentation)
 | 
			
		||||
  #:use-module (gnu packages elf)
 | 
			
		||||
  #:use-module (gnu packages flex)
 | 
			
		||||
| 
						 | 
				
			
			@ -395,21 +395,73 @@ arrays of data.")
 | 
			
		|||
    ;; under the 3-clause BSD license, the rest is under 2-clause BSD license.
 | 
			
		||||
    (license (list license:bsd-2 license:bsd-3))))
 | 
			
		||||
 | 
			
		||||
(define-public gstreamer-docs
 | 
			
		||||
  (package
 | 
			
		||||
    (name "gstreamer-docs")
 | 
			
		||||
    (version "1.18.1")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append
 | 
			
		||||
                    "https://gstreamer.freedesktop.org/src/gstreamer-docs"
 | 
			
		||||
                    "/gstreamer-docs-" version ".tar.xz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0npnsr1z4x951nw8bfcna1xlgi1p0b4qb291jj3pywlib2lscnnv"))))
 | 
			
		||||
    (build-system trivial-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:modules ((guix build utils))
 | 
			
		||||
       #:builder
 | 
			
		||||
       (begin
 | 
			
		||||
         (use-modules ((guix build utils)))
 | 
			
		||||
         (let* ((source (assoc-ref %build-inputs "source"))
 | 
			
		||||
                (tar (assoc-ref %build-inputs "tar"))
 | 
			
		||||
                (xz (assoc-ref %build-inputs "xz"))
 | 
			
		||||
                (out (assoc-ref %outputs "out"))
 | 
			
		||||
                (books (string-append out "/share/devhelp/books")))
 | 
			
		||||
           (setenv "PATH" (string-append xz "/bin"))
 | 
			
		||||
           (mkdir-p books)
 | 
			
		||||
           (with-directory-excursion books
 | 
			
		||||
             (invoke (string-append tar "/bin/tar") "-xvf" source
 | 
			
		||||
                     "--strip-components=3"
 | 
			
		||||
                     (string-append ,name "-" ,version
 | 
			
		||||
                                    "/devhelp/books/GStreamer")))
 | 
			
		||||
           #t))))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("tar" ,tar)
 | 
			
		||||
       ("xz" ,xz)))
 | 
			
		||||
    (home-page "https://gstreamer.freedesktop.org/")
 | 
			
		||||
    (synopsis "Developer documentation for GStreamer")
 | 
			
		||||
    (description
 | 
			
		||||
     "This package contains manuals, tutorials, and API reference for
 | 
			
		||||
the GStreamer multimedia framework.")
 | 
			
		||||
    ;; The documentation is covered by multiple licenses.  Anything not
 | 
			
		||||
    ;; explicitly mentioned below is LGPL2.1+.  See README.md for details.
 | 
			
		||||
    (license (list
 | 
			
		||||
              ;; The tutorial code can be used with either of these licenses,
 | 
			
		||||
              ;; at the users option.
 | 
			
		||||
              license:lgpl2.1+ license:bsd-2 license:expat
 | 
			
		||||
              ;; The developer manual and plugin writer guide carries
 | 
			
		||||
              ;; the Open Publication License v1.0.
 | 
			
		||||
              (license:fsf-free "https://opencontent.org/openpub/"
 | 
			
		||||
                                "The Open Publication License v1.0")
 | 
			
		||||
              ;; Tutorials are covered by CC-BY-SA 4.0.
 | 
			
		||||
              license:cc-by-sa4.0))))
 | 
			
		||||
 | 
			
		||||
;; Increase the test timeouts to accommodate slow or busy machines.
 | 
			
		||||
(define %common-gstreamer-phases
 | 
			
		||||
  '((add-after 'unpack 'increase-test-timeout
 | 
			
		||||
      (lambda _
 | 
			
		||||
        (substitute* "tests/check/meson.build"
 | 
			
		||||
          (("'CK_DEFAULT_TIMEOUT', '20'")
 | 
			
		||||
           "'CK_DEFAULT_TIMEOUT', '60'")
 | 
			
		||||
          (("timeout ?: 3 \\* 60")
 | 
			
		||||
           "timeout: 9 * 60"))
 | 
			
		||||
          (("'CK_DEFAULT_TIMEOUT', '[0-9]*'")
 | 
			
		||||
           "'CK_DEFAULT_TIMEOUT', '600'")
 | 
			
		||||
          (("timeout ?: .*\\)")
 | 
			
		||||
           "timeout: 90 * 60)"))
 | 
			
		||||
        #t))))
 | 
			
		||||
 | 
			
		||||
(define-public gstreamer
 | 
			
		||||
  (package
 | 
			
		||||
    (name "gstreamer")
 | 
			
		||||
    (version "1.16.2")
 | 
			
		||||
    (version "1.18.1")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
      (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -418,9 +470,8 @@ arrays of data.")
 | 
			
		|||
            version ".tar.xz"))
 | 
			
		||||
      (sha256
 | 
			
		||||
       (base32
 | 
			
		||||
        "0kp93622y29pck8asvil1fmzf55s2gx76wv475a6izc3cwj49w73"))))
 | 
			
		||||
        "1fpcpsw740svvdxvvwn0hly5i72miizm4s0mbid10ji83zi8vpvr"))))
 | 
			
		||||
    (build-system meson-build-system)
 | 
			
		||||
    (outputs '("out" "doc"))
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
| 
						 | 
				
			
			@ -438,23 +489,13 @@ arrays of data.")
 | 
			
		|||
                       (("tcase_add_test \\(tc_chain, test_stress_reschedule.*")
 | 
			
		||||
                      ""))
 | 
			
		||||
                     #t)))
 | 
			
		||||
               '())
 | 
			
		||||
         (add-after 'install 'move-docs
 | 
			
		||||
           (lambda* (#:key outputs #:allow-other-keys)
 | 
			
		||||
             (let ((out (assoc-ref outputs "out"))
 | 
			
		||||
                   (doc (assoc-ref outputs "doc")))
 | 
			
		||||
               (mkdir-p (string-append doc "/share"))
 | 
			
		||||
               (copy-recursively (string-append out "/share/gtk-doc")
 | 
			
		||||
                                 (string-append doc "/share/gtk-doc"))
 | 
			
		||||
               (delete-file-recursively (string-append out "/share/gtk-doc"))
 | 
			
		||||
               #t))))))
 | 
			
		||||
               '()))))
 | 
			
		||||
    (propagated-inputs `(("glib" ,glib))) ; required by gstreamer-1.0.pc.
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("bison" ,bison)
 | 
			
		||||
       ("flex" ,flex)
 | 
			
		||||
       ("glib" ,glib "bin")
 | 
			
		||||
       ("gobject-introspection" ,gobject-introspection)
 | 
			
		||||
       ("gtk-doc" ,gtk-doc)
 | 
			
		||||
       ("perl" ,perl)
 | 
			
		||||
       ("pkg-config" ,pkg-config)
 | 
			
		||||
       ("python-wrapper" ,python-wrapper)))
 | 
			
		||||
| 
						 | 
				
			
			@ -480,7 +521,7 @@ This package provides the core library and elements.")
 | 
			
		|||
(define-public gst-plugins-base
 | 
			
		||||
  (package
 | 
			
		||||
    (name "gst-plugins-base")
 | 
			
		||||
    (version "1.16.2")
 | 
			
		||||
    (version "1.18.1")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
      (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -488,7 +529,7 @@ This package provides the core library and elements.")
 | 
			
		|||
                          name "-" version ".tar.xz"))
 | 
			
		||||
      (sha256
 | 
			
		||||
       (base32
 | 
			
		||||
        "0sl1hxlyq46r02k7z70v09vx1gi4rcypqmzra9jid93lzvi76gmi"))))
 | 
			
		||||
        "0hf66sh8d4x2ksfnvaq2rqrrfq0vi0pv6wbh9i5jixrhvvbm99hv"))))
 | 
			
		||||
    (build-system meson-build-system)
 | 
			
		||||
    (propagated-inputs
 | 
			
		||||
     `(("glib" ,glib)              ;required by gstreamer-sdp-1.0.pc
 | 
			
		||||
| 
						 | 
				
			
			@ -523,10 +564,7 @@ This package provides the core library and elements.")
 | 
			
		|||
        ("gobject-introspection" ,gobject-introspection)
 | 
			
		||||
        ("python-wrapper" ,python-wrapper)))
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:configure-flags '("-Dgl=disabled"
 | 
			
		||||
                           ;; FIXME: Documentation fails to build without
 | 
			
		||||
                           ;; enabling GL above, which causes other problems.
 | 
			
		||||
                           "-Ddoc=false")
 | 
			
		||||
     `(#:configure-flags '("-Dgl=disabled")
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         ,@%common-gstreamer-phases
 | 
			
		||||
| 
						 | 
				
			
			@ -545,7 +583,7 @@ for the GStreamer multimedia library.")
 | 
			
		|||
(define-public gst-plugins-good
 | 
			
		||||
  (package
 | 
			
		||||
    (name "gst-plugins-good")
 | 
			
		||||
    (version "1.16.2")
 | 
			
		||||
    (version "1.18.1")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -554,22 +592,22 @@ for the GStreamer multimedia library.")
 | 
			
		|||
         "https://gstreamer.freedesktop.org/src/" name "/"
 | 
			
		||||
         name "-" version ".tar.xz"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32 "068k3cbv1yf3gbllfdzqsg263kzwh21y8dpwr0wvgh15vapkpfs0"))))
 | 
			
		||||
        (base32 "0v329xi4qhlfh9aksfyviryqk9lclm4wj1lxrjnbdv4haldfj472"))))
 | 
			
		||||
    (build-system meson-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:glib-or-gtk? #t     ; To wrap binaries and/or compile schemas
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (add-after 'unpack 'patch-docbook-xml
 | 
			
		||||
           (lambda* (#:key inputs #:allow-other-keys)
 | 
			
		||||
             (with-directory-excursion "docs"
 | 
			
		||||
               (substitute* "plugins/gst-plugins-good-plugins-docs.sgml"
 | 
			
		||||
                 (("http://www.oasis-open.org/docbook/xml/4.1.2/")
 | 
			
		||||
                  (string-append (assoc-ref inputs "docbook-xml")
 | 
			
		||||
                                 "/xml/dtd/docbook/"))))
 | 
			
		||||
         ,@%common-gstreamer-phases
 | 
			
		||||
         (add-after 'unpack 'fix-broken-test
 | 
			
		||||
           (lambda _
 | 
			
		||||
             ;; Fix test failure on 32-bit.  Remove for > 1.18.1.
 | 
			
		||||
             ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/803
 | 
			
		||||
             (substitute* "tests/check/elements/qtdemux.c"
 | 
			
		||||
               (("10000000")
 | 
			
		||||
                "G_GUINT64_CONSTANT (10000000)"))
 | 
			
		||||
             #t))
 | 
			
		||||
         (add-before
 | 
			
		||||
             'check 'pre-check
 | 
			
		||||
         (add-before 'check 'pre-check
 | 
			
		||||
           (lambda _
 | 
			
		||||
             ;; Tests require a running X server.
 | 
			
		||||
             (system "Xvfb :1 +extension GLX &")
 | 
			
		||||
| 
						 | 
				
			
			@ -582,8 +620,7 @@ for the GStreamer multimedia library.")
 | 
			
		|||
             (setenv "DBUS_FATAL_WARNINGS" "0")
 | 
			
		||||
             #t)))))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("docbook-xml" ,docbook-xml-4.1.2)
 | 
			
		||||
       ("gettext" ,gettext-minimal)
 | 
			
		||||
     `(("gettext" ,gettext-minimal)
 | 
			
		||||
       ("glib:bin" ,glib "bin")
 | 
			
		||||
       ("gobject-introspection" ,gobject-introspection)
 | 
			
		||||
       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
 | 
			
		||||
| 
						 | 
				
			
			@ -644,14 +681,14 @@ model to base your own plug-in on, here it is.")
 | 
			
		|||
(define-public gst-plugins-bad
 | 
			
		||||
  (package
 | 
			
		||||
    (name "gst-plugins-bad")
 | 
			
		||||
    (version "1.16.2")
 | 
			
		||||
    (version "1.18.1")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "https://gstreamer.freedesktop.org/src/"
 | 
			
		||||
                                  name "/" name "-" version ".tar.xz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0x0y0hm0ga3zqi5q4090hw5sjh59y1ry9ak16qsaascm72i7mjzi"))))
 | 
			
		||||
                "1cn18cbqyysrxnrk5bpxdzd5xcws9g2kmm5rbv00cx6rhn69g5f1"))))
 | 
			
		||||
    (build-system meson-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:phases
 | 
			
		||||
| 
						 | 
				
			
			@ -668,21 +705,32 @@ model to base your own plug-in on, here it is.")
 | 
			
		|||
                        ""))
 | 
			
		||||
                     #t)))
 | 
			
		||||
               '())
 | 
			
		||||
         (add-after 'unpack 'disable-failing-test
 | 
			
		||||
           (lambda _
 | 
			
		||||
             ;; FIXME: Why is this failing.
 | 
			
		||||
             (substitute* "tests/check/meson.build"
 | 
			
		||||
               ((".*elements/dash_mpd\\.c.*") "")
 | 
			
		||||
               ((".*elements/curlhttpsrc\\.c.*") "")
 | 
			
		||||
               ((".*elements/webrtcbin\\.c.*") ""))
 | 
			
		||||
             #t)))))
 | 
			
		||||
         (add-after 'unpack 'adjust-tests
 | 
			
		||||
           (lambda* (#:key native-inputs inputs #:allow-other-keys)
 | 
			
		||||
             (let ((gst-plugins-good (assoc-ref (or native-inputs inputs)
 | 
			
		||||
                                                "gst-plugins-good")))
 | 
			
		||||
               (substitute* "tests/check/meson.build"
 | 
			
		||||
                 ;; Make gst-plugin-good available for tests, see
 | 
			
		||||
                 ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1426
 | 
			
		||||
                 (("'GST_PLUGIN_SYSTEM_PATH_1_0', ''")
 | 
			
		||||
                  (string-append "'GST_PLUGIN_SYSTEM_PATH_1_0', '"
 | 
			
		||||
                                 gst-plugins-good "/lib/gstreamer-1.0'"))
 | 
			
		||||
 | 
			
		||||
                 ;; FIXME: Why is this failing.
 | 
			
		||||
                 ((".*elements/dash_mpd\\.c.*") "")
 | 
			
		||||
 | 
			
		||||
                 ;; These tests are flaky and occasionally time out:
 | 
			
		||||
                 ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/932
 | 
			
		||||
                 ((".*elements/curlhttpsrc\\.c.*") "")
 | 
			
		||||
                 ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1412
 | 
			
		||||
                 ((".*elements/dtls\\.c.*") ""))
 | 
			
		||||
               #t))))))
 | 
			
		||||
    (propagated-inputs
 | 
			
		||||
     `(("gst-plugins-base" ,gst-plugins-base)))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("glib:bin" ,glib "bin") ; for glib-mkenums, etc.
 | 
			
		||||
       ("gobject-introspection" ,gobject-introspection)
 | 
			
		||||
       ;; TODO: Enable documentation for 1.18.
 | 
			
		||||
       ;;("gtk-doc" ,gtk-doc)
 | 
			
		||||
       ("gst-plugins-good" ,gst-plugins-good) ;for tests
 | 
			
		||||
       ("pkg-config" ,pkg-config)
 | 
			
		||||
       ("python" ,python)))
 | 
			
		||||
    (inputs
 | 
			
		||||
| 
						 | 
				
			
			@ -741,7 +789,7 @@ par compared to the rest.")
 | 
			
		|||
(define-public gst-plugins-ugly
 | 
			
		||||
  (package
 | 
			
		||||
    (name "gst-plugins-ugly")
 | 
			
		||||
    (version "1.16.2")
 | 
			
		||||
    (version "1.18.1")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -749,22 +797,14 @@ par compared to the rest.")
 | 
			
		|||
        (string-append "https://gstreamer.freedesktop.org/src/"
 | 
			
		||||
                       name "/" name "-" version ".tar.xz"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32 "1jpvc32x6q01zjkfgh6gmq6aaikiyfwwnhj7bmvn52syhrdl202m"))))
 | 
			
		||||
        (base32 "09gpbykjchw3lb51ipxj53fy238gr9mg9jybcg5135pb56w6rk8q"))))
 | 
			
		||||
    (build-system meson-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:glib-or-gtk? #t     ; To wrap binaries and/or compile schemas
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (add-after 'unpack 'patch-docbook-xml
 | 
			
		||||
           (lambda* (#:key inputs #:allow-other-keys)
 | 
			
		||||
             (with-directory-excursion "docs"
 | 
			
		||||
               (substitute* "plugins/gst-plugins-ugly-plugins-docs.sgml"
 | 
			
		||||
                 (("http://www.oasis-open.org/docbook/xml/4.1.2/")
 | 
			
		||||
                  (string-append (assoc-ref inputs "docbook-xml")
 | 
			
		||||
                                 "/xml/dtd/docbook/"))))
 | 
			
		||||
             #t))
 | 
			
		||||
         (add-before
 | 
			
		||||
             'check 'pre-check
 | 
			
		||||
         ,@%common-gstreamer-phases
 | 
			
		||||
         (add-before 'check 'pre-check
 | 
			
		||||
           (lambda _
 | 
			
		||||
             ;; Tests require a running X server.
 | 
			
		||||
             (system "Xvfb :1 +extension GLX &")
 | 
			
		||||
| 
						 | 
				
			
			@ -777,8 +817,7 @@ par compared to the rest.")
 | 
			
		|||
             (setenv "DBUS_FATAL_WARNINGS" "0")
 | 
			
		||||
             #t)))))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("docbook-xml" ,docbook-xml-4.1.2)
 | 
			
		||||
       ("gettext" ,gettext-minimal)
 | 
			
		||||
     `(("gettext" ,gettext-minimal)
 | 
			
		||||
       ("glib:bin" ,glib "bin")
 | 
			
		||||
       ("gobject-introspection" ,gobject-introspection)
 | 
			
		||||
       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
 | 
			
		||||
| 
						 | 
				
			
			@ -809,7 +848,7 @@ think twice about shipping them.")
 | 
			
		|||
(define-public gst-libav
 | 
			
		||||
  (package
 | 
			
		||||
    (name "gst-libav")
 | 
			
		||||
    (version "1.16.2")
 | 
			
		||||
    (version "1.18.1")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -818,28 +857,10 @@ think twice about shipping them.")
 | 
			
		|||
         "https://gstreamer.freedesktop.org/src/" name "/"
 | 
			
		||||
         name "-" version ".tar.xz"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32 "1wpfilc98bad9nsv3y1qapxp35dvn2mvwvrmqwrsj58cf09gc967"))
 | 
			
		||||
       (modules '((guix build utils)))
 | 
			
		||||
       (snippet
 | 
			
		||||
        '(begin
 | 
			
		||||
           ;; Drop bundled ffmpeg.
 | 
			
		||||
           (delete-file-recursively "gst-libs/ext/libav")
 | 
			
		||||
           #t))))
 | 
			
		||||
        (base32 "1n1fkkbxxsndblnbm0c2ziqp967hrz5gag6z36xbpvqk4sy1g9rr"))))
 | 
			
		||||
    (build-system meson-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (add-after 'unpack 'patch-docbook-xml
 | 
			
		||||
           (lambda* (#:key inputs #:allow-other-keys)
 | 
			
		||||
             (with-directory-excursion "docs"
 | 
			
		||||
               (substitute* "plugins/gst-libav-plugins-docs.sgml"
 | 
			
		||||
                 (("http://www.oasis-open.org/docbook/xml/4.1.2/")
 | 
			
		||||
                  (string-append (assoc-ref inputs "docbook-xml")
 | 
			
		||||
                                 "/xml/dtd/docbook/"))))
 | 
			
		||||
             #t)))))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("docbook-xml" ,docbook-xml-4.1.2)
 | 
			
		||||
       ("perl" ,perl)
 | 
			
		||||
     `(("perl" ,perl)
 | 
			
		||||
       ("pkg-config" ,pkg-config)
 | 
			
		||||
       ("python" ,python-wrapper)
 | 
			
		||||
       ("ruby" ,ruby)))
 | 
			
		||||
| 
						 | 
				
			
			@ -857,15 +878,15 @@ decoders, muxers, and demuxers provided by FFmpeg.")
 | 
			
		|||
(define-public gst-editing-services
 | 
			
		||||
  (package
 | 
			
		||||
    (name "gst-editing-services")
 | 
			
		||||
    (version "1.16.2")
 | 
			
		||||
    (version "1.18.1")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append
 | 
			
		||||
                    "https://gstreamer.freedesktop.org/src/" name "/"
 | 
			
		||||
                    "gstreamer-editing-services-" version ".tar.xz"))
 | 
			
		||||
                    "gst-editing-services-" version ".tar.xz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "05hcf3prna8ajjnqd53221gj9syarrrjbgvjcbhicv0c38csc1hf"))))
 | 
			
		||||
                "09rr5a198p1r9wcbsjl01xg6idkfkgj5h9x7xxywarb5i7qv6g79"))))
 | 
			
		||||
    (build-system meson-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     ;; FIXME: 16/22 failing tests.
 | 
			
		||||
| 
						 | 
				
			
			@ -892,7 +913,7 @@ non-linear editors.")
 | 
			
		|||
(define-public python-gst
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-gst")
 | 
			
		||||
    (version "1.16.2")
 | 
			
		||||
    (version "1.18.1")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append
 | 
			
		||||
| 
						 | 
				
			
			@ -900,9 +921,7 @@ non-linear editors.")
 | 
			
		|||
                    "gst-python-" version ".tar.xz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1a48ca66izmm8hnp608jv5isg3jxb0vlfmhns0bg9nbkilag7390"))
 | 
			
		||||
              (patches
 | 
			
		||||
               (search-patches "python-gst-fix-build-with-python-3.8.patch"))))
 | 
			
		||||
                "1xpncj9xdn6ycnmrqnk6iaqaia658licyj08cxbjgcvs5x18kcj2"))))
 | 
			
		||||
    (build-system meson-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:modules ((guix build meson-build-system)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -830,7 +830,7 @@ application suites.")
 | 
			
		|||
(define-public gtk+
 | 
			
		||||
  (package (inherit gtk+-2)
 | 
			
		||||
   (name "gtk+")
 | 
			
		||||
   (version "3.24.20")
 | 
			
		||||
   (version "3.24.23")
 | 
			
		||||
   (source (origin
 | 
			
		||||
            (method url-fetch)
 | 
			
		||||
            (uri (string-append "mirror://gnome/sources/" name "/"
 | 
			
		||||
| 
						 | 
				
			
			@ -838,7 +838,7 @@ application suites.")
 | 
			
		|||
                                name "-" version ".tar.xz"))
 | 
			
		||||
            (sha256
 | 
			
		||||
             (base32
 | 
			
		||||
              "1wqxkd3xnqwihcawncp9mkf9bv5a5fg5i4ahm6klpl782vvnkb1d"))
 | 
			
		||||
              "1cg2vbwbcp7bc84ky0b69ipgdr9djhspnf5k8lajb8jphcj4v1jx"))
 | 
			
		||||
            (patches (search-patches "gtk3-respect-GUIX_GTK3_PATH.patch"
 | 
			
		||||
                                     "gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch"))))
 | 
			
		||||
   (propagated-inputs
 | 
			
		||||
| 
						 | 
				
			
			@ -1619,7 +1619,7 @@ and routines to assist in editing internationalized text.")
 | 
			
		|||
       (sha256
 | 
			
		||||
        (base32 "08rpw9hkaprm4r853xy1d35i2af1pji8c3mzzl01mmwmyr9p0x8k"))))
 | 
			
		||||
    (native-inputs `(("pkg-config" ,pkg-config)
 | 
			
		||||
                     ("check" ,check)
 | 
			
		||||
                     ("check" ,check-0.14)
 | 
			
		||||
                     ("gettext" ,gettext-minimal)
 | 
			
		||||
                     ("glib:bin" ,glib "bin")
 | 
			
		||||
                     ("xorg-server" ,xorg-server-for-tests)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -502,12 +502,9 @@ use HUnit assertions as QuickCheck properties.")
 | 
			
		|||
        (base32
 | 
			
		||||
         "0426j43af8v3qmdjjqxivazsvr3a2brac8yw09vpgpjkb2m0nmkv"))))
 | 
			
		||||
    (build-system haskell-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:tests? #f))  ; FIXME: currently missing libraries used for tests.
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("ghc-random" ,ghc-random)
 | 
			
		||||
       ("ghc-splitmix" ,ghc-splitmix-bootstrap)
 | 
			
		||||
       ("ghc-tf-random" ,ghc-tf-random)))
 | 
			
		||||
       ("ghc-splitmix" ,ghc-splitmix-bootstrap)))
 | 
			
		||||
    (home-page "https://github.com/nick8325/quickcheck")
 | 
			
		||||
    (synopsis "Automatic testing of Haskell programs")
 | 
			
		||||
    (description
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -79,6 +79,7 @@
 | 
			
		|||
  #:use-module (gnu packages textutils)
 | 
			
		||||
  #:use-module (gnu packages video)
 | 
			
		||||
  #:use-module (gnu packages web)
 | 
			
		||||
  #:use-module (gnu packages xdisorg)
 | 
			
		||||
  #:use-module (gnu packages xml)
 | 
			
		||||
  #:use-module (gnu packages xorg)
 | 
			
		||||
  #:use-module ((guix licenses) #:prefix license:)
 | 
			
		||||
| 
						 | 
				
			
			@ -977,7 +978,7 @@ Metafile}, and @acronym{EMF+, Enhanced Metafile Plus} files.")
 | 
			
		|||
(define-public imlib2
 | 
			
		||||
  (package
 | 
			
		||||
    (name "imlib2")
 | 
			
		||||
    (version "1.6.1")
 | 
			
		||||
    (version "1.7.0")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append
 | 
			
		||||
| 
						 | 
				
			
			@ -985,8 +986,10 @@ Metafile}, and @acronym{EMF+, Enhanced Metafile Plus} files.")
 | 
			
		|||
                    "/imlib2-" version ".tar.bz2"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0v8n3dswx7rxqfd0q03xwc7j2w1mv8lv18rdxv487a1xw5vklfad"))))
 | 
			
		||||
                "0zdk4afdrrr1539f2q15zja19j4wwfmpswzws2ffgflcnhywlxhr"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:configure-flags (list "--disable-static")))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("pkgconfig" ,pkg-config)))
 | 
			
		||||
    (inputs
 | 
			
		||||
| 
						 | 
				
			
			@ -1906,8 +1909,7 @@ identical visual appearance.")
 | 
			
		|||
           (commit (string-append "v" version))))
 | 
			
		||||
     (file-name (git-file-name name version))
 | 
			
		||||
     (sha256
 | 
			
		||||
      (base32 "0fjmjq0ws9rlblkcqxxw2lv7zvvyi618jqzlnz5z9zb477jwdfib"))
 | 
			
		||||
     (patches (search-patches "grim-revert-output-rotation.patch"))))
 | 
			
		||||
      (base32 "0fjmjq0ws9rlblkcqxxw2lv7zvvyi618jqzlnz5z9zb477jwdfib"))))
 | 
			
		||||
   (build-system meson-build-system)
 | 
			
		||||
   (native-inputs `(("pkg-config" ,pkg-config)
 | 
			
		||||
                    ("scdoc" ,scdoc)))
 | 
			
		||||
| 
						 | 
				
			
			@ -1924,7 +1926,7 @@ identical visual appearance.")
 | 
			
		|||
(define-public slurp
 | 
			
		||||
  (package
 | 
			
		||||
   (name "slurp")
 | 
			
		||||
   (version "1.2.0")
 | 
			
		||||
   (version "1.3.1")
 | 
			
		||||
   (source
 | 
			
		||||
    (origin
 | 
			
		||||
     (method git-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -1933,18 +1935,20 @@ identical visual appearance.")
 | 
			
		|||
           (commit (string-append "v" version))))
 | 
			
		||||
     (file-name (git-file-name name version))
 | 
			
		||||
     (sha256
 | 
			
		||||
      (base32 "0580m6kaiilgsrcj608r837r37sl6a25y7w21p7d6ij20fs3gvg1"))))
 | 
			
		||||
      (base32 "1fby2v2ylcadgclds05wpkl9xi2r9dfz49dqyqpn20rjv1wnz3jv"))))
 | 
			
		||||
   (build-system meson-build-system)
 | 
			
		||||
   (native-inputs `(("pkg-config" ,pkg-config)))
 | 
			
		||||
   (inputs `(("cairo" ,cairo)
 | 
			
		||||
             ("scdoc" ,scdoc)
 | 
			
		||||
             ("wayland" ,wayland)
 | 
			
		||||
             ("wayland-protocols" ,wayland-protocols)))
 | 
			
		||||
   (native-inputs
 | 
			
		||||
    `(("pkg-config" ,pkg-config)
 | 
			
		||||
      ("scdoc" ,scdoc)))
 | 
			
		||||
   (inputs
 | 
			
		||||
    `(("cairo" ,cairo)
 | 
			
		||||
      ("libxkbcommon" ,libxkbcommon)
 | 
			
		||||
      ("wayland" ,wayland)
 | 
			
		||||
      ("wayland-protocols" ,wayland-protocols)))
 | 
			
		||||
   (home-page "https://github.com/emersion/slurp")
 | 
			
		||||
   (synopsis "Select a region in a Wayland compositor")
 | 
			
		||||
   (description "Slurp can select a region in a Wayland compositor and print it
 | 
			
		||||
to the standard output.  It works well together with grim.")
 | 
			
		||||
   ;; MIT license.
 | 
			
		||||
   (license license:expat)))
 | 
			
		||||
 | 
			
		||||
(define-public sng
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,6 +7,7 @@
 | 
			
		|||
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 | 
			
		||||
;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 | 
			
		||||
;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -48,14 +49,14 @@
 | 
			
		|||
    ;; The 7 release series has an incompatible API, while the 6 series is still
 | 
			
		||||
    ;; maintained. Don't update to 7 until we've made sure that the ImageMagick
 | 
			
		||||
    ;; users are ready for the 7-series API.
 | 
			
		||||
    (version "6.9.11-11")
 | 
			
		||||
    (version "6.9.11-34")
 | 
			
		||||
    (source (origin
 | 
			
		||||
             (method url-fetch)
 | 
			
		||||
             (uri (string-append "mirror://imagemagick/ImageMagick-"
 | 
			
		||||
                                 version ".tar.xz"))
 | 
			
		||||
             (sha256
 | 
			
		||||
              (base32
 | 
			
		||||
               "1b67rrppvm04aqr76qky5h2a0j2d161h8kwa04fv611w5xwandr2"))))
 | 
			
		||||
               "0acdjkkgjgpfcwj9h9zncywjjrrgb9sh0cvfn3jamjxh5byf638s"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:configure-flags '("--with-frozenpaths" "--without-gcc-arch"
 | 
			
		||||
| 
						 | 
				
			
			@ -124,6 +125,20 @@ transform images, adjust image colors, apply various special effects, or draw
 | 
			
		|||
text, lines, polygons, ellipses and Bézier curves.")
 | 
			
		||||
    (license (license:fsf-free "http://www.imagemagick.org/script/license.php"))))
 | 
			
		||||
 | 
			
		||||
;; XXX: 'transcode' fails to detect the above ImageMagick, so we provide
 | 
			
		||||
;; this newer version.
 | 
			
		||||
(define-public imagemagick-next
 | 
			
		||||
  (package
 | 
			
		||||
    (inherit imagemagick)
 | 
			
		||||
    (version "6.9.11-37")
 | 
			
		||||
    (source (origin
 | 
			
		||||
             (method url-fetch)
 | 
			
		||||
             (uri (string-append "mirror://imagemagick/ImageMagick-"
 | 
			
		||||
                                 version ".tar.xz"))
 | 
			
		||||
             (sha256
 | 
			
		||||
              (base32
 | 
			
		||||
               "19r6fyhr1bycx0p6jz034mil1zh2k7hfr02is40h4g3wf9b9sdni"))))))
 | 
			
		||||
 | 
			
		||||
(define-public perl-image-magick
 | 
			
		||||
  (package
 | 
			
		||||
    (name "perl-image-magick")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,6 +22,7 @@
 | 
			
		|||
  #:use-module ((guix licenses) #:prefix license:)
 | 
			
		||||
  #:use-module (guix packages)
 | 
			
		||||
  #:use-module (guix download)
 | 
			
		||||
  #:use-module (guix git-download)
 | 
			
		||||
  #:use-module (guix build-system gnu)
 | 
			
		||||
  #:use-module (guix build-system python)
 | 
			
		||||
  #:use-module (gnu packages gettext)
 | 
			
		||||
| 
						 | 
				
			
			@ -31,21 +32,22 @@
 | 
			
		|||
(define-public iso-codes
 | 
			
		||||
  (package
 | 
			
		||||
    (name "iso-codes")
 | 
			
		||||
    (version "3.77")
 | 
			
		||||
    (version "4.5.0")
 | 
			
		||||
    (home-page "https://salsa.debian.org/iso-codes-team/iso-codes")
 | 
			
		||||
    (source (origin
 | 
			
		||||
             (method url-fetch)
 | 
			
		||||
             (uri (string-append
 | 
			
		||||
                   "https://pkg-isocodes.alioth.debian.org/downloads/iso-codes-"
 | 
			
		||||
                   version ".tar.xz"))
 | 
			
		||||
             (method git-fetch)
 | 
			
		||||
             (uri (git-reference
 | 
			
		||||
                   (url home-page)
 | 
			
		||||
                   (commit (string-append "iso-codes-" version))))
 | 
			
		||||
             (file-name (git-file-name name version))
 | 
			
		||||
             (sha256
 | 
			
		||||
              (base32
 | 
			
		||||
               "140dgygv22a49xb8x1941xr5ff12cphd9zzwxds98pgrqsj77k91"))))
 | 
			
		||||
               "1q6x9c5x4x0x4q11iygldsmxdyzhz1mb4n8im76glwsgqsqyjs80"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("gettext" ,gettext-minimal)
 | 
			
		||||
       ("perl" ,perl)
 | 
			
		||||
       ("python" ,python-wrapper)))
 | 
			
		||||
    (home-page "https://salsa.debian.org/iso-codes-team/iso-codes")
 | 
			
		||||
    (synopsis "Various ISO standards")
 | 
			
		||||
    (description
 | 
			
		||||
     "This package provides lists of various ISO standards (e.g. country,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,6 +37,7 @@
 | 
			
		|||
  #:use-module (guix hg-download)
 | 
			
		||||
  #:use-module (guix git-download)
 | 
			
		||||
  #:use-module (guix svn-download)
 | 
			
		||||
  #:use-module ((guix build utils) #:select (alist-replace))
 | 
			
		||||
  #:use-module (guix utils)
 | 
			
		||||
  #:use-module (guix build-system ant)
 | 
			
		||||
  #:use-module (guix build-system gnu)
 | 
			
		||||
| 
						 | 
				
			
			@ -290,7 +291,8 @@ language.")
 | 
			
		|||
              (uri (string-append "mirror://sourceforge/jamvm/jamvm/"
 | 
			
		||||
                                  "JamVM%20" version "/jamvm-"
 | 
			
		||||
                                  version ".tar.gz"))
 | 
			
		||||
              (patches (search-patches "jamvm-arm.patch"))
 | 
			
		||||
              (patches (search-patches "jamvm-1.5.1-aarch64-support.patch"
 | 
			
		||||
                                       "jamvm-1.5.1-armv7-support.patch"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "06lhi03l3b0h48pc7x58bk9my2nrcf1flpmglvys3wyad6yraf36"))
 | 
			
		||||
| 
						 | 
				
			
			@ -306,13 +308,30 @@ language.")
 | 
			
		|||
                            (assoc-ref %build-inputs "classpath"))
 | 
			
		||||
             "--disable-int-caching"
 | 
			
		||||
             "--enable-runtime-reloc-checks"
 | 
			
		||||
             "--enable-ffi")))
 | 
			
		||||
             "--enable-ffi")
 | 
			
		||||
       #:phases
 | 
			
		||||
       ,(if (string-prefix? "aarch64" (or (%current-system)
 | 
			
		||||
                                          (%current-target-system)))
 | 
			
		||||
            ;; Makefiles and the configure script need to be regenerated to
 | 
			
		||||
            ;; incorporate support for AArch64.
 | 
			
		||||
            '(modify-phases %standard-phases
 | 
			
		||||
               (replace 'bootstrap
 | 
			
		||||
                 (lambda _ (invoke "autoreconf" "-vif"))))
 | 
			
		||||
            '%standard-phases)))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("classpath" ,classpath-bootstrap)
 | 
			
		||||
       ("jikes" ,jikes)
 | 
			
		||||
       ("libffi" ,libffi)
 | 
			
		||||
       ("zip" ,zip)
 | 
			
		||||
       ("zlib" ,zlib)))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     (if (string-prefix? "aarch64" (or (%current-system)
 | 
			
		||||
                                       (%current-target-system)))
 | 
			
		||||
         ;; Additional packages needed for autoreconf.
 | 
			
		||||
         `(("autoconf" ,autoconf)
 | 
			
		||||
           ("automake" ,automake)
 | 
			
		||||
           ("libtool" ,libtool))
 | 
			
		||||
         '()))
 | 
			
		||||
    (home-page "http://jamvm.sourceforge.net/")
 | 
			
		||||
    (synopsis "Small Java Virtual Machine")
 | 
			
		||||
    (description "JamVM is a Java Virtual Machine conforming to the JVM
 | 
			
		||||
| 
						 | 
				
			
			@ -697,7 +716,8 @@ machine.")))
 | 
			
		|||
                (file-name (string-append "classpath-" version "-checkout"))
 | 
			
		||||
                (sha256
 | 
			
		||||
                 (base32
 | 
			
		||||
                  "1v2rww76ww322mpg3s12a1kkc6gkp31bm9gcxs532h0wq285fiw4"))))
 | 
			
		||||
                  "1v2rww76ww322mpg3s12a1kkc6gkp31bm9gcxs532h0wq285fiw4"))
 | 
			
		||||
                (patches (search-patches "classpath-aarch64-support.patch"))))
 | 
			
		||||
      (arguments
 | 
			
		||||
       `(#:make-flags
 | 
			
		||||
         ;; Ensure that the initial heap size is smaller than the maximum
 | 
			
		||||
| 
						 | 
				
			
			@ -763,7 +783,9 @@ machine.")))
 | 
			
		|||
               (base32
 | 
			
		||||
                "1nl0zxz8y5x8gwsrm7n32bry4dx8x70p8z3s9jbdvs8avyb8whkn"))
 | 
			
		||||
              (patches
 | 
			
		||||
               (search-patches "jamvm-2.0.0-disable-branch-patching.patch"))
 | 
			
		||||
               (search-patches "jamvm-2.0.0-disable-branch-patching.patch"
 | 
			
		||||
                               "jamvm-2.0.0-opcode-guard.patch"
 | 
			
		||||
                               "jamvm-2.0.0-aarch64-support.patch"))
 | 
			
		||||
              (snippet
 | 
			
		||||
               '(begin
 | 
			
		||||
                  ;; Remove precompiled software.
 | 
			
		||||
| 
						 | 
				
			
			@ -771,9 +793,10 @@ machine.")))
 | 
			
		|||
                  #t))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:configure-flags
 | 
			
		||||
       (list (string-append "--with-classpath-install-dir="
 | 
			
		||||
                            (assoc-ref %build-inputs "classpath")))))
 | 
			
		||||
     (substitute-keyword-arguments (package-arguments jamvm-1-bootstrap)
 | 
			
		||||
       ((#:configure-flags _)
 | 
			
		||||
        '(list (string-append "--with-classpath-install-dir="
 | 
			
		||||
                              (assoc-ref %build-inputs "classpath"))))))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("classpath" ,classpath-devel)
 | 
			
		||||
       ("ecj-javac-wrapper" ,ecj-javac-wrapper)
 | 
			
		||||
| 
						 | 
				
			
			@ -804,6 +827,8 @@ machine.")))
 | 
			
		|||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0bg9sb4f7qbq77c0zf9m17p47ga0kf0r9622g9p12ysg26jd1ksg"))
 | 
			
		||||
              (patches (search-patches
 | 
			
		||||
                        "icedtea-6-extend-hotspot-aarch64-support.patch"))
 | 
			
		||||
              (modules '((guix build utils)))
 | 
			
		||||
              (snippet
 | 
			
		||||
               '(begin
 | 
			
		||||
| 
						 | 
				
			
			@ -832,7 +857,8 @@ machine.")))
 | 
			
		|||
       `("--enable-bootstrap"
 | 
			
		||||
         "--enable-nss"
 | 
			
		||||
         "--without-rhino"
 | 
			
		||||
         "--with-parallel-jobs"
 | 
			
		||||
         ,(string-append "--with-parallel-jobs="
 | 
			
		||||
                         (number->string (parallel-job-count)))
 | 
			
		||||
         "--disable-downloading"
 | 
			
		||||
         "--disable-tests"
 | 
			
		||||
         ,(string-append "--with-ecj="
 | 
			
		||||
| 
						 | 
				
			
			@ -865,11 +891,8 @@ machine.")))
 | 
			
		|||
                            (assoc-ref inputs
 | 
			
		||||
                                       (string-append part "-src"))
 | 
			
		||||
                            part))
 | 
			
		||||
                         '("jdk" "corba"
 | 
			
		||||
                         '("jdk" "hotspot" "corba"
 | 
			
		||||
                           "langtools" "jaxp" "jaxws")))
 | 
			
		||||
             (with-directory-excursion "openjdk"
 | 
			
		||||
               (invoke "tar" "xvf" (assoc-ref inputs "hotspot-src"))
 | 
			
		||||
               (rename-file "hg-checkout" "hotspot"))
 | 
			
		||||
             (substitute* "patches/freetypeversion.patch"
 | 
			
		||||
               (("REQUIRED_FREETYPE_VERSION = 2.2.1")
 | 
			
		||||
                "REQUIRED_FREETYPE_VERSION = 2.10.1"))
 | 
			
		||||
| 
						 | 
				
			
			@ -1095,9 +1118,7 @@ machine.")))
 | 
			
		|||
                 (changeset "jdk6-b41")))
 | 
			
		||||
           (sha256
 | 
			
		||||
            (base32
 | 
			
		||||
             "07lc1z4k5dj9nrc1wvwmpvxr3xgxrdkdh53xb95skk5ij49yagfd"))
 | 
			
		||||
           (patches
 | 
			
		||||
            (search-patches "icedtea-6-hotspot-gcc-segfault-workaround.patch"))))
 | 
			
		||||
             "07lc1z4k5dj9nrc1wvwmpvxr3xgxrdkdh53xb95skk5ij49yagfd"))))
 | 
			
		||||
       ("corba-src"
 | 
			
		||||
        ,(origin
 | 
			
		||||
           (method hg-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -1208,6 +1229,8 @@ bootstrapping purposes.")
 | 
			
		|||
           "--enable-bootstrap"
 | 
			
		||||
           "--enable-nss"
 | 
			
		||||
           "--without-rhino"
 | 
			
		||||
           ,(string-append "--with-parallel-jobs="
 | 
			
		||||
                           (number->string (parallel-job-count)))
 | 
			
		||||
           "--disable-downloading"
 | 
			
		||||
           "--disable-tests"        ;they are run in the check phase instead
 | 
			
		||||
           "--with-openjdk-src-dir=./openjdk.src"
 | 
			
		||||
| 
						 | 
				
			
			@ -1636,7 +1659,7 @@ bootstrapping purposes.")
 | 
			
		|||
              (base32
 | 
			
		||||
               "17bdv39n4lh8l5737c96f3xgamx4y305m067p01cywgp7zaddqws"))
 | 
			
		||||
             (patches (search-patches
 | 
			
		||||
                       "icedtea-7-hotspot-gcc-segfault-workaround.patch"))))
 | 
			
		||||
                       "icedtea-7-hotspot-aarch64-use-c++98.patch"))))
 | 
			
		||||
         ("ant" ,ant-bootstrap)
 | 
			
		||||
         ("attr" ,attr)
 | 
			
		||||
         ("coreutils" ,coreutils)
 | 
			
		||||
| 
						 | 
				
			
			@ -1739,6 +1762,8 @@ IcedTea build harness.")
 | 
			
		|||
                 `( ;;"--disable-bootstrap"
 | 
			
		||||
                   "--enable-bootstrap"
 | 
			
		||||
                   "--enable-nss"
 | 
			
		||||
                   ,(string-append "--with-parallel-jobs="
 | 
			
		||||
                                   (number->string (parallel-job-count)))
 | 
			
		||||
                   "--disable-downloading"
 | 
			
		||||
                   "--disable-system-pcsc"
 | 
			
		||||
                   "--disable-system-sctp"
 | 
			
		||||
| 
						 | 
				
			
			@ -1830,16 +1855,8 @@ new Date();"))
 | 
			
		|||
          ,(drop "langtools"
 | 
			
		||||
                 "15wizy123vhk40chl1b4p552jf2pw2hdww0myf11qab425axz4nw"))
 | 
			
		||||
         ("hotspot-drop"
 | 
			
		||||
          ,(origin
 | 
			
		||||
             (method url-fetch)
 | 
			
		||||
             (uri (string-append
 | 
			
		||||
                   "http://icedtea.classpath.org/download/drops"
 | 
			
		||||
                   "/icedtea8/" version "/hotspot.tar.xz"))
 | 
			
		||||
             (sha256
 | 
			
		||||
              (base32
 | 
			
		||||
               "1ciz1w9j0kz7s1dxdhyqq71nla9icyz6qvn0b9z2zgkklqa98qmm"))
 | 
			
		||||
             (patches (search-patches
 | 
			
		||||
                       "icedtea-7-hotspot-gcc-segfault-workaround.patch"))))
 | 
			
		||||
          ,(drop "hotspot"
 | 
			
		||||
                 "1ciz1w9j0kz7s1dxdhyqq71nla9icyz6qvn0b9z2zgkklqa98qmm"))
 | 
			
		||||
         ("nashorn-drop"
 | 
			
		||||
          ,(drop "nashorn"
 | 
			
		||||
                 "19pzl3ppaw8j6r5cnyp8qiw3hxijh3hdc46l39g5yfhdl4pr4hpa"))
 | 
			
		||||
| 
						 | 
				
			
			@ -2409,14 +2426,14 @@ new Date();"))
 | 
			
		|||
(define-public ant/java8
 | 
			
		||||
  (package (inherit ant-bootstrap)
 | 
			
		||||
    (name "ant")
 | 
			
		||||
    (version "1.10.1")
 | 
			
		||||
    (version "1.10.8")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "mirror://apache/ant/source/apache-ant-"
 | 
			
		||||
                                  version "-src.tar.gz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "10p3dh77lkzzzcy32dk9azljixzadp46fggjfbvgkl8mmb8cxxv8"))
 | 
			
		||||
                "066k2isig5xm70cihj9p73hkp5w7h5zbfqz5kxb6cwr9cb86xl2k"))
 | 
			
		||||
              (modules '((guix build utils)))
 | 
			
		||||
              (snippet
 | 
			
		||||
               '(begin
 | 
			
		||||
| 
						 | 
				
			
			@ -2444,7 +2461,7 @@ new Date();"))
 | 
			
		|||
               ;; "check" phase, because the dependency on "test-jar" would always
 | 
			
		||||
               ;; result in the tests to be run.
 | 
			
		||||
               (substitute* "build.xml"
 | 
			
		||||
                 (("depends=\"jars,test-jar\"") "depends=\"jars\""))
 | 
			
		||||
                 (("depends=\"jars,test-jar") "depends=\"jars"))
 | 
			
		||||
               (invoke "bash" "bootstrap.sh"
 | 
			
		||||
                       (string-append "-Ddist.dir="
 | 
			
		||||
                                      (assoc-ref outputs "out")))))))))
 | 
			
		||||
| 
						 | 
				
			
			@ -2457,14 +2474,14 @@ new Date();"))
 | 
			
		|||
;; requires Java 8.
 | 
			
		||||
(define-public ant
 | 
			
		||||
  (package (inherit ant/java8)
 | 
			
		||||
    (version "1.9.9")
 | 
			
		||||
    (version "1.9.15")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "mirror://apache/ant/source/apache-ant-"
 | 
			
		||||
                                  version "-src.tar.gz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1k28mka0m3isy9yr8gz84kz1f3f879rwaxrd44vdn9xbfwvwk86n"))))
 | 
			
		||||
                "1xy30f1w5gaqk6g3f0vw7ygix4rb6032qkcw42y4z8wd9jihgygd"))))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("jdk" ,icedtea-7 "jdk")
 | 
			
		||||
       ("zip" ,zip)
 | 
			
		||||
| 
						 | 
				
			
			@ -5118,6 +5135,72 @@ including java-asm.")
 | 
			
		|||
       ((#:tests? _) #f)))
 | 
			
		||||
    (native-inputs `())))
 | 
			
		||||
 | 
			
		||||
(define-public java-asm-8
 | 
			
		||||
  (package
 | 
			
		||||
    (inherit java-asm)
 | 
			
		||||
    (version "8.0.1")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method git-fetch)
 | 
			
		||||
              (uri (git-reference
 | 
			
		||||
                     (url "https://gitlab.ow2.org/asm/asm")
 | 
			
		||||
                     (commit (string-append
 | 
			
		||||
                               "ASM_" (string-join (string-split version #\.)
 | 
			
		||||
                                                   "_")))))
 | 
			
		||||
              (file-name (git-file-name "java-asm" version))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1s6j27zc1i76gh891w2g48b1c3abp9w8zp5j54yb1vm5h8djkd69"))))
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:jar-name "asm8.jar"
 | 
			
		||||
       #:source-dir "asm/src/main/java"
 | 
			
		||||
       #:test-dir "asm/src/test"
 | 
			
		||||
       ;; tests depend on junit5
 | 
			
		||||
       #:tests? #f))
 | 
			
		||||
    (propagated-inputs '())
 | 
			
		||||
    (native-inputs '())))
 | 
			
		||||
 | 
			
		||||
(define-public java-asm-tree-8
 | 
			
		||||
  (package
 | 
			
		||||
    (inherit java-asm-8)
 | 
			
		||||
    (name "java-asm-tree")
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:jar-name "asm-tree.jar"
 | 
			
		||||
       #:source-dir "asm-tree/src/main/java"
 | 
			
		||||
       #:test-dir "asm-tree/src/test"
 | 
			
		||||
       ;; tests depend on junit5
 | 
			
		||||
       #:tests? #f))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("java-asm" ,java-asm-8)))))
 | 
			
		||||
 | 
			
		||||
(define-public java-asm-analysis-8
 | 
			
		||||
  (package
 | 
			
		||||
    (inherit java-asm-8)
 | 
			
		||||
    (name "java-asm-analysis")
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:jar-name "asm-analysis.jar"
 | 
			
		||||
       #:source-dir "asm-analysis/src/main/java"
 | 
			
		||||
       #:test-dir "asm-analysis/src/test"
 | 
			
		||||
       ;; tests depend on junit5
 | 
			
		||||
       #:tests? #f))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("java-asm" ,java-asm-8)
 | 
			
		||||
       ("java-asm-tree" ,java-asm-tree-8)))))
 | 
			
		||||
 | 
			
		||||
(define-public java-asm-util-8
 | 
			
		||||
  (package
 | 
			
		||||
    (inherit java-asm-8)
 | 
			
		||||
    (name "java-asm-util")
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:jar-name "asm-util8.jar"
 | 
			
		||||
       #:source-dir "asm-util/src/main/java"
 | 
			
		||||
       #:test-dir "asm-util/src/test"
 | 
			
		||||
       ;; tests depend on junit5
 | 
			
		||||
       #:tests? #f))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("java-asm" ,java-asm-8)
 | 
			
		||||
       ("java-asm-analysis" ,java-asm-analysis-8)
 | 
			
		||||
       ("java-asm-tree" ,java-asm-tree-8)))))
 | 
			
		||||
 | 
			
		||||
(define-public java-cglib
 | 
			
		||||
  (package
 | 
			
		||||
    (name "java-cglib")
 | 
			
		||||
| 
						 | 
				
			
			@ -8372,6 +8455,184 @@ text or binary files.  It's widely used to build languages, tools, and
 | 
			
		|||
frameworks.  From a grammar, ANTLR generates a parser that can build and walk
 | 
			
		||||
parse trees.")))
 | 
			
		||||
 | 
			
		||||
(define-public java-antlr4-runtime-4.1
 | 
			
		||||
  (package
 | 
			
		||||
    (inherit java-antlr4-runtime)
 | 
			
		||||
    (version "4.1")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method git-fetch)
 | 
			
		||||
              (uri (git-reference
 | 
			
		||||
                     (url "https://github.com/antlr/antlr4")
 | 
			
		||||
                     (commit version)))
 | 
			
		||||
              (file-name (git-file-name "antlr4" version))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1i8hmx5an58cjyvhji0xgpvd6lq00z1k1mjys025q2wqc25wv4c1"))))
 | 
			
		||||
    (arguments
 | 
			
		||||
     (substitute-keyword-arguments (package-arguments java-antlr4-runtime)
 | 
			
		||||
       ((#:phases phases)
 | 
			
		||||
        `(modify-phases ,phases
 | 
			
		||||
           (add-before 'configure 'chmod
 | 
			
		||||
             (lambda _
 | 
			
		||||
               (chmod "build.xml" #o644)
 | 
			
		||||
               #t))))))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("java-treelayout" ,java-treelayout)))))
 | 
			
		||||
 | 
			
		||||
(define-public antlr4-4.1
 | 
			
		||||
  (package
 | 
			
		||||
    (inherit antlr4)
 | 
			
		||||
    (version (package-version java-antlr4-runtime-4.1))
 | 
			
		||||
    (source (package-source java-antlr4-runtime-4.1))
 | 
			
		||||
    (arguments
 | 
			
		||||
      (substitute-keyword-arguments (package-arguments antlr4)
 | 
			
		||||
        ((#:test-dir _)
 | 
			
		||||
         "tool/test")
 | 
			
		||||
        ((#:test-exclude excludes)
 | 
			
		||||
         `(list "**/TestParseErrors.java"
 | 
			
		||||
                "**/TestTopologicalSort.java"
 | 
			
		||||
                ,@excludes))
 | 
			
		||||
        ((#:phases phases)
 | 
			
		||||
         `(modify-phases ,phases
 | 
			
		||||
            (delete 'generate-unicode)
 | 
			
		||||
            (replace 'check
 | 
			
		||||
              (lambda _
 | 
			
		||||
                (invoke "ant" "check")
 | 
			
		||||
                #t))
 | 
			
		||||
            (add-before 'configure 'chmod
 | 
			
		||||
              (lambda _
 | 
			
		||||
                (chmod "build.xml" #o644)
 | 
			
		||||
                #t))
 | 
			
		||||
            (delete 'remove-graphemes)
 | 
			
		||||
            (delete 'remove-unrelated-languages)
 | 
			
		||||
            (delete 'generate-test-parsers)))))
 | 
			
		||||
    (inputs
 | 
			
		||||
      (alist-replace
 | 
			
		||||
        "java-antlr4-runtime" (list java-antlr4-runtime-4.1)
 | 
			
		||||
        (package-inputs antlr4)))))
 | 
			
		||||
 | 
			
		||||
(define-public java-tunnelvisionlabs-antlr4-runtime-annotations
 | 
			
		||||
  (package
 | 
			
		||||
    (inherit java-antlr4-runtime)
 | 
			
		||||
    (name "java-tunnelvisionlabs-antlr4-runtime-annotations")
 | 
			
		||||
    (version "4.7.4")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method git-fetch)
 | 
			
		||||
              (uri (git-reference
 | 
			
		||||
                     (url "https://github.com/tunnelvisionlabs/antlr4")
 | 
			
		||||
                     (commit (string-append version "-opt"))))
 | 
			
		||||
              (file-name (git-file-name "java-tunnelvisionlabs-antlr4" version))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1mf2lvvsszpialsk23ma83pwp50nd32lrbjpa847zlm5gmranbr8"))
 | 
			
		||||
              (patches
 | 
			
		||||
                (search-patches "java-antlr4-Add-standalone-generator.patch"
 | 
			
		||||
                                "java-tunnelvisionlabs-antlr-code-too-large.patch"))))
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:jar-name "java-antlr4-runtime-annotations.jar"
 | 
			
		||||
       #:source-dir "runtime/JavaAnnotations/src"
 | 
			
		||||
       #:tests? #f; no tests
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (add-after 'build 'copy-resources
 | 
			
		||||
           (lambda _
 | 
			
		||||
             (copy-recursively "runtime/JavaAnnotations/resources"
 | 
			
		||||
                               "build/classes")
 | 
			
		||||
             #t))
 | 
			
		||||
         (add-after 'copy-resources 'rebuild-jar
 | 
			
		||||
           (lambda _
 | 
			
		||||
             (invoke "ant" "jar")
 | 
			
		||||
             #t)))))
 | 
			
		||||
    (inputs '())
 | 
			
		||||
    (native-inputs '())
 | 
			
		||||
    (synopsis "Annotations for ANTLR's runtime library")
 | 
			
		||||
    (description "This package contains annotations used during the build of
 | 
			
		||||
the runtime library of ANTLR.")))
 | 
			
		||||
 | 
			
		||||
;; the runtime of this library requires a lexer that is generated by antlr4.
 | 
			
		||||
;; However, antlr4 itself requires this library at build and run-time.  We
 | 
			
		||||
;; use antlr4@4.1, the closest version of antlr that doesn't need this
 | 
			
		||||
;; bootstrap process, to generate the lexer.  The generated lexer is built
 | 
			
		||||
;; for the 4.1 runtime, which is slightly different from this runtime.
 | 
			
		||||
;; So, we build the runtime with antlr 4.1, with a broken xml lexer, that we
 | 
			
		||||
;; use to build antlr4.  We then re-use this antlr4 to build the runtime, and
 | 
			
		||||
;; the proper, working, runtime to build antlr4 again.
 | 
			
		||||
(define java-tunnelvisionlabs-antlr4-runtime-bootstrap
 | 
			
		||||
  (package
 | 
			
		||||
    (inherit java-antlr4-runtime)
 | 
			
		||||
    (name "java-tunnelvisionlabs-antlr4-runtime")
 | 
			
		||||
    (version (package-version java-tunnelvisionlabs-antlr4-runtime-annotations))
 | 
			
		||||
    (source (package-source java-tunnelvisionlabs-antlr4-runtime-annotations))
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:jar-name "java-antlr4-runtime.jar"
 | 
			
		||||
       #:source-dir "runtime/Java/src"
 | 
			
		||||
       #:tests? #f; tests require antlr4, but antlr4 depends on this package
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (add-before 'build 'generate-xpath-lexer
 | 
			
		||||
           (lambda _
 | 
			
		||||
             (invoke "antlr4" "-lib" "runtime/Java/src/org/antlr/v4/runtime/tree/xpath"
 | 
			
		||||
                     "-visitor" "-no-listener"
 | 
			
		||||
                     "-package" "org.antlr.v4.runtime.tree.xpath"
 | 
			
		||||
                     "runtime/Java/src/org/antlr/v4/runtime/tree/xpath/XPathLexer.g4")
 | 
			
		||||
             ;; Generated code is for an incompatible version of the runtime
 | 
			
		||||
             (substitute* "runtime/Java/src/org/antlr/v4/runtime/tree/xpath/XPathLexer.java"
 | 
			
		||||
               (("LexerATNSimulator\\(this,_ATN,_decisionToDFA,_sharedContextCache\\)")
 | 
			
		||||
                "LexerATNSimulator(this,_ATN)"))
 | 
			
		||||
             #t))
 | 
			
		||||
         (add-before 'build 'copy-resources
 | 
			
		||||
           (lambda _
 | 
			
		||||
             (copy-recursively "runtime/Java/src/main/dot"
 | 
			
		||||
                               "build/classes")
 | 
			
		||||
             #t)))))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("antlr4" ,antlr4-4.1)
 | 
			
		||||
       ("java-tunnelvisionlabs-antlr4-runtime-annotations"
 | 
			
		||||
        ,java-tunnelvisionlabs-antlr4-runtime-annotations)))))
 | 
			
		||||
 | 
			
		||||
(define java-tunnelvisionlabs-antlr4-bootstrap
 | 
			
		||||
  (package
 | 
			
		||||
    (inherit antlr4)
 | 
			
		||||
    (name "java-tunnelvisionlabs-antlr4")
 | 
			
		||||
    (version (package-version java-tunnelvisionlabs-antlr4-runtime-annotations))
 | 
			
		||||
    (source (package-source java-tunnelvisionlabs-antlr4-runtime-annotations))
 | 
			
		||||
    (arguments
 | 
			
		||||
     (substitute-keyword-arguments (package-arguments antlr4)
 | 
			
		||||
       ((#:test-dir _)
 | 
			
		||||
        "tool/test:runtime-testsuite/src")
 | 
			
		||||
       ((#:phases phases)
 | 
			
		||||
        `(modify-phases ,phases
 | 
			
		||||
           (delete 'remove-unrelated-languages)
 | 
			
		||||
           (delete 'remove-graphemes)
 | 
			
		||||
           (delete 'generate-test-parsers)
 | 
			
		||||
           (delete 'check)))))
 | 
			
		||||
    (native-inputs '())
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("antlr3" ,antlr3)
 | 
			
		||||
       ("java-antlr4-runtime" ,java-tunnelvisionlabs-antlr4-runtime-bootstrap)
 | 
			
		||||
       ("java-tunnelvisionlabs-antlr4-runtime-annotations"
 | 
			
		||||
        ,java-tunnelvisionlabs-antlr4-runtime-annotations)
 | 
			
		||||
       ("java-icu4j" ,java-icu4j)
 | 
			
		||||
       ("java-jsonp-api" ,java-jsonp-api)
 | 
			
		||||
       ("java-stringtemplate" ,java-stringtemplate)
 | 
			
		||||
       ("java-treelayout" ,java-treelayout)))))
 | 
			
		||||
 | 
			
		||||
(define-public java-tunnelvisionlabs-antlr4-runtime
 | 
			
		||||
  (package
 | 
			
		||||
    (inherit java-tunnelvisionlabs-antlr4-runtime-bootstrap)
 | 
			
		||||
    (native-inputs
 | 
			
		||||
      (alist-replace
 | 
			
		||||
        "antlr4" (list java-tunnelvisionlabs-antlr4-bootstrap)
 | 
			
		||||
        (package-native-inputs java-tunnelvisionlabs-antlr4-runtime-bootstrap)))))
 | 
			
		||||
 | 
			
		||||
(define-public java-tunnelvisionlabs-antlr4
 | 
			
		||||
  (package
 | 
			
		||||
    (inherit java-tunnelvisionlabs-antlr4-bootstrap)
 | 
			
		||||
    (inputs
 | 
			
		||||
      (alist-replace
 | 
			
		||||
        "java-antlr4-runtime" (list java-tunnelvisionlabs-antlr4-runtime)
 | 
			
		||||
        (package-inputs java-tunnelvisionlabs-antlr4-bootstrap)))))
 | 
			
		||||
 | 
			
		||||
(define-public java-commons-cli-1.2
 | 
			
		||||
  ;; This is a bootstrap dependency for Maven2.
 | 
			
		||||
  (package
 | 
			
		||||
| 
						 | 
				
			
			@ -13183,3 +13444,98 @@ in Java, usable from Groovy, Kotlin, Scala, etc.")
 | 
			
		|||
used in JVM-based languages.  They serve as an additional documentation and
 | 
			
		||||
can be interpreted by IDEs and static analysis tools to improve code analysis.")
 | 
			
		||||
    (license license:expat)))
 | 
			
		||||
 | 
			
		||||
(define-public java-javaparser
 | 
			
		||||
  (package
 | 
			
		||||
    (name "java-javaparser")
 | 
			
		||||
    (version "3.16.1")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method git-fetch)
 | 
			
		||||
              (uri (git-reference
 | 
			
		||||
                     (url "https://github.com/javaparser/javaparser")
 | 
			
		||||
                     (commit (string-append "javaparser-parent-" version))))
 | 
			
		||||
              (file-name (git-file-name name version))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1a4jk12ffa31fa0y8vda0739vpfj1206p0nha842b7bixbvwamv9"))
 | 
			
		||||
              (modules '((guix build utils)))
 | 
			
		||||
              (snippet
 | 
			
		||||
               '(begin
 | 
			
		||||
                  (for-each delete-file
 | 
			
		||||
                            (find-files "." "\\.jar$"))
 | 
			
		||||
                  #t))))
 | 
			
		||||
    (build-system ant-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:tests? #f; tests require jbehave and junit5
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (add-before 'build 'fill-template
 | 
			
		||||
           (lambda _
 | 
			
		||||
             (with-directory-excursion "javaparser-core/src/main"
 | 
			
		||||
               (copy-file "java-templates/com/github/javaparser/JavaParserBuild.java"
 | 
			
		||||
                          "java/com/github/javaparser/JavaParserBuild.java")
 | 
			
		||||
               (substitute* "java/com/github/javaparser/JavaParserBuild.java"
 | 
			
		||||
                 (("\\$\\{project.version\\}") ,version)
 | 
			
		||||
                 (("\\$\\{project.name\\}") "javaparser")
 | 
			
		||||
                 (("\\$\\{project.build.finalName\\}") "javaparser")
 | 
			
		||||
                 (("\\$\\{maven.version\\}") "fake")
 | 
			
		||||
                 (("\\$\\{maven.build.version\\}") "fake")
 | 
			
		||||
                 (("\\$\\{build.timestamp\\}") "0")
 | 
			
		||||
                 (("\\$\\{java.vendor\\}") "Guix")
 | 
			
		||||
                 (("\\$\\{java.vendor.url\\}") "https://gnu.org/software/guix")
 | 
			
		||||
                 (("\\$\\{java.version\\}") "1.8")
 | 
			
		||||
                 (("\\$\\{os.arch\\}") "any")
 | 
			
		||||
                 (("\\$\\{os.name\\}") "GuixSD")
 | 
			
		||||
                 (("\\$\\{os.version\\}") "not available")))
 | 
			
		||||
             #t))
 | 
			
		||||
         (add-before 'build 'generate-javacc
 | 
			
		||||
           (lambda _
 | 
			
		||||
             (with-directory-excursion "javaparser-core/src/main/java"
 | 
			
		||||
               (invoke "java" "javacc" "../javacc/java.jj"))
 | 
			
		||||
             #t))
 | 
			
		||||
         (add-before 'build 'copy-javacc-support
 | 
			
		||||
           (lambda _
 | 
			
		||||
             (with-directory-excursion "javaparser-core/src/main"
 | 
			
		||||
               (copy-recursively "javacc-support" "java"))
 | 
			
		||||
             #t))
 | 
			
		||||
         (replace 'build
 | 
			
		||||
           (lambda _
 | 
			
		||||
             (define (build name)
 | 
			
		||||
               (format #t "Building ~a~%" name)
 | 
			
		||||
               (delete-file-recursively "build/classes")
 | 
			
		||||
               (mkdir-p "build/classes")
 | 
			
		||||
               (apply invoke "javac"
 | 
			
		||||
                      "-cp" (string-append (getenv "CLASSPATH") ":"
 | 
			
		||||
                                           (string-join (find-files "build/jar" ".")
 | 
			
		||||
                                                        ":"))
 | 
			
		||||
                      "-d" "build/classes"
 | 
			
		||||
                      (find-files (string-append name "/src/main/java")
 | 
			
		||||
                                  ".*.java"))
 | 
			
		||||
               (invoke "jar" "-cf" (string-append "build/jar/" name ".jar")
 | 
			
		||||
                       "-C" "build/classes" "."))
 | 
			
		||||
             (mkdir-p "build/classes")
 | 
			
		||||
             (mkdir-p "build/test-classes")
 | 
			
		||||
             (mkdir-p "build/jar")
 | 
			
		||||
             (build "javaparser-core")
 | 
			
		||||
             (build "javaparser-core-serialization")
 | 
			
		||||
             (build "javaparser-core-generators")
 | 
			
		||||
             (build "javaparser-core-metamodel-generator")
 | 
			
		||||
             (build "javaparser-symbol-solver-core")
 | 
			
		||||
             #t))
 | 
			
		||||
         (replace 'install
 | 
			
		||||
           (install-jars "build/jar")))))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("java-guava" ,java-guava)
 | 
			
		||||
       ("java-jboss-javassist" ,java-jboss-javassist)
 | 
			
		||||
       ("java-jsonp-api" ,java-jsonp-api)))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("javacc" ,javacc)))
 | 
			
		||||
    (home-page "http://javaparser.org/")
 | 
			
		||||
    (synopsis "Parser for Java")
 | 
			
		||||
    (description
 | 
			
		||||
     "This project contains a set of libraries implementing a Java 1.0 - Java
 | 
			
		||||
11 Parser with advanced analysis functionalities.")
 | 
			
		||||
    (license (list
 | 
			
		||||
               ;; either lgpl or asl
 | 
			
		||||
               license:lgpl3+
 | 
			
		||||
               license:asl2.0))))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -447,7 +447,7 @@ illustrate project schedules.")
 | 
			
		|||
       ("openexr" ,openexr)
 | 
			
		||||
       ("perl" ,perl)
 | 
			
		||||
       ("poppler-qt5" ,poppler-qt5)
 | 
			
		||||
       ("qtbase" ,qtbase-for-krita)
 | 
			
		||||
       ("qtbase" ,qtbase)
 | 
			
		||||
       ("qtdeclarative" ,qtdeclarative)
 | 
			
		||||
       ("qtmultimedia" ,qtmultimedia)
 | 
			
		||||
       ("qtsvg" ,qtsvg)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -437,7 +437,7 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.")
 | 
			
		|||
       ("libxrender" ,libxrender)
 | 
			
		||||
       ("libxslt" ,libxslt)
 | 
			
		||||
       ("lzo" ,lzo)
 | 
			
		||||
       ("mariadb" ,mariadb "lib")
 | 
			
		||||
       ("mariadb-dev" ,mariadb "lib")
 | 
			
		||||
       ("mariadb-dev" ,mariadb "dev")
 | 
			
		||||
       ("openssl" ,openssl)
 | 
			
		||||
       ("pcre" ,pcre)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -157,6 +157,7 @@
 | 
			
		|||
  #:use-module (guix store)
 | 
			
		||||
  #:use-module (guix monads)
 | 
			
		||||
  #:use-module (guix utils)
 | 
			
		||||
  #:use-module (guix deprecation)    ;for libcap/next
 | 
			
		||||
  #:use-module (srfi srfi-1)
 | 
			
		||||
  #:use-module (srfi srfi-2)
 | 
			
		||||
  #:use-module (srfi srfi-26)
 | 
			
		||||
| 
						 | 
				
			
			@ -1302,7 +1303,7 @@ application by hooking GStreamer into the loopback device.")
 | 
			
		|||
(define-public linux-pam
 | 
			
		||||
  (package
 | 
			
		||||
    (name "linux-pam")
 | 
			
		||||
    (version "1.3.1")
 | 
			
		||||
    (version "1.4.0")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -1311,7 +1312,7 @@ application by hooking GStreamer into the loopback device.")
 | 
			
		|||
             version "/Linux-PAM-" version ".tar.xz"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "1nyh9kdi3knhxcbv5v4snya0g3gff0m671lnvqcbygw3rm77mx7g"))
 | 
			
		||||
         "0d6hvz6lpkac08hw5wnlhfdm0fhqd0n6jf6v7fz3jhg6a6694vfd"))
 | 
			
		||||
       (patches (search-patches "linux-pam-no-setfsuid.patch"))))
 | 
			
		||||
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
| 
						 | 
				
			
			@ -2054,7 +2055,7 @@ intercept and print the system calls executed by the program.")
 | 
			
		|||
(define-public alsa-lib
 | 
			
		||||
  (package
 | 
			
		||||
    (name "alsa-lib")
 | 
			
		||||
    (version "1.2.2")
 | 
			
		||||
    (version "1.2.3.2")
 | 
			
		||||
    (source (origin
 | 
			
		||||
             (method url-fetch)
 | 
			
		||||
             (uri (string-append
 | 
			
		||||
| 
						 | 
				
			
			@ -2062,7 +2063,7 @@ intercept and print the system calls executed by the program.")
 | 
			
		|||
                   version ".tar.bz2"))
 | 
			
		||||
             (sha256
 | 
			
		||||
              (base32
 | 
			
		||||
               "1v5kb8jyvrpkvvq7dq8hfbmcj68lml97i4s0prxpfx2mh3c57s6q"))))
 | 
			
		||||
               "05dyk856ppvqymazyk1cmpln53g88cq1wjpnsygqrvnamyvwa7z8"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath="
 | 
			
		||||
| 
						 | 
				
			
			@ -2078,14 +2079,14 @@ MIDI functionality to the Linux-based operating system.")
 | 
			
		|||
(define-public alsa-utils
 | 
			
		||||
  (package
 | 
			
		||||
    (name "alsa-utils")
 | 
			
		||||
    (version "1.2.2")
 | 
			
		||||
    (version "1.2.3")
 | 
			
		||||
    (source (origin
 | 
			
		||||
             (method url-fetch)
 | 
			
		||||
             (uri (string-append "ftp://ftp.alsa-project.org/pub/utils/"
 | 
			
		||||
                                 name "-" version ".tar.bz2"))
 | 
			
		||||
             (sha256
 | 
			
		||||
              (base32
 | 
			
		||||
               "1wz460by17rmxrcydn583rd4lhj6wlvqs6x1j5pdzxn5g3app024"))))
 | 
			
		||||
               "1ai1z4kf91b1m3qrpwqkc1af5vm2fkdkknqv95xdwf19q94aw6gz"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     ;; XXX: Disable man page creation until we have DocBook.
 | 
			
		||||
| 
						 | 
				
			
			@ -2417,7 +2418,7 @@ network hardware types (plipconfig, slattach) and advanced aspects of IP
 | 
			
		|||
configuration (iptunnel, ipmaddr).")
 | 
			
		||||
      (license license:gpl2+))))
 | 
			
		||||
 | 
			
		||||
(define-public libcap
 | 
			
		||||
(define-public libcap-2.31
 | 
			
		||||
  (package
 | 
			
		||||
    (name "libcap")
 | 
			
		||||
    (version "2.31")
 | 
			
		||||
| 
						 | 
				
			
			@ -2456,12 +2457,13 @@ Linux-based operating systems.")
 | 
			
		|||
    ;; License is BSD-3 or GPLv2, at the user's choice.
 | 
			
		||||
    (license license:gpl2)))
 | 
			
		||||
 | 
			
		||||
;; libcap 2.31 causes problems for 'fakeroot', so provide this newer variant.
 | 
			
		||||
;; libcap 2.31 has problems with newer kernels, so provide this newer variant.
 | 
			
		||||
;; Keep the old libcap around to avoid rebuilding 'coreutils' and 'avahi'.
 | 
			
		||||
;; To be merged with libcap on the next rebuild cycle.
 | 
			
		||||
(define-public libcap/next
 | 
			
		||||
(define-public libcap
 | 
			
		||||
  (package
 | 
			
		||||
    (inherit libcap)
 | 
			
		||||
    (version "2.34")
 | 
			
		||||
    (inherit libcap-2.31)
 | 
			
		||||
    (version "2.44")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append
 | 
			
		||||
| 
						 | 
				
			
			@ -2469,7 +2471,22 @@ Linux-based operating systems.")
 | 
			
		|||
                    "libcap2/libcap-" version ".tar.xz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "048n1gy2p48vl9hkrr9wymfxxcpwj2aslz2bv79nhl4m2lhd9kdf"))))))
 | 
			
		||||
                "1qf80lifygbnxwvqjf8jz5j24n6fqqx4ixnkbf76xs2vrmcq664j"))))
 | 
			
		||||
    (arguments
 | 
			
		||||
     (substitute-keyword-arguments (package-arguments libcap-2.31)
 | 
			
		||||
       ((#:phases phases)
 | 
			
		||||
        `(modify-phases ,phases
 | 
			
		||||
           (replace 'configure
 | 
			
		||||
             (lambda _
 | 
			
		||||
               ;; Add $libdir to the RUNPATH of executables.
 | 
			
		||||
               (substitute* "Make.Rules"
 | 
			
		||||
                 (("LDFLAGS \\?= #-g")
 | 
			
		||||
                  (string-append "LDFLAGS ?= -Wl,-rpath="
 | 
			
		||||
                                 %output "/lib")))
 | 
			
		||||
               #t))))))))
 | 
			
		||||
 | 
			
		||||
(define-deprecated libcap/next libcap)
 | 
			
		||||
(export libcap/next)
 | 
			
		||||
 | 
			
		||||
(define-public bridge-utils
 | 
			
		||||
  (package
 | 
			
		||||
| 
						 | 
				
			
			@ -4647,7 +4664,7 @@ Bluetooth audio output devices like headphones or loudspeakers.")
 | 
			
		|||
(define-public bluez
 | 
			
		||||
  (package
 | 
			
		||||
    (name "bluez")
 | 
			
		||||
    (version "5.54")
 | 
			
		||||
    (version "5.55")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append
 | 
			
		||||
| 
						 | 
				
			
			@ -4655,7 +4672,7 @@ Bluetooth audio output devices like headphones or loudspeakers.")
 | 
			
		|||
                    version ".tar.xz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1p2ncvjz6alr9n3l5wvq2arqgc7xjs6dqyar1l9jp0z8cfgapkb8"))))
 | 
			
		||||
                "124v9s4y1s7s6klx5vlmzpk1jlr4x84ch7r7scm7x2f42dqp2qw8"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:configure-flags
 | 
			
		||||
| 
						 | 
				
			
			@ -4664,6 +4681,8 @@ Bluetooth audio output devices like headphones or loudspeakers.")
 | 
			
		|||
               "--localstatedir=/var"
 | 
			
		||||
               "--enable-library"
 | 
			
		||||
               "--disable-systemd"
 | 
			
		||||
               ;; TODO: is this needed?  Not installed by default since 5.55.
 | 
			
		||||
               "--enable-hid2hci"
 | 
			
		||||
               ;; Install dbus/udev files to the correct location.
 | 
			
		||||
               (string-append "--with-dbusconfdir=" out "/etc")
 | 
			
		||||
               (string-append "--with-udevdir=" out "/lib/udev")))
 | 
			
		||||
| 
						 | 
				
			
			@ -6043,43 +6062,40 @@ set the screen to be pitch black at a value of 0 (or higher).
 | 
			
		|||
    (license license:gpl3+)))
 | 
			
		||||
 | 
			
		||||
(define-public brightnessctl
 | 
			
		||||
  (let ((commit "6a791e7694aeeb5d027f71c6098e5182cf03371c"))
 | 
			
		||||
    (package
 | 
			
		||||
      (name "brightnessctl")
 | 
			
		||||
      (version (git-version "0.4" "0" commit))
 | 
			
		||||
      (source (origin
 | 
			
		||||
                (method git-fetch)
 | 
			
		||||
                (uri (git-reference
 | 
			
		||||
                      (url "https://github.com/Hummer12007/brightnessctl/")
 | 
			
		||||
                      (commit commit)))
 | 
			
		||||
                (file-name (git-file-name name version))
 | 
			
		||||
                (sha256
 | 
			
		||||
                 (base32
 | 
			
		||||
                  "1n1gb8ldgqv3vs565yhk1w4jfvrviczp94r8wqlkv5q6ab43c8w9"))))
 | 
			
		||||
      (build-system gnu-build-system)
 | 
			
		||||
      (arguments
 | 
			
		||||
       '(#:tests? #f                    ; no tests
 | 
			
		||||
         #:make-flags (list "CC=gcc"
 | 
			
		||||
                            (string-append "PREFIX=" %output)
 | 
			
		||||
                            (string-append "UDEVDIR=" %output "/lib/udev/rules.d/"))
 | 
			
		||||
         #:phases
 | 
			
		||||
         (modify-phases %standard-phases
 | 
			
		||||
           (delete 'configure)
 | 
			
		||||
           (add-after 'unpack 'adjust-udev-rules
 | 
			
		||||
             (lambda _
 | 
			
		||||
               (substitute* "90-brightnessctl.rules"
 | 
			
		||||
                 (("/bin/") "/run/current-system/profile/bin/"))
 | 
			
		||||
               #t)))))
 | 
			
		||||
      (home-page "https://github.com/Hummer12007/brightnessctl")
 | 
			
		||||
      (synopsis "Backlight and LED brightness control")
 | 
			
		||||
      (description
 | 
			
		||||
       "This program allows you read and control device brightness.  Devices
 | 
			
		||||
  (package
 | 
			
		||||
    (name "brightnessctl")
 | 
			
		||||
    (version "0.5.1")
 | 
			
		||||
    (home-page "https://github.com/Hummer12007/brightnessctl")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method git-fetch)
 | 
			
		||||
              (uri (git-reference (url home-page) (commit version)))
 | 
			
		||||
              (file-name (git-file-name name version))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0immxc7almmpg80n3bdn834p3nrrz7bspl2syhb04s3lawa5y2lq"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:tests? #f                      ; no tests
 | 
			
		||||
       #:make-flags (list (string-append "CC=" ,(cc-for-target))
 | 
			
		||||
                          (string-append "PREFIX=" %output)
 | 
			
		||||
                          (string-append "UDEVDIR=" %output "/lib/udev/rules.d/"))
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (delete 'configure)
 | 
			
		||||
         (add-after 'unpack 'adjust-udev-rules
 | 
			
		||||
           (lambda _
 | 
			
		||||
             (substitute* "90-brightnessctl.rules"
 | 
			
		||||
               (("/bin/") "/run/current-system/profile/bin/"))
 | 
			
		||||
             #t)))))
 | 
			
		||||
    (synopsis "Backlight and LED brightness control")
 | 
			
		||||
    (description
 | 
			
		||||
     "This program allows you read and control device brightness.  Devices
 | 
			
		||||
include backlight and LEDs.  It can also preserve current brightness before
 | 
			
		||||
applying the operation, such as on lid close.
 | 
			
		||||
 | 
			
		||||
The appropriate permissions must be set on the backlight or LED control
 | 
			
		||||
interface in sysfs, which can be accomplished with the included udev rules.")
 | 
			
		||||
      (license license:expat))))
 | 
			
		||||
    (license license:expat)))
 | 
			
		||||
 | 
			
		||||
(define-public tlp
 | 
			
		||||
  (package
 | 
			
		||||
| 
						 | 
				
			
			@ -7101,7 +7117,7 @@ the superuser to make device nodes.")
 | 
			
		|||
       ("xz" ,xz)))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("acl" ,acl)
 | 
			
		||||
       ("libcap" ,libcap/next)
 | 
			
		||||
       ("libcap" ,libcap)
 | 
			
		||||
       ("util-linux" ,util-linux)
 | 
			
		||||
       ("sed" ,sed)
 | 
			
		||||
       ("coreutils" ,coreutils)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							| 
						 | 
				
			
			@ -76,21 +76,10 @@
 | 
			
		|||
  #:use-module (gnu packages xorg)
 | 
			
		||||
  #:use-module (ice-9 match))
 | 
			
		||||
 | 
			
		||||
(define (asdf-substitutions lisp)
 | 
			
		||||
  ;; Prepend XDG_DATA_DIRS/LISP-bundle-systems to ASDF's
 | 
			
		||||
  ;; 'default-system-source-registry'.
 | 
			
		||||
  `((("\\(,dir \"systems/\"\\)\\)")
 | 
			
		||||
     (format #f
 | 
			
		||||
             "(,dir \"~a-bundle-systems\")))
 | 
			
		||||
 | 
			
		||||
      ,@(loop :for dir :in (xdg-data-dirs \"common-lisp/\")
 | 
			
		||||
              :collect `(:directory (,dir \"systems\"))"
 | 
			
		||||
             ,lisp))))
 | 
			
		||||
 | 
			
		||||
(define-public cl-asdf
 | 
			
		||||
  (package
 | 
			
		||||
    (name "cl-asdf")
 | 
			
		||||
    (version "3.3.3")
 | 
			
		||||
    (version "3.3.4")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -98,7 +87,7 @@
 | 
			
		|||
        (string-append "https://common-lisp.net/project/asdf/archives/asdf-"
 | 
			
		||||
                       version ".lisp"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32 "18lr6kxvzhr79c9rx3sdricz30aby866fj0m24w27zxsqlyvn3rd"))))
 | 
			
		||||
        (base32 "1hpx30f6yrak15nw992k7x3pn75ahvjs04n4f134k68mhgs62km2"))))
 | 
			
		||||
    (build-system trivial-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:modules ((guix build utils)
 | 
			
		||||
| 
						 | 
				
			
			@ -110,9 +99,29 @@
 | 
			
		|||
         (let* ((out (string-append (assoc-ref %outputs "out")))
 | 
			
		||||
                (asdf-install (string-append out %source-install-prefix
 | 
			
		||||
                                             "/source/asdf/"))
 | 
			
		||||
                (asdf (string-append (assoc-ref %build-inputs "source"))))
 | 
			
		||||
                (src-asdf (string-append (assoc-ref %build-inputs "source")))
 | 
			
		||||
                (dst-asdf (string-append asdf-install "asdf.lisp")))
 | 
			
		||||
           (mkdir-p asdf-install)
 | 
			
		||||
           (copy-file asdf (string-append asdf-install "asdf.lisp"))))))
 | 
			
		||||
           (copy-file src-asdf dst-asdf)
 | 
			
		||||
           ;; Patch ASDF to make it read the configuration files in all
 | 
			
		||||
           ;; the direcories listed in '$XDG_CONFIG_DIRS' instead of just
 | 
			
		||||
           ;; the first.
 | 
			
		||||
           (substitute* dst-asdf
 | 
			
		||||
             (("\\(xdg-config-pathname \\*source-registry-directory\\* direction\\)")
 | 
			
		||||
              "`(:source-registry
 | 
			
		||||
                 ,@(loop
 | 
			
		||||
                      for dir in (xdg-config-dirs
 | 
			
		||||
                                  \"common-lisp/source-registry.conf.d/\")
 | 
			
		||||
                      collect `(:include ,dir))
 | 
			
		||||
                 :inherit-configuration)")
 | 
			
		||||
             (("\\(xdg-config-pathname \\*output-translations-directory\\* direction\\)")
 | 
			
		||||
              "`(:output-translations
 | 
			
		||||
                 ,@(loop
 | 
			
		||||
                      for dir in (xdg-config-dirs
 | 
			
		||||
                                  \"common-lisp/asdf-output-translations.conf.d/\")
 | 
			
		||||
                      collect `(:include ,dir))
 | 
			
		||||
                 :inherit-configuration)")))
 | 
			
		||||
         #t)))
 | 
			
		||||
    (home-page "https://common-lisp.net/project/asdf/")
 | 
			
		||||
    (synopsis "Another System Definition Facility")
 | 
			
		||||
    (description
 | 
			
		||||
| 
						 | 
				
			
			@ -259,10 +268,7 @@ interface to the Tk widget system.")
 | 
			
		|||
                                "/share/common-lisp/source/asdf/asdf.lisp"))
 | 
			
		||||
                    (out (string-append (assoc-ref outputs "out")))
 | 
			
		||||
                    (contrib-asdf "contrib/asdf/asdf.lisp"))
 | 
			
		||||
               (copy-file guix-asdf contrib-asdf)
 | 
			
		||||
               ;; Add ecl-bundle-systems to 'default-system-source-registry'.
 | 
			
		||||
               (substitute* contrib-asdf
 | 
			
		||||
                 ,@(asdf-substitutions name)))
 | 
			
		||||
               (copy-file guix-asdf contrib-asdf))
 | 
			
		||||
             #t))
 | 
			
		||||
         (add-after 'install 'wrap
 | 
			
		||||
           (lambda* (#:key inputs outputs #:allow-other-keys)
 | 
			
		||||
| 
						 | 
				
			
			@ -296,7 +302,10 @@ interface to the Tk widget system.")
 | 
			
		|||
    (native-search-paths
 | 
			
		||||
     (list (search-path-specification
 | 
			
		||||
            (variable "XDG_DATA_DIRS")
 | 
			
		||||
            (files '("share")))))
 | 
			
		||||
            (files '("share")))
 | 
			
		||||
           (search-path-specification
 | 
			
		||||
            (variable "XDG_CONFIG_DIRS")
 | 
			
		||||
            (files '("etc")))))
 | 
			
		||||
    (home-page "http://ecls.sourceforge.net/")
 | 
			
		||||
    (synopsis "Embeddable Common Lisp")
 | 
			
		||||
    (description "ECL is an implementation of the Common Lisp language as
 | 
			
		||||
| 
						 | 
				
			
			@ -435,9 +444,7 @@ an interpreter, a compiler, a debugger, and much more.")
 | 
			
		|||
                                "/share/common-lisp/source/asdf/asdf.lisp"))
 | 
			
		||||
                    (out (string-append (assoc-ref outputs "out")))
 | 
			
		||||
                    (contrib-asdf "contrib/asdf/asdf.lisp"))
 | 
			
		||||
               (copy-file guix-asdf contrib-asdf)
 | 
			
		||||
               (substitute* contrib-asdf
 | 
			
		||||
                 ,@(asdf-substitutions name)))
 | 
			
		||||
               (copy-file guix-asdf contrib-asdf))
 | 
			
		||||
             #t))
 | 
			
		||||
         (add-before 'build 'patch-unix-tool-paths
 | 
			
		||||
           (lambda* (#:key outputs inputs #:allow-other-keys)
 | 
			
		||||
| 
						 | 
				
			
			@ -544,7 +551,10 @@ an interpreter, a compiler, a debugger, and much more.")
 | 
			
		|||
    (native-search-paths
 | 
			
		||||
     (list (search-path-specification
 | 
			
		||||
            (variable "XDG_DATA_DIRS")
 | 
			
		||||
            (files '("share")))))
 | 
			
		||||
            (files '("share")))
 | 
			
		||||
           (search-path-specification
 | 
			
		||||
            (variable "XDG_CONFIG_DIRS")
 | 
			
		||||
            (files '("etc")))))
 | 
			
		||||
    (home-page "http://www.sbcl.org/")
 | 
			
		||||
    (synopsis "Common Lisp implementation")
 | 
			
		||||
    (description "Steel Bank Common Lisp (SBCL) is a high performance Common
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -543,7 +543,7 @@ authentication.")
 | 
			
		|||
    (build-system glib-or-gtk-build-system)
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("pkg-config" ,pkg-config)
 | 
			
		||||
       ("check" ,check)
 | 
			
		||||
       ("check" ,check-0.14)
 | 
			
		||||
       ("intltool" ,intltool)
 | 
			
		||||
       ("gconf" ,gconf)
 | 
			
		||||
       ("python" ,python-2)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1267,7 +1267,7 @@ test_parse_format_ipv(4(|_listen_all|_mapped_ipv6)|6)\\);")
 | 
			
		|||
       #:test-target "test"))
 | 
			
		||||
    (inputs `(("net-tools" ,net-tools)
 | 
			
		||||
              ("zlib" ,zlib)))
 | 
			
		||||
    (native-inputs `(("check" ,check)
 | 
			
		||||
    (native-inputs `(("check" ,check-0.14)
 | 
			
		||||
                     ("pkg-config" ,pkg-config)))
 | 
			
		||||
    (home-page "https://code.kryo.se/iodine/")
 | 
			
		||||
    (synopsis "Tunnel IPv4 data through a DNS server")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,7 +36,7 @@
 | 
			
		|||
(define-public nspr
 | 
			
		||||
  (package
 | 
			
		||||
    (name "nspr")
 | 
			
		||||
    (version "4.25")
 | 
			
		||||
    (version "4.29")
 | 
			
		||||
    (source (origin
 | 
			
		||||
             (method url-fetch)
 | 
			
		||||
             (uri (string-append
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +44,7 @@
 | 
			
		|||
                   version "/src/nspr-" version ".tar.gz"))
 | 
			
		||||
             (sha256
 | 
			
		||||
              (base32
 | 
			
		||||
               "0mjjk2b7ika3v4y99cnaqz3z1iq1a50r1psn9i3s87gr46z0khqb"))))
 | 
			
		||||
               "10i5x637x0jqmdi47grkzgn56fg6770naa3wrhr4dmsrh3dnna12"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("perl" ,perl)))
 | 
			
		||||
| 
						 | 
				
			
			@ -73,7 +73,7 @@ in the Mozilla clients.")
 | 
			
		|||
(define-public nss
 | 
			
		||||
  (package
 | 
			
		||||
    (name "nss")
 | 
			
		||||
    (version "3.52.1")
 | 
			
		||||
    (version "3.57")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (let ((version-with-underscores
 | 
			
		||||
| 
						 | 
				
			
			@ -84,9 +84,9 @@ in the Mozilla clients.")
 | 
			
		|||
                      "nss-" version ".tar.gz")))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0y4jb9095f7bbgw7d7kvzm4c3g4p5i6y68fwhb8wlkpb7b1imj5w"))
 | 
			
		||||
                "10n3pncg6k81ikjz12la147rppwqn57bkrdl9gb820w6pq0nra2m"))
 | 
			
		||||
              ;; Create nss.pc and nss-config.
 | 
			
		||||
              (patches (search-patches "nss-pkgconfig.patch"
 | 
			
		||||
              (patches (search-patches "nss-3.56-pkgconfig.patch"
 | 
			
		||||
                                       "nss-increase-test-timeout.patch"))
 | 
			
		||||
              (modules '((guix build utils)))
 | 
			
		||||
              (snippet
 | 
			
		||||
| 
						 | 
				
			
			@ -139,128 +139,7 @@ in the Mozilla clients.")
 | 
			
		|||
             ;; leading to test failures:
 | 
			
		||||
             ;; <https://bugzilla.mozilla.org/show_bug.cgi?id=609734>.  To
 | 
			
		||||
             ;; work around that, set the time to roughly the release date.
 | 
			
		||||
             (invoke "faketime" "2020-02-01" "./nss/tests/all.sh")))
 | 
			
		||||
           (replace 'install
 | 
			
		||||
             (lambda* (#:key outputs #:allow-other-keys)
 | 
			
		||||
               (let* ((out (assoc-ref outputs "out"))
 | 
			
		||||
                      (bin (string-append (assoc-ref outputs "bin") "/bin"))
 | 
			
		||||
                      (inc (string-append out "/include/nss"))
 | 
			
		||||
                      (lib (string-append out "/lib/nss"))
 | 
			
		||||
                      (obj (match (scandir "dist" (cut string-suffix? "OBJ" <>))
 | 
			
		||||
                             ((obj) (string-append "dist/" obj)))))
 | 
			
		||||
                 ;; Install nss-config to $out/bin.
 | 
			
		||||
                 (install-file (string-append obj "/bin/nss-config")
 | 
			
		||||
                               (string-append out "/bin"))
 | 
			
		||||
                 (delete-file (string-append obj "/bin/nss-config"))
 | 
			
		||||
                 ;; Install nss.pc to $out/lib/pkgconfig.
 | 
			
		||||
                 (install-file (string-append obj "/lib/pkgconfig/nss.pc")
 | 
			
		||||
                               (string-append out "/lib/pkgconfig"))
 | 
			
		||||
                 (delete-file (string-append obj "/lib/pkgconfig/nss.pc"))
 | 
			
		||||
                 (rmdir (string-append obj "/lib/pkgconfig"))
 | 
			
		||||
                 ;; Install other files.
 | 
			
		||||
                 (copy-recursively "dist/public/nss" inc)
 | 
			
		||||
                 (copy-recursively (string-append obj "/bin") bin)
 | 
			
		||||
                 (copy-recursively (string-append obj "/lib") lib)
 | 
			
		||||
 | 
			
		||||
                 ;; FIXME: libgtest1.so is installed in the above step, and it's
 | 
			
		||||
                 ;; (unnecessarily) linked with several NSS libraries, but
 | 
			
		||||
                 ;; without the needed rpaths, causing the 'validate-runpath'
 | 
			
		||||
                 ;; phase to fail.  Here we simply delete libgtest1.so, since it
 | 
			
		||||
                 ;; seems to be used only during the tests.
 | 
			
		||||
                 (delete-file (string-append lib "/libgtest1.so"))
 | 
			
		||||
                 (delete-file (string-append lib "/libgtestutil.so"))
 | 
			
		||||
 | 
			
		||||
                 #t))))))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("sqlite" ,sqlite)
 | 
			
		||||
       ("zlib" ,zlib)))
 | 
			
		||||
    (propagated-inputs `(("nspr" ,nspr))) ; required by nss.pc.
 | 
			
		||||
    (native-inputs `(("perl" ,perl)
 | 
			
		||||
                     ("libfaketime" ,libfaketime))) ;for tests
 | 
			
		||||
 | 
			
		||||
    ;; The NSS test suite takes around 48 hours on Loongson 3A (MIPS) when
 | 
			
		||||
    ;; another build is happening concurrently on the same machine.
 | 
			
		||||
    (properties '((timeout . 216000)))  ; 60 hours
 | 
			
		||||
 | 
			
		||||
    (home-page
 | 
			
		||||
     "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS")
 | 
			
		||||
    (synopsis "Network Security Services")
 | 
			
		||||
    (description
 | 
			
		||||
     "Network Security Services (@dfn{NSS}) is a set of libraries designed to
 | 
			
		||||
support cross-platform development of security-enabled client and server
 | 
			
		||||
applications.  Applications built with NSS can support SSL v2 and v3, TLS,
 | 
			
		||||
PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other
 | 
			
		||||
security standards.")
 | 
			
		||||
    (license license:mpl2.0)))
 | 
			
		||||
 | 
			
		||||
(define-public nss-3.57
 | 
			
		||||
  (package
 | 
			
		||||
    (inherit nss)
 | 
			
		||||
    (version "3.57")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (let ((version-with-underscores
 | 
			
		||||
                          (string-join (string-split version #\.) "_")))
 | 
			
		||||
                     (string-append
 | 
			
		||||
                      "https://ftp.mozilla.org/pub/mozilla.org/security/nss/"
 | 
			
		||||
                      "releases/NSS_" version-with-underscores "_RTM/src/"
 | 
			
		||||
                      "nss-" version ".tar.gz")))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "10n3pncg6k81ikjz12la147rppwqn57bkrdl9gb820w6pq0nra2m"))
 | 
			
		||||
              ;; Create nss.pc and nss-config.
 | 
			
		||||
              (patches (search-patches "nss-3.56-pkgconfig.patch"
 | 
			
		||||
                                       "nss-increase-test-timeout.patch"))
 | 
			
		||||
              (modules '((guix build utils)))
 | 
			
		||||
              (snippet
 | 
			
		||||
               '(begin
 | 
			
		||||
                  ;; Delete the bundled copy of these libraries.
 | 
			
		||||
                  (delete-file-recursively "nss/lib/zlib")
 | 
			
		||||
                  (delete-file-recursively "nss/lib/sqlite")
 | 
			
		||||
                  #t))))
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:parallel-build? #f ; not supported
 | 
			
		||||
       #:make-flags
 | 
			
		||||
       (let* ((out (assoc-ref %outputs "out"))
 | 
			
		||||
              (nspr (string-append (assoc-ref %build-inputs "nspr")))
 | 
			
		||||
              (rpath (string-append "-Wl,-rpath=" out "/lib/nss")))
 | 
			
		||||
         (list "-C" "nss" (string-append "PREFIX=" out)
 | 
			
		||||
               "NSDISTMODE=copy"
 | 
			
		||||
               "NSS_USE_SYSTEM_SQLITE=1"
 | 
			
		||||
               (string-append "NSPR_INCLUDE_DIR=" nspr "/include/nspr")
 | 
			
		||||
               ;; Add $out/lib/nss to RPATH.
 | 
			
		||||
               (string-append "RPATH=" rpath)
 | 
			
		||||
               (string-append "LDFLAGS=" rpath)))
 | 
			
		||||
       #:modules ((guix build gnu-build-system)
 | 
			
		||||
                  (guix build utils)
 | 
			
		||||
                  (ice-9 ftw)
 | 
			
		||||
                  (ice-9 match)
 | 
			
		||||
                  (srfi srfi-26))
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (replace 'configure
 | 
			
		||||
           (lambda _
 | 
			
		||||
             (setenv "CC" "gcc")
 | 
			
		||||
             ;; Tells NSS to build for the 64-bit ABI if we are 64-bit system.
 | 
			
		||||
             ,@(match (%current-system)
 | 
			
		||||
                 ((or "x86_64-linux" "aarch64-linux")
 | 
			
		||||
                  `((setenv "USE_64" "1")))
 | 
			
		||||
                 (_
 | 
			
		||||
                  '()))
 | 
			
		||||
             #t))
 | 
			
		||||
         (replace 'check
 | 
			
		||||
           (lambda _
 | 
			
		||||
             ;; Use 127.0.0.1 instead of $HOST.$DOMSUF as HOSTADDR for testing.
 | 
			
		||||
             ;; The later requires a working DNS or /etc/hosts.
 | 
			
		||||
             (setenv "DOMSUF" "localdomain")
 | 
			
		||||
             (setenv "USE_IP" "TRUE")
 | 
			
		||||
             (setenv "IP_ADDRESS" "127.0.0.1")
 | 
			
		||||
 | 
			
		||||
             ;; The "PayPalEE.cert" certificate expires every six months,
 | 
			
		||||
             ;; leading to test failures:
 | 
			
		||||
             ;; <https://bugzilla.mozilla.org/show_bug.cgi?id=609734>.  To
 | 
			
		||||
             ;; work around that, set the time to roughly the release date.
 | 
			
		||||
             (invoke "faketime" "2020-02-01" "./nss/tests/all.sh")))
 | 
			
		||||
             (invoke "faketime" "2020-10-01" "./nss/tests/all.sh")))
 | 
			
		||||
         (replace 'install
 | 
			
		||||
           (lambda* (#:key outputs #:allow-other-keys)
 | 
			
		||||
             (let* ((out (assoc-ref outputs "out"))
 | 
			
		||||
| 
						 | 
				
			
			@ -282,4 +161,25 @@ security standards.")
 | 
			
		|||
               (copy-recursively "dist/public/nss" inc)
 | 
			
		||||
               (copy-recursively (string-append obj "/bin") bin)
 | 
			
		||||
               (copy-recursively (string-append obj "/lib") lib)
 | 
			
		||||
               #t))))))))
 | 
			
		||||
               #t))))))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("sqlite" ,sqlite)
 | 
			
		||||
       ("zlib" ,zlib)))
 | 
			
		||||
    (propagated-inputs `(("nspr" ,nspr))) ; required by nss.pc.
 | 
			
		||||
    (native-inputs `(("perl" ,perl)
 | 
			
		||||
                     ("libfaketime" ,libfaketime))) ;for tests
 | 
			
		||||
 | 
			
		||||
    ;; The NSS test suite takes around 48 hours on Loongson 3A (MIPS) when
 | 
			
		||||
    ;; another build is happening concurrently on the same machine.
 | 
			
		||||
    (properties '((timeout . 216000)))  ; 60 hours
 | 
			
		||||
 | 
			
		||||
    (home-page
 | 
			
		||||
     "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS")
 | 
			
		||||
    (synopsis "Network Security Services")
 | 
			
		||||
    (description
 | 
			
		||||
     "Network Security Services (@dfn{NSS}) is a set of libraries designed to
 | 
			
		||||
support cross-platform development of security-enabled client and server
 | 
			
		||||
applications.  Applications built with NSS can support SSL v2 and v3, TLS,
 | 
			
		||||
PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other
 | 
			
		||||
security standards.")
 | 
			
		||||
    (license license:mpl2.0)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -81,7 +81,7 @@
 | 
			
		|||
     `(("pkg-config" ,pkg-config)))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("gnutls" ,gnutls)
 | 
			
		||||
       ("libcap" ,libcap/next)
 | 
			
		||||
       ("libcap" ,libcap)
 | 
			
		||||
       ("libseccomp" ,libseccomp)
 | 
			
		||||
       ("nettle" ,nettle)))
 | 
			
		||||
    (home-page "https://chrony.tuxfamily.org/")
 | 
			
		||||
| 
						 | 
				
			
			@ -144,7 +144,7 @@ time-stamping or reference clock, sub-microsecond accuracy is possible.")
 | 
			
		|||
      ;; to run as non-root (when invoked with '-u'.)
 | 
			
		||||
      ,@(if (string-suffix? "-linux"
 | 
			
		||||
                            (or (%current-target-system) (%current-system)))
 | 
			
		||||
            `(("libcap" ,libcap/next))
 | 
			
		||||
            `(("libcap" ,libcap))
 | 
			
		||||
            '())))
 | 
			
		||||
   (arguments
 | 
			
		||||
    `(#:phases
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -143,7 +143,7 @@ from the protocol files.")
 | 
			
		|||
(define-public libnsl
 | 
			
		||||
  (package
 | 
			
		||||
    (name "libnsl")
 | 
			
		||||
    (version "1.2.0")
 | 
			
		||||
    (version "1.3.0")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method git-fetch)
 | 
			
		||||
              (uri (git-reference
 | 
			
		||||
| 
						 | 
				
			
			@ -152,17 +152,10 @@ from the protocol files.")
 | 
			
		|||
              (file-name (git-file-name name version))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1chzqhcgh0yia9js8mh92cmhyka7rh32ql6b3mgdk26n94dqzs8b"))))
 | 
			
		||||
                "1dayj5i4bh65gn7zkciacnwv2a0ghm6nn58d78rsi4zby4lyj5w5"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:configure-flags '("--disable-static")
 | 
			
		||||
       #:phases (modify-phases %standard-phases
 | 
			
		||||
                  (add-before 'bootstrap 'gettextize
 | 
			
		||||
                    (lambda _
 | 
			
		||||
                      ;; Regenerate the bundled Makefile.in.in to avoid a
 | 
			
		||||
                      ;; "gettext infrastructure mismatch" because the
 | 
			
		||||
                      ;; existing version was generated by an older gettext.
 | 
			
		||||
                      (invoke "gettextize" "-f"))))))
 | 
			
		||||
     `(#:configure-flags '("--disable-static")))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("autoconf" ,autoconf)
 | 
			
		||||
       ("automake" ,automake)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,19 +0,0 @@
 | 
			
		|||
Fix build failure with Meson 0.52.
 | 
			
		||||
 | 
			
		||||
Taken from upstream:
 | 
			
		||||
https://gitlab.gnome.org/GNOME/dconf/commit/7ad890fb7a2ec90a777a756a1fa20a615ec7245e
 | 
			
		||||
https://gitlab.gnome.org/GNOME/dconf/merge_requests/54
 | 
			
		||||
 | 
			
		||||
diff --git a/client/meson.build b/client/meson.build
 | 
			
		||||
index f3b7122cb05bfa7bb481c487e3cd052aa1ad58e5..de6387e2cac2aba12b83f2614c277bada434fd16 100644
 | 
			
		||||
--- a/client/meson.build
 | 
			
		||||
+++ b/client/meson.build
 | 
			
		||||
@@ -28,7 +28,7 @@ libdconf_client = static_library(
 | 
			
		||||
 
 | 
			
		||||
 libdconf_client_dep = declare_dependency(
 | 
			
		||||
   dependencies: gio_dep,
 | 
			
		||||
-  link_whole: libdconf_client,
 | 
			
		||||
+  link_with: libdconf_client,
 | 
			
		||||
 )
 | 
			
		||||
 
 | 
			
		||||
 libdconf = shared_library(
 | 
			
		||||
							
								
								
									
										69
									
								
								gnu/packages/patches/gdb-hurd.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								gnu/packages/patches/gdb-hurd.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,69 @@
 | 
			
		|||
Taken from upstream, removed ChangeLog.
 | 
			
		||||
 | 
			
		||||
From 6930bffe3373690b3431d6291f9f7c116d6a1ec4 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
 | 
			
		||||
Date: Sat, 30 May 2020 18:35:59 +0000
 | 
			
		||||
Subject: [PATCH] hurd: fix gnu_debug_flag type
 | 
			
		||||
MIME-Version: 1.0
 | 
			
		||||
Content-Type: text/plain; charset=UTF-8
 | 
			
		||||
Content-Transfer-Encoding: 8bit
 | 
			
		||||
 | 
			
		||||
Fixes
 | 
			
		||||
 | 
			
		||||
../../gdb/gnu-nat.c:96:6: error: conflicting declaration ‘bool gnu_debug_flag’
 | 
			
		||||
   96 | bool gnu_debug_flag = false;
 | 
			
		||||
../../gdb/gnu-nat.c: In function ‘void _initialize_gnu_nat()’:
 | 
			
		||||
../../gdb/gnu-nat.c:3511:7: error: cannot
 | 
			
		||||
 | 
			
		||||
gdb/ChangeLog:
 | 
			
		||||
 | 
			
		||||
	* gnu-nat.h (gnu_debug_flag): Set type to bool.
 | 
			
		||||
---
 | 
			
		||||
 gdb/ChangeLog | 4 ++++
 | 
			
		||||
 gdb/gnu-nat.h | 2 +-
 | 
			
		||||
 2 files changed, 5 insertions(+), 1 deletion(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/gdb/gnu-nat.h b/gdb/gnu-nat.h
 | 
			
		||||
index 77c57817b2..766f716587 100644
 | 
			
		||||
--- a/gdb/gnu-nat.h
 | 
			
		||||
+++ b/gdb/gnu-nat.h
 | 
			
		||||
@@ -111,7 +111,7 @@ extern char *proc_string (struct proc *proc);
 | 
			
		||||
 	      __proc_pid (__proc), __proc->tid, \
 | 
			
		||||
 	      host_address_to_string (__proc) , ##args); } while (0)
 | 
			
		||||
 
 | 
			
		||||
-extern int gnu_debug_flag;
 | 
			
		||||
+extern bool gnu_debug_flag;
 | 
			
		||||
 
 | 
			
		||||
 #define debug(msg, args...) \
 | 
			
		||||
  do { if (gnu_debug_flag) \
 | 
			
		||||
-- 
 | 
			
		||||
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
 | 
			
		||||
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
 | 
			
		||||
 | 
			
		||||
commit 366f550a593c7e6bae3699a4b6d65fe937af5603
 | 
			
		||||
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
 | 
			
		||||
Date:   Sat May 30 18:41:30 2020 +0000
 | 
			
		||||
 | 
			
		||||
    hurd: add missing include
 | 
			
		||||
    
 | 
			
		||||
    Fixes
 | 
			
		||||
    
 | 
			
		||||
    ../../gdb/gnu-nat.c:2522:14: error: ‘target_gdbarch’ was not declared in this scope; did you mean ‘target_detach’?
 | 
			
		||||
     2522 |    paddress (target_gdbarch (), memaddr), pulongest (len),
 | 
			
		||||
    
 | 
			
		||||
    gdb/Changelog:
 | 
			
		||||
    
 | 
			
		||||
            * gnu-nat.c: Include "gdbarch.h".
 | 
			
		||||
 | 
			
		||||
diff --git a/gdb/gnu-nat.c b/gdb/gnu-nat.c
 | 
			
		||||
index 3b438a9a43..9b93488b41 100644
 | 
			
		||||
--- a/gdb/gnu-nat.c
 | 
			
		||||
+++ b/gdb/gnu-nat.c
 | 
			
		||||
@@ -64,6 +64,7 @@ extern "C"
 | 
			
		||||
 #include "language.h"
 | 
			
		||||
 #include "target.h"
 | 
			
		||||
 #include "gdbsupport/gdb_wait.h"
 | 
			
		||||
+#include "gdbarch.h"
 | 
			
		||||
 #include "gdbcmd.h"
 | 
			
		||||
 #include "gdbcore.h"
 | 
			
		||||
 #include "gdbthread.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -1,27 +0,0 @@
 | 
			
		|||
From 80b17ceaff90b81b28b44004d2aca4cc40f365be Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Tobias Geerinckx-Rice <me@tobias.gr>
 | 
			
		||||
Date: Fri, 2 Oct 2020 00:07:30 +0200
 | 
			
		||||
Subject: [PATCH] Revert "Correct interpretation of output rotation"
 | 
			
		||||
 | 
			
		||||
This reverts commit 8f9d60885ce2f9bd66cd93d3378dcb6866d4588a.
 | 
			
		||||
It is incompatible with the current Sway version (1.4) in Guix.
 | 
			
		||||
---
 | 
			
		||||
 render.c | 2 +-
 | 
			
		||||
 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/render.c b/render.c
 | 
			
		||||
index 8f31e7e..a6b0b12 100644
 | 
			
		||||
--- a/render.c
 | 
			
		||||
+++ b/render.c
 | 
			
		||||
@@ -104,7 +104,7 @@ cairo_surface_t *render(struct grim_state *state, struct grim_box *geometry,
 | 
			
		||||
 		cairo_matrix_translate(&matrix,
 | 
			
		||||
 			(double)output->geometry.width / 2,
 | 
			
		||||
 			(double)output->geometry.height / 2);
 | 
			
		||||
-		cairo_matrix_rotate(&matrix, get_output_rotation(output->transform));
 | 
			
		||||
+		cairo_matrix_rotate(&matrix, -get_output_rotation(output->transform));
 | 
			
		||||
 		cairo_matrix_scale(&matrix,
 | 
			
		||||
 			(double)raw_output_width / output_width * output_flipped_x,
 | 
			
		||||
 			(double)raw_output_height / output_height * output_flipped_y);
 | 
			
		||||
-- 
 | 
			
		||||
2.28.0
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										1831
									
								
								gnu/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1831
									
								
								gnu/packages/patches/icedtea-6-extend-hotspot-aarch64-support.patch
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							| 
						 | 
				
			
			@ -1,42 +0,0 @@
 | 
			
		|||
# HG changeset patch
 | 
			
		||||
# User Gábor Boskovits <boskovits@gmail.com>
 | 
			
		||||
# Date 1530519413 -7200
 | 
			
		||||
#      Mon Jul 02 10:16:53 2018 +0200
 | 
			
		||||
# Node ID 77e5bc9e238a28d17e097647badc04ed67a6a452
 | 
			
		||||
# Parent  1ae05a34e052d1672b4a7894ddf5fc2f662eb861
 | 
			
		||||
Fix gcc segfault.
 | 
			
		||||
 | 
			
		||||
diff -r 1ae05a34e052 -r 77e5bc9e238a src/share/vm/opto/output.cpp
 | 
			
		||||
--- a/src/share/vm/opto/output.cpp	Sun Dec 25 23:52:13 2016 +0000
 | 
			
		||||
+++ b/src/share/vm/opto/output.cpp	Mon Jul 02 10:16:53 2018 +0200
 | 
			
		||||
@@ -1758,6 +1758,8 @@
 | 
			
		||||
 
 | 
			
		||||
 // Initializer for class Scheduling
 | 
			
		||||
 
 | 
			
		||||
+volatile const void *eePointer = Pipeline_Use::elaborated_elements;
 | 
			
		||||
+
 | 
			
		||||
 Scheduling::Scheduling(Arena *arena, Compile &compile)
 | 
			
		||||
   : _arena(arena),
 | 
			
		||||
     _cfg(compile.cfg()),
 | 
			
		||||
@@ -1802,8 +1804,8 @@
 | 
			
		||||
 
 | 
			
		||||
   // Clear the bundling information
 | 
			
		||||
   memcpy(_bundle_use_elements,
 | 
			
		||||
-    Pipeline_Use::elaborated_elements,
 | 
			
		||||
-    sizeof(Pipeline_Use::elaborated_elements));
 | 
			
		||||
+	 (void *)eePointer,
 | 
			
		||||
+    11*sizeof(Pipeline_Use_Element));
 | 
			
		||||
 
 | 
			
		||||
   // Get the last node
 | 
			
		||||
   Block *bb = _cfg->_blocks[_cfg->_blocks.size()-1];
 | 
			
		||||
@@ -1854,8 +1856,8 @@
 | 
			
		||||
   _bundle_use.reset();
 | 
			
		||||
 
 | 
			
		||||
   memcpy(_bundle_use_elements,
 | 
			
		||||
-    Pipeline_Use::elaborated_elements,
 | 
			
		||||
-    sizeof(Pipeline_Use::elaborated_elements));
 | 
			
		||||
+	 (void *)eePointer,
 | 
			
		||||
+    11*sizeof(Pipeline_Use_Element));
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 //------------------------------ScheduleAndBundle------------------------------
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,33 @@
 | 
			
		|||
From 919dd016be1abd213b3a7d0e9a3b79e3286ef6ad Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Simon South <simon@simonsouth.net>
 | 
			
		||||
Date: Wed, 10 Jun 2020 13:02:09 -0400
 | 
			
		||||
Subject: [PATCH] aarch64: Use only C++98
 | 
			
		||||
 | 
			
		||||
This patch removes an unneeded C++ template that causes the build to
 | 
			
		||||
fail for aarch64 using gcc 7.5.0 and its default support for only the
 | 
			
		||||
C++98 standard.
 | 
			
		||||
 | 
			
		||||
It is based on original work by Severin Gehwolf <sgehwolf@redhat.com>.
 | 
			
		||||
See: https://bugzilla.redhat.com/show_bug.cgi?id=1307224
 | 
			
		||||
---
 | 
			
		||||
 src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp | 4 ----
 | 
			
		||||
 1 file changed, 4 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp b/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp
 | 
			
		||||
index 0bc0a2b..6f73ca0 100644
 | 
			
		||||
--- a/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp
 | 
			
		||||
+++ b/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp
 | 
			
		||||
@@ -194,10 +194,6 @@ static int reg2offset_out(VMReg r) {
 | 
			
		||||
   return (r->reg2stack() + SharedRuntime::out_preserve_stack_slots()) * VMRegImpl::stack_slot_size;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
-template <class T> static const T& min (const T& a, const T& b) {
 | 
			
		||||
-  return (a > b) ? b : a;
 | 
			
		||||
-}
 | 
			
		||||
-
 | 
			
		||||
 // ---------------------------------------------------------------------------
 | 
			
		||||
 // Read the array of BasicTypes from a signature, and compute where the
 | 
			
		||||
 // arguments should go.  Values in the VMRegPair regs array refer to 4-byte
 | 
			
		||||
-- 
 | 
			
		||||
2.26.2
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,45 +0,0 @@
 | 
			
		|||
From 2f0ef2c69e99e1096a2a72c7a29025a736b044b4 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: =?UTF-8?q?G=C3=A1bor=20Boskovits?= <boskovits@gmail.com>
 | 
			
		||||
Date: Mon, 2 Jul 2018 23:37:25 +0200
 | 
			
		||||
Subject: [PATCH] Fix gcc segfault.
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 src/share/vm/opto/output.cpp | 8 +++++---
 | 
			
		||||
 1 file changed, 5 insertions(+), 3 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/src/share/vm/opto/output.cpp b/src/share/vm/opto/output.cpp
 | 
			
		||||
index d46cb87..0eb9eda 100644
 | 
			
		||||
--- a/src/share/vm/opto/output.cpp
 | 
			
		||||
+++ b/src/share/vm/opto/output.cpp
 | 
			
		||||
@@ -1787,6 +1787,8 @@ uint Scheduling::_total_instructions_per_bundle[Pipeline::_max_instrs_per_cycle+
 | 
			
		||||
 
 | 
			
		||||
 // Initializer for class Scheduling
 | 
			
		||||
 
 | 
			
		||||
+volatile const void *eePointer = Pipeline_Use::elaborated_elements;
 | 
			
		||||
+
 | 
			
		||||
 Scheduling::Scheduling(Arena *arena, Compile &compile)
 | 
			
		||||
   : _arena(arena),
 | 
			
		||||
     _cfg(compile.cfg()),
 | 
			
		||||
@@ -1829,7 +1831,7 @@ Scheduling::Scheduling(Arena *arena, Compile &compile)
 | 
			
		||||
   memset(_current_latency,    0, node_max * sizeof(unsigned short));
 | 
			
		||||
 
 | 
			
		||||
   // Clear the bundling information
 | 
			
		||||
-  memcpy(_bundle_use_elements, Pipeline_Use::elaborated_elements, sizeof(Pipeline_Use::elaborated_elements));
 | 
			
		||||
+  memcpy(_bundle_use_elements, (void *)eePointer, 11*sizeof(Pipeline_Use_Element));
 | 
			
		||||
 
 | 
			
		||||
   // Get the last node
 | 
			
		||||
   Block* block = _cfg->get_block(_cfg->number_of_blocks() - 1);
 | 
			
		||||
@@ -1880,8 +1882,8 @@ void Scheduling::step_and_clear() {
 | 
			
		||||
   _bundle_use.reset();
 | 
			
		||||
 
 | 
			
		||||
   memcpy(_bundle_use_elements,
 | 
			
		||||
-    Pipeline_Use::elaborated_elements,
 | 
			
		||||
-    sizeof(Pipeline_Use::elaborated_elements));
 | 
			
		||||
+	 (void *)eePointer,
 | 
			
		||||
+    11*sizeof(Pipeline_Use_Element));
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 // Perform instruction scheduling and bundling over the sequence of
 | 
			
		||||
-- 
 | 
			
		||||
2.18.0
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										572
									
								
								gnu/packages/patches/jamvm-1.5.1-aarch64-support.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										572
									
								
								gnu/packages/patches/jamvm-1.5.1-aarch64-support.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,572 @@
 | 
			
		|||
From 9c83c3d3f443eb92f87dc87c7dcfe95577b95621 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Simon South <simon@simonsouth.net>
 | 
			
		||||
Date: Thu, 28 May 2020 14:29:55 -0400
 | 
			
		||||
Subject: [PATCH] Add support for aarch64 on GNU/Linux
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 configure.ac                      |  10 +-
 | 
			
		||||
 src/arch/Makefile.am              |   2 +-
 | 
			
		||||
 src/arch/aarch64.h                | 110 ++++++++++++++++
 | 
			
		||||
 src/os/linux/Makefile.am          |   2 +-
 | 
			
		||||
 src/os/linux/aarch64/Makefile.am  |  28 ++++
 | 
			
		||||
 src/os/linux/aarch64/callNative.S | 212 ++++++++++++++++++++++++++++++
 | 
			
		||||
 src/os/linux/aarch64/dll_md.c     |  59 +++++++++
 | 
			
		||||
 src/os/linux/aarch64/init.c       |  51 +++++++
 | 
			
		||||
 8 files changed, 469 insertions(+), 5 deletions(-)
 | 
			
		||||
 create mode 100644 src/arch/aarch64.h
 | 
			
		||||
 create mode 100644 src/os/linux/aarch64/Makefile.am
 | 
			
		||||
 create mode 100644 src/os/linux/aarch64/callNative.S
 | 
			
		||||
 create mode 100644 src/os/linux/aarch64/dll_md.c
 | 
			
		||||
 create mode 100644 src/os/linux/aarch64/init.c
 | 
			
		||||
 | 
			
		||||
diff --git a/configure.ac b/configure.ac
 | 
			
		||||
index ccd530f..707f281 100644
 | 
			
		||||
--- a/configure.ac
 | 
			
		||||
+++ b/configure.ac
 | 
			
		||||
@@ -43,6 +43,7 @@ amd64-*-freebsd*) host_os=bsd libdl_needed=no ;;
 | 
			
		||||
 arm*-*-linux*) host_cpu=arm host_os=linux ;;
 | 
			
		||||
 arm*-*-openbsd*) host_cpu=arm host_os=bsd libdl_needed=no ;;
 | 
			
		||||
 arm*-*-freebsd*) host_cpu=arm host_os=bsd libdl_needed=no ;;
 | 
			
		||||
+aarch64*-*-linux*) host_cpu=aarch64 host_os=linux ;;
 | 
			
		||||
 powerpc*-*-linux*) host_cpu=powerpc host_os=linux ;;
 | 
			
		||||
 powerpc*-*-openbsd*) host_cpu=powerpc host_os=bsd libdl_needed=no ;;
 | 
			
		||||
 powerpc*-*-freebsd*) host_cpu=powerpc host_os=bsd libdl_needed=no ;;
 | 
			
		||||
@@ -149,9 +150,11 @@ AC_ARG_ENABLE(runtime-reloc-checks,
 | 
			
		||||
 
 | 
			
		||||
 AC_ARG_ENABLE(int-inlining,
 | 
			
		||||
     [AS_HELP_STRING(--enable-int-inlining,enable inline threaded version of the interpreter
 | 
			
		||||
-                   (by default enabled on x86_64, i386 and powerpc, disabled otherwise))],,
 | 
			
		||||
-    [if test "$host_cpu" = x86_64 -o "$host_cpu" = i386 -o "$host_cpu" = powerpc && \
 | 
			
		||||
-        test "$cross_compiling" = no -o "$enable_runtime_reloc_checks" != no; then
 | 
			
		||||
+                   (by default enabled on x86_64, i386, powerpc and aarch64,
 | 
			
		||||
+                   disabled otherwise))],,
 | 
			
		||||
+    [if test "$host_cpu" = x86_64 -o "$host_cpu" = i386 -o "$host_cpu" = powerpc -o \
 | 
			
		||||
+             "$host_cpu" = aarch64 && test "$cross_compiling" = no -o \
 | 
			
		||||
+             "$enable_runtime_reloc_checks" != no; then
 | 
			
		||||
          enable_int_inlining=yes
 | 
			
		||||
        else
 | 
			
		||||
          enable_int_inlining=no
 | 
			
		||||
@@ -298,6 +301,7 @@ AC_CONFIG_FILES(
 | 
			
		||||
     src/os/linux/x86_64/Makefile \
 | 
			
		||||
     src/os/linux/parisc/Makefile \
 | 
			
		||||
     src/os/linux/mips/Makefile \
 | 
			
		||||
+    src/os/linux/aarch64/Makefile \
 | 
			
		||||
     src/os/darwin/i386/Makefile \
 | 
			
		||||
     src/os/darwin/arm/Makefile \
 | 
			
		||||
     src/os/darwin/powerpc/Makefile \
 | 
			
		||||
diff --git a/src/arch/Makefile.am b/src/arch/Makefile.am
 | 
			
		||||
index 078c1de..afb26d1 100644
 | 
			
		||||
--- a/src/arch/Makefile.am
 | 
			
		||||
+++ b/src/arch/Makefile.am
 | 
			
		||||
@@ -19,4 +19,4 @@
 | 
			
		||||
 ## Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 | 
			
		||||
 ##
 | 
			
		||||
 
 | 
			
		||||
-EXTRA_DIST = powerpc.h arm.h i386.h x86_64.h parisc.h mips.h
 | 
			
		||||
+EXTRA_DIST = powerpc.h arm.h i386.h x86_64.h parisc.h mips.h aarch64.h
 | 
			
		||||
diff --git a/src/arch/aarch64.h b/src/arch/aarch64.h
 | 
			
		||||
new file mode 100644
 | 
			
		||||
index 0000000..c96aa9f
 | 
			
		||||
--- /dev/null
 | 
			
		||||
+++ b/src/arch/aarch64.h
 | 
			
		||||
@@ -0,0 +1,110 @@
 | 
			
		||||
+/*
 | 
			
		||||
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
 | 
			
		||||
+ * Robert Lougher <rob@lougher.org.uk>.
 | 
			
		||||
+ * Copyright (C) 2020 Simon South <simon@simonsouth.net>.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This file is part of JamVM.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This program 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 2,
 | 
			
		||||
+ * or (at your option) any later version.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This program is distributed in the hope that it will be useful,
 | 
			
		||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
+ * GNU General Public License for more details.
 | 
			
		||||
+ *
 | 
			
		||||
+ * You should have received a copy of the GNU General Public License
 | 
			
		||||
+ * along with this program; if not, write to the Free Software
 | 
			
		||||
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 | 
			
		||||
+ */
 | 
			
		||||
+
 | 
			
		||||
+#include <stdint.h>
 | 
			
		||||
+
 | 
			
		||||
+#define OS_ARCH "aarch64"
 | 
			
		||||
+
 | 
			
		||||
+#define HANDLER_TABLE_T static const void
 | 
			
		||||
+#define DOUBLE_1_BITS 0x3ff0000000000000LL
 | 
			
		||||
+
 | 
			
		||||
+#define READ_DBL(v,p,l) v = ((u8)p[0]<<56)|((u8)p[1]<<48)|((u8)p[2]<<40) \
 | 
			
		||||
+                            |((u8)p[3]<<32)|((u8)p[4]<<24)|((u8)p[5]<<16) \
 | 
			
		||||
+                            |((u8)p[6]<<8)|(u8)p[7]; p+=8
 | 
			
		||||
+
 | 
			
		||||
+/* Needed for i386 -- empty here */
 | 
			
		||||
+#define FPU_HACK
 | 
			
		||||
+
 | 
			
		||||
+#define COMPARE_AND_SWAP_64(addr, old_val, new_val)             \
 | 
			
		||||
+({                                                              \
 | 
			
		||||
+    int result, read_val;                                       \
 | 
			
		||||
+    __asm__ __volatile__ ("                                     \
 | 
			
		||||
+        1:      ldaxr %2, %1;                                   \
 | 
			
		||||
+                cmp %2, %3;                                     \
 | 
			
		||||
+                b.ne 2f;                                        \
 | 
			
		||||
+                stlxr %w0, %4, %1;                              \
 | 
			
		||||
+                cmp %w0, wzr;                                   \
 | 
			
		||||
+                b.ne 1b;                                        \
 | 
			
		||||
+        2:      cset %w0, eq;"                                  \
 | 
			
		||||
+    : "=&r" (result), "+Q" (*addr), "=&r" (read_val)            \
 | 
			
		||||
+    : "r" (old_val), "r" (new_val)                              \
 | 
			
		||||
+    : "cc");                                                    \
 | 
			
		||||
+    result;                                                     \
 | 
			
		||||
+})
 | 
			
		||||
+
 | 
			
		||||
+#define COMPARE_AND_SWAP(addr, old_val, new_val)                \
 | 
			
		||||
+        COMPARE_AND_SWAP_64(addr, old_val, new_val)
 | 
			
		||||
+
 | 
			
		||||
+#define LOCKWORD_READ(addr)                                     \
 | 
			
		||||
+({                                                              \
 | 
			
		||||
+    uintptr_t result;                                           \
 | 
			
		||||
+    __asm__ __volatile__ ("                                     \
 | 
			
		||||
+                ldar %0, %1;"                                   \
 | 
			
		||||
+    : "=r" (result)                                             \
 | 
			
		||||
+    : "Q" (*addr)                                               \
 | 
			
		||||
+    : "cc");                                                    \
 | 
			
		||||
+    result;                                                     \
 | 
			
		||||
+})
 | 
			
		||||
+
 | 
			
		||||
+#define LOCKWORD_WRITE(addr, value)                             \
 | 
			
		||||
+({                                                              \
 | 
			
		||||
+    __asm__ __volatile__ ("                                     \
 | 
			
		||||
+                stlr %1, %0;"                                   \
 | 
			
		||||
+    : "=Q" (*addr)                                              \
 | 
			
		||||
+    : "r" (value)                                               \
 | 
			
		||||
+    : "cc");                                                    \
 | 
			
		||||
+})
 | 
			
		||||
+
 | 
			
		||||
+#define LOCKWORD_COMPARE_AND_SWAP(addr, old_val, new_val)       \
 | 
			
		||||
+        COMPARE_AND_SWAP_64(addr, old_val, new_val)
 | 
			
		||||
+
 | 
			
		||||
+#define FLUSH_CACHE(addr, length)                               \
 | 
			
		||||
+{                                                               \
 | 
			
		||||
+    uintptr_t start = (uintptr_t) (addr);                       \
 | 
			
		||||
+    uintptr_t end = start + length;                             \
 | 
			
		||||
+    uintptr_t i;                                                \
 | 
			
		||||
+                                                                \
 | 
			
		||||
+    for(i = start & aarch64_data_cache_line_mask;               \
 | 
			
		||||
+        i < end;                                                \
 | 
			
		||||
+        i += aarch64_data_cache_line_len)                       \
 | 
			
		||||
+        __asm__ ("dc cvau, %0" :: "r" (i));                     \
 | 
			
		||||
+                                                                \
 | 
			
		||||
+    __asm__ ("dsb ish");                                        \
 | 
			
		||||
+                                                                \
 | 
			
		||||
+    for(i = start & aarch64_instruction_cache_line_mask;        \
 | 
			
		||||
+        i < end;                                                \
 | 
			
		||||
+        i += aarch64_instruction_cache_line_len)                \
 | 
			
		||||
+        __asm__ ("ic ivau, %0" :: "r" (i));                     \
 | 
			
		||||
+                                                                \
 | 
			
		||||
+    __asm__ ("dsb ish; isb");                                   \
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
+#define MBARRIER() __asm__ ("dmb ish" ::: "memory")
 | 
			
		||||
+#define UNLOCK_MBARRIER() __asm__ ("dmb ish" ::: "memory")
 | 
			
		||||
+#define JMM_LOCK_MBARRIER() __asm__ ("dmb ish" ::: "memory")
 | 
			
		||||
+#define JMM_UNLOCK_MBARRIER() JMM_LOCK_MBARRIER()
 | 
			
		||||
+
 | 
			
		||||
+/* Defined in src/os/linux/aarch64/init.c */
 | 
			
		||||
+extern unsigned char aarch64_data_cache_line_len;
 | 
			
		||||
+extern uintptr_t aarch64_data_cache_line_mask;
 | 
			
		||||
+extern unsigned char aarch64_instruction_cache_line_len;
 | 
			
		||||
+extern uintptr_t aarch64_instruction_cache_line_mask;
 | 
			
		||||
diff --git a/src/os/linux/Makefile.am b/src/os/linux/Makefile.am
 | 
			
		||||
index aa29be1..d582b97 100644
 | 
			
		||||
--- a/src/os/linux/Makefile.am
 | 
			
		||||
+++ b/src/os/linux/Makefile.am
 | 
			
		||||
@@ -20,7 +20,7 @@
 | 
			
		||||
 ##
 | 
			
		||||
 
 | 
			
		||||
 SUBDIRS = @arch@
 | 
			
		||||
-DIST_SUBDIRS = powerpc arm i386 x86_64 parisc mips
 | 
			
		||||
+DIST_SUBDIRS = powerpc arm i386 x86_64 parisc mips aarch64
 | 
			
		||||
 
 | 
			
		||||
 noinst_LTLIBRARIES = libos.la
 | 
			
		||||
 libos_la_SOURCES = os.c
 | 
			
		||||
diff --git a/src/os/linux/aarch64/Makefile.am b/src/os/linux/aarch64/Makefile.am
 | 
			
		||||
new file mode 100644
 | 
			
		||||
index 0000000..1024c3a
 | 
			
		||||
--- /dev/null
 | 
			
		||||
+++ b/src/os/linux/aarch64/Makefile.am
 | 
			
		||||
@@ -0,0 +1,28 @@
 | 
			
		||||
+##
 | 
			
		||||
+## Copyright (C) 2003, 2004, 2005, 2006, 2007, 2010, 2011, 2012
 | 
			
		||||
+## Robert Lougher <rob@lougher.org.uk>.
 | 
			
		||||
+##
 | 
			
		||||
+## File added by Simon South <simon@simonsouth.net>.
 | 
			
		||||
+##
 | 
			
		||||
+## This file is part of JamVM.
 | 
			
		||||
+##
 | 
			
		||||
+## This program 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 2,
 | 
			
		||||
+## or (at your option) any later version.
 | 
			
		||||
+##
 | 
			
		||||
+## This program is distributed in the hope that it will be useful,
 | 
			
		||||
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
+## GNU General Public License for more details.
 | 
			
		||||
+##
 | 
			
		||||
+## You should have received a copy of the GNU General Public License
 | 
			
		||||
+## along with this program; if not, write to the Free Software
 | 
			
		||||
+## Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 | 
			
		||||
+##
 | 
			
		||||
+
 | 
			
		||||
+noinst_LTLIBRARIES = libnative.la
 | 
			
		||||
+libnative_la_SOURCES = init.c dll_md.c callNative.S
 | 
			
		||||
+
 | 
			
		||||
+AM_CPPFLAGS = -I$(top_builddir)/src -I$(top_srcdir)/src
 | 
			
		||||
+AM_CCASFLAGS = -I$(top_builddir)/src
 | 
			
		||||
diff --git a/src/os/linux/aarch64/callNative.S b/src/os/linux/aarch64/callNative.S
 | 
			
		||||
new file mode 100644
 | 
			
		||||
index 0000000..e067c4f
 | 
			
		||||
--- /dev/null
 | 
			
		||||
+++ b/src/os/linux/aarch64/callNative.S
 | 
			
		||||
@@ -0,0 +1,212 @@
 | 
			
		||||
+/*
 | 
			
		||||
+ * Copyright (C) 2008, 2009, 2011, 2012 Robert Lougher <rob@jamvm.org.uk>.
 | 
			
		||||
+ * Copyright (C) 2020 Simon South <simon@simonsouth.net>.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This file is part of JamVM.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This program 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 2,
 | 
			
		||||
+ * or (at your option) any later version.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This program is distributed in the hope that it will be useful,
 | 
			
		||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
+ * GNU General Public License for more details.
 | 
			
		||||
+ *
 | 
			
		||||
+ * You should have received a copy of the GNU General Public License
 | 
			
		||||
+ * along with this program; if not, write to the Free Software
 | 
			
		||||
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 | 
			
		||||
+ */
 | 
			
		||||
+
 | 
			
		||||
+#include "config.h"
 | 
			
		||||
+
 | 
			
		||||
+#ifndef USE_FFI
 | 
			
		||||
+        .text
 | 
			
		||||
+        .arch armv8-a
 | 
			
		||||
+        .align 2
 | 
			
		||||
+        .global callJNIMethod
 | 
			
		||||
+        .type callJNIMethod,function
 | 
			
		||||
+
 | 
			
		||||
+/*
 | 
			
		||||
+ * Arguments passed in:
 | 
			
		||||
+ *
 | 
			
		||||
+ * x0 JNIEnv
 | 
			
		||||
+ * x1 class or NULL
 | 
			
		||||
+ * x2 sig
 | 
			
		||||
+ * w3 extra arg
 | 
			
		||||
+ * x4 ostack
 | 
			
		||||
+ * x5 function pntr
 | 
			
		||||
+ * w6 args count
 | 
			
		||||
+ */
 | 
			
		||||
+
 | 
			
		||||
+/* Register usage:
 | 
			
		||||
+ *
 | 
			
		||||
+ * x20 ostack
 | 
			
		||||
+ * x19 sig pntr
 | 
			
		||||
+ * x16 function pntr
 | 
			
		||||
+ * x15 ostack pntr
 | 
			
		||||
+ * x14 args pntr
 | 
			
		||||
+ * x13 float/double handler
 | 
			
		||||
+ * x12 int/long handler
 | 
			
		||||
+ * w11 fp regs remaining
 | 
			
		||||
+ * w10 int regs remaining
 | 
			
		||||
+ * x9 scratch
 | 
			
		||||
+ * x2-x7 outgoing int args
 | 
			
		||||
+ * x1 outgoing class or this pntr
 | 
			
		||||
+ * x0 outgoing JNIEnv (as passed in)
 | 
			
		||||
+ *
 | 
			
		||||
+ * d0 - d7 outgoing float args
 | 
			
		||||
+ */
 | 
			
		||||
+
 | 
			
		||||
+callJNIMethod:
 | 
			
		||||
+        stp     x29, x30, [sp, #-32]!
 | 
			
		||||
+        mov     x29, sp
 | 
			
		||||
+        stp     x19, x20, [x29, #16]
 | 
			
		||||
+
 | 
			
		||||
+        sub     sp, sp, w3              /* allocate room for stacked args */
 | 
			
		||||
+        mov     x14, sp
 | 
			
		||||
+
 | 
			
		||||
+        mov     x20, x4                 /* preserve ostack */
 | 
			
		||||
+        add     x19, x2, #1             /* init sig pntr -- skipping '(' */
 | 
			
		||||
+
 | 
			
		||||
+        mov     x16, x5                 /* save function pntr */
 | 
			
		||||
+        mov     x15, x20                /* init ostack pntr */
 | 
			
		||||
+
 | 
			
		||||
+        adr     x13, fp_reg_handlers-8
 | 
			
		||||
+        adr     x12, int_reg_handlers-8
 | 
			
		||||
+
 | 
			
		||||
+        mov     w11, #8                 /* fp regs remaining */
 | 
			
		||||
+        mov     w10, #6                 /* int regs remaining */
 | 
			
		||||
+
 | 
			
		||||
+        cbnz    x1, scan_sig            /* is method non-static? */
 | 
			
		||||
+        ldr     x1, [x15], #8           /* yes, load x1 with "this" */
 | 
			
		||||
+
 | 
			
		||||
+scan_sig:
 | 
			
		||||
+        ldrb    w9, [x19], #1           /* get next sig char */
 | 
			
		||||
+
 | 
			
		||||
+        cmp     w9, #41                 /* ')' */
 | 
			
		||||
+        b.eq    done
 | 
			
		||||
+
 | 
			
		||||
+        cmp     w9, #74                 /* 'J' */
 | 
			
		||||
+        b.eq    long
 | 
			
		||||
+
 | 
			
		||||
+        cmp     w9, #70                 /* 'F' */
 | 
			
		||||
+        b.eq    float
 | 
			
		||||
+
 | 
			
		||||
+        cmp     w9, #68                 /* 'D' */
 | 
			
		||||
+        b.eq    double
 | 
			
		||||
+
 | 
			
		||||
+skip_brackets:
 | 
			
		||||
+        cmp     w9, #91                 /* '[' */
 | 
			
		||||
+        b.ne    1f
 | 
			
		||||
+        ldrb    w9, [x19], #1
 | 
			
		||||
+        b       skip_brackets
 | 
			
		||||
+1:
 | 
			
		||||
+        cmp     w9, #76                 /* 'L' */
 | 
			
		||||
+        b.ne    int
 | 
			
		||||
+
 | 
			
		||||
+skip_ref:
 | 
			
		||||
+        ldrb    w9, [x19], #1
 | 
			
		||||
+        cmp     w9, #59                 /* ';' */
 | 
			
		||||
+        b.ne    skip_ref
 | 
			
		||||
+
 | 
			
		||||
+int:
 | 
			
		||||
+        ldr     x9, [x15], #8
 | 
			
		||||
+        cbz     w10, stack_push
 | 
			
		||||
+
 | 
			
		||||
+load_int_reg:
 | 
			
		||||
+        sub     w10, w10, #1
 | 
			
		||||
+        add     x12, x12, #8
 | 
			
		||||
+        br      x12
 | 
			
		||||
+
 | 
			
		||||
+int_reg_handlers:
 | 
			
		||||
+        mov     x2, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+        mov     x3, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+        mov     x4, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+        mov     x5, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+        mov     x6, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+        mov     x7, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+
 | 
			
		||||
+long:
 | 
			
		||||
+        ldr     x9, [x15], #16
 | 
			
		||||
+        cbz     w10, stack_push
 | 
			
		||||
+        b       load_int_reg
 | 
			
		||||
+
 | 
			
		||||
+float:
 | 
			
		||||
+        ldr     w9, [x15], #8
 | 
			
		||||
+        cbz     w11, stack_push
 | 
			
		||||
+        b       load_fp_reg
 | 
			
		||||
+
 | 
			
		||||
+double:
 | 
			
		||||
+        ldr     x9, [x15], #16
 | 
			
		||||
+        cbz     w11, stack_push
 | 
			
		||||
+
 | 
			
		||||
+load_fp_reg:
 | 
			
		||||
+        sub     w11, w11, #1
 | 
			
		||||
+        add     x13, x13, #8
 | 
			
		||||
+        br      x13
 | 
			
		||||
+
 | 
			
		||||
+fp_reg_handlers:
 | 
			
		||||
+        fmov    d0, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+        fmov    d1, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+        fmov    d2, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+        fmov    d3, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+        fmov    d4, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+        fmov    d5, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+        fmov    d6, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+        fmov    d7, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+
 | 
			
		||||
+stack_push:
 | 
			
		||||
+        str     x9, [x14], #8
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+
 | 
			
		||||
+done:
 | 
			
		||||
+        /* Call the function */
 | 
			
		||||
+        blr     x16
 | 
			
		||||
+
 | 
			
		||||
+        mov     sp, x29                 /* Pop argument area */
 | 
			
		||||
+
 | 
			
		||||
+        ldrb    w9, [x19]               /* Return type */
 | 
			
		||||
+
 | 
			
		||||
+        cmp     w9, #86                 /* 'V' */
 | 
			
		||||
+        b.eq    return
 | 
			
		||||
+
 | 
			
		||||
+        cmp     w9, #68                 /* 'D' */
 | 
			
		||||
+        b.ne    2f
 | 
			
		||||
+        str     d0, [x20], #16
 | 
			
		||||
+        b       return
 | 
			
		||||
+2:
 | 
			
		||||
+        cmp     w9, #70                 /* 'F' */
 | 
			
		||||
+        b.ne    3f
 | 
			
		||||
+        str     s0, [x20], #8
 | 
			
		||||
+        b       return
 | 
			
		||||
+3:
 | 
			
		||||
+        cmp     w9, #74                 /* 'J' */
 | 
			
		||||
+        b.ne    4f
 | 
			
		||||
+        str     x0, [x20], #16
 | 
			
		||||
+        b       return
 | 
			
		||||
+4:
 | 
			
		||||
+        str     x0, [x20], #8
 | 
			
		||||
+
 | 
			
		||||
+return:
 | 
			
		||||
+        mov     x0, x20                 /* return ostack */
 | 
			
		||||
+
 | 
			
		||||
+        ldp     x19, x20, [x29, #16]
 | 
			
		||||
+        ldp     x29, x30, [sp], #32
 | 
			
		||||
+        ret
 | 
			
		||||
+#endif
 | 
			
		||||
diff --git a/src/os/linux/aarch64/dll_md.c b/src/os/linux/aarch64/dll_md.c
 | 
			
		||||
new file mode 100644
 | 
			
		||||
index 0000000..189f8a8
 | 
			
		||||
--- /dev/null
 | 
			
		||||
+++ b/src/os/linux/aarch64/dll_md.c
 | 
			
		||||
@@ -0,0 +1,59 @@
 | 
			
		||||
+/*
 | 
			
		||||
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011
 | 
			
		||||
+ * Robert Lougher <rob@jamvm.org.uk>.
 | 
			
		||||
+ * Copyright (C) 2020 Simon South <simon@simonsouth.net>.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This file is part of JamVM.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This program 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 2,
 | 
			
		||||
+ * or (at your option) any later version.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This program is distributed in the hope that it will be useful,
 | 
			
		||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
+ * GNU General Public License for more details.
 | 
			
		||||
+ *
 | 
			
		||||
+ * You should have received a copy of the GNU General Public License
 | 
			
		||||
+ * along with this program; if not, write to the Free Software
 | 
			
		||||
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 | 
			
		||||
+ */
 | 
			
		||||
+
 | 
			
		||||
+#include "jam.h"
 | 
			
		||||
+
 | 
			
		||||
+#ifndef USE_FFI
 | 
			
		||||
+
 | 
			
		||||
+int nativeExtraArg(MethodBlock *mb) {
 | 
			
		||||
+    char *sig = mb->type;
 | 
			
		||||
+    int stack_args = 0;
 | 
			
		||||
+    int int_args = 6;
 | 
			
		||||
+    int fp_args = 8;
 | 
			
		||||
+
 | 
			
		||||
+    while(*++sig != ')')
 | 
			
		||||
+        switch(*sig) {
 | 
			
		||||
+        case 'F':
 | 
			
		||||
+        case 'D':
 | 
			
		||||
+            if(fp_args == 0)
 | 
			
		||||
+                stack_args += 8;
 | 
			
		||||
+            else
 | 
			
		||||
+                fp_args--;
 | 
			
		||||
+
 | 
			
		||||
+        default:
 | 
			
		||||
+            if(int_args == 0)
 | 
			
		||||
+                stack_args += 8;
 | 
			
		||||
+            else
 | 
			
		||||
+                int_args--;
 | 
			
		||||
+
 | 
			
		||||
+            if(*sig == '[')
 | 
			
		||||
+                while(*++sig == '[');
 | 
			
		||||
+            if(*sig == 'L')
 | 
			
		||||
+                while(*++sig != ';');
 | 
			
		||||
+            break;
 | 
			
		||||
+        }
 | 
			
		||||
+
 | 
			
		||||
+    /* Ensure the stack remains 16 byte aligned. */
 | 
			
		||||
+    return (stack_args + 15) & ~15;
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
+#endif
 | 
			
		||||
diff --git a/src/os/linux/aarch64/init.c b/src/os/linux/aarch64/init.c
 | 
			
		||||
new file mode 100644
 | 
			
		||||
index 0000000..e03b446
 | 
			
		||||
--- /dev/null
 | 
			
		||||
+++ b/src/os/linux/aarch64/init.c
 | 
			
		||||
@@ -0,0 +1,51 @@
 | 
			
		||||
+/*
 | 
			
		||||
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007
 | 
			
		||||
+ * Robert Lougher <rob@lougher.org.uk>.
 | 
			
		||||
+ * Copyright (C) 2020 Simon South <simon@simonsouth.net>.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This file is part of JamVM.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This program 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 2,
 | 
			
		||||
+ * or (at your option) any later version.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This program is distributed in the hope that it will be useful,
 | 
			
		||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
+ * GNU General Public License for more details.
 | 
			
		||||
+ *
 | 
			
		||||
+ * You should have received a copy of the GNU General Public License
 | 
			
		||||
+ * along with this program; if not, write to the Free Software
 | 
			
		||||
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 | 
			
		||||
+ */
 | 
			
		||||
+
 | 
			
		||||
+#include "arch/aarch64.h"
 | 
			
		||||
+
 | 
			
		||||
+/* Length in bytes of the smallest line in the host system's data cache */
 | 
			
		||||
+unsigned char aarch64_data_cache_line_len;
 | 
			
		||||
+
 | 
			
		||||
+/* Mask used to align a virtual address to a line in the data cache */
 | 
			
		||||
+uintptr_t aarch64_data_cache_line_mask;
 | 
			
		||||
+
 | 
			
		||||
+/* Length in bytes of the smallest line in the host system's instruction
 | 
			
		||||
+   cache */
 | 
			
		||||
+unsigned char aarch64_instruction_cache_line_len;
 | 
			
		||||
+
 | 
			
		||||
+/* Mask used to align a virtual address to a line in the instruction cache */
 | 
			
		||||
+uintptr_t aarch64_instruction_cache_line_mask;
 | 
			
		||||
+
 | 
			
		||||
+void initialisePlatform() {
 | 
			
		||||
+    unsigned int cache_type;
 | 
			
		||||
+
 | 
			
		||||
+    /* Extract information from the cache-type register, which describes aspects
 | 
			
		||||
+       of the host's cache configuration */
 | 
			
		||||
+    __asm__ ("mrs %0, ctr_el0" : "=r" (cache_type));
 | 
			
		||||
+
 | 
			
		||||
+    aarch64_data_cache_line_len = 4 << ((cache_type >> 16) & 0x0f);
 | 
			
		||||
+    aarch64_data_cache_line_mask = ~(aarch64_data_cache_line_len - 1);
 | 
			
		||||
+
 | 
			
		||||
+    aarch64_instruction_cache_line_len = 4 << (cache_type & 0x0f);
 | 
			
		||||
+    aarch64_instruction_cache_line_mask =
 | 
			
		||||
+        ~(aarch64_instruction_cache_line_len - 1);
 | 
			
		||||
+}
 | 
			
		||||
-- 
 | 
			
		||||
2.26.2
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										645
									
								
								gnu/packages/patches/jamvm-2.0.0-aarch64-support.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										645
									
								
								gnu/packages/patches/jamvm-2.0.0-aarch64-support.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,645 @@
 | 
			
		|||
From a44154f7a18496cc3e5fc0b1b2ea69523ebc623a Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Simon South <simon@simonsouth.net>
 | 
			
		||||
Date: Mon, 1 Jun 2020 07:09:34 -0400
 | 
			
		||||
Subject: [PATCH] Add support for aarch64 on GNU/Linux
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 AUTHORS                           |   1 +
 | 
			
		||||
 README                            |   2 +-
 | 
			
		||||
 configure.ac                      |   7 +-
 | 
			
		||||
 src/arch/Makefile.am              |   2 +-
 | 
			
		||||
 src/arch/aarch64.h                | 147 +++++++++++++++++++++
 | 
			
		||||
 src/jam.c                         |   3 +-
 | 
			
		||||
 src/os/linux/Makefile.am          |   2 +-
 | 
			
		||||
 src/os/linux/aarch64/Makefile.am  |  28 ++++
 | 
			
		||||
 src/os/linux/aarch64/callNative.S | 212 ++++++++++++++++++++++++++++++
 | 
			
		||||
 src/os/linux/aarch64/dll_md.c     |  59 +++++++++
 | 
			
		||||
 src/os/linux/aarch64/init.c       |  51 +++++++
 | 
			
		||||
 11 files changed, 508 insertions(+), 6 deletions(-)
 | 
			
		||||
 create mode 100644 src/arch/aarch64.h
 | 
			
		||||
 create mode 100644 src/os/linux/aarch64/Makefile.am
 | 
			
		||||
 create mode 100644 src/os/linux/aarch64/callNative.S
 | 
			
		||||
 create mode 100644 src/os/linux/aarch64/dll_md.c
 | 
			
		||||
 create mode 100644 src/os/linux/aarch64/init.c
 | 
			
		||||
 | 
			
		||||
diff --git a/AUTHORS b/AUTHORS
 | 
			
		||||
index e1334fe..6fd0eeb 100644
 | 
			
		||||
--- a/AUTHORS
 | 
			
		||||
+++ b/AUTHORS
 | 
			
		||||
@@ -1 +1,2 @@
 | 
			
		||||
 Robert Lougher <rob@jamvm.org.uk>
 | 
			
		||||
+Simon South <simon@simonsouth.net>
 | 
			
		||||
diff --git a/README b/README
 | 
			
		||||
index c9d80bb..0e93d00 100644
 | 
			
		||||
--- a/README
 | 
			
		||||
+++ b/README
 | 
			
		||||
@@ -77,7 +77,7 @@ versions of JamVM also includes stubs for common method signatures.
 | 
			
		||||
 The following platforms/architectures are recognised by configure.  Those
 | 
			
		||||
 marked with * must be configured to use libffi.
 | 
			
		||||
 
 | 
			
		||||
-- Linux: x86, x86_64, ARM, PowerPC, PowerPC64(*), MIPS, HPPA
 | 
			
		||||
+- Linux: x86, x86_64, ARM, ARM64, PowerPC, PowerPC64(*), MIPS, HPPA
 | 
			
		||||
 - FreeBSD: x86, x86_64, ARM, PowerPC, PowerPC64(*), SPARC(*)
 | 
			
		||||
 - OpenBSD: x86, x86_64, ARM, PowerPC, PowerPC64(*), SPARC(*)
 | 
			
		||||
 - Mac OS X/Darwin: x86, x86_64, ARM, PowerPC, PowerPC64
 | 
			
		||||
diff --git a/configure.ac b/configure.ac
 | 
			
		||||
index 138b7e6..e7051d7 100644
 | 
			
		||||
--- a/configure.ac
 | 
			
		||||
+++ b/configure.ac
 | 
			
		||||
@@ -46,6 +46,7 @@ x86_64-*-freebsd*) host_os=bsd libdl_needed=no ;;
 | 
			
		||||
 arm*-*-linux*) host_cpu=arm host_os=linux interp_cflags=-marm ;;
 | 
			
		||||
 arm*-*-openbsd*) host_cpu=arm host_os=bsd libdl_needed=no ;;
 | 
			
		||||
 arm*-*-freebsd*) host_cpu=arm host_os=bsd libdl_needed=no ;;
 | 
			
		||||
+aarch64*-*-linux*) host_cpu=aarch64 host_os=linux ;;
 | 
			
		||||
 powerpc*-*-linux*) host_cpu=powerpc host_os=linux ;;
 | 
			
		||||
 powerpc*-*-openbsd*) host_cpu=powerpc host_os=bsd libdl_needed=no ;;
 | 
			
		||||
 powerpc*-*-freebsd*) host_cpu=powerpc host_os=bsd libdl_needed=no ;;
 | 
			
		||||
@@ -155,10 +156,11 @@ AC_ARG_ENABLE(runtime-reloc-checks,
 | 
			
		||||
 
 | 
			
		||||
 AC_ARG_ENABLE(int-inlining,
 | 
			
		||||
     [AS_HELP_STRING(--enable-int-inlining,enable inline threaded version of the interpreter
 | 
			
		||||
-                   (by default enabled on x86_64, i386, powerpc, mips and arm, 
 | 
			
		||||
+                   (by default enabled on x86_64, i386, powerpc, mips, arm and aarch64,
 | 
			
		||||
                     disabled otherwise))],,
 | 
			
		||||
     [if test "$host_cpu" = x86_64 -o "$host_cpu" = i386 -o "$host_cpu" = x86 -o \
 | 
			
		||||
-             "$host_cpu" = powerpc -o "$host_cpu" = arm -o "$host_cpu" = mips; then
 | 
			
		||||
+             "$host_cpu" = powerpc -o "$host_cpu" = arm -o "$host_cpu" = mips -o \
 | 
			
		||||
+             "$host_cpu" = aarch64; then
 | 
			
		||||
          enable_int_inlining=yes
 | 
			
		||||
        else
 | 
			
		||||
          enable_int_inlining=no
 | 
			
		||||
@@ -407,6 +409,7 @@ AC_CONFIG_FILES(
 | 
			
		||||
     src/os/linux/x86_64/Makefile \
 | 
			
		||||
     src/os/linux/parisc/Makefile \
 | 
			
		||||
     src/os/linux/mips/Makefile \
 | 
			
		||||
+    src/os/linux/aarch64/Makefile \
 | 
			
		||||
     src/os/darwin/i386/Makefile \
 | 
			
		||||
     src/os/darwin/arm/Makefile \
 | 
			
		||||
     src/os/darwin/powerpc/Makefile \
 | 
			
		||||
diff --git a/src/arch/Makefile.am b/src/arch/Makefile.am
 | 
			
		||||
index 7580a1b..4e2a4f9 100644
 | 
			
		||||
--- a/src/arch/Makefile.am
 | 
			
		||||
+++ b/src/arch/Makefile.am
 | 
			
		||||
@@ -19,4 +19,4 @@
 | 
			
		||||
 ## Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 | 
			
		||||
 ##
 | 
			
		||||
 
 | 
			
		||||
-EXTRA_DIST = powerpc.h arm.h i386.h x86_64.h parisc.h mips.h sparc.h
 | 
			
		||||
+EXTRA_DIST = powerpc.h arm.h i386.h x86_64.h parisc.h mips.h sparc.h aarch64.h
 | 
			
		||||
diff --git a/src/arch/aarch64.h b/src/arch/aarch64.h
 | 
			
		||||
new file mode 100644
 | 
			
		||||
index 0000000..1912e79
 | 
			
		||||
--- /dev/null
 | 
			
		||||
+++ b/src/arch/aarch64.h
 | 
			
		||||
@@ -0,0 +1,147 @@
 | 
			
		||||
+/*
 | 
			
		||||
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
 | 
			
		||||
+ * Robert Lougher <rob@jamvm.org.uk>.
 | 
			
		||||
+ * Copyright (C) 2020 Simon South <simon@simonsouth.net>.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This file is part of JamVM.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This program 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 2,
 | 
			
		||||
+ * or (at your option) any later version.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This program is distributed in the hope that it will be useful,
 | 
			
		||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
+ * GNU General Public License for more details.
 | 
			
		||||
+ *
 | 
			
		||||
+ * You should have received a copy of the GNU General Public License
 | 
			
		||||
+ * along with this program; if not, write to the Free Software
 | 
			
		||||
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 | 
			
		||||
+ */
 | 
			
		||||
+
 | 
			
		||||
+#include <stdint.h>
 | 
			
		||||
+
 | 
			
		||||
+#define OS_ARCH "aarch64"
 | 
			
		||||
+
 | 
			
		||||
+#define HANDLER_TABLE_T static const void
 | 
			
		||||
+#define DOUBLE_1_BITS 0x3ff0000000000000LL
 | 
			
		||||
+
 | 
			
		||||
+#define READ_DBL(v,p,l) v = ((u8)p[0]<<56)|((u8)p[1]<<48)|((u8)p[2]<<40) \
 | 
			
		||||
+                            |((u8)p[3]<<32)|((u8)p[4]<<24)|((u8)p[5]<<16) \
 | 
			
		||||
+                            |((u8)p[6]<<8)|(u8)p[7]; p+=8
 | 
			
		||||
+
 | 
			
		||||
+/* Needed for i386 -- empty here */
 | 
			
		||||
+#define FPU_HACK
 | 
			
		||||
+
 | 
			
		||||
+#define COMPARE_AND_SWAP_64(addr, old_val, new_val)             \
 | 
			
		||||
+({                                                              \
 | 
			
		||||
+    int result, read_val;                                       \
 | 
			
		||||
+    __asm__ __volatile__ ("                                     \
 | 
			
		||||
+        1:      ldaxr %2, %1;                                   \
 | 
			
		||||
+                cmp %2, %3;                                     \
 | 
			
		||||
+                b.ne 2f;                                        \
 | 
			
		||||
+                stlxr %w0, %4, %1;                              \
 | 
			
		||||
+                cmp %w0, wzr;                                   \
 | 
			
		||||
+                b.ne 1b;                                        \
 | 
			
		||||
+        2:      cset %w0, eq;"                                  \
 | 
			
		||||
+    : "=&r" (result), "+Q" (*addr), "=&r" (read_val)            \
 | 
			
		||||
+    : "r" (old_val), "r" (new_val)                              \
 | 
			
		||||
+    : "cc");                                                    \
 | 
			
		||||
+    result;                                                     \
 | 
			
		||||
+})
 | 
			
		||||
+
 | 
			
		||||
+#define COMPARE_AND_SWAP_32(addr, old_val, new_val)             \
 | 
			
		||||
+({                                                              \
 | 
			
		||||
+    int result, read_val;                                       \
 | 
			
		||||
+    __asm__ __volatile__ ("                                     \
 | 
			
		||||
+        1:      ldaxr %w2, %1;                                  \
 | 
			
		||||
+                cmp %w2, %w3;                                   \
 | 
			
		||||
+                b.ne 2f;                                        \
 | 
			
		||||
+                stlxr %w0, %w4, %1;                             \
 | 
			
		||||
+                cmp %w0, wzr;                                   \
 | 
			
		||||
+                b.ne 1b;                                        \
 | 
			
		||||
+        2:      cset %w0, eq;"                                  \
 | 
			
		||||
+    : "=&r" (result), "+Q" (*addr), "=&r" (read_val)            \
 | 
			
		||||
+    : "r" (old_val), "r" (new_val)                              \
 | 
			
		||||
+    : "cc");                                                    \
 | 
			
		||||
+    result;                                                     \
 | 
			
		||||
+})
 | 
			
		||||
+
 | 
			
		||||
+#define COMPARE_AND_SWAP(addr, old_val, new_val)                \
 | 
			
		||||
+        COMPARE_AND_SWAP_64(addr, old_val, new_val)
 | 
			
		||||
+
 | 
			
		||||
+#define LOCKWORD_READ(addr)                                     \
 | 
			
		||||
+({                                                              \
 | 
			
		||||
+    uintptr_t result;                                           \
 | 
			
		||||
+    __asm__ __volatile__ ("                                     \
 | 
			
		||||
+                ldar %0, %1;"                                   \
 | 
			
		||||
+    : "=r" (result)                                             \
 | 
			
		||||
+    : "Q" (*addr)                                               \
 | 
			
		||||
+    : "cc");                                                    \
 | 
			
		||||
+    result;                                                     \
 | 
			
		||||
+})
 | 
			
		||||
+
 | 
			
		||||
+#define LOCKWORD_WRITE(addr, value)                             \
 | 
			
		||||
+({                                                              \
 | 
			
		||||
+    __asm__ __volatile__ ("                                     \
 | 
			
		||||
+                stlr %1, %0;"                                   \
 | 
			
		||||
+    : "=Q" (*addr)                                              \
 | 
			
		||||
+    : "r" (value)                                               \
 | 
			
		||||
+    : "cc");                                                    \
 | 
			
		||||
+})
 | 
			
		||||
+
 | 
			
		||||
+#define LOCKWORD_COMPARE_AND_SWAP(addr, old_val, new_val)       \
 | 
			
		||||
+        COMPARE_AND_SWAP_64(addr, old_val, new_val)
 | 
			
		||||
+
 | 
			
		||||
+#define FLUSH_CACHE(addr, length)                               \
 | 
			
		||||
+{                                                               \
 | 
			
		||||
+    uintptr_t start = (uintptr_t) (addr);                       \
 | 
			
		||||
+    uintptr_t end = start + length;                             \
 | 
			
		||||
+    uintptr_t i;                                                \
 | 
			
		||||
+                                                                \
 | 
			
		||||
+    for(i = start & aarch64_data_cache_line_mask;               \
 | 
			
		||||
+        i < end;                                                \
 | 
			
		||||
+        i += aarch64_data_cache_line_len)                       \
 | 
			
		||||
+        __asm__ ("dc cvau, %0" :: "r" (i));                     \
 | 
			
		||||
+                                                                \
 | 
			
		||||
+    __asm__ ("dsb ish");                                        \
 | 
			
		||||
+                                                                \
 | 
			
		||||
+    for(i = start & aarch64_instruction_cache_line_mask;        \
 | 
			
		||||
+        i < end;                                                \
 | 
			
		||||
+        i += aarch64_instruction_cache_line_len)                \
 | 
			
		||||
+        __asm__ ("ic ivau, %0" :: "r" (i));                     \
 | 
			
		||||
+                                                                \
 | 
			
		||||
+    __asm__ ("dsb ish; isb");                                   \
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
+#define GEN_REL_JMP(target_addr, patch_addr, patch_size)        \
 | 
			
		||||
+({                                                              \
 | 
			
		||||
+    int patched = FALSE;                                        \
 | 
			
		||||
+                                                                \
 | 
			
		||||
+    if(patch_size >= 4) {                                       \
 | 
			
		||||
+        /* Guard against the pointer difference being           \
 | 
			
		||||
+           larger than the signed range */                      \
 | 
			
		||||
+        long long offset = (uintptr_t)(target_addr) -           \
 | 
			
		||||
+                           (uintptr_t)(patch_addr);             \
 | 
			
		||||
+                                                                \
 | 
			
		||||
+        if(offset >= -1<<28 && offset < 1<<28) {                \
 | 
			
		||||
+            *(uint32_t*)(patch_addr) = offset>>2 & 0x03ffffff   \
 | 
			
		||||
+                                                 | 0x14000000;  \
 | 
			
		||||
+            patched = TRUE;                                     \
 | 
			
		||||
+        }                                                       \
 | 
			
		||||
+    }                                                           \
 | 
			
		||||
+    patched;                                                    \
 | 
			
		||||
+})
 | 
			
		||||
+
 | 
			
		||||
+#define MBARRIER() __asm__ ("dmb ish" ::: "memory")
 | 
			
		||||
+#define RMBARRIER() __asm__ ("dmb ishld" ::: "memory")
 | 
			
		||||
+#define WMBARRIER() __asm__ ("dmb ishst" ::: "memory")
 | 
			
		||||
+#define JMM_LOCK_MBARRIER() __asm__ ("dmb ish" ::: "memory")
 | 
			
		||||
+#define JMM_UNLOCK_MBARRIER() JMM_LOCK_MBARRIER()
 | 
			
		||||
+
 | 
			
		||||
+/* Defined in src/os/linux/aarch64/init.c */
 | 
			
		||||
+extern unsigned char aarch64_data_cache_line_len;
 | 
			
		||||
+extern uintptr_t aarch64_data_cache_line_mask;
 | 
			
		||||
+extern unsigned char aarch64_instruction_cache_line_len;
 | 
			
		||||
+extern uintptr_t aarch64_instruction_cache_line_mask;
 | 
			
		||||
diff --git a/src/jam.c b/src/jam.c
 | 
			
		||||
index 052f84a..c97524a 100644
 | 
			
		||||
--- a/src/jam.c
 | 
			
		||||
+++ b/src/jam.c
 | 
			
		||||
@@ -98,7 +98,8 @@ void showUsage(char *name) {
 | 
			
		||||
 void showVersionAndCopyright() {
 | 
			
		||||
     printf("java version \"%s\"\n", JAVA_COMPAT_VERSION);
 | 
			
		||||
     printf("JamVM version %s\n", VERSION);
 | 
			
		||||
-    printf("Copyright (C) 2003-2014 Robert Lougher <rob@jamvm.org.uk>\n\n");
 | 
			
		||||
+    printf("Copyright (C) 2003-2014 Robert Lougher <rob@jamvm.org.uk>\n");
 | 
			
		||||
+    printf("Portions Copyright (C) 2020 Simon South <simon@simonsouth.net>\n\n");
 | 
			
		||||
     printf("This program is free software; you can redistribute it and/or\n");
 | 
			
		||||
     printf("modify it under the terms of the GNU General Public License\n");
 | 
			
		||||
     printf("as published by the Free Software Foundation; either version 2,\n");
 | 
			
		||||
diff --git a/src/os/linux/Makefile.am b/src/os/linux/Makefile.am
 | 
			
		||||
index 542094e..83e7dfe 100644
 | 
			
		||||
--- a/src/os/linux/Makefile.am
 | 
			
		||||
+++ b/src/os/linux/Makefile.am
 | 
			
		||||
@@ -20,7 +20,7 @@
 | 
			
		||||
 ##
 | 
			
		||||
 
 | 
			
		||||
 SUBDIRS = @arch@
 | 
			
		||||
-DIST_SUBDIRS = powerpc arm i386 x86_64 parisc mips
 | 
			
		||||
+DIST_SUBDIRS = powerpc arm i386 x86_64 parisc mips aarch64
 | 
			
		||||
 
 | 
			
		||||
 noinst_LTLIBRARIES = libos.la
 | 
			
		||||
 libos_la_SOURCES = os.c
 | 
			
		||||
diff --git a/src/os/linux/aarch64/Makefile.am b/src/os/linux/aarch64/Makefile.am
 | 
			
		||||
new file mode 100644
 | 
			
		||||
index 0000000..0e5134f
 | 
			
		||||
--- /dev/null
 | 
			
		||||
+++ b/src/os/linux/aarch64/Makefile.am
 | 
			
		||||
@@ -0,0 +1,28 @@
 | 
			
		||||
+##
 | 
			
		||||
+## Copyright (C) 2003, 2004, 2005, 2006, 2007, 2010, 2011, 2012
 | 
			
		||||
+## Robert Lougher <rob@jamvm.org.uk>.
 | 
			
		||||
+##
 | 
			
		||||
+## File added by Simon South <simon@simonsouth.net>.
 | 
			
		||||
+##
 | 
			
		||||
+## This file is part of JamVM.
 | 
			
		||||
+##
 | 
			
		||||
+## This program 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 2,
 | 
			
		||||
+## or (at your option) any later version.
 | 
			
		||||
+##
 | 
			
		||||
+## This program is distributed in the hope that it will be useful,
 | 
			
		||||
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
+## GNU General Public License for more details.
 | 
			
		||||
+##
 | 
			
		||||
+## You should have received a copy of the GNU General Public License
 | 
			
		||||
+## along with this program; if not, write to the Free Software
 | 
			
		||||
+## Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 | 
			
		||||
+##
 | 
			
		||||
+
 | 
			
		||||
+noinst_LTLIBRARIES = libnative.la
 | 
			
		||||
+libnative_la_SOURCES = init.c dll_md.c callNative.S
 | 
			
		||||
+
 | 
			
		||||
+AM_CPPFLAGS = -I$(top_builddir)/src -I$(top_srcdir)/src
 | 
			
		||||
+AM_CCASFLAGS = -I$(top_builddir)/src
 | 
			
		||||
diff --git a/src/os/linux/aarch64/callNative.S b/src/os/linux/aarch64/callNative.S
 | 
			
		||||
new file mode 100644
 | 
			
		||||
index 0000000..e067c4f
 | 
			
		||||
--- /dev/null
 | 
			
		||||
+++ b/src/os/linux/aarch64/callNative.S
 | 
			
		||||
@@ -0,0 +1,212 @@
 | 
			
		||||
+/*
 | 
			
		||||
+ * Copyright (C) 2008, 2009, 2011, 2012 Robert Lougher <rob@jamvm.org.uk>.
 | 
			
		||||
+ * Copyright (C) 2020 Simon South <simon@simonsouth.net>.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This file is part of JamVM.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This program 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 2,
 | 
			
		||||
+ * or (at your option) any later version.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This program is distributed in the hope that it will be useful,
 | 
			
		||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
+ * GNU General Public License for more details.
 | 
			
		||||
+ *
 | 
			
		||||
+ * You should have received a copy of the GNU General Public License
 | 
			
		||||
+ * along with this program; if not, write to the Free Software
 | 
			
		||||
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 | 
			
		||||
+ */
 | 
			
		||||
+
 | 
			
		||||
+#include "config.h"
 | 
			
		||||
+
 | 
			
		||||
+#ifndef USE_FFI
 | 
			
		||||
+        .text
 | 
			
		||||
+        .arch armv8-a
 | 
			
		||||
+        .align 2
 | 
			
		||||
+        .global callJNIMethod
 | 
			
		||||
+        .type callJNIMethod,function
 | 
			
		||||
+
 | 
			
		||||
+/*
 | 
			
		||||
+ * Arguments passed in:
 | 
			
		||||
+ *
 | 
			
		||||
+ * x0 JNIEnv
 | 
			
		||||
+ * x1 class or NULL
 | 
			
		||||
+ * x2 sig
 | 
			
		||||
+ * w3 extra arg
 | 
			
		||||
+ * x4 ostack
 | 
			
		||||
+ * x5 function pntr
 | 
			
		||||
+ * w6 args count
 | 
			
		||||
+ */
 | 
			
		||||
+
 | 
			
		||||
+/* Register usage:
 | 
			
		||||
+ *
 | 
			
		||||
+ * x20 ostack
 | 
			
		||||
+ * x19 sig pntr
 | 
			
		||||
+ * x16 function pntr
 | 
			
		||||
+ * x15 ostack pntr
 | 
			
		||||
+ * x14 args pntr
 | 
			
		||||
+ * x13 float/double handler
 | 
			
		||||
+ * x12 int/long handler
 | 
			
		||||
+ * w11 fp regs remaining
 | 
			
		||||
+ * w10 int regs remaining
 | 
			
		||||
+ * x9 scratch
 | 
			
		||||
+ * x2-x7 outgoing int args
 | 
			
		||||
+ * x1 outgoing class or this pntr
 | 
			
		||||
+ * x0 outgoing JNIEnv (as passed in)
 | 
			
		||||
+ *
 | 
			
		||||
+ * d0 - d7 outgoing float args
 | 
			
		||||
+ */
 | 
			
		||||
+
 | 
			
		||||
+callJNIMethod:
 | 
			
		||||
+        stp     x29, x30, [sp, #-32]!
 | 
			
		||||
+        mov     x29, sp
 | 
			
		||||
+        stp     x19, x20, [x29, #16]
 | 
			
		||||
+
 | 
			
		||||
+        sub     sp, sp, w3              /* allocate room for stacked args */
 | 
			
		||||
+        mov     x14, sp
 | 
			
		||||
+
 | 
			
		||||
+        mov     x20, x4                 /* preserve ostack */
 | 
			
		||||
+        add     x19, x2, #1             /* init sig pntr -- skipping '(' */
 | 
			
		||||
+
 | 
			
		||||
+        mov     x16, x5                 /* save function pntr */
 | 
			
		||||
+        mov     x15, x20                /* init ostack pntr */
 | 
			
		||||
+
 | 
			
		||||
+        adr     x13, fp_reg_handlers-8
 | 
			
		||||
+        adr     x12, int_reg_handlers-8
 | 
			
		||||
+
 | 
			
		||||
+        mov     w11, #8                 /* fp regs remaining */
 | 
			
		||||
+        mov     w10, #6                 /* int regs remaining */
 | 
			
		||||
+
 | 
			
		||||
+        cbnz    x1, scan_sig            /* is method non-static? */
 | 
			
		||||
+        ldr     x1, [x15], #8           /* yes, load x1 with "this" */
 | 
			
		||||
+
 | 
			
		||||
+scan_sig:
 | 
			
		||||
+        ldrb    w9, [x19], #1           /* get next sig char */
 | 
			
		||||
+
 | 
			
		||||
+        cmp     w9, #41                 /* ')' */
 | 
			
		||||
+        b.eq    done
 | 
			
		||||
+
 | 
			
		||||
+        cmp     w9, #74                 /* 'J' */
 | 
			
		||||
+        b.eq    long
 | 
			
		||||
+
 | 
			
		||||
+        cmp     w9, #70                 /* 'F' */
 | 
			
		||||
+        b.eq    float
 | 
			
		||||
+
 | 
			
		||||
+        cmp     w9, #68                 /* 'D' */
 | 
			
		||||
+        b.eq    double
 | 
			
		||||
+
 | 
			
		||||
+skip_brackets:
 | 
			
		||||
+        cmp     w9, #91                 /* '[' */
 | 
			
		||||
+        b.ne    1f
 | 
			
		||||
+        ldrb    w9, [x19], #1
 | 
			
		||||
+        b       skip_brackets
 | 
			
		||||
+1:
 | 
			
		||||
+        cmp     w9, #76                 /* 'L' */
 | 
			
		||||
+        b.ne    int
 | 
			
		||||
+
 | 
			
		||||
+skip_ref:
 | 
			
		||||
+        ldrb    w9, [x19], #1
 | 
			
		||||
+        cmp     w9, #59                 /* ';' */
 | 
			
		||||
+        b.ne    skip_ref
 | 
			
		||||
+
 | 
			
		||||
+int:
 | 
			
		||||
+        ldr     x9, [x15], #8
 | 
			
		||||
+        cbz     w10, stack_push
 | 
			
		||||
+
 | 
			
		||||
+load_int_reg:
 | 
			
		||||
+        sub     w10, w10, #1
 | 
			
		||||
+        add     x12, x12, #8
 | 
			
		||||
+        br      x12
 | 
			
		||||
+
 | 
			
		||||
+int_reg_handlers:
 | 
			
		||||
+        mov     x2, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+        mov     x3, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+        mov     x4, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+        mov     x5, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+        mov     x6, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+        mov     x7, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+
 | 
			
		||||
+long:
 | 
			
		||||
+        ldr     x9, [x15], #16
 | 
			
		||||
+        cbz     w10, stack_push
 | 
			
		||||
+        b       load_int_reg
 | 
			
		||||
+
 | 
			
		||||
+float:
 | 
			
		||||
+        ldr     w9, [x15], #8
 | 
			
		||||
+        cbz     w11, stack_push
 | 
			
		||||
+        b       load_fp_reg
 | 
			
		||||
+
 | 
			
		||||
+double:
 | 
			
		||||
+        ldr     x9, [x15], #16
 | 
			
		||||
+        cbz     w11, stack_push
 | 
			
		||||
+
 | 
			
		||||
+load_fp_reg:
 | 
			
		||||
+        sub     w11, w11, #1
 | 
			
		||||
+        add     x13, x13, #8
 | 
			
		||||
+        br      x13
 | 
			
		||||
+
 | 
			
		||||
+fp_reg_handlers:
 | 
			
		||||
+        fmov    d0, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+        fmov    d1, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+        fmov    d2, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+        fmov    d3, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+        fmov    d4, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+        fmov    d5, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+        fmov    d6, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+        fmov    d7, x9
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+
 | 
			
		||||
+stack_push:
 | 
			
		||||
+        str     x9, [x14], #8
 | 
			
		||||
+        b       scan_sig
 | 
			
		||||
+
 | 
			
		||||
+done:
 | 
			
		||||
+        /* Call the function */
 | 
			
		||||
+        blr     x16
 | 
			
		||||
+
 | 
			
		||||
+        mov     sp, x29                 /* Pop argument area */
 | 
			
		||||
+
 | 
			
		||||
+        ldrb    w9, [x19]               /* Return type */
 | 
			
		||||
+
 | 
			
		||||
+        cmp     w9, #86                 /* 'V' */
 | 
			
		||||
+        b.eq    return
 | 
			
		||||
+
 | 
			
		||||
+        cmp     w9, #68                 /* 'D' */
 | 
			
		||||
+        b.ne    2f
 | 
			
		||||
+        str     d0, [x20], #16
 | 
			
		||||
+        b       return
 | 
			
		||||
+2:
 | 
			
		||||
+        cmp     w9, #70                 /* 'F' */
 | 
			
		||||
+        b.ne    3f
 | 
			
		||||
+        str     s0, [x20], #8
 | 
			
		||||
+        b       return
 | 
			
		||||
+3:
 | 
			
		||||
+        cmp     w9, #74                 /* 'J' */
 | 
			
		||||
+        b.ne    4f
 | 
			
		||||
+        str     x0, [x20], #16
 | 
			
		||||
+        b       return
 | 
			
		||||
+4:
 | 
			
		||||
+        str     x0, [x20], #8
 | 
			
		||||
+
 | 
			
		||||
+return:
 | 
			
		||||
+        mov     x0, x20                 /* return ostack */
 | 
			
		||||
+
 | 
			
		||||
+        ldp     x19, x20, [x29, #16]
 | 
			
		||||
+        ldp     x29, x30, [sp], #32
 | 
			
		||||
+        ret
 | 
			
		||||
+#endif
 | 
			
		||||
diff --git a/src/os/linux/aarch64/dll_md.c b/src/os/linux/aarch64/dll_md.c
 | 
			
		||||
new file mode 100644
 | 
			
		||||
index 0000000..189f8a8
 | 
			
		||||
--- /dev/null
 | 
			
		||||
+++ b/src/os/linux/aarch64/dll_md.c
 | 
			
		||||
@@ -0,0 +1,59 @@
 | 
			
		||||
+/*
 | 
			
		||||
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011
 | 
			
		||||
+ * Robert Lougher <rob@jamvm.org.uk>.
 | 
			
		||||
+ * Copyright (C) 2020 Simon South <simon@simonsouth.net>.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This file is part of JamVM.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This program 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 2,
 | 
			
		||||
+ * or (at your option) any later version.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This program is distributed in the hope that it will be useful,
 | 
			
		||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
+ * GNU General Public License for more details.
 | 
			
		||||
+ *
 | 
			
		||||
+ * You should have received a copy of the GNU General Public License
 | 
			
		||||
+ * along with this program; if not, write to the Free Software
 | 
			
		||||
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 | 
			
		||||
+ */
 | 
			
		||||
+
 | 
			
		||||
+#include "jam.h"
 | 
			
		||||
+
 | 
			
		||||
+#ifndef USE_FFI
 | 
			
		||||
+
 | 
			
		||||
+int nativeExtraArg(MethodBlock *mb) {
 | 
			
		||||
+    char *sig = mb->type;
 | 
			
		||||
+    int stack_args = 0;
 | 
			
		||||
+    int int_args = 6;
 | 
			
		||||
+    int fp_args = 8;
 | 
			
		||||
+
 | 
			
		||||
+    while(*++sig != ')')
 | 
			
		||||
+        switch(*sig) {
 | 
			
		||||
+        case 'F':
 | 
			
		||||
+        case 'D':
 | 
			
		||||
+            if(fp_args == 0)
 | 
			
		||||
+                stack_args += 8;
 | 
			
		||||
+            else
 | 
			
		||||
+                fp_args--;
 | 
			
		||||
+
 | 
			
		||||
+        default:
 | 
			
		||||
+            if(int_args == 0)
 | 
			
		||||
+                stack_args += 8;
 | 
			
		||||
+            else
 | 
			
		||||
+                int_args--;
 | 
			
		||||
+
 | 
			
		||||
+            if(*sig == '[')
 | 
			
		||||
+                while(*++sig == '[');
 | 
			
		||||
+            if(*sig == 'L')
 | 
			
		||||
+                while(*++sig != ';');
 | 
			
		||||
+            break;
 | 
			
		||||
+        }
 | 
			
		||||
+
 | 
			
		||||
+    /* Ensure the stack remains 16 byte aligned. */
 | 
			
		||||
+    return (stack_args + 15) & ~15;
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
+#endif
 | 
			
		||||
diff --git a/src/os/linux/aarch64/init.c b/src/os/linux/aarch64/init.c
 | 
			
		||||
new file mode 100644
 | 
			
		||||
index 0000000..b21dc55
 | 
			
		||||
--- /dev/null
 | 
			
		||||
+++ b/src/os/linux/aarch64/init.c
 | 
			
		||||
@@ -0,0 +1,51 @@
 | 
			
		||||
+/*
 | 
			
		||||
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007
 | 
			
		||||
+ * Robert Lougher <rob@jamvm.org.uk>.
 | 
			
		||||
+ * Copyright (C) 2020 Simon South <simon@simonsouth.net>.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This file is part of JamVM.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This program 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 2,
 | 
			
		||||
+ * or (at your option) any later version.
 | 
			
		||||
+ *
 | 
			
		||||
+ * This program is distributed in the hope that it will be useful,
 | 
			
		||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
+ * GNU General Public License for more details.
 | 
			
		||||
+ *
 | 
			
		||||
+ * You should have received a copy of the GNU General Public License
 | 
			
		||||
+ * along with this program; if not, write to the Free Software
 | 
			
		||||
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 | 
			
		||||
+ */
 | 
			
		||||
+
 | 
			
		||||
+#include "arch/aarch64.h"
 | 
			
		||||
+
 | 
			
		||||
+/* Length in bytes of the smallest line in the host system's data cache */
 | 
			
		||||
+unsigned char aarch64_data_cache_line_len;
 | 
			
		||||
+
 | 
			
		||||
+/* Mask used to align a virtual address to a line in the data cache */
 | 
			
		||||
+uintptr_t aarch64_data_cache_line_mask;
 | 
			
		||||
+
 | 
			
		||||
+/* Length in bytes of the smallest line in the host system's instruction
 | 
			
		||||
+   cache */
 | 
			
		||||
+unsigned char aarch64_instruction_cache_line_len;
 | 
			
		||||
+
 | 
			
		||||
+/* Mask used to align a virtual address to a line in the instruction cache */
 | 
			
		||||
+uintptr_t aarch64_instruction_cache_line_mask;
 | 
			
		||||
+
 | 
			
		||||
+void initialisePlatform() {
 | 
			
		||||
+    unsigned int cache_type;
 | 
			
		||||
+
 | 
			
		||||
+    /* Extract information from the cache-type register, which describes aspects
 | 
			
		||||
+       of the host's cache configuration */
 | 
			
		||||
+    __asm__ ("mrs %0, ctr_el0" : "=r" (cache_type));
 | 
			
		||||
+
 | 
			
		||||
+    aarch64_data_cache_line_len = 4 << ((cache_type >> 16) & 0x0f);
 | 
			
		||||
+    aarch64_data_cache_line_mask = ~(aarch64_data_cache_line_len - 1);
 | 
			
		||||
+
 | 
			
		||||
+    aarch64_instruction_cache_line_len = 4 << (cache_type & 0x0f);
 | 
			
		||||
+    aarch64_instruction_cache_line_mask =
 | 
			
		||||
+        ~(aarch64_instruction_cache_line_len - 1);
 | 
			
		||||
+}
 | 
			
		||||
-- 
 | 
			
		||||
2.26.2
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										35
									
								
								gnu/packages/patches/jamvm-2.0.0-opcode-guard.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								gnu/packages/patches/jamvm-2.0.0-opcode-guard.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,35 @@
 | 
			
		|||
From ca11b53896365c948426974cb90e8f71c70d123b Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Simon South <simon@simonsouth.net>
 | 
			
		||||
Date: Sun, 31 May 2020 20:36:43 -0400
 | 
			
		||||
Subject: [PATCH] Guard floating-point opcodes with explicit memory barrier
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 src/interp/engine/interp-inlining.h | 11 ++++++++++-
 | 
			
		||||
 1 file changed, 10 insertions(+), 1 deletion(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/src/interp/engine/interp-inlining.h b/src/interp/engine/interp-inlining.h
 | 
			
		||||
index 3339b0e..4ee5c5a 100644
 | 
			
		||||
--- a/src/interp/engine/interp-inlining.h
 | 
			
		||||
+++ b/src/interp/engine/interp-inlining.h
 | 
			
		||||
@@ -78,8 +78,17 @@
 | 
			
		||||
    4.3, we need to insert a label, and ensure its address
 | 
			
		||||
    is taken (to stop it being optimised out).  However,
 | 
			
		||||
    this reduces performance on PowerPC by approx 1 - 2%.
 | 
			
		||||
+
 | 
			
		||||
+   With gcc 5 and newer an asm statement with a "memory"
 | 
			
		||||
+   clobber argument explicitly sets a memory barrier for the
 | 
			
		||||
+   compiler, preventing it from reordering memory accesses
 | 
			
		||||
+   in a way that breaks decaching.
 | 
			
		||||
 */
 | 
			
		||||
-#if (__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)
 | 
			
		||||
+#if (__GNUC__ > 4)
 | 
			
		||||
+#define DEF_GUARD_TABLE(level) /* none */
 | 
			
		||||
+#define GUARD(opcode, level)   __asm__("" ::: "memory");
 | 
			
		||||
+#define GUARD_TBLS             /* none */
 | 
			
		||||
+#elif (__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)
 | 
			
		||||
 #define DEF_GUARD_TABLE(level) DEF_HANDLER_TABLE(level, GUARD)
 | 
			
		||||
 #define GUARD(opcode, level)   label(opcode, level, GUARD)
 | 
			
		||||
 #define GUARD_TBLS             , HNDLR_TBLS(GUARD)
 | 
			
		||||
-- 
 | 
			
		||||
2.26.2
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,87 @@
 | 
			
		|||
From 56ae699a27eca52cc0bb14cbc9944b62136be52b Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Julien Lepiller <julien@lepiller.eu>
 | 
			
		||||
Date: Sun, 20 Sep 2020 21:07:29 +0200
 | 
			
		||||
Subject: [PATCH] Separate addPropertyAliases in two methods
 | 
			
		||||
 | 
			
		||||
The quantity of data used to generate addPropertyAliases creates a big
 | 
			
		||||
method, that is too big for java and results in "error: code too large".
 | 
			
		||||
This is most likely due to added data between the expected version of
 | 
			
		||||
icu and the actual version of icu in Guix.
 | 
			
		||||
---
 | 
			
		||||
 .../org/antlr/v4/tool/templates/unicodedata.st | 15 ++++++++++++---
 | 
			
		||||
 .../unicode/UnicodeDataTemplateController.java | 18 ++++++++++--------
 | 
			
		||||
 2 files changed, 22 insertions(+), 11 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/tool/resources/org/antlr/v4/tool/templates/unicodedata.st b/tool/resources/org/antlr/v4/tool/templates/unicodedata.st
 | 
			
		||||
index f5052b7..125d15b 100644
 | 
			
		||||
--- a/tool/resources/org/antlr/v4/tool/templates/unicodedata.st
 | 
			
		||||
+++ b/tool/resources/org/antlr/v4/tool/templates/unicodedata.st
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
-unicodedata(propertyCodePointRanges, propertyAliases) ::= <<
 | 
			
		||||
+unicodedata(propertyCodePointRanges, propertyAliasesA, propertyAliasesB) ::= <<
 | 
			
		||||
 package org.antlr.v4.unicode;
 | 
			
		||||
 
 | 
			
		||||
 import java.util.Arrays;
 | 
			
		||||
@@ -17,7 +17,7 @@ public enum UnicodeData {
 | 
			
		||||
 	;
 | 
			
		||||
 
 | 
			
		||||
 	private static final Map\<String, IntervalSet\> propertyCodePointRanges = new HashMap\<String, IntervalSet\>(<length(propertyCodePointRanges)>);
 | 
			
		||||
-	private static final Map\<String, String\> propertyAliases = new HashMap\<String, String\>(<length(propertyAliases)>);
 | 
			
		||||
+	private static final Map\<String, String\> propertyAliases = new HashMap\<String, String\>(<length(propertyAliasesA)> + <length(propertyAliasesB)>);
 | 
			
		||||
 
 | 
			
		||||
 	// Work around Java 64k bytecode method limit by splitting up static
 | 
			
		||||
 	// initialization into one method per Unicode property
 | 
			
		||||
@@ -33,8 +33,17 @@ static private void addProperty<i>() {
 | 
			
		||||
 \}}; separator="\n\n">
 | 
			
		||||
 
 | 
			
		||||
 	// Property aliases
 | 
			
		||||
+	static private void addPropertyAliasesA() {
 | 
			
		||||
+		<propertyAliasesA.keys:{ k | propertyAliases.put("<k>".toLowerCase(Locale.US), "<propertyAliasesA.(k)>".toLowerCase(Locale.US)); }; separator="\n">
 | 
			
		||||
+	}
 | 
			
		||||
+
 | 
			
		||||
+	static private void addPropertyAliasesB() {
 | 
			
		||||
+		<propertyAliasesB.keys:{ k | propertyAliases.put("<k>".toLowerCase(Locale.US), "<propertyAliasesB.(k)>".toLowerCase(Locale.US)); }; separator="\n">
 | 
			
		||||
+	}
 | 
			
		||||
+
 | 
			
		||||
 	static private void addPropertyAliases() {
 | 
			
		||||
-		<propertyAliases.keys:{ k | propertyAliases.put("<k>".toLowerCase(Locale.US), "<propertyAliases.(k)>".toLowerCase(Locale.US)); }; separator="\n">
 | 
			
		||||
+        addPropertyAliasesA();
 | 
			
		||||
+        addPropertyAliasesB();
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
 	// Put it all together
 | 
			
		||||
diff --git a/tool/src/org/antlr/v4/unicode/UnicodeDataTemplateController.java b/tool/src/org/antlr/v4/unicode/UnicodeDataTemplateController.java
 | 
			
		||||
index 570190c..692cee0 100644
 | 
			
		||||
--- a/tool/src/org/antlr/v4/unicode/UnicodeDataTemplateController.java
 | 
			
		||||
+++ b/tool/src/org/antlr/v4/unicode/UnicodeDataTemplateController.java
 | 
			
		||||
@@ -74,17 +74,19 @@ public abstract class UnicodeDataTemplateController {
 | 
			
		||||
 		addTR35ExtendedPictographicPropertyCodesToCodePointRanges(propertyCodePointRanges);
 | 
			
		||||
 		addEmojiPresentationPropertyCodesToCodePointRanges(propertyCodePointRanges);
 | 
			
		||||
 
 | 
			
		||||
-		Map<String, String> propertyAliases = new LinkedHashMap<String, String>();
 | 
			
		||||
-		addUnicodeCategoryCodesToNames(propertyAliases);
 | 
			
		||||
-		addUnicodeBinaryPropertyCodesToNames(propertyAliases);
 | 
			
		||||
-		addUnicodeScriptCodesToNames(propertyAliases);
 | 
			
		||||
-		addUnicodeBlocksToNames(propertyAliases);
 | 
			
		||||
-		addUnicodeIntPropertyCodesToNames(propertyAliases);
 | 
			
		||||
-		propertyAliases.put("EP", "Extended_Pictographic");
 | 
			
		||||
+		Map<String, String> propertyAliasesA = new LinkedHashMap<String, String>();
 | 
			
		||||
+		Map<String, String> propertyAliasesB = new LinkedHashMap<String, String>();
 | 
			
		||||
+		addUnicodeCategoryCodesToNames(propertyAliasesA);
 | 
			
		||||
+		addUnicodeBinaryPropertyCodesToNames(propertyAliasesA);
 | 
			
		||||
+		addUnicodeScriptCodesToNames(propertyAliasesA);
 | 
			
		||||
+		addUnicodeBlocksToNames(propertyAliasesB);
 | 
			
		||||
+		addUnicodeIntPropertyCodesToNames(propertyAliasesB);
 | 
			
		||||
+		propertyAliasesB.put("EP", "Extended_Pictographic");
 | 
			
		||||
 
 | 
			
		||||
 		Map<String, Object> properties = new LinkedHashMap<String, Object>();
 | 
			
		||||
 		properties.put("propertyCodePointRanges", propertyCodePointRanges);
 | 
			
		||||
-		properties.put("propertyAliases", propertyAliases);
 | 
			
		||||
+		properties.put("propertyAliasesA", propertyAliasesA);
 | 
			
		||||
+		properties.put("propertyAliasesB", propertyAliasesB);
 | 
			
		||||
 		return properties;
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
-- 
 | 
			
		||||
2.28.0
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										51
									
								
								gnu/packages/patches/libcyaml-libyaml-compat.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								gnu/packages/patches/libcyaml-libyaml-compat.patch
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,51 @@
 | 
			
		|||
Fix build against libyaml 0.2.5.
 | 
			
		||||
 | 
			
		||||
Taken from upstream:
 | 
			
		||||
https://github.com/tlsa/libcyaml/commit/0e947264b947f51f7ea785068637c4bfce5d4171
 | 
			
		||||
 | 
			
		||||
diff --git a/test/units/save.c b/test/units/save.c
 | 
			
		||||
--- a/test/units/save.c
 | 
			
		||||
+++ b/test/units/save.c
 | 
			
		||||
@@ -3476,7 +3476,7 @@ static bool test_save_sequence_null_values_int(
 | 
			
		||||
 		ttest_report_ctx_t *report,
 | 
			
		||||
 		const cyaml_config_t *config)
 | 
			
		||||
 {
 | 
			
		||||
-	static const unsigned char ref[] =
 | 
			
		||||
+	static const unsigned char ref1[] =
 | 
			
		||||
 		"---\n"
 | 
			
		||||
 		"- 7\n"
 | 
			
		||||
 		"- 6\n"
 | 
			
		||||
@@ -3487,6 +3487,18 @@ static bool test_save_sequence_null_values_int(
 | 
			
		||||
 		"- \n"
 | 
			
		||||
 		"- 0\n"
 | 
			
		||||
 		"...\n";
 | 
			
		||||
+	/* As of libyaml 0.2.5, trailing spaces are not emitted. */
 | 
			
		||||
+	static const unsigned char ref2[] =
 | 
			
		||||
+		"---\n"
 | 
			
		||||
+		"- 7\n"
 | 
			
		||||
+		"- 6\n"
 | 
			
		||||
+		"- 5\n"
 | 
			
		||||
+		"-\n"
 | 
			
		||||
+		"- 3\n"
 | 
			
		||||
+		"- 2\n"
 | 
			
		||||
+		"-\n"
 | 
			
		||||
+		"- 0\n"
 | 
			
		||||
+		"...\n";
 | 
			
		||||
 	static const int d[] = { 7, 6, 5, 4, 3, 2, 1, 0 };
 | 
			
		||||
 	static const int *data[] = { d + 0, d + 1, d + 2, NULL,
 | 
			
		||||
 	                             d + 4, d + 5, NULL, d + 7, };
 | 
			
		||||
@@ -3515,11 +3527,12 @@ static bool test_save_sequence_null_values_int(
 | 
			
		||||
 		return ttest_fail(&tc, cyaml_strerror(err));
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
-	if (len != YAML_LEN(ref) || memcmp(ref, buffer, len) != 0) {
 | 
			
		||||
+	if ((len != YAML_LEN(ref1) || memcmp(ref1, buffer, len) != 0) &&
 | 
			
		||||
+	    (len != YAML_LEN(ref2) || memcmp(ref2, buffer, len) != 0)) {
 | 
			
		||||
 		return ttest_fail(&tc, "Bad data:\n"
 | 
			
		||||
 				"EXPECTED (%zu):\n\n%.*s\n\n"
 | 
			
		||||
 				"GOT (%zu):\n\n%.*s\n",
 | 
			
		||||
-				YAML_LEN(ref), YAML_LEN(ref), ref,
 | 
			
		||||
+				YAML_LEN(ref1), YAML_LEN(ref1), ref1,
 | 
			
		||||
 				len, len, buffer);
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
| 
						 | 
				
			
			@ -1,42 +0,0 @@
 | 
			
		|||
Only check for for relative path on virtio devices.  Otherwise it could
 | 
			
		||||
break driver loading in some circumstances, notably the IceCat sandbox.
 | 
			
		||||
 | 
			
		||||
https://gitlab.freedesktop.org/mesa/drm/-/issues/39
 | 
			
		||||
 | 
			
		||||
Taken from upstream:
 | 
			
		||||
https://gitlab.freedesktop.org/mesa/drm/-/commit/57df07572ce45a1b60bae6fb89770388d3abd6dd
 | 
			
		||||
 | 
			
		||||
diff --git a/xf86drm.c b/xf86drm.c
 | 
			
		||||
--- a/xf86drm.c
 | 
			
		||||
+++ b/xf86drm.c
 | 
			
		||||
@@ -3103,15 +3103,18 @@ static int drmParseSubsystemType(int maj, int min)
 | 
			
		||||
     int subsystem_type;
 | 
			
		||||
 
 | 
			
		||||
     snprintf(path, sizeof(path), "/sys/dev/char/%d:%d/device", maj, min);
 | 
			
		||||
-    if (!realpath(path, real_path))
 | 
			
		||||
-        return -errno;
 | 
			
		||||
-    snprintf(path, sizeof(path), "%s", real_path);
 | 
			
		||||
 
 | 
			
		||||
     subsystem_type = get_subsystem_type(path);
 | 
			
		||||
+    /* Try to get the parent (underlying) device type */
 | 
			
		||||
     if (subsystem_type == DRM_BUS_VIRTIO) {
 | 
			
		||||
+        /* Assume virtio-pci on error */
 | 
			
		||||
+        if (!realpath(path, real_path))
 | 
			
		||||
+            return DRM_BUS_VIRTIO;
 | 
			
		||||
         strncat(path, "/..", PATH_MAX);
 | 
			
		||||
         subsystem_type = get_subsystem_type(path);
 | 
			
		||||
-    }
 | 
			
		||||
+        if (subsystem_type < 0)
 | 
			
		||||
+            return DRM_BUS_VIRTIO;
 | 
			
		||||
+     }
 | 
			
		||||
     return subsystem_type;
 | 
			
		||||
 #elif defined(__OpenBSD__) || defined(__DragonFly__) || defined(__FreeBSD__)
 | 
			
		||||
     return DRM_BUS_PCI;
 | 
			
		||||
@@ -3920,6 +3923,7 @@ process_device(drmDevicePtr *device, const char *d_name,
 | 
			
		||||
 
 | 
			
		||||
     switch (subsystem_type) {
 | 
			
		||||
     case DRM_BUS_PCI:
 | 
			
		||||
+    case DRM_BUS_VIRTIO:
 | 
			
		||||
         return drmProcessPciDevice(device, node, node_type, maj, min,
 | 
			
		||||
                                    fetch_deviceinfo, flags);
 | 
			
		||||
     case DRM_BUS_USB:
 | 
			
		||||
| 
						 | 
				
			
			@ -1,97 +0,0 @@
 | 
			
		|||
Fix CVE-2017-12562:
 | 
			
		||||
 | 
			
		||||
https://github.com/erikd/libsndfile/issues/292
 | 
			
		||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12562
 | 
			
		||||
 | 
			
		||||
Patch copied from upstream source repository:
 | 
			
		||||
 | 
			
		||||
https://github.com/erikd/libsndfile/commit/cf7a8182c2642c50f1cf90dddea9ce96a8bad2e8
 | 
			
		||||
 | 
			
		||||
From cf7a8182c2642c50f1cf90dddea9ce96a8bad2e8 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: =?UTF-8?q?J=C3=B6rn=20Heusipp?= <osmanx@problemloesungsmaschine.de>
 | 
			
		||||
Date: Wed, 14 Jun 2017 12:25:40 +0200
 | 
			
		||||
Subject: [PATCH] src/common.c: Fix heap buffer overflows when writing strings
 | 
			
		||||
 in binheader
 | 
			
		||||
 | 
			
		||||
Fixes the following problems:
 | 
			
		||||
 1. Case 's' only enlarges the buffer by 16 bytes instead of size bytes.
 | 
			
		||||
 2. psf_binheader_writef() enlarges the header buffer (if needed) prior to the
 | 
			
		||||
    big switch statement by an amount (16 bytes) which is enough for all cases
 | 
			
		||||
    where only a single value gets added. Cases 's', 'S', 'p' however
 | 
			
		||||
    additionally write an arbitrary length block of data and again enlarge the
 | 
			
		||||
    buffer to the required amount. However, the required space calculation does
 | 
			
		||||
    not take into account the size of the length field which gets output before
 | 
			
		||||
    the data.
 | 
			
		||||
 3. Buffer size requirement calculation in case 'S' does not account for the
 | 
			
		||||
    padding byte ("size += (size & 1) ;" happens after the calculation which
 | 
			
		||||
    uses "size").
 | 
			
		||||
 4. Case 'S' can overrun the header buffer by 1 byte when no padding is
 | 
			
		||||
    involved
 | 
			
		||||
    ("memcpy (&(psf->header.ptr [psf->header.indx]), strptr, size + 1) ;" while
 | 
			
		||||
    the buffer is only guaranteed to have "size" space available).
 | 
			
		||||
 5. "psf->header.ptr [psf->header.indx] = 0 ;" in case 'S' always writes 1 byte
 | 
			
		||||
    beyond the space which is guaranteed to be allocated in the header buffer.
 | 
			
		||||
 6. Case 's' can overrun the provided source string by 1 byte if padding is
 | 
			
		||||
    involved ("memcpy (&(psf->header.ptr [psf->header.indx]), strptr, size) ;"
 | 
			
		||||
    where "size" is "strlen (strptr) + 1" (which includes the 0 terminator,
 | 
			
		||||
    plus optionally another 1 which is padding and not guaranteed to be
 | 
			
		||||
    readable via the source string pointer).
 | 
			
		||||
 | 
			
		||||
Closes: https://github.com/erikd/libsndfile/issues/292
 | 
			
		||||
---
 | 
			
		||||
 src/common.c | 15 +++++++--------
 | 
			
		||||
 1 file changed, 7 insertions(+), 8 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/src/common.c b/src/common.c
 | 
			
		||||
index 1a6204ca..6b2a2ee9 100644
 | 
			
		||||
--- a/src/common.c
 | 
			
		||||
+++ b/src/common.c
 | 
			
		||||
@@ -681,16 +681,16 @@ psf_binheader_writef (SF_PRIVATE *psf, const char *format, ...)
 | 
			
		||||
 					/* Write a C string (guaranteed to have a zero terminator). */
 | 
			
		||||
 					strptr = va_arg (argptr, char *) ;
 | 
			
		||||
 					size = strlen (strptr) + 1 ;
 | 
			
		||||
-					size += (size & 1) ;
 | 
			
		||||
 
 | 
			
		||||
-					if (psf->header.indx + (sf_count_t) size >= psf->header.len && psf_bump_header_allocation (psf, 16))
 | 
			
		||||
+					if (psf->header.indx + 4 + (sf_count_t) size + (sf_count_t) (size & 1) > psf->header.len && psf_bump_header_allocation (psf, 4 + size + (size & 1)))
 | 
			
		||||
 						return count ;
 | 
			
		||||
 
 | 
			
		||||
 					if (psf->rwf_endian == SF_ENDIAN_BIG)
 | 
			
		||||
-						header_put_be_int (psf, size) ;
 | 
			
		||||
+						header_put_be_int (psf, size + (size & 1)) ;
 | 
			
		||||
 					else
 | 
			
		||||
-						header_put_le_int (psf, size) ;
 | 
			
		||||
+						header_put_le_int (psf, size + (size & 1)) ;
 | 
			
		||||
 					memcpy (&(psf->header.ptr [psf->header.indx]), strptr, size) ;
 | 
			
		||||
+					size += (size & 1) ;
 | 
			
		||||
 					psf->header.indx += size ;
 | 
			
		||||
 					psf->header.ptr [psf->header.indx - 1] = 0 ;
 | 
			
		||||
 					count += 4 + size ;
 | 
			
		||||
@@ -703,16 +703,15 @@ psf_binheader_writef (SF_PRIVATE *psf, const char *format, ...)
 | 
			
		||||
 					*/
 | 
			
		||||
 					strptr = va_arg (argptr, char *) ;
 | 
			
		||||
 					size = strlen (strptr) ;
 | 
			
		||||
-					if (psf->header.indx + (sf_count_t) size > psf->header.len && psf_bump_header_allocation (psf, size))
 | 
			
		||||
+					if (psf->header.indx + 4 + (sf_count_t) size + (sf_count_t) (size & 1) > psf->header.len && psf_bump_header_allocation (psf, 4 + size + (size & 1)))
 | 
			
		||||
 						return count ;
 | 
			
		||||
 					if (psf->rwf_endian == SF_ENDIAN_BIG)
 | 
			
		||||
 						header_put_be_int (psf, size) ;
 | 
			
		||||
 					else
 | 
			
		||||
 						header_put_le_int (psf, size) ;
 | 
			
		||||
-					memcpy (&(psf->header.ptr [psf->header.indx]), strptr, size + 1) ;
 | 
			
		||||
+					memcpy (&(psf->header.ptr [psf->header.indx]), strptr, size + (size & 1)) ;
 | 
			
		||||
 					size += (size & 1) ;
 | 
			
		||||
 					psf->header.indx += size ;
 | 
			
		||||
-					psf->header.ptr [psf->header.indx] = 0 ;
 | 
			
		||||
 					count += 4 + size ;
 | 
			
		||||
 					break ;
 | 
			
		||||
 
 | 
			
		||||
@@ -724,7 +723,7 @@ psf_binheader_writef (SF_PRIVATE *psf, const char *format, ...)
 | 
			
		||||
 					size = (size & 1) ? size : size + 1 ;
 | 
			
		||||
 					size = (size > 254) ? 254 : size ;
 | 
			
		||||
 
 | 
			
		||||
-					if (psf->header.indx + (sf_count_t) size > psf->header.len && psf_bump_header_allocation (psf, size))
 | 
			
		||||
+					if (psf->header.indx + 1 + (sf_count_t) size > psf->header.len && psf_bump_header_allocation (psf, 1 + size))
 | 
			
		||||
 						return count ;
 | 
			
		||||
 
 | 
			
		||||
 					header_put_byte (psf, size) ;
 | 
			
		||||
| 
						 | 
				
			
			@ -1,77 +0,0 @@
 | 
			
		|||
Fix CVE-2017-{8361,8363,8365}:
 | 
			
		||||
 | 
			
		||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8361
 | 
			
		||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8363
 | 
			
		||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8365
 | 
			
		||||
 | 
			
		||||
Patch copied from upstream source repository:
 | 
			
		||||
 | 
			
		||||
https://github.com/erikd/libsndfile/commit/fd0484aba8e51d16af1e3a880f9b8b857b385eb3
 | 
			
		||||
 | 
			
		||||
From fd0484aba8e51d16af1e3a880f9b8b857b385eb3 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Erik de Castro Lopo <erikd@mega-nerd.com>
 | 
			
		||||
Date: Wed, 12 Apr 2017 19:45:30 +1000
 | 
			
		||||
Subject: [PATCH] FLAC: Fix a buffer read overrun
 | 
			
		||||
 | 
			
		||||
Buffer read overrun occurs when reading a FLAC file that switches
 | 
			
		||||
from 2 channels to one channel mid-stream. Only option is to
 | 
			
		||||
abort the read.
 | 
			
		||||
 | 
			
		||||
Closes: https://github.com/erikd/libsndfile/issues/230
 | 
			
		||||
---
 | 
			
		||||
 src/common.h  |  1 +
 | 
			
		||||
 src/flac.c    | 13 +++++++++++++
 | 
			
		||||
 src/sndfile.c |  1 +
 | 
			
		||||
 3 files changed, 15 insertions(+)
 | 
			
		||||
 | 
			
		||||
diff --git a/src/common.h b/src/common.h
 | 
			
		||||
index 0bd810c3..e2669b6a 100644
 | 
			
		||||
--- a/src/common.h
 | 
			
		||||
+++ b/src/common.h
 | 
			
		||||
@@ -725,6 +725,7 @@ enum
 | 
			
		||||
 	SFE_FLAC_INIT_DECODER,
 | 
			
		||||
 	SFE_FLAC_LOST_SYNC,
 | 
			
		||||
 	SFE_FLAC_BAD_SAMPLE_RATE,
 | 
			
		||||
+	SFE_FLAC_CHANNEL_COUNT_CHANGED,
 | 
			
		||||
 	SFE_FLAC_UNKOWN_ERROR,
 | 
			
		||||
 
 | 
			
		||||
 	SFE_WVE_NOT_WVE,
 | 
			
		||||
diff --git a/src/flac.c b/src/flac.c
 | 
			
		||||
index 84de0e26..986a7b8f 100644
 | 
			
		||||
--- a/src/flac.c
 | 
			
		||||
+++ b/src/flac.c
 | 
			
		||||
@@ -434,6 +434,19 @@ sf_flac_meta_callback (const FLAC__StreamDecoder * UNUSED (decoder), const FLAC_
 | 
			
		||||
 
 | 
			
		||||
 	switch (metadata->type)
 | 
			
		||||
 	{	case FLAC__METADATA_TYPE_STREAMINFO :
 | 
			
		||||
+			if (psf->sf.channels > 0 && psf->sf.channels != (int) metadata->data.stream_info.channels)
 | 
			
		||||
+			{	psf_log_printf (psf, "Error: FLAC stream changed from %d to %d channels\n"
 | 
			
		||||
+									"Nothing to be but to error out.\n" ,
 | 
			
		||||
+									psf->sf.channels, metadata->data.stream_info.channels) ;
 | 
			
		||||
+				psf->error = SFE_FLAC_CHANNEL_COUNT_CHANGED ;
 | 
			
		||||
+				return ;
 | 
			
		||||
+				} ;
 | 
			
		||||
+
 | 
			
		||||
+			if (psf->sf.channels > 0 && psf->sf.samplerate != (int) metadata->data.stream_info.sample_rate)
 | 
			
		||||
+			{	psf_log_printf (psf, "Warning: FLAC stream changed sample rates from %d to %d.\n"
 | 
			
		||||
+									"Carrying on as if nothing happened.",
 | 
			
		||||
+									psf->sf.samplerate, metadata->data.stream_info.sample_rate) ;
 | 
			
		||||
+				} ;
 | 
			
		||||
 			psf->sf.channels = metadata->data.stream_info.channels ;
 | 
			
		||||
 			psf->sf.samplerate = metadata->data.stream_info.sample_rate ;
 | 
			
		||||
 			psf->sf.frames = metadata->data.stream_info.total_samples ;
 | 
			
		||||
diff --git a/src/sndfile.c b/src/sndfile.c
 | 
			
		||||
index 41875610..e2a87be8 100644
 | 
			
		||||
--- a/src/sndfile.c
 | 
			
		||||
+++ b/src/sndfile.c
 | 
			
		||||
@@ -245,6 +245,7 @@ ErrorStruct SndfileErrors [] =
 | 
			
		||||
 	{	SFE_FLAC_INIT_DECODER	, "Error : problem with initialization of the flac decoder." },
 | 
			
		||||
 	{	SFE_FLAC_LOST_SYNC		, "Error : flac decoder lost sync." },
 | 
			
		||||
 	{	SFE_FLAC_BAD_SAMPLE_RATE, "Error : flac does not support this sample rate." },
 | 
			
		||||
+	{	SFE_FLAC_CHANNEL_COUNT_CHANGED, "Error : flac channel changed mid stream." },
 | 
			
		||||
 	{	SFE_FLAC_UNKOWN_ERROR	, "Error : unknown error in flac decoder." },
 | 
			
		||||
 
 | 
			
		||||
 	{	SFE_WVE_NOT_WVE			, "Error : not a WVE file." },
 | 
			
		||||
-- 
 | 
			
		||||
2.12.2
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,61 +0,0 @@
 | 
			
		|||
Fix CVE-2017-8362:
 | 
			
		||||
 | 
			
		||||
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8362
 | 
			
		||||
 | 
			
		||||
Patch copied from upstream source repository:
 | 
			
		||||
 | 
			
		||||
https://github.com/erikd/libsndfile/commit/ef1dbb2df1c0e741486646de40bd638a9c4cd808
 | 
			
		||||
 | 
			
		||||
From ef1dbb2df1c0e741486646de40bd638a9c4cd808 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Erik de Castro Lopo <erikd@mega-nerd.com>
 | 
			
		||||
Date: Fri, 14 Apr 2017 15:19:16 +1000
 | 
			
		||||
Subject: [PATCH] src/flac.c: Fix a buffer read overflow
 | 
			
		||||
 | 
			
		||||
A file (generated by a fuzzer) which increased the number of channels
 | 
			
		||||
from one frame to the next could cause a read beyond the end of the
 | 
			
		||||
buffer provided by libFLAC. Only option is to abort the read.
 | 
			
		||||
 | 
			
		||||
Closes: https://github.com/erikd/libsndfile/issues/231
 | 
			
		||||
---
 | 
			
		||||
 src/flac.c | 11 +++++++++--
 | 
			
		||||
 1 file changed, 9 insertions(+), 2 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/src/flac.c b/src/flac.c
 | 
			
		||||
index 5a4f8c21..e4f9aaa0 100644
 | 
			
		||||
--- a/src/flac.c
 | 
			
		||||
+++ b/src/flac.c
 | 
			
		||||
@@ -169,6 +169,14 @@ flac_buffer_copy (SF_PRIVATE *psf)
 | 
			
		||||
 	const int32_t* const *buffer = pflac->wbuffer ;
 | 
			
		||||
 	unsigned i = 0, j, offset, channels, len ;
 | 
			
		||||
 
 | 
			
		||||
+	if (psf->sf.channels != (int) frame->header.channels)
 | 
			
		||||
+	{	psf_log_printf (psf, "Error: FLAC frame changed from %d to %d channels\n"
 | 
			
		||||
+									"Nothing to do but to error out.\n" ,
 | 
			
		||||
+									psf->sf.channels, frame->header.channels) ;
 | 
			
		||||
+		psf->error = SFE_FLAC_CHANNEL_COUNT_CHANGED ;
 | 
			
		||||
+		return 0 ;
 | 
			
		||||
+		} ;
 | 
			
		||||
+
 | 
			
		||||
 	/*
 | 
			
		||||
 	**	frame->header.blocksize is variable and we're using a constant blocksize
 | 
			
		||||
 	**	of FLAC__MAX_BLOCK_SIZE.
 | 
			
		||||
@@ -202,7 +210,6 @@ flac_buffer_copy (SF_PRIVATE *psf)
 | 
			
		||||
 		return 0 ;
 | 
			
		||||
 		} ;
 | 
			
		||||
 
 | 
			
		||||
-
 | 
			
		||||
 	len = SF_MIN (pflac->len, frame->header.blocksize) ;
 | 
			
		||||
 
 | 
			
		||||
 	if (pflac->remain % channels != 0)
 | 
			
		||||
@@ -436,7 +443,7 @@ sf_flac_meta_callback (const FLAC__StreamDecoder * UNUSED (decoder), const FLAC_
 | 
			
		||||
 	{	case FLAC__METADATA_TYPE_STREAMINFO :
 | 
			
		||||
 			if (psf->sf.channels > 0 && psf->sf.channels != (int) metadata->data.stream_info.channels)
 | 
			
		||||
 			{	psf_log_printf (psf, "Error: FLAC stream changed from %d to %d channels\n"
 | 
			
		||||
-									"Nothing to be but to error out.\n" ,
 | 
			
		||||
+									"Nothing to do but to error out.\n" ,
 | 
			
		||||
 									psf->sf.channels, metadata->data.stream_info.channels) ;
 | 
			
		||||
 				psf->error = SFE_FLAC_CHANNEL_COUNT_CHANGED ;
 | 
			
		||||
 				return ;
 | 
			
		||||
-- 
 | 
			
		||||
2.12.2
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,42 +0,0 @@
 | 
			
		|||
This is a regression in 1.0.28 that causes a test failure on armhf.
 | 
			
		||||
 | 
			
		||||
Upstream bug URL:
 | 
			
		||||
 | 
			
		||||
https://github.com/erikd/libsndfile/issues/229
 | 
			
		||||
 | 
			
		||||
Patch copied from upstream source repository:
 | 
			
		||||
 | 
			
		||||
https://github.com/erikd/libsndfile/commit/9d470ee5577d3ccedb1c28c7e0a7295ba17feaf5
 | 
			
		||||
 | 
			
		||||
From 9d470ee5577d3ccedb1c28c7e0a7295ba17feaf5 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Erik de Castro Lopo <erikd@mega-nerd.com>
 | 
			
		||||
Date: Sun, 16 Apr 2017 17:54:17 +1000
 | 
			
		||||
Subject: [PATCH] src/rf64.c: Fix varargs related bug
 | 
			
		||||
 | 
			
		||||
C's <stargs.h> functionality isn't type checked so that passing an
 | 
			
		||||
`sf_count_t` (64 bits) by mistake in place of a `unit32_t` can cause
 | 
			
		||||
errors. This would be fine if it was an error on every architecture
 | 
			
		||||
and platform, but its not. This particular problem only manifested
 | 
			
		||||
on armhf and some other Arm architectures. It was not an issue on
 | 
			
		||||
32 bit x86.
 | 
			
		||||
 | 
			
		||||
I have now fixed variants of this same bug several times.
 | 
			
		||||
 | 
			
		||||
Closes: https://github.com/erikd/libsndfile/issues/229
 | 
			
		||||
---
 | 
			
		||||
 src/rf64.c | 2 +-
 | 
			
		||||
 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/src/rf64.c b/src/rf64.c
 | 
			
		||||
index b3d637f..02dd904 100644
 | 
			
		||||
--- a/src/rf64.c
 | 
			
		||||
+++ b/src/rf64.c
 | 
			
		||||
@@ -742,7 +742,7 @@ rf64_write_header (SF_PRIVATE *psf, int calc_length)
 | 
			
		||||
 
 | 
			
		||||
 	pad_size = psf->dataoffset - 16 - psf->header.indx ;
 | 
			
		||||
 	if (pad_size >= 0)
 | 
			
		||||
-		psf_binheader_writef (psf, "m4z", PAD_MARKER, pad_size, make_size_t (pad_size)) ;
 | 
			
		||||
+		psf_binheader_writef (psf, "m4z", PAD_MARKER, (unsigned int) pad_size, make_size_t (pad_size)) ;
 | 
			
		||||
 
 | 
			
		||||
 	if (wpriv->rf64_downgrade && (psf->filelength < RIFF_DOWNGRADE_BYTES))
 | 
			
		||||
 		psf_binheader_writef (psf, "tm8", data_MARKER, psf->datalength) ;
 | 
			
		||||
| 
						 | 
				
			
			@ -1,37 +0,0 @@
 | 
			
		|||
From 93efa48a7b972fc463406603574a4d508eefe792 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Sergei Golubchik <serg@mariadb.org>
 | 
			
		||||
Date: Sun, 13 May 2018 18:50:21 +0200
 | 
			
		||||
Subject: [PATCH] fix failing main.mysql_client_test test on 32bit
 | 
			
		||||
 | 
			
		||||
in `ulonglong=ulong*uint` multiplication
 | 
			
		||||
is done in ulong, wrapping around on 32bit.
 | 
			
		||||
 | 
			
		||||
This became visible after C/C changed the
 | 
			
		||||
default charset to utf8, thus changing
 | 
			
		||||
mbmaxlem from 1 to 3.
 | 
			
		||||
---
 | 
			
		||||
 tests/mysql_client_fw.c | 4 ++--
 | 
			
		||||
 1 file changed, 2 insertions(+), 2 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/tests/mysql_client_fw.c b/tests/mysql_client_fw.c
 | 
			
		||||
index f69eb28a2871..4d036887629a 100644
 | 
			
		||||
--- a/tests/mysql_client_fw.c
 | 
			
		||||
+++ b/tests/mysql_client_fw.c
 | 
			
		||||
@@ -768,7 +768,7 @@ static void do_verify_prepare_field(MYSQL_RES *result,
 | 
			
		||||
 {
 | 
			
		||||
   MYSQL_FIELD *field;
 | 
			
		||||
   CHARSET_INFO *cs;
 | 
			
		||||
-  ulonglong expected_field_length;
 | 
			
		||||
+  ulonglong expected_field_length= length;
 | 
			
		||||
 
 | 
			
		||||
   if (!(field= mysql_fetch_field_direct(result, no)))
 | 
			
		||||
   {
 | 
			
		||||
@@ -777,7 +777,7 @@ static void do_verify_prepare_field(MYSQL_RES *result,
 | 
			
		||||
   }
 | 
			
		||||
   cs= get_charset(field->charsetnr, 0);
 | 
			
		||||
   DIE_UNLESS(cs);
 | 
			
		||||
-  if ((expected_field_length= length * cs->mbmaxlen) > UINT_MAX32)
 | 
			
		||||
+  if ((expected_field_length*= cs->mbmaxlen) > UINT_MAX32)
 | 
			
		||||
     expected_field_length= UINT_MAX32;
 | 
			
		||||
   if (!opt_silent)
 | 
			
		||||
   {
 | 
			
		||||
| 
						 | 
				
			
			@ -1,225 +0,0 @@
 | 
			
		|||
Description: Create nss.pc and nss-config
 | 
			
		||||
Author: Lars Wendler <polynomial-c@gentoo.org>
 | 
			
		||||
Source: http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-libs/nss/files/nss-3.17.1-gentoo-fixups.patch
 | 
			
		||||
 | 
			
		||||
Modifications:
 | 
			
		||||
  Change libdir from ${prefix}/lib64 to ${prefix}/lib/nss.
 | 
			
		||||
  Remove optional patching in nss/Makefile.
 | 
			
		||||
  Include -L$libdir in output from "nss-config --libs".
 | 
			
		||||
 | 
			
		||||
Later adapted to apply cleanly to nss-3.21.
 | 
			
		||||
 | 
			
		||||
--- nss-3.21/nss/config/Makefile
 | 
			
		||||
+++ nss-3.21/nss/config/Makefile
 | 
			
		||||
@@ -0,0 +1,40 @@
 | 
			
		||||
+CORE_DEPTH = ..
 | 
			
		||||
+DEPTH      = ..
 | 
			
		||||
+
 | 
			
		||||
+include $(CORE_DEPTH)/coreconf/config.mk
 | 
			
		||||
+
 | 
			
		||||
+NSS_MAJOR_VERSION = `grep "NSS_VMAJOR" ../lib/nss/nss.h | awk '{print $$3}'`
 | 
			
		||||
+NSS_MINOR_VERSION = `grep "NSS_VMINOR" ../lib/nss/nss.h | awk '{print $$3}'`
 | 
			
		||||
+NSS_PATCH_VERSION = `grep "NSS_VPATCH" ../lib/nss/nss.h | awk '{print $$3}'`
 | 
			
		||||
+PREFIX = /usr
 | 
			
		||||
+
 | 
			
		||||
+all: export libs
 | 
			
		||||
+
 | 
			
		||||
+export:
 | 
			
		||||
+	# Create the nss.pc file
 | 
			
		||||
+	mkdir -p $(DIST)/lib/pkgconfig
 | 
			
		||||
+	sed -e "s,@prefix@,$(PREFIX)," \
 | 
			
		||||
+	    -e "s,@exec_prefix@,\$${prefix}," \
 | 
			
		||||
+	    -e "s,@libdir@,\$${prefix}/lib/nss," \
 | 
			
		||||
+	    -e "s,@includedir@,\$${prefix}/include/nss," \
 | 
			
		||||
+	    -e "s,@NSS_MAJOR_VERSION@,$(NSS_MAJOR_VERSION),g" \
 | 
			
		||||
+	    -e "s,@NSS_MINOR_VERSION@,$(NSS_MINOR_VERSION)," \
 | 
			
		||||
+	    -e "s,@NSS_PATCH_VERSION@,$(NSS_PATCH_VERSION)," \
 | 
			
		||||
+	    nss.pc.in > nss.pc
 | 
			
		||||
+	chmod 0644 nss.pc
 | 
			
		||||
+	cp nss.pc $(DIST)/lib/pkgconfig
 | 
			
		||||
+
 | 
			
		||||
+	# Create the nss-config script
 | 
			
		||||
+	mkdir -p $(DIST)/bin
 | 
			
		||||
+	sed -e "s,@prefix@,$(PREFIX)," \
 | 
			
		||||
+	    -e "s,@NSS_MAJOR_VERSION@,$(NSS_MAJOR_VERSION)," \
 | 
			
		||||
+	    -e "s,@NSS_MINOR_VERSION@,$(NSS_MINOR_VERSION)," \
 | 
			
		||||
+	    -e "s,@NSS_PATCH_VERSION@,$(NSS_PATCH_VERSION)," \
 | 
			
		||||
+	    nss-config.in > nss-config
 | 
			
		||||
+	chmod 0755 nss-config
 | 
			
		||||
+	cp nss-config $(DIST)/bin
 | 
			
		||||
+
 | 
			
		||||
+libs:
 | 
			
		||||
+
 | 
			
		||||
+dummy: all export libs
 | 
			
		||||
+
 | 
			
		||||
--- nss-3.21/nss/config/nss-config.in
 | 
			
		||||
+++ nss-3.21/nss/config/nss-config.in
 | 
			
		||||
@@ -0,0 +1,145 @@
 | 
			
		||||
+#!/bin/sh
 | 
			
		||||
+
 | 
			
		||||
+prefix=@prefix@
 | 
			
		||||
+
 | 
			
		||||
+major_version=@NSS_MAJOR_VERSION@
 | 
			
		||||
+minor_version=@NSS_MINOR_VERSION@
 | 
			
		||||
+patch_version=@NSS_PATCH_VERSION@
 | 
			
		||||
+
 | 
			
		||||
+usage()
 | 
			
		||||
+{
 | 
			
		||||
+	cat <<EOF
 | 
			
		||||
+Usage: nss-config [OPTIONS] [LIBRARIES]
 | 
			
		||||
+Options:
 | 
			
		||||
+	[--prefix[=DIR]]
 | 
			
		||||
+	[--exec-prefix[=DIR]]
 | 
			
		||||
+	[--includedir[=DIR]]
 | 
			
		||||
+	[--libdir[=DIR]]
 | 
			
		||||
+	[--version]
 | 
			
		||||
+	[--libs]
 | 
			
		||||
+	[--cflags]
 | 
			
		||||
+Dynamic Libraries:
 | 
			
		||||
+	nss
 | 
			
		||||
+	ssl
 | 
			
		||||
+	smime
 | 
			
		||||
+	nssutil
 | 
			
		||||
+EOF
 | 
			
		||||
+	exit $1
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
+if test $# -eq 0; then
 | 
			
		||||
+	usage 1 1>&2
 | 
			
		||||
+fi
 | 
			
		||||
+
 | 
			
		||||
+lib_ssl=yes
 | 
			
		||||
+lib_smime=yes
 | 
			
		||||
+lib_nss=yes
 | 
			
		||||
+lib_nssutil=yes
 | 
			
		||||
+
 | 
			
		||||
+while test $# -gt 0; do
 | 
			
		||||
+  case "$1" in
 | 
			
		||||
+  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
 | 
			
		||||
+  *) optarg= ;;
 | 
			
		||||
+  esac
 | 
			
		||||
+
 | 
			
		||||
+  case $1 in
 | 
			
		||||
+    --prefix=*)
 | 
			
		||||
+      prefix=$optarg
 | 
			
		||||
+      ;;
 | 
			
		||||
+    --prefix)
 | 
			
		||||
+      echo_prefix=yes
 | 
			
		||||
+      ;;
 | 
			
		||||
+    --exec-prefix=*)
 | 
			
		||||
+      exec_prefix=$optarg
 | 
			
		||||
+      ;;
 | 
			
		||||
+    --exec-prefix)
 | 
			
		||||
+      echo_exec_prefix=yes
 | 
			
		||||
+      ;;
 | 
			
		||||
+    --includedir=*)
 | 
			
		||||
+      includedir=$optarg
 | 
			
		||||
+      ;;
 | 
			
		||||
+    --includedir)
 | 
			
		||||
+      echo_includedir=yes
 | 
			
		||||
+      ;;
 | 
			
		||||
+    --libdir=*)
 | 
			
		||||
+      libdir=$optarg
 | 
			
		||||
+      ;;
 | 
			
		||||
+    --libdir)
 | 
			
		||||
+      echo_libdir=yes
 | 
			
		||||
+      ;;
 | 
			
		||||
+    --version)
 | 
			
		||||
+      echo ${major_version}.${minor_version}.${patch_version}
 | 
			
		||||
+      ;;
 | 
			
		||||
+    --cflags)
 | 
			
		||||
+      echo_cflags=yes
 | 
			
		||||
+      ;;
 | 
			
		||||
+    --libs)
 | 
			
		||||
+      echo_libs=yes
 | 
			
		||||
+      ;;
 | 
			
		||||
+    ssl)
 | 
			
		||||
+      lib_ssl=yes
 | 
			
		||||
+      ;;
 | 
			
		||||
+    smime)
 | 
			
		||||
+      lib_smime=yes
 | 
			
		||||
+      ;;
 | 
			
		||||
+    nss)
 | 
			
		||||
+      lib_nss=yes
 | 
			
		||||
+      ;;
 | 
			
		||||
+    nssutil)
 | 
			
		||||
+      lib_nssutil=yes
 | 
			
		||||
+      ;;
 | 
			
		||||
+    *)
 | 
			
		||||
+      usage 1 1>&2
 | 
			
		||||
+      ;;
 | 
			
		||||
+  esac
 | 
			
		||||
+  shift
 | 
			
		||||
+done
 | 
			
		||||
+
 | 
			
		||||
+# Set variables that may be dependent upon other variables
 | 
			
		||||
+if test -z "$exec_prefix"; then
 | 
			
		||||
+    exec_prefix=`pkg-config --variable=exec_prefix nss`
 | 
			
		||||
+fi
 | 
			
		||||
+if test -z "$includedir"; then
 | 
			
		||||
+    includedir=`pkg-config --variable=includedir nss`
 | 
			
		||||
+fi
 | 
			
		||||
+if test -z "$libdir"; then
 | 
			
		||||
+    libdir=`pkg-config --variable=libdir nss`
 | 
			
		||||
+fi
 | 
			
		||||
+
 | 
			
		||||
+if test "$echo_prefix" = "yes"; then
 | 
			
		||||
+    echo $prefix
 | 
			
		||||
+fi
 | 
			
		||||
+
 | 
			
		||||
+if test "$echo_exec_prefix" = "yes"; then
 | 
			
		||||
+    echo $exec_prefix
 | 
			
		||||
+fi
 | 
			
		||||
+
 | 
			
		||||
+if test "$echo_includedir" = "yes"; then
 | 
			
		||||
+    echo $includedir
 | 
			
		||||
+fi
 | 
			
		||||
+
 | 
			
		||||
+if test "$echo_libdir" = "yes"; then
 | 
			
		||||
+    echo $libdir
 | 
			
		||||
+fi
 | 
			
		||||
+
 | 
			
		||||
+if test "$echo_cflags" = "yes"; then
 | 
			
		||||
+    echo -I$includedir
 | 
			
		||||
+fi
 | 
			
		||||
+
 | 
			
		||||
+if test "$echo_libs" = "yes"; then
 | 
			
		||||
+      libdirs=-L$libdir
 | 
			
		||||
+      if test -n "$lib_ssl"; then
 | 
			
		||||
+	libdirs="$libdirs -lssl${major_version}"
 | 
			
		||||
+      fi
 | 
			
		||||
+      if test -n "$lib_smime"; then
 | 
			
		||||
+	libdirs="$libdirs -lsmime${major_version}"
 | 
			
		||||
+      fi
 | 
			
		||||
+      if test -n "$lib_nss"; then
 | 
			
		||||
+	libdirs="$libdirs -lnss${major_version}"
 | 
			
		||||
+      fi
 | 
			
		||||
+      if test -n "$lib_nssutil"; then
 | 
			
		||||
+       libdirs="$libdirs -lnssutil${major_version}"
 | 
			
		||||
+      fi
 | 
			
		||||
+      echo $libdirs
 | 
			
		||||
+fi
 | 
			
		||||
+
 | 
			
		||||
--- nss-3.21/nss/config/nss.pc.in
 | 
			
		||||
+++ nss-3.21/nss/config/nss.pc.in
 | 
			
		||||
@@ -0,0 +1,12 @@
 | 
			
		||||
+prefix=@prefix@
 | 
			
		||||
+exec_prefix=@exec_prefix@
 | 
			
		||||
+libdir=@libdir@
 | 
			
		||||
+includedir=@includedir@
 | 
			
		||||
+
 | 
			
		||||
+Name: NSS
 | 
			
		||||
+Description: Network Security Services
 | 
			
		||||
+Version: @NSS_MAJOR_VERSION@.@NSS_MINOR_VERSION@.@NSS_PATCH_VERSION@
 | 
			
		||||
+Requires: nspr >= 4.8
 | 
			
		||||
+Libs: -L${libdir} -lssl3 -lsmime3 -lnss3 -lnssutil3
 | 
			
		||||
+Cflags: -I${includedir}
 | 
			
		||||
+
 | 
			
		||||
--- nss-3.21/nss/manifest.mn
 | 
			
		||||
+++ nss-3.21/nss/manifest.mn
 | 
			
		||||
@@ -10,4 +10,4 @@
 | 
			
		||||
 
 | 
			
		||||
 RELEASE = nss
 | 
			
		||||
 
 | 
			
		||||
-DIRS = coreconf lib cmd cpputil gtests
 | 
			
		||||
+DIRS = coreconf lib cmd cpputil gtests config
 | 
			
		||||
| 
						 | 
				
			
			@ -1,36 +0,0 @@
 | 
			
		|||
Fix build with Python 3.8 by also checking for python-3.X-embed.pc. Since
 | 
			
		||||
Python 3.8 the normal checks don't include the Python libraries anymore and
 | 
			
		||||
linking of the gst-python module would fail.
 | 
			
		||||
 | 
			
		||||
See also https://github.com/mesonbuild/meson/issues/5629
 | 
			
		||||
Fixes https://gitlab.freedesktop.org/gstreamer/gst-python/issues/28
 | 
			
		||||
 | 
			
		||||
Patch based on upstream commit:
 | 
			
		||||
 | 
			
		||||
https://gitlab.freedesktop.org/gstreamer/gst-python/-/commit/10707f437f2fc3632067c6a0efa4432f7ebaf362
 | 
			
		||||
 | 
			
		||||
diff --git a/meson.build b/meson.build
 | 
			
		||||
index 5f13b48..d7c7e66 100644
 | 
			
		||||
--- a/meson.build
 | 
			
		||||
+++ b/meson.build
 | 
			
		||||
@@ -23,7 +23,17 @@ pygobject_dep = dependency('pygobject-3.0', fallback: ['pygobject', 'pygobject_d
 | 
			
		||||
 
 | 
			
		||||
 pymod = import('python')
 | 
			
		||||
 python = pymod.find_installation(get_option('python'))
 | 
			
		||||
-python_dep = python.dependency(required : true)
 | 
			
		||||
+pythonver = python.language_version()
 | 
			
		||||
+if pythonver.version_compare('<3.0')
 | 
			
		||||
+   error('Python2 is not supported anymore, please port your code to python3 (@0@ specified)'.format(python.language_version()))
 | 
			
		||||
+endif
 | 
			
		||||
+
 | 
			
		||||
+# Workaround for https://github.com/mesonbuild/meson/issues/5629
 | 
			
		||||
+# https://gitlab.freedesktop.org/gstreamer/gst-python/issues/28
 | 
			
		||||
+python_dep = dependency('python-@0@-embed'.format(pythonver), version: '>=3', required: false)
 | 
			
		||||
+if not python_dep.found()
 | 
			
		||||
+  python_dep = python.dependency(required : true)
 | 
			
		||||
+endif
 | 
			
		||||
 
 | 
			
		||||
 python_abi_flags = python.get_variable('ABIFLAGS', '')
 | 
			
		||||
 pylib_loc = get_option('libpython-dir')
 | 
			
		||||
-- 
 | 
			
		||||
2.26.2
 | 
			
		||||
| 
						 | 
				
			
			@ -1,70 +0,0 @@
 | 
			
		|||
commit 52ebece1243ae6900e414b6248b5145a28348eef
 | 
			
		||||
Author: Guillaume Le Vaillant <glv@posteo.net>
 | 
			
		||||
Date:   Fri Oct 18 15:41:23 2019 +0200
 | 
			
		||||
 | 
			
		||||
    Use basic ASDF system definitions instead of package-inferred-system
 | 
			
		||||
 | 
			
		||||
diff --git a/graph.asd b/graph.asd
 | 
			
		||||
index 193b6e3..56afc8f 100644
 | 
			
		||||
--- a/graph.asd
 | 
			
		||||
+++ b/graph.asd
 | 
			
		||||
@@ -3,12 +3,10 @@
 | 
			
		||||
   :version "0.0.0"
 | 
			
		||||
   :author ("Eric Schulte <schulte.eric@gmail.com>" "Thomas Dye")
 | 
			
		||||
   :licence "GPL V3"
 | 
			
		||||
-  :class :package-inferred-system
 | 
			
		||||
-  :defsystem-depends-on (:asdf-package-system)
 | 
			
		||||
+  :in-order-to ((test-op (test-op graph-test)))
 | 
			
		||||
   :depends-on (alexandria
 | 
			
		||||
                metabang-bind
 | 
			
		||||
                named-readtables
 | 
			
		||||
                curry-compose-reader-macros
 | 
			
		||||
-               graph/graph))
 | 
			
		||||
-
 | 
			
		||||
-(register-system-packages "femlisp-matlisp" '(:fl.matlisp))
 | 
			
		||||
+               cl-heap)
 | 
			
		||||
+  :components ((:file "graph")))
 | 
			
		||||
diff --git a/graph-dot.asd b/graph-dot.asd
 | 
			
		||||
new file mode 100644
 | 
			
		||||
index 0000000..12aec7e
 | 
			
		||||
--- /dev/null
 | 
			
		||||
+++ b/graph-dot.asd
 | 
			
		||||
@@ -0,0 +1,8 @@
 | 
			
		||||
+(defsystem :graph-dot
 | 
			
		||||
+  :depends-on (alexandria
 | 
			
		||||
+               metabang-bind
 | 
			
		||||
+               named-readtables
 | 
			
		||||
+               curry-compose-reader-macros
 | 
			
		||||
+               cl-ppcre
 | 
			
		||||
+               graph)
 | 
			
		||||
+  :components ((:file "dot")))
 | 
			
		||||
diff --git a/graph-json.asd b/graph-json.asd
 | 
			
		||||
new file mode 100644
 | 
			
		||||
index 0000000..e7d091f
 | 
			
		||||
--- /dev/null
 | 
			
		||||
+++ b/graph-json.asd
 | 
			
		||||
@@ -0,0 +1,8 @@
 | 
			
		||||
+(defsystem :graph-json
 | 
			
		||||
+  :depends-on (alexandria
 | 
			
		||||
+               metabang-bind
 | 
			
		||||
+               named-readtables
 | 
			
		||||
+               curry-compose-reader-macros
 | 
			
		||||
+               yason
 | 
			
		||||
+               graph)
 | 
			
		||||
+  :components ((:file "json")))
 | 
			
		||||
diff --git a/graph-test.asd b/graph-test.asd
 | 
			
		||||
new file mode 100644
 | 
			
		||||
index 0000000..1e811e1
 | 
			
		||||
--- /dev/null
 | 
			
		||||
+++ b/graph-test.asd
 | 
			
		||||
@@ -0,0 +1,10 @@
 | 
			
		||||
+(defsystem :graph-test
 | 
			
		||||
+  :depends-on (alexandria
 | 
			
		||||
+               metabang-bind
 | 
			
		||||
+               named-readtables
 | 
			
		||||
+               curry-compose-reader-macros
 | 
			
		||||
+               graph
 | 
			
		||||
+               stefil)
 | 
			
		||||
+  :perform (test-op (o s)
 | 
			
		||||
+             (uiop:symbol-call :graph/test 'test))
 | 
			
		||||
+  :components ((:file "test")))
 | 
			
		||||
| 
						 | 
				
			
			@ -36,7 +36,7 @@
 | 
			
		|||
(define-public pciutils
 | 
			
		||||
  (package
 | 
			
		||||
    (name "pciutils")
 | 
			
		||||
    (version "3.6.4")
 | 
			
		||||
    (version "3.7.0")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append
 | 
			
		||||
| 
						 | 
				
			
			@ -45,7 +45,7 @@
 | 
			
		|||
              (patches (search-patches "pciutils-hurd-configure.patch"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "0mb0f2phdcmp4kfiqsszn2k6nlln0w160ffzrjjv4bbfjwrgfzzn"))))
 | 
			
		||||
                "1ss0rnfsx8gvqjxaji4mvbhf9xyih4cadmgadbwwv8mnx1xvjh4x"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:phases
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -59,27 +59,23 @@ line syntax.")
 | 
			
		|||
(define-public popt
 | 
			
		||||
  (package
 | 
			
		||||
    (name "popt")
 | 
			
		||||
    (version "1.16")
 | 
			
		||||
    (version "1.18")
 | 
			
		||||
    (source (origin
 | 
			
		||||
             (method url-fetch)
 | 
			
		||||
             ;; The original rpm5.org domain is not accessible since
 | 
			
		||||
             ;; 2019-06-13, so use Debians copy of the tarball.
 | 
			
		||||
             (uri (string-append "https://deb.debian.org/debian/pool/main"
 | 
			
		||||
                                 "/p/popt/popt_" version ".orig.tar.gz"))
 | 
			
		||||
             ;; Ensure the file name stays the same to prevent rebuilds.
 | 
			
		||||
             (file-name (string-append "popt-" version ".tar.gz"))
 | 
			
		||||
             (uri (string-append "http://ftp.rpm.org/popt/releases"
 | 
			
		||||
                                 "/popt-1.x/popt-" version ".tar.gz"))
 | 
			
		||||
             (sha256
 | 
			
		||||
              (base32
 | 
			
		||||
               "1j2c61nn2n351nhj4d25mnf3vpiddcykq005w2h6kw79dwlysa77"))))
 | 
			
		||||
               "1lf5zlj5rbg6s4bww7hbhpca97prgprnarx978vcwa0bl81vqnai"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (add-before 'configure 'patch-test
 | 
			
		||||
           (lambda _
 | 
			
		||||
             (substitute* "test-poptrc.in"
 | 
			
		||||
             (substitute* "tests/test-poptrc.in"
 | 
			
		||||
               (("/bin/echo") (which "echo")))
 | 
			
		||||
             (substitute* "testit.sh"   ; don't expect old libtool names
 | 
			
		||||
             (substitute* "tests/testit.sh"   ;don't expect old libtool names
 | 
			
		||||
               (("lt-test1") "test1"))
 | 
			
		||||
             #t)))))
 | 
			
		||||
    (home-page "http://rpm5.org/files/popt/")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -71,45 +71,6 @@
 | 
			
		|||
(define-public libsndfile
 | 
			
		||||
  (package
 | 
			
		||||
    (name "libsndfile")
 | 
			
		||||
    (version "1.0.28")
 | 
			
		||||
    (replacement libsndfile-1.0.30)
 | 
			
		||||
    (source (origin
 | 
			
		||||
             (method url-fetch)
 | 
			
		||||
             (uri (string-append "http://www.mega-nerd.com/libsndfile/files/libsndfile-"
 | 
			
		||||
                                 version ".tar.gz"))
 | 
			
		||||
             (patches (search-patches "libsndfile-armhf-type-checks.patch"
 | 
			
		||||
                                      "libsndfile-CVE-2017-8361-8363-8365.patch"
 | 
			
		||||
                                      "libsndfile-CVE-2017-8362.patch"
 | 
			
		||||
                                      "libsndfile-CVE-2017-12562.patch"))
 | 
			
		||||
             (sha256
 | 
			
		||||
              (base32
 | 
			
		||||
               "1afzm7jx34jhqn32clc5xghyjglccam2728yxlx37yj2y0lkkwqz"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("libvorbis" ,libvorbis)
 | 
			
		||||
       ("libogg" ,libogg)
 | 
			
		||||
       ("flac" ,flac)))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("pkg-config" ,pkg-config)))
 | 
			
		||||
    (home-page "http://www.mega-nerd.com/libsndfile/")
 | 
			
		||||
    (synopsis "Reading and writing files containing sampled sound")
 | 
			
		||||
    (description
 | 
			
		||||
     "Libsndfile is a C library for reading and writing files containing
 | 
			
		||||
sampled sound (such as MS Windows WAV and the Apple/SGI AIFF format) through
 | 
			
		||||
one standard library interface.
 | 
			
		||||
 | 
			
		||||
It was designed to handle both little-endian (such as WAV) and
 | 
			
		||||
big-endian (such as AIFF) data, and to compile and run correctly on
 | 
			
		||||
little-endian (such as Intel and DEC/Compaq Alpha) processor systems as well
 | 
			
		||||
as big-endian processor systems such as Motorola 68k, Power PC, MIPS and
 | 
			
		||||
SPARC.  Hopefully the design of the library will also make it easy to extend
 | 
			
		||||
for reading and writing new sound file formats.")
 | 
			
		||||
    (license l:gpl2+)))
 | 
			
		||||
 | 
			
		||||
;; Replacement package to fix multiple security vulnerabilities.
 | 
			
		||||
(define libsndfile-1.0.30
 | 
			
		||||
  (package
 | 
			
		||||
    (inherit libsndfile)
 | 
			
		||||
    (version "1.0.30")
 | 
			
		||||
    (source (origin
 | 
			
		||||
             (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -137,9 +98,28 @@ for reading and writing new sound file formats.")
 | 
			
		|||
                 (substitute* "tests/test_wrapper.sh.in"
 | 
			
		||||
                   (("^/usr/bin/env") "env"))
 | 
			
		||||
                 #t))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("libvorbis" ,libvorbis)
 | 
			
		||||
       ("libogg" ,libogg)
 | 
			
		||||
       ("flac" ,flac)))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("python" ,python)
 | 
			
		||||
       ,@(package-native-inputs libsndfile)))))
 | 
			
		||||
     `(("pkg-config" ,pkg-config)
 | 
			
		||||
       ("python" ,python)))
 | 
			
		||||
    (home-page "http://www.mega-nerd.com/libsndfile/")
 | 
			
		||||
    (synopsis "Reading and writing files containing sampled sound")
 | 
			
		||||
    (description
 | 
			
		||||
     "Libsndfile is a C library for reading and writing files containing
 | 
			
		||||
sampled sound (such as MS Windows WAV and the Apple/SGI AIFF format) through
 | 
			
		||||
one standard library interface.
 | 
			
		||||
 | 
			
		||||
It was designed to handle both little-endian (such as WAV) and
 | 
			
		||||
big-endian (such as AIFF) data, and to compile and run correctly on
 | 
			
		||||
little-endian (such as Intel and DEC/Compaq Alpha) processor systems as well
 | 
			
		||||
as big-endian processor systems such as Motorola 68k, Power PC, MIPS and
 | 
			
		||||
SPARC.  Hopefully the design of the library will also make it easy to extend
 | 
			
		||||
for reading and writing new sound file formats.")
 | 
			
		||||
    (license l:gpl2+)))
 | 
			
		||||
 | 
			
		||||
(define-public libsamplerate
 | 
			
		||||
  (package
 | 
			
		||||
| 
						 | 
				
			
			@ -261,7 +241,7 @@ rates.")
 | 
			
		|||
 | 
			
		||||
       ("eudev" ,eudev)))         ;for the detection of hardware audio devices
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("check" ,check)
 | 
			
		||||
     `(("check" ,check-0.14)
 | 
			
		||||
       ("gettext" ,gettext-minimal)
 | 
			
		||||
       ("glib:bin" ,glib "bin")
 | 
			
		||||
       ("m4" ,m4)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -476,13 +476,13 @@ risk.")
 | 
			
		|||
(define-public python-certifi
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-certifi")
 | 
			
		||||
    (version "2020.4.5.1")
 | 
			
		||||
    (version "2020.11.8")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (pypi-uri "certifi" version))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "06b5gfs7wmmipln8f3z928d2mmx2j4b3x7pnqmj6cvmyfh8v7z2i"))))
 | 
			
		||||
                "1x4w18gm71dbwys5g2mbcnbw27b3dvphj5d56icg5ys45h4yypgh"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (arguments '(#:tests? #f))          ;no tests
 | 
			
		||||
    (home-page "https://certifi.io/")
 | 
			
		||||
| 
						 | 
				
			
			@ -498,14 +498,14 @@ is used by the Requests library to verify HTTPS requests.")
 | 
			
		|||
(define-public python-cryptography-vectors
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-cryptography-vectors")
 | 
			
		||||
    (version "2.9.2")
 | 
			
		||||
    (version "3.1.1")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (pypi-uri "cryptography_vectors" version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "1d4iykcv7cn9j399hczlxm5pzxmqy6d80h3j16dkjwlmv3293b4r"))))
 | 
			
		||||
         "1xp2j79c1y8qj4b97ygx451gzp8l4cp830hnvg3zw8j134bcaaam"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (home-page "https://github.com/pyca/cryptography")
 | 
			
		||||
    (synopsis "Test vectors for the cryptography package")
 | 
			
		||||
| 
						 | 
				
			
			@ -520,14 +520,14 @@ is used by the Requests library to verify HTTPS requests.")
 | 
			
		|||
(define-public python-cryptography
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-cryptography")
 | 
			
		||||
    (version "2.9.2")
 | 
			
		||||
    (version "3.1.1")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (pypi-uri "cryptography" version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "0af25w5mkd6vwns3r6ai1w5ip9xp0ms9s261zzssbpadzdr05hx0"))))
 | 
			
		||||
         "0z81q4d1nangw3r0v5f41mfl4d9r04qnbayl5ll5v5jpcfhwd7wx"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("openssl" ,openssl)))
 | 
			
		||||
| 
						 | 
				
			
			@ -742,18 +742,23 @@ ECB and OFB).")
 | 
			
		|||
(define-public python-asn1crypto
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-asn1crypto")
 | 
			
		||||
    (version "0.24.0")
 | 
			
		||||
    (version "1.4.0")
 | 
			
		||||
    (source
 | 
			
		||||
      (origin
 | 
			
		||||
     (origin
 | 
			
		||||
       (method git-fetch)
 | 
			
		||||
       (uri (git-reference
 | 
			
		||||
              (url "https://github.com/wbond/asn1crypto")
 | 
			
		||||
              (commit version)))
 | 
			
		||||
        (file-name (git-file-name name version))
 | 
			
		||||
        (sha256
 | 
			
		||||
         (base32
 | 
			
		||||
          "10lai2cs5mnz3gpaffbw1m7b885ls8328q5wxm35vfmcip1f0xmb"))))
 | 
			
		||||
             (url "https://github.com/wbond/asn1crypto")
 | 
			
		||||
             (commit version)))
 | 
			
		||||
       (file-name (git-file-name name version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "19abibn6jw20mzi1ln4n9jjvpdka8ygm4m439hplyrdfqbvgm01r"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:phases (modify-phases %standard-phases
 | 
			
		||||
                  (replace 'check
 | 
			
		||||
                    (lambda _
 | 
			
		||||
                      (invoke "python" "run.py" "tests"))))))
 | 
			
		||||
    (home-page "https://github.com/wbond/asn1crypto")
 | 
			
		||||
    (synopsis "ASN.1 parser and serializer in Python")
 | 
			
		||||
    (description "asn1crypto is an ASN.1 parser and serializer with definitions
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2428,13 +2428,13 @@ APIs.")
 | 
			
		|||
(define-public python-requests
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-requests")
 | 
			
		||||
    (version "2.23.0")
 | 
			
		||||
    (version "2.24.0")
 | 
			
		||||
    (source (origin
 | 
			
		||||
             (method url-fetch)
 | 
			
		||||
             (uri (pypi-uri "requests" version))
 | 
			
		||||
             (sha256
 | 
			
		||||
              (base32
 | 
			
		||||
               "1rhpg0jb08v0gd7f19jjiwlcdnxpmqi1fhvw7r4s9avddi4kvx5k"))))
 | 
			
		||||
               "06r3017hz0hzxv42gpg73l8xvdjbzw7q904ljvp36b5p3l9rlmdk"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (propagated-inputs
 | 
			
		||||
     `(("python-certifi" ,python-certifi)
 | 
			
		||||
| 
						 | 
				
			
			@ -2681,7 +2681,6 @@ authenticated session objects providing things like keep-alive.")
 | 
			
		|||
       ("python-certifi" ,python-certifi)
 | 
			
		||||
       ("python-cryptography" ,python-cryptography)
 | 
			
		||||
       ("python-idna" ,python-idna)
 | 
			
		||||
       ("python-ipaddress" ,python-ipaddress)
 | 
			
		||||
       ("python-pyopenssl" ,python-pyopenssl)
 | 
			
		||||
       ("python-pysocks" ,python-pysocks)))
 | 
			
		||||
    (home-page "https://urllib3.readthedocs.io/")
 | 
			
		||||
| 
						 | 
				
			
			@ -2690,6 +2689,7 @@ authenticated session objects providing things like keep-alive.")
 | 
			
		|||
     "Urllib3 supports features left out of urllib and urllib2 libraries.  It
 | 
			
		||||
can reuse the same socket connection for multiple requests, it can POST files,
 | 
			
		||||
supports url redirection and retries, and also gzip and deflate decoding.")
 | 
			
		||||
    (properties `((python2-variant . ,(delay python2-urllib3))))
 | 
			
		||||
    (license license:expat)))
 | 
			
		||||
 | 
			
		||||
;; Some software requires an older version of urllib3, notably Docker.
 | 
			
		||||
| 
						 | 
				
			
			@ -2705,7 +2705,12 @@ supports url redirection and retries, and also gzip and deflate decoding.")
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
(define-public python2-urllib3
 | 
			
		||||
  (package-with-python2 python-urllib3))
 | 
			
		||||
  (let ((base (package-with-python2 (strip-python2-variant python-urllib3))))
 | 
			
		||||
    (package/inherit
 | 
			
		||||
     base
 | 
			
		||||
     (propagated-inputs
 | 
			
		||||
      `(("python-ipaddress" ,python2-ipaddress)
 | 
			
		||||
        ,@(package-propagated-inputs base))))))
 | 
			
		||||
 | 
			
		||||
(define-public awscli
 | 
			
		||||
  (package
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3561,14 +3561,14 @@ text styles of documentation.")
 | 
			
		|||
(define-public python-pygments
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-pygments")
 | 
			
		||||
    (version "2.5.2")
 | 
			
		||||
    (version "2.6.1")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (pypi-uri "Pygments" version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "1zmhnswy0wxfn0xprs9aqsvx2c3kmzfn2wx14q8cv3vpkxdamj4q"))))
 | 
			
		||||
         "0i4gnd4q0mgkq0dp5wymn7ca8zjd8fgp63139svs6jf2c6h48wv4"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     ;; FIXME: Tests require sphinx, which depends on this.
 | 
			
		||||
| 
						 | 
				
			
			@ -3577,10 +3577,21 @@ text styles of documentation.")
 | 
			
		|||
    (synopsis "Syntax highlighting")
 | 
			
		||||
    (description
 | 
			
		||||
     "Pygments is a syntax highlighting package written in Python.")
 | 
			
		||||
    (license license:bsd-2)))
 | 
			
		||||
    (license license:bsd-2)
 | 
			
		||||
    (properties `((python2-variant . ,(delay python2-pygments))))))
 | 
			
		||||
 | 
			
		||||
;; Pygments 2.6 and later does not support Python 2.
 | 
			
		||||
(define-public python2-pygments
 | 
			
		||||
  (package-with-python2 python-pygments))
 | 
			
		||||
  (let ((base (package-with-python2 (strip-python2-variant python-pygments))))
 | 
			
		||||
    (package
 | 
			
		||||
      (inherit base)
 | 
			
		||||
      (version "2.5.2")
 | 
			
		||||
      (source (origin
 | 
			
		||||
                (method url-fetch)
 | 
			
		||||
                (uri (pypi-uri "Pygments" version))
 | 
			
		||||
                (sha256
 | 
			
		||||
                 (base32
 | 
			
		||||
                  "1zmhnswy0wxfn0xprs9aqsvx2c3kmzfn2wx14q8cv3vpkxdamj4q")))))))
 | 
			
		||||
 | 
			
		||||
(define-public python-bumpversion
 | 
			
		||||
  (package
 | 
			
		||||
| 
						 | 
				
			
			@ -4334,14 +4345,14 @@ provides additional functionality on the produced Mallard documents.")
 | 
			
		|||
(define-public python-cython
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-cython")
 | 
			
		||||
    (version "0.29.17")
 | 
			
		||||
    (version "0.29.21")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (pypi-uri "Cython" version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "1wnaz40hdw4mg5acz5gqb6bhjhn4cvfxg0xdzfy7aa6qn665hqb3"))))
 | 
			
		||||
         "1bcwpra7c6k30yvic3sw2v3rq2dr40ypc4zqif6kr52mpn4wnyp5"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    ;; we need the full python package and not just the python-wrapper
 | 
			
		||||
    ;; because we need libpython3.3m.so
 | 
			
		||||
| 
						 | 
				
			
			@ -9334,14 +9345,14 @@ versions of Python.")
 | 
			
		|||
(define-public python-idna
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-idna")
 | 
			
		||||
    (version "2.9")
 | 
			
		||||
    (version "2.10")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (pypi-uri "idna" version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "1jxp2pdi8y4asi7ka1zhx3yx09kv8kzj533f0ds7viz49b0x323m"))))
 | 
			
		||||
         "1xmk3s92d2vq42684p61wixfmh3qpr2mw762w0n6662vhlpqf1xk"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (home-page "https://github.com/kjd/idna")
 | 
			
		||||
    (synopsis "Internationalized domain names in applications")
 | 
			
		||||
| 
						 | 
				
			
			@ -11320,14 +11331,14 @@ python-xdo for newer bindings.)")
 | 
			
		|||
(define-public python-mako
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-mako")
 | 
			
		||||
    (version "1.1.2")
 | 
			
		||||
    (version "1.1.3")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (pypi-uri "Mako" version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "17bd6r9ynp4hyfckkia0bb8gpd98f42jfl5rmzdpbld59bbcaf9i"))))
 | 
			
		||||
         "09ywrmhr6gdyfx6d5727wwjnz73i6rklqcb4c14m7sqc830wi5c1"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:phases (modify-phases %standard-phases
 | 
			
		||||
| 
						 | 
				
			
			@ -16918,14 +16929,14 @@ requirements is not met.")
 | 
			
		|||
(define-public python-pysocks
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-pysocks")
 | 
			
		||||
    (version "1.7.0")
 | 
			
		||||
    (version "1.7.1")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (pypi-uri "PySocks" version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "0z4p31bpqm893cf87qqgb30k7nwd8kqfjwwjm5cvxb6zbyj1w0yr"))))
 | 
			
		||||
         "184sg65mbmih6ljblfsxcmq5js5l7dj3gpn618w9q5dy3rbh921z"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (arguments `(#:tests? #f))
 | 
			
		||||
    (home-page "https://github.com/Anorov/PySocks")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -195,7 +195,6 @@ system, and the core design of Django is reused in Grantlee.")
 | 
			
		|||
       ("libxslt" ,libxslt)
 | 
			
		||||
       ("libxtst" ,libxtst)
 | 
			
		||||
       ("mtdev" ,mtdev)
 | 
			
		||||
       ("mariadb" ,mariadb "lib")
 | 
			
		||||
       ("mariadb-dev" ,mariadb "dev")
 | 
			
		||||
       ("nss" ,nss)
 | 
			
		||||
       ("postgresql" ,postgresql)
 | 
			
		||||
| 
						 | 
				
			
			@ -346,7 +345,6 @@ developers using C++ or QML, a CSS & JavaScript like language.")
 | 
			
		|||
(define-public qtbase
 | 
			
		||||
  (package
 | 
			
		||||
    (name "qtbase")
 | 
			
		||||
    ;; TODO Remove ((gnu packages kde) qtbase-for-krita) when upgrading qtbase.
 | 
			
		||||
    (version "5.14.2")
 | 
			
		||||
    (source (origin
 | 
			
		||||
             (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -359,7 +357,9 @@ developers using C++ or QML, a CSS & JavaScript like language.")
 | 
			
		|||
               "12mjsahlma9rw3vz9a6b5h2s6ylg8b34hxc2vnlna5ll429fgfa8"))
 | 
			
		||||
             ;; Use TZDIR to avoid depending on package "tzdata".
 | 
			
		||||
             (patches (search-patches "qtbase-use-TZDIR.patch"
 | 
			
		||||
                                      "qtbase-moc-ignore-gcc-macro.patch"))
 | 
			
		||||
                                      "qtbase-moc-ignore-gcc-macro.patch"
 | 
			
		||||
                                      "qtbase-absolute-runpath.patch"
 | 
			
		||||
                                      "qtbase-fix-krita-deadlock.patch"))
 | 
			
		||||
             (modules '((guix build utils)))
 | 
			
		||||
             (snippet
 | 
			
		||||
               ;; corelib uses bundled harfbuzz, md4, md5, sha3
 | 
			
		||||
| 
						 | 
				
			
			@ -371,6 +371,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
 | 
			
		|||
                                  "zlib"))
 | 
			
		||||
                  #t)))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (outputs '("out" "debug"))
 | 
			
		||||
    (propagated-inputs
 | 
			
		||||
     `(("mesa" ,mesa)
 | 
			
		||||
       ;; Use which the package, not the function
 | 
			
		||||
| 
						 | 
				
			
			@ -404,7 +405,6 @@ developers using C++ or QML, a CSS & JavaScript like language.")
 | 
			
		|||
       ("libxslt" ,libxslt)
 | 
			
		||||
       ("libxtst" ,libxtst)
 | 
			
		||||
       ("mtdev" ,mtdev)
 | 
			
		||||
       ("mariadb" ,mariadb "lib")
 | 
			
		||||
       ("mariadb-dev" ,mariadb "dev")
 | 
			
		||||
       ("nss" ,nss)
 | 
			
		||||
       ("openssl" ,openssl)
 | 
			
		||||
| 
						 | 
				
			
			@ -477,6 +477,9 @@ developers using C++ or QML, a CSS & JavaScript like language.")
 | 
			
		|||
                 "-opensource"
 | 
			
		||||
                 "-confirm-license"
 | 
			
		||||
 | 
			
		||||
                 ;; Later stripped into the :debug output.
 | 
			
		||||
                 "-force-debug-info"
 | 
			
		||||
 | 
			
		||||
                 ;; These features require higher versions of Linux than the
 | 
			
		||||
                 ;; minimum version of the glibc.  See
 | 
			
		||||
                 ;; src/corelib/global/minimum-linux_p.h.  By disabling these
 | 
			
		||||
| 
						 | 
				
			
			@ -601,27 +604,6 @@ developers using C++ or QML, a CSS & JavaScript like language.")
 | 
			
		|||
;; qt used to refer to the monolithic Qt 5.x package
 | 
			
		||||
(define-deprecated qt qtbase)
 | 
			
		||||
 | 
			
		||||
;; This variable is required by 'python-pyside-2-tools', which copies some
 | 
			
		||||
;; qtbase executables that fail to run because RUNPATH refers to the
 | 
			
		||||
;; wrong $ORIGIN.  TODO: Merge with qtbase in the next rebuild cycle.
 | 
			
		||||
(define qtbase/next
 | 
			
		||||
  (package
 | 
			
		||||
    (inherit qtbase)
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (inherit (package-source qtbase))
 | 
			
		||||
       (patches (append (origin-patches (package-source qtbase))
 | 
			
		||||
                        (search-patches "qtbase-absolute-runpath.patch")))))))
 | 
			
		||||
 | 
			
		||||
(define-public qtbase-for-krita
 | 
			
		||||
  (hidden-package
 | 
			
		||||
    (package
 | 
			
		||||
      (inherit qtbase)
 | 
			
		||||
      (source (origin
 | 
			
		||||
                (inherit (package-source qtbase))
 | 
			
		||||
                (patches (append (origin-patches (package-source qtbase))
 | 
			
		||||
                                 (search-patches "qtbase-fix-krita-deadlock.patch"))))))))
 | 
			
		||||
 | 
			
		||||
(define-public qtsvg
 | 
			
		||||
  (package (inherit qtbase)
 | 
			
		||||
    (name "qtsvg")
 | 
			
		||||
| 
						 | 
				
			
			@ -2779,7 +2761,7 @@ generate Python bindings for your C or C++ code.")
 | 
			
		|||
    (inputs
 | 
			
		||||
     `(("python-pyside-2" ,python-pyside-2)
 | 
			
		||||
       ("python-shiboken-2" ,python-shiboken-2)
 | 
			
		||||
       ("qtbase" ,qtbase/next)))
 | 
			
		||||
       ("qtbase" ,qtbase)))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("python" ,python-wrapper)))
 | 
			
		||||
    (arguments
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3801,8 +3801,7 @@ specs for Ruby implementations in ruby/spec.")
 | 
			
		|||
               (invoke "rspec"))
 | 
			
		||||
             #t)))))
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("mariadb" ,mariadb "lib")
 | 
			
		||||
       ("mariadb-dev" ,mariadb "dev")
 | 
			
		||||
     `(("mariadb-dev" ,mariadb "dev")
 | 
			
		||||
       ("zlib" ,zlib)))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("ruby-rspec" ,ruby-rspec)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -85,6 +85,7 @@
 | 
			
		|||
 | 
			
		||||
             (substitute* "src/options/view.rs"
 | 
			
		||||
               (("test!\\(across:.*") "")
 | 
			
		||||
               (("test!\\(cr:.*") "")
 | 
			
		||||
               (("test!\\(empty:.*") "")
 | 
			
		||||
               (("test!\\(gracross:.*") "")
 | 
			
		||||
               (("test!\\(grid:.*") "")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,7 +4,7 @@
 | 
			
		|||
;;; Copyright © 2016 Nikita <nikita@n0.is>
 | 
			
		||||
;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
 | 
			
		||||
;;; Copyright © 2017, 2018 Nikolai Merinov <nikolai.merinov@member.fsf.org>
 | 
			
		||||
;;; Copyright © 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
;;; Copyright © 2017, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 | 
			
		||||
;;; Copyright © 2018 Danny Milosavljevic <dannym+a@scratchpost.org>
 | 
			
		||||
;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com>
 | 
			
		||||
| 
						 | 
				
			
			@ -422,7 +422,9 @@ test = { path = \"../libtest\" }
 | 
			
		|||
     `(("bison" ,bison) ; For the tests
 | 
			
		||||
       ("cmake" ,cmake-minimal)
 | 
			
		||||
       ("flex" ,flex) ; For the tests
 | 
			
		||||
       ("gdb" ,gdb)   ; For the tests
 | 
			
		||||
       ;; FIXME: Rust 1.27 and some later versions require GDB 8.2 specifically.
 | 
			
		||||
       ;; See <https://bugs.gnu.org/37810>.  Use it on all Rusts for simplicity.
 | 
			
		||||
       ("gdb" ,gdb-8.2) ; For the tests
 | 
			
		||||
       ("procps" ,procps) ; For the tests
 | 
			
		||||
       ("python-2" ,python-2)
 | 
			
		||||
       ("rustc-bootstrap" ,mrustc)
 | 
			
		||||
| 
						 | 
				
			
			@ -758,6 +760,9 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
 | 
			
		|||
          (patches (search-patches
 | 
			
		||||
                     "rust-coresimd-doctest.patch"
 | 
			
		||||
                     "rust-1.25-accept-more-detailed-gdb-lines.patch"))))
 | 
			
		||||
      (inputs
 | 
			
		||||
       (alist-replace "openssl" (list openssl)
 | 
			
		||||
                      (package-inputs base-rust)))
 | 
			
		||||
      (arguments
 | 
			
		||||
       (substitute-keyword-arguments (package-arguments base-rust)
 | 
			
		||||
         ((#:phases phases)
 | 
			
		||||
| 
						 | 
				
			
			@ -800,7 +805,6 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
 | 
			
		|||
                   (("fn finds_author_git") "#[ignore]\nfn finds_author_git")
 | 
			
		||||
                   (("fn finds_local_author_git") "#[ignore]\nfn finds_local_author_git"))
 | 
			
		||||
                 #t))
 | 
			
		||||
             ;; TODO(rebuild-rust): Remove this phase in rust-1.28 when rebuilding.
 | 
			
		||||
             (add-after 'patch-cargo-tests 'disable-cargo-test-for-nightly-channel
 | 
			
		||||
               (lambda* _
 | 
			
		||||
                 ;; This test failed to work on "nightly" channel builds
 | 
			
		||||
| 
						 | 
				
			
			@ -829,11 +833,6 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
 | 
			
		|||
                                   "rust-bootstrap-stage0-test.patch"
 | 
			
		||||
                                   "rust-1.25-accept-more-detailed-gdb-lines.patch"
 | 
			
		||||
                                   "rust-reproducible-builds.patch"))))
 | 
			
		||||
      (native-inputs
 | 
			
		||||
       ;; FIXME: Rust 1.27 and some later versions require GDB 8.2 specifically.
 | 
			
		||||
       ;; See <https://bugs.gnu.org/37810>.
 | 
			
		||||
       (alist-replace "gdb" (list gdb-8.2)
 | 
			
		||||
                      (package-native-inputs base-rust)))
 | 
			
		||||
      (arguments
 | 
			
		||||
       (substitute-keyword-arguments (package-arguments base-rust)
 | 
			
		||||
         ((#:phases phases)
 | 
			
		||||
| 
						 | 
				
			
			@ -885,6 +884,8 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
 | 
			
		|||
                 (substitute* "src/test/run-pass/issue-44056.rs"
 | 
			
		||||
                   (("only-x86_64") "ignore-test"))
 | 
			
		||||
                 #t))
 | 
			
		||||
             ;; This is no longer needed as of 1.28
 | 
			
		||||
             (delete 'disable-cargo-test-for-nightly-channel)
 | 
			
		||||
             ;; The thinlto test should pass with llvm 6.
 | 
			
		||||
             (delete 'disable-thinlto-test))))))))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1147,14 +1148,13 @@ move around."
 | 
			
		|||
                   (setenv "CARGO_HOME" cargo-home)
 | 
			
		||||
                   #t))))))))))
 | 
			
		||||
 | 
			
		||||
;; TODO(rebuild-rust): Switch to LLVM 9 in 1.38 instead of 1.40.
 | 
			
		||||
(define-public rust-1.38
 | 
			
		||||
  (let ((base-rust
 | 
			
		||||
         (rust-bootstrapped-package rust-1.37 "1.38.0"
 | 
			
		||||
           "101dlpsfkq67p0hbwx4acqq6n90dj4bbprndizpgh1kigk566hk4")))
 | 
			
		||||
    (package
 | 
			
		||||
      (inherit base-rust)
 | 
			
		||||
      #;(inputs
 | 
			
		||||
      (inputs
 | 
			
		||||
        (alist-replace "llvm" (list llvm-9)
 | 
			
		||||
                       (package-inputs base-rust)))
 | 
			
		||||
      (arguments
 | 
			
		||||
| 
						 | 
				
			
			@ -1197,9 +1197,6 @@ move around."
 | 
			
		|||
           "1ba9llwhqm49w7sz3z0gqscj039m53ky9wxzhaj11z6yg1ah15yx")))
 | 
			
		||||
    (package
 | 
			
		||||
      (inherit base-rust)
 | 
			
		||||
      (inputs
 | 
			
		||||
        (alist-replace "llvm" (list llvm-9)
 | 
			
		||||
                       (package-inputs base-rust)))
 | 
			
		||||
      (source
 | 
			
		||||
        (origin
 | 
			
		||||
          (inherit (package-source base-rust))
 | 
			
		||||
| 
						 | 
				
			
			@ -1254,8 +1251,6 @@ move around."
 | 
			
		|||
                 ,(patch-command-exec-tests-phase
 | 
			
		||||
                    '(match (find-files "src/test" "command-exec\\.rs")
 | 
			
		||||
                       ((file) file))))
 | 
			
		||||
               ;; TODO(rebuild-rust): The test in question got fixed long ago.
 | 
			
		||||
               (delete 'disable-cargo-test-for-nightly-channel)
 | 
			
		||||
               ;; The test got removed in commit 000fe63b6fc57b09828930cacbab20c2ee6e6d15
 | 
			
		||||
               ;; "Remove painful test that is not pulling its weight"
 | 
			
		||||
               (delete 'remove-unsupported-tests)))))))))
 | 
			
		||||
| 
						 | 
				
			
			@ -1324,4 +1319,4 @@ move around."
 | 
			
		|||
    "0a17jby2pd050s24cy4dfc0gzvgcl585v3vvyfilniyvjrqknsid"))
 | 
			
		||||
 | 
			
		||||
;; TODO(staging): Bump this variable to the latest packaged rust.
 | 
			
		||||
(define-public rust rust-1.39)
 | 
			
		||||
(define-public rust rust-1.45)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -216,14 +216,14 @@ with a PKCS #11 Cryptographic Token Interface.")
 | 
			
		|||
(define-public pcsc-lite
 | 
			
		||||
  (package
 | 
			
		||||
    (name "pcsc-lite")
 | 
			
		||||
    (version "1.8.26")
 | 
			
		||||
    (version "1.9.0")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "https://pcsclite.apdu.fr/files/"
 | 
			
		||||
                                  "pcsc-lite-" version ".tar.bz2"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1ndvvz0fgqwz70pijymsxmx25mzryb0zav1i8jjc067ndryvxdry"))))
 | 
			
		||||
                "1y9f9zipnrmgiw0mxrvcgky8vfrcmg6zh40gbln5a93i2c1x8j01"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:configure-flags '("--enable-usbdropdir=/var/lib/pcsc/drivers"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -48,14 +48,14 @@
 | 
			
		|||
(define-public python-sphinx
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-sphinx")
 | 
			
		||||
    (version "2.3.1")
 | 
			
		||||
    (version "3.2.1")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (pypi-uri "Sphinx" version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "19a28nsb0w4bs6k8rdfyk6vzrcwdpvhs2wq77rgpmww59yvndrz6"))))
 | 
			
		||||
         "1s70hxhddzf656kmj01lws4cbywgsinbg8750r9ilf7s2sdns79j"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:phases
 | 
			
		||||
| 
						 | 
				
			
			@ -99,52 +99,7 @@
 | 
			
		|||
for Python projects or other documents consisting of multiple reStructuredText
 | 
			
		||||
sources.")
 | 
			
		||||
    (license license:bsd-2)
 | 
			
		||||
    (properties `((python2-variant . ,(delay python2-sphinx))))))
 | 
			
		||||
 | 
			
		||||
;; Sphinx 2 does not support Python 2, so we stick with this older version here.
 | 
			
		||||
;; Remove this package once python2-pbcore no longer requires it.
 | 
			
		||||
(define-public python2-sphinx
 | 
			
		||||
  (let ((base (package-with-python2 (strip-python2-variant python-sphinx))))
 | 
			
		||||
    (package
 | 
			
		||||
      (inherit base)
 | 
			
		||||
      (version "1.7.7")
 | 
			
		||||
      (source (origin
 | 
			
		||||
                (method url-fetch)
 | 
			
		||||
                (uri (pypi-uri "Sphinx" version))
 | 
			
		||||
                (sha256
 | 
			
		||||
                 (base32
 | 
			
		||||
                  "0pkkbfj7cl157q550gcs45am5y78ps0h7q6455d64s1zmw01jlvi"))))
 | 
			
		||||
      (arguments
 | 
			
		||||
       (substitute-keyword-arguments (package-arguments base)
 | 
			
		||||
         ((#:phases phases)
 | 
			
		||||
          `(modify-phases ,phases
 | 
			
		||||
             (add-before 'check 'disable-broken-tests
 | 
			
		||||
               (lambda _
 | 
			
		||||
                 ;; These tests are broken when using Python2:
 | 
			
		||||
                 ;; <https://github.com/sphinx-doc/sphinx/issues/4710>.
 | 
			
		||||
                 (for-each delete-file '("tests/test_api_translator.py"
 | 
			
		||||
                                         "tests/test_setup_command.py"))
 | 
			
		||||
                 #t))))))
 | 
			
		||||
      (native-inputs `(("python2-mock" ,python2-mock)
 | 
			
		||||
                       ("python2-enum34" ,python2-enum34)
 | 
			
		||||
                       ,@(package-native-inputs base)))
 | 
			
		||||
      ;; Sphinx 2 has some dependencies that do not support Python 2, so
 | 
			
		||||
      ;; we keep our own propagated-inputs here instead of inheriting.
 | 
			
		||||
      (propagated-inputs `(("python2-pytz" ,python2-pytz)
 | 
			
		||||
                           ("python2-typing" ,python2-typing)
 | 
			
		||||
                           ("python2-imagesize" ,python2-imagesize)
 | 
			
		||||
                           ("python2-sphinx-alabaster-theme"
 | 
			
		||||
                            ,python2-sphinx-alabaster-theme)
 | 
			
		||||
                           ("python2-babel" ,python2-babel-2.6)
 | 
			
		||||
                           ("python2-snowballstemmer" ,python2-snowballstemmer)
 | 
			
		||||
                           ("python2-docutils" ,python2-docutils-0.14)
 | 
			
		||||
                           ("python2-jinja2" ,python2-jinja2)
 | 
			
		||||
                           ("python2-packaging" ,python2-packaging)
 | 
			
		||||
                           ("python2-pygments" ,python2-pygments)
 | 
			
		||||
                           ("python2-requests" ,python2-requests)
 | 
			
		||||
                           ("python2-six" ,python2-six)
 | 
			
		||||
                           ("python2-sphinxcontrib-websupport"
 | 
			
		||||
                            ,python2-sphinxcontrib-websupport))))))
 | 
			
		||||
    (properties `((python2-variant . ,(delay python-sphinx))))))
 | 
			
		||||
 | 
			
		||||
(define-public python-sphinxcontrib-applehelp
 | 
			
		||||
  (package
 | 
			
		||||
| 
						 | 
				
			
			@ -556,14 +511,14 @@ and several other projects.")
 | 
			
		|||
(define-public python-breathe
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-breathe")
 | 
			
		||||
    (version "4.13.1")
 | 
			
		||||
    (version "4.22.1")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (pypi-uri "breathe" version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "1aw749n2ry27434qd7gr99dvsrs3x3chyi9aywmhjj1g4m2j6xf6"))))
 | 
			
		||||
         "0snk538xv60z4vfhl3f7v5g658za7257hddkg07cknkn33k6cjvf"))))
 | 
			
		||||
    (build-system python-build-system)
 | 
			
		||||
    (propagated-inputs
 | 
			
		||||
     `(("python-docutils" ,python-docutils)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -164,7 +164,7 @@ fundamental object types for C.")
 | 
			
		|||
       ("tdb" ,tdb)
 | 
			
		||||
       ("tevent" ,tevent)))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("check" ,check)
 | 
			
		||||
     `(("check" ,check-0.14)
 | 
			
		||||
       ("docbook-xsl" ,docbook-xsl)
 | 
			
		||||
       ("docbook-xml" ,docbook-xml)
 | 
			
		||||
       ("libxml2" ,libxml2)             ; for xmllint
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,6 +4,7 @@
 | 
			
		|||
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 | 
			
		||||
;;; Copyright © 2016, 2020 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 | 
			
		||||
;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -32,7 +33,9 @@
 | 
			
		|||
(define-public valgrind
 | 
			
		||||
  (package
 | 
			
		||||
    (name "valgrind")
 | 
			
		||||
    (version "3.15.0")
 | 
			
		||||
    ;; Note: check "guix refresh -l -e '(@ (gnu packages valgrind) valgrind)'"
 | 
			
		||||
    ;; when updating this package to find which branch it should go to.
 | 
			
		||||
    (version "3.16.1")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (list (string-append "https://sourceware.org/pub/valgrind"
 | 
			
		||||
| 
						 | 
				
			
			@ -41,7 +44,7 @@
 | 
			
		|||
                                        "/valgrind-" version ".tar.bz2")))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1ccawxrni8brcvwhygy12iprkvz409hbr9xkk1bd03gnm2fplz21"))
 | 
			
		||||
                "1jik19rcd34ip8a5c9nv5wfj8k8maqb8cyclr4xhznq2gcpkl7y9"))
 | 
			
		||||
              (patches (search-patches "valgrind-enable-arm.patch"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (outputs '("doc"                              ;16 MB
 | 
			
		||||
| 
						 | 
				
			
			@ -70,9 +73,6 @@
 | 
			
		|||
               (mkdir-p dest)
 | 
			
		||||
               (rename-file orig dest)
 | 
			
		||||
               #t))))))
 | 
			
		||||
    (inputs
 | 
			
		||||
     ;; GDB is needed to provide a sane default for `--db-command'.
 | 
			
		||||
     `(("gdb" ,gdb)))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("perl" ,perl)))
 | 
			
		||||
    (home-page "https://www.valgrind.org/")
 | 
			
		||||
| 
						 | 
				
			
			@ -82,4 +82,15 @@
 | 
			
		|||
tools.  There are Valgrind tools that can automatically detect many memory
 | 
			
		||||
management and threading bugs, and profile your programs in detail.  You can
 | 
			
		||||
also use Valgrind to build new tools.")
 | 
			
		||||
    (license gpl2+)))
 | 
			
		||||
    (license gpl2+)
 | 
			
		||||
 | 
			
		||||
    ;; Hide this variant so end users get the "interactive" Valgrind below.
 | 
			
		||||
    (properties '((hidden? . #t)))))
 | 
			
		||||
 | 
			
		||||
(define-public valgrind/interactive
 | 
			
		||||
  (package/inherit
 | 
			
		||||
   valgrind
 | 
			
		||||
   (inputs
 | 
			
		||||
    ;; GDB is needed to provide a sane default for `--db-command'.
 | 
			
		||||
    `(("gdb" ,gdb)))
 | 
			
		||||
   (properties '())))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -245,7 +245,7 @@
 | 
			
		|||
       ("faac" ,faac)
 | 
			
		||||
       ("ffmpeg" ,ffmpeg)
 | 
			
		||||
       ("freetype" ,freetype)
 | 
			
		||||
       ("imagemagick" ,imagemagick)
 | 
			
		||||
       ("imagemagick" ,imagemagick-next)
 | 
			
		||||
       ("lame" ,lame)
 | 
			
		||||
       ("liba52" ,liba52)
 | 
			
		||||
       ("libdv" ,libdv)
 | 
			
		||||
| 
						 | 
				
			
			@ -1327,7 +1327,7 @@ libebml is a C++ library to read and write EBML files.")
 | 
			
		|||
(define-public libva
 | 
			
		||||
  (package
 | 
			
		||||
    (name "libva")
 | 
			
		||||
    (version "2.7.1")
 | 
			
		||||
    (version "2.9.0")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -1339,7 +1339,7 @@ libebml is a C++ library to read and write EBML files.")
 | 
			
		|||
             (string-append "https://www.freedesktop.org/software/vaapi/releases/"
 | 
			
		||||
                            "libva/libva-" version "/libva-" version ".tar.bz2")))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32 "014av7ayyc624xfmr63xhbgg7nw8fynsswj1g2wmk4lnkyfz23x0"))))
 | 
			
		||||
        (base32 "0jsq6ia3fzyzvq7lxsrn4a8kn2kx4z3v777xkxn6k4ny5lww2i73"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("pkg-config" ,pkg-config)))
 | 
			
		||||
| 
						 | 
				
			
			@ -3105,7 +3105,7 @@ and JACK.")
 | 
			
		|||
(define-public libvdpau
 | 
			
		||||
  (package
 | 
			
		||||
    (name "libvdpau")
 | 
			
		||||
    (version "1.3")
 | 
			
		||||
    (version "1.4")
 | 
			
		||||
    (source
 | 
			
		||||
      (origin
 | 
			
		||||
        (method git-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -3115,7 +3115,7 @@ and JACK.")
 | 
			
		|||
        (file-name (git-file-name name version))
 | 
			
		||||
        (sha256
 | 
			
		||||
         (base32
 | 
			
		||||
          "1fb1nh5apr9kzx9bm2lysjwpyva1s60b2l2p230nqgvb11q25hd2"))))
 | 
			
		||||
          "1hc4mcrbr1yhfiy4zfd8wc2iiqbp90z6jswap0jia20vmyk5lqld"))))
 | 
			
		||||
    (build-system meson-build-system)
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("pkg-config" ,pkg-config)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -183,7 +183,7 @@ interpretation of the specifications for these languages.")
 | 
			
		|||
(define-public vulkan-headers
 | 
			
		||||
  (package
 | 
			
		||||
    (name "vulkan-headers")
 | 
			
		||||
    (version "1.2.141")
 | 
			
		||||
    (version "1.2.148")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method git-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -193,7 +193,7 @@ interpretation of the specifications for these languages.")
 | 
			
		|||
       (file-name (git-file-name name version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "10nmx6y4llllfcczyfz76amd0vkqv09dj952d19zkzmmgcval7zq"))))
 | 
			
		||||
         "1c877npvmkv2qxac308m3x0ij3il7hy5xk3fwsfi7s9dcsaxi63j"))))
 | 
			
		||||
    (build-system cmake-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:tests? #f))                    ; No tests.
 | 
			
		||||
| 
						 | 
				
			
			@ -207,7 +207,7 @@ interpretation of the specifications for these languages.")
 | 
			
		|||
(define-public vulkan-loader
 | 
			
		||||
  (package
 | 
			
		||||
    (name "vulkan-loader")
 | 
			
		||||
    (version "1.2.140")
 | 
			
		||||
    (version "1.2.148")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method git-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -217,7 +217,7 @@ interpretation of the specifications for these languages.")
 | 
			
		|||
       (file-name (git-file-name name version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "0rhyz0qgp0i7pcx6wlvgwy7j33d4cs0xx39f0b6igpfk0vk70r1w"))))
 | 
			
		||||
         "0rxh4q09k0pdl3xlvxdv5qkak4d7az25gijxr5w170fjnd8yfrhk"))))
 | 
			
		||||
    (build-system cmake-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:phases (modify-phases %standard-phases
 | 
			
		||||
| 
						 | 
				
			
			@ -261,7 +261,7 @@ and the ICD.")
 | 
			
		|||
(define-public vulkan-tools
 | 
			
		||||
  (package
 | 
			
		||||
    (name "vulkan-tools")
 | 
			
		||||
    (version "1.2.140")
 | 
			
		||||
    (version "1.2.148")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method git-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -271,7 +271,7 @@ and the ICD.")
 | 
			
		|||
       (file-name (git-file-name name version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "08dk0q77kpycn4vv19jh3ig73gbq3psan246a7fss0nfxpiddg0j"))))
 | 
			
		||||
         "1908fw4rvg5iaim8ph0c0bzhac6jplg8dhfs6dpxd1dapzwqllkf"))))
 | 
			
		||||
    (build-system cmake-build-system)
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("glslang" ,glslang)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -654,47 +654,43 @@ driven and does not detract you from your daily work.")
 | 
			
		|||
     `(("prove" ,sbcl-prove)
 | 
			
		||||
       ("sbcl" ,sbcl)))
 | 
			
		||||
    (inputs
 | 
			
		||||
     ;; We need to avoid sbcl-* inputs (sbcl-cl-cffi-gtk in particular) as they
 | 
			
		||||
     ;; seem to cause Nyxt to hang into a hogging process in about 10 minutes.
 | 
			
		||||
     ;; Probably an issue between CFFI and how we build SBCL packages.
 | 
			
		||||
     ;; See https://github.com/atlas-engineer/nyxt/issues/680.
 | 
			
		||||
     `(("alexandria" ,cl-alexandria)
 | 
			
		||||
       ("bordeaux-threads" ,cl-bordeaux-threads)
 | 
			
		||||
       ("cl-chanl" ,cl-chanl)
 | 
			
		||||
       ("cl-containers" ,cl-containers)
 | 
			
		||||
       ("cl-css" ,cl-css)
 | 
			
		||||
       ("cl-json" ,cl-json)
 | 
			
		||||
       ("cl-markup" ,cl-markup)
 | 
			
		||||
       ("cl-ppcre" ,cl-ppcre)
 | 
			
		||||
       ("cl-prevalence" ,cl-prevalence)
 | 
			
		||||
       ("closer-mop" ,cl-closer-mop)
 | 
			
		||||
       ("cluffer" ,cl-cluffer)
 | 
			
		||||
       ("dexador" ,cl-dexador)
 | 
			
		||||
       ("enchant" ,cl-enchant)
 | 
			
		||||
       ("fset" ,cl-fset)
 | 
			
		||||
       ("hu.dwim.defclass-star" ,cl-hu.dwim.defclass-star)
 | 
			
		||||
       ("iolib" ,cl-iolib)
 | 
			
		||||
       ("local-time" ,cl-local-time)
 | 
			
		||||
       ("log4cl" ,cl-log4cl)
 | 
			
		||||
       ("mk-string-metrics" ,cl-mk-string-metrics)
 | 
			
		||||
       ("moptilities" ,cl-moptilities)
 | 
			
		||||
       ("osicat" ,sbcl-osicat)         ; SBCL version needed for libosicat.so.
 | 
			
		||||
       ("parenscript" ,cl-parenscript)
 | 
			
		||||
       ("plump" ,cl-plump)
 | 
			
		||||
       ("quri" ,cl-quri)
 | 
			
		||||
       ("serapeum" ,cl-serapeum)
 | 
			
		||||
       ("str" ,cl-str)
 | 
			
		||||
       ("swank" ,cl-slime-swank)
 | 
			
		||||
       ("trivia" ,cl-trivia)
 | 
			
		||||
       ("trivial-clipboard" ,cl-trivial-clipboard)
 | 
			
		||||
       ("trivial-features" ,cl-trivial-features)
 | 
			
		||||
       ("trivial-package-local-nicknames" ,cl-trivial-package-local-nicknames)
 | 
			
		||||
       ("trivial-types" ,cl-trivial-types)
 | 
			
		||||
       ("unix-opts" ,cl-unix-opts)
 | 
			
		||||
       ("usocket" ,cl-usocket)
 | 
			
		||||
     `(("alexandria" ,sbcl-alexandria)
 | 
			
		||||
       ("bordeaux-threads" ,sbcl-bordeaux-threads)
 | 
			
		||||
       ("cl-chanl" ,sbcl-chanl)
 | 
			
		||||
       ("cl-containers" ,sbcl-cl-containers)
 | 
			
		||||
       ("cl-css" ,sbcl-cl-css)
 | 
			
		||||
       ("cl-json" ,sbcl-cl-json)
 | 
			
		||||
       ("cl-markup" ,sbcl-cl-markup)
 | 
			
		||||
       ("cl-ppcre" ,sbcl-cl-ppcre)
 | 
			
		||||
       ("cl-prevalence" ,sbcl-cl-prevalence)
 | 
			
		||||
       ("closer-mop" ,sbcl-closer-mop)
 | 
			
		||||
       ("cluffer" ,sbcl-cluffer)
 | 
			
		||||
       ("dexador" ,sbcl-dexador)
 | 
			
		||||
       ("enchant" ,sbcl-enchant)
 | 
			
		||||
       ("fset" ,sbcl-fset)
 | 
			
		||||
       ("hu.dwim.defclass-star" ,sbcl-hu.dwim.defclass-star)
 | 
			
		||||
       ("iolib" ,sbcl-iolib)
 | 
			
		||||
       ("local-time" ,sbcl-local-time)
 | 
			
		||||
       ("log4cl" ,sbcl-log4cl)
 | 
			
		||||
       ("mk-string-metrics" ,sbcl-mk-string-metrics)
 | 
			
		||||
       ("moptilities" ,sbcl-moptilities)
 | 
			
		||||
       ("osicat" ,sbcl-osicat)
 | 
			
		||||
       ("parenscript" ,sbcl-parenscript)
 | 
			
		||||
       ("plump" ,sbcl-plump)
 | 
			
		||||
       ("quri" ,sbcl-quri)
 | 
			
		||||
       ("serapeum" ,sbcl-serapeum)
 | 
			
		||||
       ("str" ,sbcl-cl-str)
 | 
			
		||||
       ("swank" ,sbcl-slime-swank)
 | 
			
		||||
       ("trivia" ,sbcl-trivia)
 | 
			
		||||
       ("trivial-clipboard" ,sbcl-trivial-clipboard)
 | 
			
		||||
       ("trivial-features" ,sbcl-trivial-features)
 | 
			
		||||
       ("trivial-package-local-nicknames" ,sbcl-trivial-package-local-nicknames)
 | 
			
		||||
       ("trivial-types" ,sbcl-trivial-types)
 | 
			
		||||
       ("unix-opts" ,sbcl-unix-opts)
 | 
			
		||||
       ("usocket" ,sbcl-usocket)
 | 
			
		||||
       ;; WebKitGTK deps
 | 
			
		||||
       ("cl-cffi-gtk" ,cl-cffi-gtk)
 | 
			
		||||
       ("cl-webkit" ,cl-webkit)
 | 
			
		||||
       ("cl-cffi-gtk" ,sbcl-cl-cffi-gtk)
 | 
			
		||||
       ("cl-webkit" ,sbcl-cl-webkit)
 | 
			
		||||
       ("glib-networking" ,glib-networking)
 | 
			
		||||
       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
 | 
			
		||||
    (synopsis "Extensible web-browser in Common Lisp")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1348,15 +1348,15 @@ perform the opening handshake in HTTP.")
 | 
			
		|||
(define-public libpsl
 | 
			
		||||
  (package
 | 
			
		||||
    (name "libpsl")
 | 
			
		||||
    (version "0.21.0")
 | 
			
		||||
    (version "0.21.1")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append "https://github.com/rockdaboot/libpsl/"
 | 
			
		||||
                                  "releases/download/libpsl-" version
 | 
			
		||||
                                  "releases/download/" version
 | 
			
		||||
                                  "/libpsl-" version ".tar.gz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "04pfagb7ppq3yibx4lhazd1v9nwkxdfkyy2rgcrmrf3mldsirga1"))))
 | 
			
		||||
                "0k0d46bbh1jj2ll369f134vciplrzbqkg7fv9m62bl6lzghy2v5c"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("pkg-config" ,pkg-config)
 | 
			
		||||
| 
						 | 
				
			
			@ -1621,15 +1621,18 @@ hash/signatures.")
 | 
			
		|||
(define-public libyaml
 | 
			
		||||
  (package
 | 
			
		||||
    (name "libyaml")
 | 
			
		||||
    (version "0.2.4")
 | 
			
		||||
    (version "0.2.5")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
       (uri (string-append "https://pyyaml.org/download/libyaml/yaml-"
 | 
			
		||||
                           version ".tar.gz"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32 "0mq5wf17ifcwwxq3kbimhi53jn3fg23vcynqpzxjcz3vfjlfs2nq"))))
 | 
			
		||||
        (base32
 | 
			
		||||
         "1x4fcw13r3lqy8ndydr3ili87wicplw2awbcv6r21qgyfndswhn6"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:configure-flags '("--disable-static")))
 | 
			
		||||
    (home-page "https://pyyaml.org/wiki/LibYAML")
 | 
			
		||||
    (synopsis "YAML 1.1 parser and emitter written in C")
 | 
			
		||||
    (description
 | 
			
		||||
| 
						 | 
				
			
			@ -5101,7 +5104,7 @@ commenting.")
 | 
			
		|||
    (native-inputs
 | 
			
		||||
     `(("netsurf-buildsystem" ,netsurf-buildsystem)
 | 
			
		||||
       ("pkg-config" ,pkg-config)
 | 
			
		||||
       ("check" ,check)))               ;for tests
 | 
			
		||||
       ("check" ,check-0.14)))          ;for tests
 | 
			
		||||
    (arguments netsurf-buildsystem-arguments)
 | 
			
		||||
    (home-page "https://www.netsurf-browser.org/projects/libwapcaplet/")
 | 
			
		||||
    (synopsis "String internment library")
 | 
			
		||||
| 
						 | 
				
			
			@ -5150,6 +5153,7 @@ written in C.  It is developed as part of the NetSurf project.")
 | 
			
		|||
             (url "https://github.com/tlsa/libcyaml")
 | 
			
		||||
             (commit (string-append "v" version))))
 | 
			
		||||
       (file-name (git-file-name name version))
 | 
			
		||||
       (patches (search-patches "libcyaml-libyaml-compat.patch"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32 "0428p0rwq71nhh5nzcbapsbrjxa0x5l6h6ns32nxv7j624f0zd93"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,6 +4,7 @@
 | 
			
		|||
;;; Copyright © 2016, 2017, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 | 
			
		||||
;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 | 
			
		||||
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -56,10 +57,10 @@
 | 
			
		|||
    (inputs
 | 
			
		||||
     `(("gnutls" ,gnutls)
 | 
			
		||||
       ("libidn2" ,libidn2)
 | 
			
		||||
       ("libpsl" ,libpsl)
 | 
			
		||||
       ("lzip" ,lzip)))
 | 
			
		||||
       ("libpsl" ,libpsl)))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("pkg-config" ,pkg-config)
 | 
			
		||||
     `(("lzip" ,lzip)
 | 
			
		||||
       ("pkg-config" ,pkg-config)
 | 
			
		||||
       ("perl" ,perl)
 | 
			
		||||
       ("python" ,python)               ;for testenv suite
 | 
			
		||||
       ("perl-http-daemon" ,perl-http-daemon)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,7 +13,7 @@
 | 
			
		|||
;;; Copyright © 2016 doncatnip <gnopap@gmail.com>
 | 
			
		||||
;;; Copyright © 2016 Ivan Vilata i Balaguer <ivan@selidor.net>
 | 
			
		||||
;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
 | 
			
		||||
;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com>
 | 
			
		||||
;;; Copyright © 2017, 2019, 2020 Marius Bakke <marius@gnu.org>
 | 
			
		||||
;;; Copyright © 2017, 2020 Oleg Pykhalov <go.wigust@gmail.com>
 | 
			
		||||
;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 | 
			
		||||
;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
 | 
			
		||||
| 
						 | 
				
			
			@ -72,6 +72,7 @@
 | 
			
		|||
  #:use-module (gnu packages autotools)
 | 
			
		||||
  #:use-module (gnu packages base)
 | 
			
		||||
  #:use-module (gnu packages bison)
 | 
			
		||||
  #:use-module (gnu packages build-tools) ;for meson-0.55
 | 
			
		||||
  #:use-module (gnu packages calendar)
 | 
			
		||||
  #:use-module (gnu packages docbook)
 | 
			
		||||
  #:use-module (gnu packages documentation)
 | 
			
		||||
| 
						 | 
				
			
			@ -1342,7 +1343,7 @@ functionality to display information about the most commonly used services.")
 | 
			
		|||
(define-public wlroots
 | 
			
		||||
  (package
 | 
			
		||||
    (name "wlroots")
 | 
			
		||||
    (version "0.10.1")
 | 
			
		||||
    (version "0.12.0")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method git-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -1351,32 +1352,35 @@ functionality to display information about the most commonly used services.")
 | 
			
		|||
             (commit version)))
 | 
			
		||||
       (file-name (git-file-name name version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32 "0j2lh9vc92zhn44rjbia5aw3y1rpgfng1x1h17lcvj5m4i6vj0pc"))))
 | 
			
		||||
        (base32 "01j38lmgs2c6fq68v8b75pkilia2wsgzgp46ivfbi9hhx47kgcfn"))))
 | 
			
		||||
    (build-system meson-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:configure-flags '("-Dlogind-provider=elogind")
 | 
			
		||||
       #:meson ,meson-0.55
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (add-before 'configure 'hardcode-paths
 | 
			
		||||
           (lambda* (#:key inputs #:allow-other-keys)
 | 
			
		||||
             (substitute* "xwayland/xwayland.c"
 | 
			
		||||
             (substitute* "xwayland/server.c"
 | 
			
		||||
               (("Xwayland") (string-append (assoc-ref inputs
 | 
			
		||||
                                                       "xorg-server-xwayland")
 | 
			
		||||
                                            "/bin/Xwayland")))
 | 
			
		||||
             #t)))))
 | 
			
		||||
    (inputs `(("elogind" ,elogind)
 | 
			
		||||
              ("eudev" ,eudev)
 | 
			
		||||
              ("libinput" ,libinput)
 | 
			
		||||
              ("libxkbcommon" ,libxkbcommon)
 | 
			
		||||
              ("mesa" ,mesa)
 | 
			
		||||
              ("pixman" ,pixman)
 | 
			
		||||
              ("wayland" ,wayland)
 | 
			
		||||
              ("xorg-server-xwayland" ,xorg-server-xwayland)))
 | 
			
		||||
    (native-inputs `(("ffmpeg" ,ffmpeg)
 | 
			
		||||
                     ("libcap" ,libcap)
 | 
			
		||||
                     ("libpng" ,libpng)
 | 
			
		||||
                     ("pkg-config" ,pkg-config)
 | 
			
		||||
                     ("wayland-protocols" ,wayland-protocols)))
 | 
			
		||||
    (propagated-inputs
 | 
			
		||||
     `(;; As required by wlroots.pc.
 | 
			
		||||
       ("elogind" ,elogind)
 | 
			
		||||
       ("eudev" ,eudev)
 | 
			
		||||
       ("libinput" ,libinput)
 | 
			
		||||
       ("libxkbcommon" ,libxkbcommon)
 | 
			
		||||
       ("mesa" ,mesa)
 | 
			
		||||
       ("pixman" ,pixman)
 | 
			
		||||
       ("wayland" ,wayland)
 | 
			
		||||
       ("xcb-util-errors" ,xcb-util-errors)
 | 
			
		||||
       ("xcb-util-wm" ,xcb-util-wm)
 | 
			
		||||
       ("xorg-server-xwayland" ,xorg-server-xwayland)))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("pkg-config" ,pkg-config)
 | 
			
		||||
       ("wayland-protocols" ,wayland-protocols)))
 | 
			
		||||
    (home-page "https://github.com/swaywm/wlroots")
 | 
			
		||||
    (synopsis "Pluggable, composable, unopinionated modules for building a
 | 
			
		||||
Wayland compositor")
 | 
			
		||||
| 
						 | 
				
			
			@ -1387,9 +1391,7 @@ modules for building a Wayland compositor.")
 | 
			
		|||
(define-public sway
 | 
			
		||||
  (package
 | 
			
		||||
    (name "sway")
 | 
			
		||||
    ;; XXX When updating, check whether grim-revert-output-rotation.patch can
 | 
			
		||||
    ;; be dropped from the grim package.
 | 
			
		||||
    (version "1.4")
 | 
			
		||||
    (version "1.5.1")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method git-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -1398,7 +1400,7 @@ modules for building a Wayland compositor.")
 | 
			
		|||
             (commit version)))
 | 
			
		||||
       (file-name (git-file-name name version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32 "11qf89y3q92g696a6f4d23qb44gqixg6qxq740vwv2jw59ms34ja"))))
 | 
			
		||||
        (base32 "1xsa3h8zhf29p0mi90baxpr76jkd9pd1gr97ky8cnjbcs4isj9j0"))))
 | 
			
		||||
    (build-system meson-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:phases
 | 
			
		||||
| 
						 | 
				
			
			@ -1427,21 +1429,21 @@ modules for building a Wayland compositor.")
 | 
			
		|||
              ("swaybg" ,swaybg)
 | 
			
		||||
              ("wayland" ,wayland)
 | 
			
		||||
              ("wlroots" ,wlroots)))
 | 
			
		||||
    (native-inputs `(("libcap" ,libcap)
 | 
			
		||||
                     ("linux-pam" ,linux-pam)
 | 
			
		||||
                     ("mesa" ,mesa)
 | 
			
		||||
                     ("pkg-config" ,pkg-config)
 | 
			
		||||
                     ("scdoc" ,scdoc)
 | 
			
		||||
                     ("wayland-protocols" ,wayland-protocols)))
 | 
			
		||||
    (native-inputs
 | 
			
		||||
     `(("linux-pam" ,linux-pam)
 | 
			
		||||
       ("mesa" ,mesa)
 | 
			
		||||
       ("pkg-config" ,pkg-config)
 | 
			
		||||
       ("scdoc" ,scdoc)
 | 
			
		||||
       ("wayland-protocols" ,wayland-protocols)))
 | 
			
		||||
    (home-page "https://github.com/swaywm/sway")
 | 
			
		||||
    (synopsis "Wayland compositor compatible with i3")
 | 
			
		||||
    (description "Sway is a i3-compatible Wayland compositor.")
 | 
			
		||||
    (license license:expat)))       ; MIT license
 | 
			
		||||
    (license license:expat)))
 | 
			
		||||
 | 
			
		||||
(define-public swayidle
 | 
			
		||||
  (package
 | 
			
		||||
    (name "swayidle")
 | 
			
		||||
    (version "1.5")
 | 
			
		||||
    (version "1.6")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method git-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -1450,7 +1452,7 @@ modules for building a Wayland compositor.")
 | 
			
		|||
             (commit version)))
 | 
			
		||||
       (file-name (git-file-name name version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32 "05qi96j58xqxjiighay1d39rfanxcpn6vlynj23mb5dymxvlaq9n"))))
 | 
			
		||||
        (base32 "1nd3v8r9549lykdwh4krldfl59lzaspmmai5k1icy7dvi6kkr18r"))))
 | 
			
		||||
    (build-system meson-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:configure-flags '("-Dlogind-provider=elogind")))
 | 
			
		||||
| 
						 | 
				
			
			@ -1467,7 +1469,7 @@ modules for building a Wayland compositor.")
 | 
			
		|||
(define-public swaylock
 | 
			
		||||
  (package
 | 
			
		||||
    (name "swaylock")
 | 
			
		||||
    (version "1.4")
 | 
			
		||||
    (version "1.5")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method git-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -1476,7 +1478,7 @@ modules for building a Wayland compositor.")
 | 
			
		|||
             (commit version)))
 | 
			
		||||
       (file-name (git-file-name name version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32 "1ii9ql1mxkk2z69dv6bg1x22nl3a46iww764wqjiv78x08xpk982"))))
 | 
			
		||||
        (base32 "0r95p4w11dwm5ra614vddz83r8j7z6gd120z2vcchy7m9b0f15kf"))))
 | 
			
		||||
    (build-system meson-build-system)
 | 
			
		||||
    (inputs `(("cairo" ,cairo)
 | 
			
		||||
              ("gdk-pixbuf" ,gdk-pixbuf)
 | 
			
		||||
| 
						 | 
				
			
			@ -1558,7 +1560,7 @@ Wlroots based compositors.")
 | 
			
		|||
(define-public mako
 | 
			
		||||
  (package
 | 
			
		||||
    (name "mako")
 | 
			
		||||
    (version "1.4")
 | 
			
		||||
    (version "1.4.1")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method git-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -1567,7 +1569,7 @@ Wlroots based compositors.")
 | 
			
		|||
             (commit (string-append "v" version))))
 | 
			
		||||
       (file-name (git-file-name name version))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32 "11ymiq6cr2ma0iva1mqybn3j6k73bsc6lv6pcbdq7hkhd4f9b7j9"))))
 | 
			
		||||
        (base32 "0hwvibpnrximb628w9dsfjpi30b5jy7nfkm4d94z5vhp78p43vxh"))))
 | 
			
		||||
    (build-system meson-build-system)
 | 
			
		||||
    (inputs `(("cairo" ,cairo)
 | 
			
		||||
              ("elogind" ,elogind)
 | 
			
		||||
| 
						 | 
				
			
			@ -1608,10 +1610,10 @@ compositors that support the layer-shell protocol.")
 | 
			
		|||
              ("alexandria" ,sbcl-alexandria)))
 | 
			
		||||
    (outputs '("out" "lib"))
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:asd-system-name "stumpwm"
 | 
			
		||||
     '(#:asd-systems '("stumpwm")
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
         (add-after 'create-symlinks 'build-program
 | 
			
		||||
         (add-after 'create-asdf-configuration 'build-program
 | 
			
		||||
           (lambda* (#:key outputs #:allow-other-keys)
 | 
			
		||||
             (build-program
 | 
			
		||||
              (string-append (assoc-ref outputs "out") "/bin/stumpwm")
 | 
			
		||||
| 
						 | 
				
			
			@ -1679,20 +1681,15 @@ productive, customizable lisp based systems.")
 | 
			
		|||
                      (program (string-append out "/bin/stumpwm")))
 | 
			
		||||
                 (build-program program outputs
 | 
			
		||||
                                #:entry-program '((stumpwm:stumpwm) 0)
 | 
			
		||||
                                #:dependencies '("stumpwm"
 | 
			
		||||
                                                 ,@(@@ (gnu packages lisp-xyz) slynk-systems))
 | 
			
		||||
                                #:dependencies '("stumpwm" "slynk")
 | 
			
		||||
                                #:dependency-prefixes
 | 
			
		||||
                                (map (lambda (input) (assoc-ref inputs input))
 | 
			
		||||
                                     '("stumpwm" "slynk")))
 | 
			
		||||
                 ;; Remove unneeded file.
 | 
			
		||||
                 (delete-file (string-append out "/bin/stumpwm-exec.fasl"))
 | 
			
		||||
                 #t)))
 | 
			
		||||
           (delete 'copy-source)
 | 
			
		||||
           (delete 'build)
 | 
			
		||||
           (delete 'check)
 | 
			
		||||
           (delete 'create-asd-file)
 | 
			
		||||
           (delete 'cleanup)
 | 
			
		||||
           (delete 'create-symlinks)))))))
 | 
			
		||||
           (delete 'cleanup)))))))
 | 
			
		||||
 | 
			
		||||
(define stumpwm-contrib
 | 
			
		||||
  (let ((commit "920f8fc1488f7953f205e1dda4c2ecbbbda56d63")
 | 
			
		||||
| 
						 | 
				
			
			@ -1757,7 +1754,7 @@ productive, customizable lisp based systems.")
 | 
			
		|||
     `(("stumpwm" ,stumpwm "lib")
 | 
			
		||||
       ("clx-truetype" ,sbcl-clx-truetype)))
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:asd-system-name "ttf-fonts"
 | 
			
		||||
     '(#:asd-systems '("ttf-fonts")
 | 
			
		||||
       #:tests? #f
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
| 
						 | 
				
			
			@ -1774,7 +1771,7 @@ rendering.")
 | 
			
		|||
    (inherit stumpwm-contrib)
 | 
			
		||||
    (name "sbcl-stumpwm-pass")
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:asd-system-name "pass"
 | 
			
		||||
     '(#:asd-systems '("pass")
 | 
			
		||||
       #:tests? #f
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
| 
						 | 
				
			
			@ -1791,7 +1788,7 @@ password-store into StumpWM.")
 | 
			
		|||
    (inherit stumpwm-contrib)
 | 
			
		||||
    (name "sbcl-stumpwm-globalwindows")
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:asd-system-name "globalwindows"
 | 
			
		||||
     '(#:asd-systems '("globalwindows")
 | 
			
		||||
       #:tests? #f
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
| 
						 | 
				
			
			@ -1808,7 +1805,7 @@ windows in the current X session.")
 | 
			
		|||
    (inherit stumpwm-contrib)
 | 
			
		||||
    (name "sbcl-stumpwm-swm-gaps")
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:asd-system-name "swm-gaps"
 | 
			
		||||
     '(#:asd-systems '("swm-gaps")
 | 
			
		||||
       #:tests? #f
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
| 
						 | 
				
			
			@ -1825,7 +1822,7 @@ between windows.")
 | 
			
		|||
    (inherit stumpwm-contrib)
 | 
			
		||||
    (name "sbcl-stumpwm-net")
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:asd-system-name "net"
 | 
			
		||||
     '(#:asd-systems '("net")
 | 
			
		||||
       #:tests? #f
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
| 
						 | 
				
			
			@ -1843,7 +1840,7 @@ between windows.")
 | 
			
		|||
    (inherit stumpwm-contrib)
 | 
			
		||||
    (name "sbcl-stumpwm-wifi")
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:asd-system-name "wifi"
 | 
			
		||||
     '(#:asd-systems '("wifi")
 | 
			
		||||
       #:tests? #f
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
| 
						 | 
				
			
			@ -1861,7 +1858,7 @@ between windows.")
 | 
			
		|||
    (inherit stumpwm-contrib)
 | 
			
		||||
    (name "sbcl-stumpwm-stumptray")
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:asd-system-name "stumptray"
 | 
			
		||||
     '(#:asd-systems '("stumptray")
 | 
			
		||||
       #:tests? #f
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
| 
						 | 
				
			
			@ -1883,7 +1880,7 @@ between windows.")
 | 
			
		|||
    (inherit stumpwm-contrib)
 | 
			
		||||
    (name "sbcl-stumpwm-kbd-layouts")
 | 
			
		||||
    (arguments
 | 
			
		||||
     '(#:asd-system-name "kbd-layouts"
 | 
			
		||||
     '(#:asd-systems '("kbd-layouts")
 | 
			
		||||
       #:tests? #f
 | 
			
		||||
       #:phases
 | 
			
		||||
       (modify-phases %standard-phases
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -357,18 +357,19 @@ avoiding password prompts when X11 forwarding has already been setup.")
 | 
			
		|||
(define-public libxkbcommon
 | 
			
		||||
  (package
 | 
			
		||||
    (name "libxkbcommon")
 | 
			
		||||
    (version "0.10.0")
 | 
			
		||||
    (version "1.0.1")
 | 
			
		||||
    (source (origin
 | 
			
		||||
             (method url-fetch)
 | 
			
		||||
             (uri (string-append "https://xkbcommon.org/download/libxkbcommon-"
 | 
			
		||||
                                 version ".tar.xz"))
 | 
			
		||||
             (sha256
 | 
			
		||||
              (base32
 | 
			
		||||
               "1wmnl0hngn6vrqrya4r8hvimlkr4jag39yjprls4gyrqvh667hsp"))))
 | 
			
		||||
               "13bcdf2xpjxwbghas0cr448z89qqki2ssgfgswc257y9859v4s5b"))))
 | 
			
		||||
    (build-system meson-build-system)
 | 
			
		||||
    (inputs
 | 
			
		||||
     `(("libx11" ,libx11)
 | 
			
		||||
       ("libxcb" ,libxcb)
 | 
			
		||||
       ("libxml2" ,libxml2)
 | 
			
		||||
       ("wayland" ,wayland)
 | 
			
		||||
       ("wayland-protocols" ,wayland-protocols)
 | 
			
		||||
       ("xkeyboard-config" ,xkeyboard-config)))
 | 
			
		||||
| 
						 | 
				
			
			@ -534,7 +535,7 @@ rasterisation.")
 | 
			
		|||
(define-public libdrm
 | 
			
		||||
  (package
 | 
			
		||||
    (name "libdrm")
 | 
			
		||||
    (version "2.4.101")
 | 
			
		||||
    (version "2.4.102")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method url-fetch)
 | 
			
		||||
              (uri (string-append
 | 
			
		||||
| 
						 | 
				
			
			@ -542,8 +543,7 @@ rasterisation.")
 | 
			
		|||
                    version ".tar.xz"))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "19vqbhqljhln0lrpnv3s7y3lkhsdcp76dl8bhqj3cis9ism1pwyx"))
 | 
			
		||||
              (patches (search-patches "libdrm-realpath-virtio.patch"))))
 | 
			
		||||
                "0nx0bd9dhymdsd99v4ifib77yjirkvkxf5hzdkbr7qr8dhrzkjwb"))))
 | 
			
		||||
    (build-system meson-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:configure-flags
 | 
			
		||||
| 
						 | 
				
			
			@ -2528,7 +2528,7 @@ using @command{dmenu}.")
 | 
			
		|||
(define-public wofi
 | 
			
		||||
  (package
 | 
			
		||||
    (name "wofi")
 | 
			
		||||
    (version "1.1.2")
 | 
			
		||||
    (version "1.2.3")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method hg-fetch)
 | 
			
		||||
              (uri (hg-reference
 | 
			
		||||
| 
						 | 
				
			
			@ -2537,7 +2537,7 @@ using @command{dmenu}.")
 | 
			
		|||
              (file-name (git-file-name name version))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "086j5wshawjbwdmmmldivfagc2rr7g5a2gk11l0snqqslm294xsn"))))
 | 
			
		||||
                "0glpb2gf5n78s01z3rn614ak8ibxhfr824gy6xlljbxclgds264i"))))
 | 
			
		||||
    (build-system meson-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:glib-or-gtk? #t))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -86,14 +86,14 @@ periodic timestamps for seeking.")
 | 
			
		|||
(define libvorbis
 | 
			
		||||
  (package
 | 
			
		||||
   (name "libvorbis")
 | 
			
		||||
   (version "1.3.6")
 | 
			
		||||
   (version "1.3.7")
 | 
			
		||||
   (source (origin
 | 
			
		||||
            (method url-fetch)
 | 
			
		||||
            (uri (string-append "https://downloads.xiph.org/releases/vorbis/"
 | 
			
		||||
                                "libvorbis-" version ".tar.xz"))
 | 
			
		||||
            (sha256
 | 
			
		||||
             (base32
 | 
			
		||||
              "05dlzjkdpv46zb837wysxqyn8l636x3dw8v8ymlrwz2fg1dbn05g"))))
 | 
			
		||||
              "0jwmf87x5sdis64rbv0l87mdpah1rbilkkxszipbzg128f9w8g5k"))))
 | 
			
		||||
   (build-system gnu-build-system)
 | 
			
		||||
   (propagated-inputs `(("libogg" ,libogg)))
 | 
			
		||||
   (arguments `(#:configure-flags '("LDFLAGS=-lm"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2466,7 +2466,7 @@ XC-APPGROUP, XTEST.")
 | 
			
		|||
(define-public libevdev
 | 
			
		||||
  (package
 | 
			
		||||
    (name "libevdev")
 | 
			
		||||
    (version "1.8.0")
 | 
			
		||||
    (version "1.9.1")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -2474,21 +2474,10 @@ XC-APPGROUP, XTEST.")
 | 
			
		|||
                           name "-" version ".tar.xz"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "04a2klvii0in9ln8r85mk2cm73jq8ry2m3yzmf2z8xyjxzjcmlr0"))))
 | 
			
		||||
         "1jvsphdrs1i54ccjcn6ll26jy42am7h28lbsvwa6pmxgqm43qq7m"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (arguments
 | 
			
		||||
     `(#:configure-flags '("--disable-static")
 | 
			
		||||
       #:phases (modify-phases %standard-phases
 | 
			
		||||
                  (add-before 'configure 'pedantry
 | 
			
		||||
                    (lambda _
 | 
			
		||||
                      ;; XXX: libevdev includes kernel headers, which causes this
 | 
			
		||||
                      ;; compile test to fail with:
 | 
			
		||||
                      ;; ...-headers-4.14.67/include/asm-generic/posix_types.h:88:14:
 | 
			
		||||
                      ;;error: ISO C90 does not support ‘long long’ [-Werror=long-long]
 | 
			
		||||
                      (substitute* "test/Makefile.in"
 | 
			
		||||
                        (("-pedantic -Werror -std=c89")
 | 
			
		||||
                         "-pedantic -Werror -std=c99"))
 | 
			
		||||
                      #t)))))
 | 
			
		||||
     `(#:configure-flags '("--disable-static")))
 | 
			
		||||
    (native-inputs `(("python" ,python)))
 | 
			
		||||
    (home-page "https://www.freedesktop.org/wiki/Software/libevdev/")
 | 
			
		||||
    (synopsis "Wrapper library for evdev devices")
 | 
			
		||||
| 
						 | 
				
			
			@ -4032,7 +4021,7 @@ extension to the X11 protocol.  It includes:
 | 
			
		|||
(define-public xkeyboard-config
 | 
			
		||||
  (package
 | 
			
		||||
    (name "xkeyboard-config")
 | 
			
		||||
    (version "2.29")
 | 
			
		||||
    (version "2.31")
 | 
			
		||||
    (source
 | 
			
		||||
      (origin
 | 
			
		||||
        (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -4042,7 +4031,7 @@ extension to the X11 protocol.  It includes:
 | 
			
		|||
              ".tar.bz2"))
 | 
			
		||||
        (sha256
 | 
			
		||||
          (base32
 | 
			
		||||
            "00hqc8nykvy8c09b8vab64dcd0ij3n5klxjn6rl00q7hickpah8x"))))
 | 
			
		||||
            "18xddaxh83zm698syh50w983jg6b7b8zgv0dfaf7ha485hgihi6s"))))
 | 
			
		||||
    (build-system gnu-build-system)
 | 
			
		||||
    (inputs
 | 
			
		||||
      `(("libx11" ,libx11)
 | 
			
		||||
| 
						 | 
				
			
			@ -5320,8 +5309,7 @@ over Xlib, including:
 | 
			
		|||
(define-public xorg-server
 | 
			
		||||
  (package
 | 
			
		||||
    (name "xorg-server")
 | 
			
		||||
    (version "1.20.8")
 | 
			
		||||
    (replacement xorg-server/fixed)
 | 
			
		||||
    (version "1.20.9")
 | 
			
		||||
    (source
 | 
			
		||||
      (origin
 | 
			
		||||
        (method url-fetch)
 | 
			
		||||
| 
						 | 
				
			
			@ -5329,7 +5317,7 @@ over Xlib, including:
 | 
			
		|||
                            "xorg-server-" version ".tar.bz2"))
 | 
			
		||||
        (sha256
 | 
			
		||||
         (base32
 | 
			
		||||
          "0ih15m7gh1z1ly6z7g82bkni719yisqmbk61a1wgp82bxrmn8yyi"))
 | 
			
		||||
          "0w9mrnffvjgmwi50kln15i8rpdskxv97r78l75wlcmg4vzhg46g2"))
 | 
			
		||||
        (patches
 | 
			
		||||
         (list
 | 
			
		||||
          ;; See:
 | 
			
		||||
| 
						 | 
				
			
			@ -5445,35 +5433,13 @@ communicates with the user via graphical controls such as buttons and
 | 
			
		|||
draggable titlebars and borders.")
 | 
			
		||||
    (license license:x11)))
 | 
			
		||||
 | 
			
		||||
(define xorg-server/fixed  ; security fixes
 | 
			
		||||
  (package
 | 
			
		||||
    (inherit xorg-server)
 | 
			
		||||
    (version "1.20.9")
 | 
			
		||||
    (source
 | 
			
		||||
     (origin
 | 
			
		||||
       (inherit (package-source xorg-server))
 | 
			
		||||
       (uri (string-append "mirror://xorg/individual/xserver/"
 | 
			
		||||
                           "xorg-server-" version ".tar.bz2"))
 | 
			
		||||
       (sha256
 | 
			
		||||
        (base32
 | 
			
		||||
         "0w9mrnffvjgmwi50kln15i8rpdskxv97r78l75wlcmg4vzhg46g2"))))))
 | 
			
		||||
 | 
			
		||||
;; This package is intended to be used when building GTK+.
 | 
			
		||||
;; Note: It's currently marked as "hidden" to avoid having two non-eq?
 | 
			
		||||
;; packages with the same name and version.
 | 
			
		||||
;; TODO: Update this in the next rebuild cycle.
 | 
			
		||||
(define-public xorg-server-for-tests
 | 
			
		||||
  (hidden-package
 | 
			
		||||
   (package
 | 
			
		||||
     (inherit xorg-server)
 | 
			
		||||
     (version "1.20.7")
 | 
			
		||||
     (source (origin
 | 
			
		||||
               (inherit (package-source xorg-server))
 | 
			
		||||
               (uri (string-append "mirror://xorg/individual/xserver/"
 | 
			
		||||
                                   "xorg-server-" version ".tar.bz2"))
 | 
			
		||||
               (sha256
 | 
			
		||||
                (base32
 | 
			
		||||
                 "18bfl04ihw1jr3h0fs522nnxxq5ixjay77y9dcymnkzk23q8cndx")))))))
 | 
			
		||||
     (inherit xorg-server))))
 | 
			
		||||
 | 
			
		||||
(define-public xorg-server-xwayland
 | 
			
		||||
  (package/inherit xorg-server
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
;;; GNU Guix --- Functional package management for GNU
 | 
			
		||||
;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca>
 | 
			
		||||
;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
 | 
			
		||||
;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -54,12 +54,14 @@
 | 
			
		|||
  ;; Imported build-side modules
 | 
			
		||||
  `((guix build asdf-build-system)
 | 
			
		||||
    (guix build lisp-utils)
 | 
			
		||||
    (guix build union)
 | 
			
		||||
    ,@%gnu-build-system-modules))
 | 
			
		||||
 | 
			
		||||
(define %asdf-build-modules
 | 
			
		||||
  ;; Used (visible) build-side modules
 | 
			
		||||
  '((guix build asdf-build-system)
 | 
			
		||||
    (guix build utils)
 | 
			
		||||
    (guix build union)
 | 
			
		||||
    (guix build lisp-utils)))
 | 
			
		||||
 | 
			
		||||
(define (default-lisp implementation)
 | 
			
		||||
| 
						 | 
				
			
			@ -210,7 +212,7 @@ set up using CL source package conventions."
 | 
			
		|||
      (define base-arguments
 | 
			
		||||
        (if target-is-source?
 | 
			
		||||
            (strip-keyword-arguments
 | 
			
		||||
             '(#:tests? #:asd-file #:lisp #:asd-system-name #:test-asd-file)
 | 
			
		||||
             '(#:tests? #:asd-files #:lisp #:asd-systems #:test-asd-file)
 | 
			
		||||
             (package-arguments pkg))
 | 
			
		||||
            (package-arguments pkg)))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -278,8 +280,8 @@ set up using CL source package conventions."
 | 
			
		|||
  (lambda* (store name inputs
 | 
			
		||||
                  #:key source outputs
 | 
			
		||||
                  (tests? #t)
 | 
			
		||||
                  (asd-file #f)
 | 
			
		||||
                  (asd-system-name #f)
 | 
			
		||||
                  (asd-files ''())
 | 
			
		||||
                  (asd-systems ''())
 | 
			
		||||
                  (test-asd-file #f)
 | 
			
		||||
                  (phases '(@ (guix build asdf-build-system)
 | 
			
		||||
                              %standard-phases))
 | 
			
		||||
| 
						 | 
				
			
			@ -289,12 +291,17 @@ set up using CL source package conventions."
 | 
			
		|||
                  (imported-modules %asdf-build-system-modules)
 | 
			
		||||
                  (modules %asdf-build-modules))
 | 
			
		||||
 | 
			
		||||
    (define system-name
 | 
			
		||||
      (or asd-system-name
 | 
			
		||||
          (string-drop
 | 
			
		||||
           ;; NAME is the value returned from `package-full-name'.
 | 
			
		||||
           (hyphen-separated-name->name+version name)
 | 
			
		||||
           (1+ (string-length lisp-type))))) ; drop the "<lisp>-" prefix.
 | 
			
		||||
    ;; FIXME: The definition of 'systems' is pretty hacky.
 | 
			
		||||
    ;; Is there a more elegant way to do it?
 | 
			
		||||
    (define systems
 | 
			
		||||
      (if (null? (cadr asd-systems))
 | 
			
		||||
          `(quote
 | 
			
		||||
            ,(list
 | 
			
		||||
              (string-drop
 | 
			
		||||
               ;; NAME is the value returned from `package-full-name'.
 | 
			
		||||
               (hyphen-separated-name->name+version name)
 | 
			
		||||
               (1+ (string-length lisp-type))))) ; drop the "<lisp>-" prefix.
 | 
			
		||||
          asd-systems))
 | 
			
		||||
 | 
			
		||||
    (define builder
 | 
			
		||||
      `(begin
 | 
			
		||||
| 
						 | 
				
			
			@ -309,8 +316,8 @@ set up using CL source package conventions."
 | 
			
		|||
                                    (derivation->output-path source))
 | 
			
		||||
                                   ((source) source)
 | 
			
		||||
                                   (source source))
 | 
			
		||||
                       #:asd-file ,(or asd-file (string-append system-name ".asd"))
 | 
			
		||||
                       #:asd-system-name ,system-name
 | 
			
		||||
                       #:asd-files ,asd-files
 | 
			
		||||
                       #:asd-systems ,systems
 | 
			
		||||
                       #:test-asd-file ,test-asd-file
 | 
			
		||||
                       #:system ,system
 | 
			
		||||
                       #:tests? ,tests?
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
;;; GNU Guix --- Functional package management for GNU
 | 
			
		||||
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
 | 
			
		||||
;;; Copyright © 2020 Timothy Sample <samplet@ngyro.com>
 | 
			
		||||
;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -121,7 +122,9 @@ version REVISION."
 | 
			
		|||
                        (haddock-flags ''())
 | 
			
		||||
                        (tests? #t)
 | 
			
		||||
                        (test-target "test")
 | 
			
		||||
                        (parallel-build? #t)
 | 
			
		||||
                        ;; FIXME: Parallel builds lead to indeterministic
 | 
			
		||||
                        ;; results, see <http://issues.guix.gnu.org/43843#3>.
 | 
			
		||||
                        (parallel-build? #f)
 | 
			
		||||
                        (configure-flags ''())
 | 
			
		||||
                        (extra-directories ''())
 | 
			
		||||
                        (phases '(@ (guix build haskell-build-system)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,6 @@
 | 
			
		|||
;;; GNU Guix --- Functional package management for GNU
 | 
			
		||||
;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca>
 | 
			
		||||
;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -19,6 +20,7 @@
 | 
			
		|||
(define-module (guix build asdf-build-system)
 | 
			
		||||
  #:use-module ((guix build gnu-build-system) #:prefix gnu:)
 | 
			
		||||
  #:use-module (guix build utils)
 | 
			
		||||
  #:use-module (guix build union)
 | 
			
		||||
  #:use-module (guix build lisp-utils)
 | 
			
		||||
  #:use-module (srfi srfi-1)
 | 
			
		||||
  #:use-module (srfi srfi-11)
 | 
			
		||||
| 
						 | 
				
			
			@ -41,14 +43,22 @@
 | 
			
		|||
;;
 | 
			
		||||
;; Code:
 | 
			
		||||
 | 
			
		||||
(define %object-prefix "/lib")
 | 
			
		||||
(define %object-prefix "/lib/common-lisp")
 | 
			
		||||
 | 
			
		||||
(define (%lisp-source-install-prefix)
 | 
			
		||||
  (string-append %source-install-prefix "/" (%lisp-type) "-source"))
 | 
			
		||||
  (string-append %source-install-prefix "/" (%lisp-type)))
 | 
			
		||||
 | 
			
		||||
(define %system-install-prefix
 | 
			
		||||
  (string-append %source-install-prefix "/systems"))
 | 
			
		||||
 | 
			
		||||
(define (main-system-name output)
 | 
			
		||||
  (let ((package-name (package-name->name+version
 | 
			
		||||
                       (strip-store-file-name output)))
 | 
			
		||||
        (lisp-prefix (string-append (%lisp-type) "-")))
 | 
			
		||||
    (if (string-prefix? lisp-prefix package-name)
 | 
			
		||||
        (string-drop package-name (string-length lisp-prefix))
 | 
			
		||||
        package-name)))
 | 
			
		||||
 | 
			
		||||
(define (lisp-source-directory output name)
 | 
			
		||||
  (string-append output (%lisp-source-install-prefix) "/" name))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -71,6 +81,13 @@ to it's binary output."
 | 
			
		|||
(define (source-asd-file output name asd-file)
 | 
			
		||||
  (string-append (lisp-source-directory output name) "/" asd-file))
 | 
			
		||||
 | 
			
		||||
(define (find-asd-files output name asd-files)
 | 
			
		||||
  (if (null? asd-files)
 | 
			
		||||
      (find-files (lisp-source-directory output name) "\\.asd$")
 | 
			
		||||
      (map (lambda (asd-file)
 | 
			
		||||
             (source-asd-file output name asd-file))
 | 
			
		||||
           asd-files)))
 | 
			
		||||
 | 
			
		||||
(define (copy-files-to-output out name)
 | 
			
		||||
  "Copy all files from the current directory to OUT.  Create an extra link to
 | 
			
		||||
any system-defining files in the source to a convenient location.  This is
 | 
			
		||||
| 
						 | 
				
			
			@ -107,9 +124,10 @@ if it's present in the native-inputs."
 | 
			
		|||
    (package-name->name+version
 | 
			
		||||
     (strip-store-file-name output)))
 | 
			
		||||
  (define (no-prefix pkgname)
 | 
			
		||||
    (if (string-index pkgname #\-)
 | 
			
		||||
        (string-drop pkgname (1+ (string-index pkgname #\-)))
 | 
			
		||||
        pkgname))
 | 
			
		||||
    (let ((index (string-index pkgname #\-)))
 | 
			
		||||
      (if index
 | 
			
		||||
          (string-drop pkgname (1+ index))
 | 
			
		||||
          pkgname)))
 | 
			
		||||
  (define parent
 | 
			
		||||
    (match (assoc package-name inputs
 | 
			
		||||
                  (lambda (key alist-car)
 | 
			
		||||
| 
						 | 
				
			
			@ -125,9 +143,10 @@ if it's present in the native-inputs."
 | 
			
		|||
  (define parent-source
 | 
			
		||||
    (and parent
 | 
			
		||||
         (string-append parent "/share/common-lisp/"
 | 
			
		||||
                        (string-take parent-name
 | 
			
		||||
                                     (string-index parent-name #\-))
 | 
			
		||||
                        "-source")))
 | 
			
		||||
                        (let ((index (string-index parent-name #\-)))
 | 
			
		||||
                          (if index
 | 
			
		||||
                              (string-take parent-name index)
 | 
			
		||||
                              parent-name)))))
 | 
			
		||||
 | 
			
		||||
  (define (first-subdirectory directory) ; From gnu-build-system.
 | 
			
		||||
    "Return the file name of the first sub-directory of DIRECTORY."
 | 
			
		||||
| 
						 | 
				
			
			@ -146,122 +165,83 @@ if it's present in the native-inputs."
 | 
			
		|||
  (with-directory-excursion source-directory
 | 
			
		||||
    (copy-files-to-output output package-name)))
 | 
			
		||||
 | 
			
		||||
(define* (copy-source #:key outputs asd-system-name #:allow-other-keys)
 | 
			
		||||
(define* (copy-source #:key outputs asd-systems #:allow-other-keys)
 | 
			
		||||
  "Copy the source to the library output."
 | 
			
		||||
  (let* ((out (library-output outputs))
 | 
			
		||||
         (install-path (string-append out %source-install-prefix)))
 | 
			
		||||
    (copy-files-to-output out asd-system-name)
 | 
			
		||||
         (install-path (string-append out %source-install-prefix))
 | 
			
		||||
         (system-name (main-system-name out)))
 | 
			
		||||
    (copy-files-to-output out system-name)
 | 
			
		||||
    ;; Hide the files from asdf
 | 
			
		||||
    (with-directory-excursion install-path
 | 
			
		||||
      (rename-file "source" (string-append (%lisp-type) "-source"))
 | 
			
		||||
      (rename-file "source" (%lisp-type))
 | 
			
		||||
      (delete-file-recursively "systems")))
 | 
			
		||||
  #t)
 | 
			
		||||
 | 
			
		||||
(define* (build #:key outputs inputs asd-file asd-system-name
 | 
			
		||||
(define* (configure #:key inputs #:allow-other-keys)
 | 
			
		||||
  ;; Create a directory having the configuration files for
 | 
			
		||||
  ;; all the dependencies in 'etc/common-lisp/'.
 | 
			
		||||
  (let ((out (string-append (getcwd) "/.cl-union")))
 | 
			
		||||
    (match inputs
 | 
			
		||||
      (((name . directories) ...)
 | 
			
		||||
       (union-build out (filter directory-exists? directories)
 | 
			
		||||
                    #:create-all-directories? #t
 | 
			
		||||
                    #:log-port (%make-void-port "w"))))
 | 
			
		||||
    (setenv "CL_UNION" out)
 | 
			
		||||
    (setenv "XDG_CONFIG_DIRS" (string-append out "/etc")))
 | 
			
		||||
  #t)
 | 
			
		||||
 | 
			
		||||
(define* (build #:key outputs inputs asd-files asd-systems
 | 
			
		||||
                #:allow-other-keys)
 | 
			
		||||
  "Compile the system."
 | 
			
		||||
  (let* ((out (library-output outputs))
 | 
			
		||||
         (source-path (lisp-source-directory out asd-system-name))
 | 
			
		||||
         (system-name (main-system-name out))
 | 
			
		||||
         (source-path (string-append out (%lisp-source-install-prefix)))
 | 
			
		||||
         (translations (wrap-output-translations
 | 
			
		||||
                        `(,(output-translation source-path
 | 
			
		||||
                                               out))))
 | 
			
		||||
         (asd-file (source-asd-file out asd-system-name asd-file)))
 | 
			
		||||
 | 
			
		||||
         (asd-files (find-asd-files out system-name asd-files)))
 | 
			
		||||
    (setenv "ASDF_OUTPUT_TRANSLATIONS"
 | 
			
		||||
            (replace-escaped-macros (format #f "~S" translations)))
 | 
			
		||||
 | 
			
		||||
    (setenv "HOME" out) ; ecl's asdf sometimes wants to create $HOME/.cache
 | 
			
		||||
 | 
			
		||||
    (compile-system asd-system-name asd-file)
 | 
			
		||||
 | 
			
		||||
    ;; As above, ecl will sometimes create this even though it doesn't use it
 | 
			
		||||
 | 
			
		||||
    (let ((cache-directory (string-append out "/.cache")))
 | 
			
		||||
      (when (directory-exists? cache-directory)
 | 
			
		||||
        (delete-file-recursively cache-directory))))
 | 
			
		||||
    (compile-systems asd-systems asd-files))
 | 
			
		||||
  #t)
 | 
			
		||||
 | 
			
		||||
(define* (check #:key tests? outputs inputs asd-file asd-system-name
 | 
			
		||||
(define* (check #:key tests? outputs inputs asd-files asd-systems
 | 
			
		||||
                test-asd-file
 | 
			
		||||
                #:allow-other-keys)
 | 
			
		||||
  "Test the system."
 | 
			
		||||
  (let* ((out (library-output outputs))
 | 
			
		||||
         (asd-file (source-asd-file out asd-system-name asd-file))
 | 
			
		||||
         (system-name (main-system-name out))
 | 
			
		||||
         (asd-files (find-asd-files out system-name asd-files))
 | 
			
		||||
         (test-asd-file
 | 
			
		||||
          (and=> test-asd-file
 | 
			
		||||
                 (cut source-asd-file out asd-system-name <>))))
 | 
			
		||||
                 (cut source-asd-file out system-name <>))))
 | 
			
		||||
    (if tests?
 | 
			
		||||
        (test-system asd-system-name asd-file test-asd-file)
 | 
			
		||||
        (test-system (first asd-systems) asd-files test-asd-file)
 | 
			
		||||
        (format #t "test suite not run~%")))
 | 
			
		||||
  #t)
 | 
			
		||||
 | 
			
		||||
(define* (create-asd-file #:key outputs
 | 
			
		||||
                          inputs
 | 
			
		||||
                          asd-file
 | 
			
		||||
                          asd-system-name
 | 
			
		||||
                          #:allow-other-keys)
 | 
			
		||||
  "Create a system definition file for the built system."
 | 
			
		||||
  (let*-values (((out) (library-output outputs))
 | 
			
		||||
                ((_ version) (package-name->name+version
 | 
			
		||||
                              (strip-store-file-name out)))
 | 
			
		||||
                ((new-asd-file) (string-append
 | 
			
		||||
                                 (library-directory out)
 | 
			
		||||
                                 "/" (normalize-string asd-system-name)
 | 
			
		||||
                                 ".asd")))
 | 
			
		||||
 | 
			
		||||
    (make-asd-file new-asd-file
 | 
			
		||||
                   #:system asd-system-name
 | 
			
		||||
                   #:version version
 | 
			
		||||
                   #:inputs inputs
 | 
			
		||||
                   #:system-asd-file asd-file))
 | 
			
		||||
  #t)
 | 
			
		||||
 | 
			
		||||
(define* (symlink-asd-files #:key outputs #:allow-other-keys)
 | 
			
		||||
  "Create an extra reference to the system in a convenient location."
 | 
			
		||||
  (let* ((out (library-output outputs)))
 | 
			
		||||
    (for-each
 | 
			
		||||
     (lambda (asd-file)
 | 
			
		||||
       (receive (new-asd-file asd-file-directory)
 | 
			
		||||
           (bundle-asd-file out asd-file)
 | 
			
		||||
         (mkdir-p asd-file-directory)
 | 
			
		||||
         (symlink asd-file new-asd-file)
 | 
			
		||||
         ;; Update the source registry for future phases which might want to
 | 
			
		||||
         ;; use the newly compiled system.
 | 
			
		||||
         (prepend-to-source-registry
 | 
			
		||||
          (string-append asd-file-directory "/"))))
 | 
			
		||||
 | 
			
		||||
     (find-files (string-append out %object-prefix) "\\.asd$")))
 | 
			
		||||
  #t)
 | 
			
		||||
(define* (create-asdf-configuration #:key inputs outputs #:allow-other-keys)
 | 
			
		||||
  "Create the ASDF configuration files for the built systems."
 | 
			
		||||
  (let* ((system-name (main-system-name (assoc-ref outputs "out")))
 | 
			
		||||
         (out (library-output outputs))
 | 
			
		||||
         (conf-dir (string-append out "/etc/common-lisp"))
 | 
			
		||||
         (deps-conf-dir (string-append (getenv "CL_UNION") "/etc/common-lisp"))
 | 
			
		||||
         (source-dir (lisp-source-directory out system-name))
 | 
			
		||||
         (lib-dir (string-append (library-directory out) "/" system-name)))
 | 
			
		||||
    (make-asdf-configuration system-name conf-dir deps-conf-dir
 | 
			
		||||
                             source-dir lib-dir)
 | 
			
		||||
    #t))
 | 
			
		||||
 | 
			
		||||
(define* (cleanup-files #:key outputs
 | 
			
		||||
                        #:allow-other-keys)
 | 
			
		||||
  "Remove any compiled files which are not a part of the final bundle."
 | 
			
		||||
  (let ((out (library-output outputs)))
 | 
			
		||||
    (match (%lisp-type)
 | 
			
		||||
      ("sbcl"
 | 
			
		||||
       (for-each
 | 
			
		||||
        (lambda (file)
 | 
			
		||||
          (unless (string-suffix? "--system.fasl" file)
 | 
			
		||||
            (delete-file file)))
 | 
			
		||||
        (find-files out "\\.fasl$")))
 | 
			
		||||
      ("ecl"
 | 
			
		||||
       (for-each delete-file
 | 
			
		||||
                 (append (find-files out "\\.fas$")
 | 
			
		||||
                         (find-files out "\\.o$")))))
 | 
			
		||||
 | 
			
		||||
    (with-directory-excursion (library-directory out)
 | 
			
		||||
      (for-each
 | 
			
		||||
       (lambda (file)
 | 
			
		||||
         (rename-file file
 | 
			
		||||
                      (string-append "./" (basename file))))
 | 
			
		||||
       (find-files "."))
 | 
			
		||||
      (for-each delete-file-recursively
 | 
			
		||||
                (scandir "."
 | 
			
		||||
                         (lambda (file)
 | 
			
		||||
                           (and
 | 
			
		||||
                            (directory-exists? file)
 | 
			
		||||
                            (string<> "." file)
 | 
			
		||||
                            (string<> ".." file)))))))
 | 
			
		||||
  (let* ((out (library-output outputs))
 | 
			
		||||
         (cache-directory (string-append out "/.cache")))
 | 
			
		||||
    ;; Remove the cache directory in case the lisp implementation wrote
 | 
			
		||||
    ;; something in there when compiling or testing a system.
 | 
			
		||||
    (when (directory-exists? cache-directory)
 | 
			
		||||
      (delete-file-recursively cache-directory)))
 | 
			
		||||
  #t)
 | 
			
		||||
 | 
			
		||||
(define* (strip #:rest args)
 | 
			
		||||
| 
						 | 
				
			
			@ -280,15 +260,14 @@ if it's present in the native-inputs."
 | 
			
		|||
(define %standard-phases
 | 
			
		||||
  (modify-phases gnu:%standard-phases
 | 
			
		||||
    (delete 'bootstrap)
 | 
			
		||||
    (delete 'configure)
 | 
			
		||||
    (delete 'install)
 | 
			
		||||
    (replace 'configure configure)
 | 
			
		||||
    (add-before 'configure 'copy-source copy-source)
 | 
			
		||||
    (replace 'build build)
 | 
			
		||||
    (add-before 'build 'copy-source copy-source)
 | 
			
		||||
    (replace 'check check)
 | 
			
		||||
    (replace 'strip strip)
 | 
			
		||||
    (add-after 'check 'create-asd-file create-asd-file)
 | 
			
		||||
    (add-after 'create-asd-file 'cleanup cleanup-files)
 | 
			
		||||
    (add-after 'cleanup 'create-symlinks symlink-asd-files)))
 | 
			
		||||
    (add-after 'check 'create-asdf-configuration create-asdf-configuration)
 | 
			
		||||
    (add-after 'create-asdf-configuration 'cleanup cleanup-files)
 | 
			
		||||
    (delete 'install)
 | 
			
		||||
    (replace 'strip strip)))
 | 
			
		||||
 | 
			
		||||
(define* (asdf-build #:key inputs
 | 
			
		||||
                     (phases %standard-phases)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,6 +4,7 @@
 | 
			
		|||
;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com>
 | 
			
		||||
;;; Copyright © 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 | 
			
		||||
;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -148,14 +149,17 @@ directory = '" port)
 | 
			
		|||
 | 
			
		||||
(define* (build #:key
 | 
			
		||||
                skip-build?
 | 
			
		||||
                features
 | 
			
		||||
                (features '())
 | 
			
		||||
                (cargo-build-flags '("--release"))
 | 
			
		||||
                #:allow-other-keys)
 | 
			
		||||
  "Build a given Cargo package."
 | 
			
		||||
  (or skip-build?
 | 
			
		||||
      (apply invoke "cargo" "build"
 | 
			
		||||
             "--features" (string-join features)
 | 
			
		||||
             cargo-build-flags)))
 | 
			
		||||
      (apply invoke
 | 
			
		||||
             `("cargo" "build"
 | 
			
		||||
               ,@(if (null? features)
 | 
			
		||||
                     '()
 | 
			
		||||
                     `("--features" ,(string-join features)))
 | 
			
		||||
               ,@cargo-build-flags))))
 | 
			
		||||
 | 
			
		||||
(define* (check #:key
 | 
			
		||||
                tests?
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,7 +2,7 @@
 | 
			
		|||
;;; Copyright © 2016 David Craven <david@craven.ch>
 | 
			
		||||
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 | 
			
		||||
;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com>
 | 
			
		||||
;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
;;; Copyright © 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -23,6 +23,7 @@
 | 
			
		|||
  #:use-module (guix build utils)
 | 
			
		||||
  #:use-module (ice-9 popen)
 | 
			
		||||
  #:use-module (ice-9 rdelim)
 | 
			
		||||
  #:use-module (ice-9 threads)
 | 
			
		||||
  #:export (generate-checksums
 | 
			
		||||
            generate-all-checksums))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -70,7 +71,7 @@ the same directory."
 | 
			
		|||
        (display "}" port)))))
 | 
			
		||||
 | 
			
		||||
(define (generate-all-checksums dir-name)
 | 
			
		||||
  (for-each
 | 
			
		||||
  (n-par-for-each (parallel-job-count)
 | 
			
		||||
    (lambda (filename)
 | 
			
		||||
      (let* ((dir (dirname filename))
 | 
			
		||||
             (checksum-file (string-append dir "/.cargo-checksum.json")))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,6 @@
 | 
			
		|||
;;; GNU Guix --- Functional package management for GNU
 | 
			
		||||
;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca>
 | 
			
		||||
;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
 | 
			
		||||
;;;
 | 
			
		||||
;;; This file is part of GNU Guix.
 | 
			
		||||
;;;
 | 
			
		||||
| 
						 | 
				
			
			@ -28,19 +29,17 @@
 | 
			
		|||
            %lisp-type
 | 
			
		||||
            %source-install-prefix
 | 
			
		||||
            lisp-eval-program
 | 
			
		||||
            compile-system
 | 
			
		||||
            compile-systems
 | 
			
		||||
            test-system
 | 
			
		||||
            replace-escaped-macros
 | 
			
		||||
            generate-executable-wrapper-system
 | 
			
		||||
            generate-executable-entry-point
 | 
			
		||||
            generate-executable-for-system
 | 
			
		||||
            %bundle-install-prefix
 | 
			
		||||
            bundle-asd-file
 | 
			
		||||
            wrap-output-translations
 | 
			
		||||
            prepend-to-source-registry
 | 
			
		||||
            build-program
 | 
			
		||||
            build-image
 | 
			
		||||
            make-asd-file
 | 
			
		||||
            make-asdf-configuration
 | 
			
		||||
            valid-char-set
 | 
			
		||||
            normalize-string
 | 
			
		||||
            library-output))
 | 
			
		||||
| 
						 | 
				
			
			@ -65,9 +64,6 @@
 | 
			
		|||
;; link farm for system definition (.asd) files.
 | 
			
		||||
(define %source-install-prefix "/share/common-lisp")
 | 
			
		||||
 | 
			
		||||
(define (%bundle-install-prefix)
 | 
			
		||||
  (string-append %source-install-prefix "/" (%lisp-type) "-bundle-systems"))
 | 
			
		||||
 | 
			
		||||
(define (library-output outputs)
 | 
			
		||||
  "If a `lib' output exists, build things there. Otherwise use `out'."
 | 
			
		||||
  (or (assoc-ref outputs "lib") (assoc-ref outputs "out")))
 | 
			
		||||
| 
						 | 
				
			
			@ -81,38 +77,6 @@
 | 
			
		|||
  "Replace invalid characters in STR with a hyphen."
 | 
			
		||||
  (string-join (string-tokenize str valid-char-set) "-"))
 | 
			
		||||
 | 
			
		||||
(define (normalize-dependency dependency)
 | 
			
		||||
  "Normalize the name of DEPENDENCY.  Handles dependency definitions of the
 | 
			
		||||
dependency-def form described by
 | 
			
		||||
<https://common-lisp.net/project/asdf/asdf.html#The-defsystem-grammar>.
 | 
			
		||||
Assume that any symbols in DEPENDENCY will be in upper-case."
 | 
			
		||||
  (match dependency
 | 
			
		||||
    ((':VERSION name rest ...)
 | 
			
		||||
     `(:version ,(normalize-string name) ,@rest))
 | 
			
		||||
    ((':FEATURE feature-specification dependency-specification)
 | 
			
		||||
     `(:feature
 | 
			
		||||
       ,feature-specification
 | 
			
		||||
       ,(normalize-dependency dependency-specification)))
 | 
			
		||||
    ((? string? name) (normalize-string name))
 | 
			
		||||
    (require-specification require-specification)))
 | 
			
		||||
 | 
			
		||||
(define (inputs->asd-file-map inputs)
 | 
			
		||||
  "Produce a hash table of the form (system . asd-file), where system is the
 | 
			
		||||
name of an ASD system, and asd-file is the full path to its definition."
 | 
			
		||||
  (alist->hash-table
 | 
			
		||||
   (filter-map
 | 
			
		||||
    (match-lambda
 | 
			
		||||
      ((_ . path)
 | 
			
		||||
       (let ((prefix (string-append path (%bundle-install-prefix))))
 | 
			
		||||
         (and (directory-exists? prefix)
 | 
			
		||||
              (match (find-files prefix "\\.asd$")
 | 
			
		||||
                ((asd-file)
 | 
			
		||||
                 (cons
 | 
			
		||||
                  (string-drop-right (basename asd-file) 4) ; drop ".asd"
 | 
			
		||||
                  asd-file))
 | 
			
		||||
                (_ #f))))))
 | 
			
		||||
    inputs)))
 | 
			
		||||
 | 
			
		||||
(define (wrap-output-translations translations)
 | 
			
		||||
  `(:output-translations
 | 
			
		||||
    ,@translations
 | 
			
		||||
| 
						 | 
				
			
			@ -143,70 +107,26 @@ with PROGRAM."
 | 
			
		|||
             "--eval" "(quit)"))
 | 
			
		||||
    (_ (error "The LISP provided is not supported at this time."))))
 | 
			
		||||
 | 
			
		||||
(define (asdf-load-all systems)
 | 
			
		||||
  (map (lambda (system)
 | 
			
		||||
         `(asdf:load-system ,system))
 | 
			
		||||
       systems))
 | 
			
		||||
 | 
			
		||||
(define (compile-system system asd-file)
 | 
			
		||||
  "Use a lisp implementation to compile SYSTEM using asdf.  Load ASD-FILE
 | 
			
		||||
first."
 | 
			
		||||
(define (compile-systems systems asd-files)
 | 
			
		||||
  "Use a lisp implementation to compile the SYSTEMS using asdf.
 | 
			
		||||
Load ASD-FILES first."
 | 
			
		||||
  (lisp-eval-program
 | 
			
		||||
   `((require :asdf)
 | 
			
		||||
     (asdf:load-asd (truename ,asd-file) :name ,(normalize-string system))
 | 
			
		||||
     (asdf:operate 'asdf:compile-bundle-op ,system))))
 | 
			
		||||
     ,@(map (lambda (asd-file)
 | 
			
		||||
              `(asdf:load-asd (truename ,asd-file)))
 | 
			
		||||
            asd-files)
 | 
			
		||||
     ,@(map (lambda (system)
 | 
			
		||||
              `(asdf:compile-system ,system))
 | 
			
		||||
            systems))))
 | 
			
		||||
 | 
			
		||||
(define (system-dependencies system asd-file)
 | 
			
		||||
  "Return the dependencies of SYSTEM, as reported by
 | 
			
		||||
asdf:system-depends-on.  First load the system's ASD-FILE."
 | 
			
		||||
  (define deps-file ".deps.sexp")
 | 
			
		||||
  (define program
 | 
			
		||||
    `((require :asdf)
 | 
			
		||||
      (asdf:load-asd (truename ,asd-file) :name ,(normalize-string system))
 | 
			
		||||
      (with-open-file
 | 
			
		||||
       (stream ,deps-file :direction :output)
 | 
			
		||||
       (format stream
 | 
			
		||||
               "~s~%"
 | 
			
		||||
               (asdf:system-depends-on
 | 
			
		||||
                (asdf:find-system ,system))))))
 | 
			
		||||
 | 
			
		||||
  (dynamic-wind
 | 
			
		||||
    (lambda _
 | 
			
		||||
      (lisp-eval-program program))
 | 
			
		||||
    (lambda _
 | 
			
		||||
      (call-with-input-file deps-file read))
 | 
			
		||||
    (lambda _
 | 
			
		||||
      (when (file-exists? deps-file)
 | 
			
		||||
        (delete-file deps-file)))))
 | 
			
		||||
 | 
			
		||||
(define (compiled-system system)
 | 
			
		||||
  (let ((system (basename system))) ; this is how asdf handles slashes
 | 
			
		||||
    (match (%lisp-type)
 | 
			
		||||
      ("sbcl" (string-append system "--system"))
 | 
			
		||||
      (_ system))))
 | 
			
		||||
 | 
			
		||||
(define* (generate-system-definition system
 | 
			
		||||
                                     #:key version dependencies component?)
 | 
			
		||||
  `(asdf:defsystem
 | 
			
		||||
    ,(normalize-string system)
 | 
			
		||||
    ,@(if component?
 | 
			
		||||
          '(:class asdf/bundle:prebuilt-system)
 | 
			
		||||
          '())
 | 
			
		||||
    :version ,version
 | 
			
		||||
    :depends-on ,dependencies
 | 
			
		||||
    ,@(if component?
 | 
			
		||||
          `(:components ((:compiled-file ,(compiled-system system))))
 | 
			
		||||
          '())
 | 
			
		||||
    ,@(if (string=? "ecl" (%lisp-type))
 | 
			
		||||
          `(:lib ,(string-append system ".a"))
 | 
			
		||||
          '())))
 | 
			
		||||
 | 
			
		||||
(define (test-system system asd-file test-asd-file)
 | 
			
		||||
  "Use a lisp implementation to test SYSTEM using asdf.  Load ASD-FILE first.
 | 
			
		||||
(define (test-system system asd-files test-asd-file)
 | 
			
		||||
  "Use a lisp implementation to test SYSTEM using asdf.  Load ASD-FILES first.
 | 
			
		||||
Also load TEST-ASD-FILE if necessary."
 | 
			
		||||
  (lisp-eval-program
 | 
			
		||||
   `((require :asdf)
 | 
			
		||||
     (asdf:load-asd (truename ,asd-file) :name ,(normalize-string system))
 | 
			
		||||
     ,@(map (lambda (asd-file)
 | 
			
		||||
              `(asdf:load-asd (truename ,asd-file)))
 | 
			
		||||
            asd-files)
 | 
			
		||||
     ,@(if test-asd-file
 | 
			
		||||
           `((asdf:load-asd (truename ,test-asd-file)))
 | 
			
		||||
           ;; Try some likely files.
 | 
			
		||||
| 
						 | 
				
			
			@ -237,6 +157,7 @@ created a \"SYSTEM-exec\" system which contains the entry program."
 | 
			
		|||
                                       :executable t
 | 
			
		||||
                                       :compression t))
 | 
			
		||||
          '())
 | 
			
		||||
     (asdf:load-asd (truename ,(string-append system "-exec.asd")))
 | 
			
		||||
     (asdf:operate ',type ,(string-append system "-exec")))))
 | 
			
		||||
 | 
			
		||||
(define (generate-executable-wrapper-system system dependencies)
 | 
			
		||||
| 
						 | 
				
			
			@ -271,79 +192,30 @@ ENTRY-PROGRAM for SYSTEM within the current directory."
 | 
			
		|||
                      (declare (ignorable arguments))
 | 
			
		||||
                      ,@entry-program))))))))
 | 
			
		||||
 | 
			
		||||
(define (generate-dependency-links registry system)
 | 
			
		||||
  "Creates a program which populates asdf's source registry from REGISTRY, an
 | 
			
		||||
alist of dependency names to corresponding asd files.  This allows the system
 | 
			
		||||
to locate its dependent systems."
 | 
			
		||||
  `(progn
 | 
			
		||||
    (asdf/source-registry:ensure-source-registry)
 | 
			
		||||
    ,@(map (match-lambda
 | 
			
		||||
             ((name . asd-file)
 | 
			
		||||
              `(setf
 | 
			
		||||
                (gethash ,name
 | 
			
		||||
                         asdf/source-registry:*source-registry*)
 | 
			
		||||
                ,(string->symbol "#p")
 | 
			
		||||
                ,asd-file)))
 | 
			
		||||
           registry)))
 | 
			
		||||
(define (make-asdf-configuration name conf-dir deps-conf-dir source-dir lib-dir)
 | 
			
		||||
  (let ((registry-dir (string-append
 | 
			
		||||
                       conf-dir "/source-registry.conf.d"))
 | 
			
		||||
        (translations-dir (string-append
 | 
			
		||||
                           conf-dir "/asdf-output-translations.conf.d"))
 | 
			
		||||
        (deps-registry-dir (string-append
 | 
			
		||||
                            deps-conf-dir "/source-registry.conf.d"))
 | 
			
		||||
        (deps-translations-dir (string-append
 | 
			
		||||
                                deps-conf-dir
 | 
			
		||||
                                "/asdf-output-translations.conf.d")))
 | 
			
		||||
    (mkdir-p registry-dir)
 | 
			
		||||
    (when (directory-exists? deps-registry-dir)
 | 
			
		||||
      (copy-recursively deps-registry-dir registry-dir))
 | 
			
		||||
    (with-output-to-file (string-append registry-dir "/50-" name ".conf")
 | 
			
		||||
      (lambda _
 | 
			
		||||
        (format #t "~y~%" `(:tree ,source-dir))))
 | 
			
		||||
 | 
			
		||||
(define* (make-asd-file asd-file
 | 
			
		||||
                        #:key system version inputs
 | 
			
		||||
                        (system-asd-file #f))
 | 
			
		||||
  "Create an ASD-FILE for SYSTEM@VERSION, appending a program to allow the
 | 
			
		||||
system to find its dependencies, as described by GENERATE-DEPENDENCY-LINKS."
 | 
			
		||||
  (define dependencies
 | 
			
		||||
    (let ((deps
 | 
			
		||||
           (system-dependencies system system-asd-file)))
 | 
			
		||||
      (if (eq? 'NIL deps)
 | 
			
		||||
          '()
 | 
			
		||||
          (map normalize-dependency deps))))
 | 
			
		||||
 | 
			
		||||
  (define lisp-input-map
 | 
			
		||||
    (inputs->asd-file-map inputs))
 | 
			
		||||
 | 
			
		||||
  (define dependency-name
 | 
			
		||||
    (match-lambda
 | 
			
		||||
      ((':version name _ ...) name)
 | 
			
		||||
      ((':feature _ dependency-specification)
 | 
			
		||||
       (dependency-name dependency-specification))
 | 
			
		||||
      ((? string? name) name)
 | 
			
		||||
      (_ #f)))
 | 
			
		||||
 | 
			
		||||
  (define registry
 | 
			
		||||
    (filter-map hash-get-handle
 | 
			
		||||
                (make-list (length dependencies)
 | 
			
		||||
                           lisp-input-map)
 | 
			
		||||
                (map dependency-name dependencies)))
 | 
			
		||||
 | 
			
		||||
  ;; Ensure directory exists, which might not be the case for an .asd without components.
 | 
			
		||||
  (mkdir-p (dirname asd-file))
 | 
			
		||||
  (call-with-output-file asd-file
 | 
			
		||||
    (lambda (port)
 | 
			
		||||
      (display
 | 
			
		||||
       (replace-escaped-macros
 | 
			
		||||
        (format #f "~y~%~y~%"
 | 
			
		||||
                (generate-system-definition
 | 
			
		||||
                 system
 | 
			
		||||
                 #:version version
 | 
			
		||||
                 #:dependencies dependencies
 | 
			
		||||
                 ;; Some .asd don't have components, and thus they don't generate any .fasl.
 | 
			
		||||
                 #:component? (match (%lisp-type)
 | 
			
		||||
                                ("sbcl" (pair? (find-files (dirname asd-file)
 | 
			
		||||
                                                           "--system\\.fasl$")))
 | 
			
		||||
                                ("ecl" (pair? (find-files (dirname asd-file)
 | 
			
		||||
                                                          "\\.fasb$")))
 | 
			
		||||
                                (_ (error "The LISP provided is not supported at this time."))))
 | 
			
		||||
                (generate-dependency-links registry system)))
 | 
			
		||||
       port))))
 | 
			
		||||
 | 
			
		||||
(define (bundle-asd-file output-path original-asd-file)
 | 
			
		||||
  "Find the symlinked bundle file for ORIGINAL-ASD-FILE by looking in
 | 
			
		||||
OUTPUT-PATH/share/common-lisp/LISP-bundle-systems/<system>.asd.  Returns two
 | 
			
		||||
values: the asd file itself and the directory in which it resides."
 | 
			
		||||
  (let ((bundle-asd-path (string-append output-path
 | 
			
		||||
                                        (%bundle-install-prefix))))
 | 
			
		||||
    (values (string-append bundle-asd-path "/" (basename original-asd-file))
 | 
			
		||||
            bundle-asd-path)))
 | 
			
		||||
    (mkdir-p translations-dir)
 | 
			
		||||
    (when (directory-exists? deps-translations-dir)
 | 
			
		||||
      (copy-recursively deps-translations-dir translations-dir))
 | 
			
		||||
    (with-output-to-file (string-append translations-dir "/50-" name ".conf")
 | 
			
		||||
      (lambda _
 | 
			
		||||
        (format #t "~y~%" `((,source-dir :**/ :*.*.*)
 | 
			
		||||
                            (,lib-dir :**/ :*.*.*)))))))
 | 
			
		||||
 | 
			
		||||
(define (replace-escaped-macros string)
 | 
			
		||||
  "Replace simple lisp forms that the guile writer escapes, for example by
 | 
			
		||||
| 
						 | 
				
			
			@ -368,6 +240,7 @@ will run ENTRY-PROGRAM, a list of Common Lisp expressions in which `arguments'
 | 
			
		|||
has been bound to the command-line arguments which were passed.  Link in any
 | 
			
		||||
asd files from DEPENDENCY-PREFIXES to ensure references to those libraries are
 | 
			
		||||
retained."
 | 
			
		||||
  (setenv "XDG_CONFIG_DIRS" (string-append (library-output outputs) "/etc"))
 | 
			
		||||
  (generate-executable program
 | 
			
		||||
                       #:dependencies dependencies
 | 
			
		||||
                       #:dependency-prefixes dependency-prefixes
 | 
			
		||||
| 
						 | 
				
			
			@ -388,6 +261,7 @@ retained."
 | 
			
		|||
  "Generate an image, possibly standalone, which contains all DEPENDENCIES,
 | 
			
		||||
placing the result in IMAGE.image.  Link in any asd files from
 | 
			
		||||
DEPENDENCY-PREFIXES to ensure references to those libraries are retained."
 | 
			
		||||
  (setenv "XDG_CONFIG_DIRS" (string-append (library-output outputs) "/etc"))
 | 
			
		||||
  (generate-executable image
 | 
			
		||||
                       #:dependencies dependencies
 | 
			
		||||
                       #:dependency-prefixes dependency-prefixes
 | 
			
		||||
| 
						 | 
				
			
			@ -416,20 +290,15 @@ references to those libraries are retained."
 | 
			
		|||
    (mkdir-p bin-directory)
 | 
			
		||||
    (with-directory-excursion bin-directory
 | 
			
		||||
      (generate-executable-wrapper-system name dependencies)
 | 
			
		||||
      (generate-executable-entry-point name entry-program))
 | 
			
		||||
 | 
			
		||||
    (prepend-to-source-registry
 | 
			
		||||
     (string-append bin-directory "/"))
 | 
			
		||||
 | 
			
		||||
    (setenv "ASDF_OUTPUT_TRANSLATIONS"
 | 
			
		||||
            (replace-escaped-macros
 | 
			
		||||
             (format
 | 
			
		||||
              #f "~S"
 | 
			
		||||
              (wrap-output-translations
 | 
			
		||||
               `(((,bin-directory :**/ :*.*.*)
 | 
			
		||||
                  (,bin-directory :**/ :*.*.*)))))))
 | 
			
		||||
 | 
			
		||||
    (generate-executable-for-system type name #:compress? compress?)
 | 
			
		||||
      (generate-executable-entry-point name entry-program)
 | 
			
		||||
      (setenv "ASDF_OUTPUT_TRANSLATIONS"
 | 
			
		||||
              (replace-escaped-macros
 | 
			
		||||
               (format
 | 
			
		||||
                #f "~S"
 | 
			
		||||
                (wrap-output-translations
 | 
			
		||||
                 `(((,bin-directory :**/ :*.*.*)
 | 
			
		||||
                    (,bin-directory :**/ :*.*.*)))))))
 | 
			
		||||
      (generate-executable-for-system type name #:compress? compress?))
 | 
			
		||||
 | 
			
		||||
    (let* ((after-store-prefix-index
 | 
			
		||||
            (string-index out-file #\/
 | 
			
		||||
| 
						 | 
				
			
			@ -445,9 +314,11 @@ references to those libraries are retained."
 | 
			
		|||
            (symlink asd-file
 | 
			
		||||
                     (string-append hidden-asd-links
 | 
			
		||||
                                    "/" (basename asd-file))))
 | 
			
		||||
          (find-files (string-append path (%bundle-install-prefix))
 | 
			
		||||
          (find-files (string-append path %source-install-prefix "/"
 | 
			
		||||
                                     (%lisp-type))
 | 
			
		||||
                      "\\.asd$")))
 | 
			
		||||
       dependency-prefixes))
 | 
			
		||||
 | 
			
		||||
    (delete-file (string-append bin-directory "/" name "-exec.asd"))
 | 
			
		||||
    (delete-file (string-append bin-directory "/" name "-exec.lisp"))))
 | 
			
		||||
    (delete-file (string-append bin-directory "/" name "-exec.lisp"))
 | 
			
		||||
    (delete-file (string-append bin-directory "/" name "-exec.fasl"))))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue