me
/
guix
Archived
1
0
Fork 0

Merge branch 'staging' into wip-lisp

master
Guillaume Le Vaillant 2020-09-23 14:50:19 +02:00
commit 2374443561
No known key found for this signature in database
GPG Key ID: 6BE8208ADF21FE3F
53 changed files with 1531 additions and 399 deletions

View File

@ -894,7 +894,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 \
@ -1155,8 +1154,11 @@ 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-apache-ivy-port-to-latest-bouncycastle.patch \
%D%/packages/patches/java-commons-collections-fix-java8.patch \
%D%/packages/patches/java-jeromq-fix-tests.patch \
@ -1219,7 +1221,6 @@ dist_patch_DATA = \
%D%/packages/patches/libbase-use-own-logging.patch \
%D%/packages/patches/libbonobo-activation-test-race.patch \
%D%/packages/patches/libcanberra-sound-theme-freedesktop.patch \
%D%/packages/patches/libdrm-realpath-virtio.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 \

View File

@ -1103,7 +1103,7 @@ interractive 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")

View File

@ -15881,7 +15881,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")

View File

@ -37,6 +37,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)
@ -124,12 +125,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
@ -144,7 +153,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)

View File

@ -76,7 +76,7 @@
(define-public nss-certs
(package
(name "nss-certs")
(version "3.52.1")
(version "3.55")
(source (origin
(method url-fetch)
(uri (let ((version-with-underscores
@ -87,7 +87,7 @@
"nss-" version ".tar.gz")))
(sha256
(base32
"0y4jb9095f7bbgw7d7kvzm4c3g4p5i6y68fwhb8wlkpb7b1imj5w"))))
"0100hm7n1xrp144xy665z46s0wf1jpkqkncc6bk2w22snhyjwsgw"))))
(build-system gnu-build-system)
(outputs '("out"))
(native-inputs

View File

@ -135,7 +135,7 @@ like Jasmine or Mocha.")
(define-public check
(package
(name "check")
(version "0.14.0")
(version "0.15.1")
(source
(origin
(method url-fetch)
@ -143,7 +143,7 @@ like Jasmine or Mocha.")
version "/check-" version ".tar.gz"))
(sha256
(base32
"02zkfiyklckmivrfvdsrlzvzphkdsgjrz3igncw05dv5pshhq3xx"))))
"0080qvd7gj1c7j79v9wfiwkp259gcs0xi45b8a0ds3jwjxj3vk61"))))
(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.

View File

@ -1139,7 +1139,7 @@ organized in a hash table or B+ tree.")
(native-inputs `(("bc" ,bc)
("bash:include" ,bash "include")
("check" ,check)
("check" ,check-0.14)
("libuuid" ,util-linux)
("pkg-config" ,pkg-config)))

View File

@ -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)))

View File

@ -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

View File

@ -80,7 +80,7 @@
"0ajwc8lmay5ai7nsrp778g393h0p4h98p4c22gic2w61fgkcd5fy"))))
(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

View File

@ -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

View File

@ -286,14 +286,14 @@ freedesktop.org project.")
;; Updating this will rebuild over 700 packages through libinput-minimal.
(package
(name "libinput")
(version "1.15.5")
(version "1.15.6")
(source (origin
(method url-fetch)
(uri (string-append "https://freedesktop.org/software/libinput/"
"libinput-" version ".tar.xz"))
(sha256
(base32
"15ww4jl3lcxyi8m8idg8canklbqv729gnwpkz7r98c1w8a7zq3m9"))))
"073z61dw46cyq0635a5n1mw7hw4qdgr58gbwwb3ds5v3d8hymvdf"))))
(build-system meson-build-system)
(arguments
`(#:configure-flags '("-Ddocumentation=false")
@ -738,14 +738,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))
@ -774,7 +774,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
@ -782,7 +782,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)))

View File

@ -40,17 +40,18 @@
#:use-module (guix build-system gnu)
#:use-module (srfi srfi-1))
(define-public gdb-9.1
(define-public gdb
(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")
@ -127,11 +122,18 @@ the program is running to try to fix bugs. It can be used to debug programs
written in C, C++, Ada, Objective-C, Pascal and more.")
(license gpl3+)))
(define-public gdb-minimal
(package/inherit
gdb
(name "gdb-minimal")
(inputs (fold alist-delete (package-inputs gdb)
'("libxml2" "ncurses" "python-wrapper" "source-highlight")))))
;; This version of GDB is required by some of the Rust compilers, see
;; <https://bugs.gnu.org/37810>.
(define-public gdb-8.2
(package
(inherit gdb-9.1)
(inherit gdb)
(version "8.2.1")
(source (origin
(method url-fetch)
@ -140,28 +142,3 @@ written in C, C++, Ada, Objective-C, Pascal and more.")
(sha256
(base32
"00i27xqawjv282a07i73lp1l02n0a3ywzhykma75qg500wll6sha"))))))
(define-public gdb
;; This is the fixed version that packages depend on. Update it rarely
;; enough to avoid massive rebuilds.
gdb-9.1)
(define-public gdb-9.2
(package
(inherit gdb)
(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
"0mf5fn8v937qwnal4ykn3ji1y2sxk0fa1yfqi679hxmpg6pdf31n"))))))
(define-public gdb-minimal
(package/inherit
gdb-9.2
(name "gdb-minimal")
(inputs (fold alist-delete (package-inputs gdb)
'("libxml2" "ncurses" "python-wrapper" "source-highlight")))))

View File

@ -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.4")
(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"))
"1zlrczmmkcy42w332rfmlicihlnrxmkrnkpb21sl98725cf2f038"))
(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")

View File

@ -4201,17 +4201,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.
@ -4230,10 +4229,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
@ -7844,7 +7850,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)

View File

@ -824,7 +824,7 @@ application suites.")
(define-public gtk+
(package (inherit gtk+-2)
(name "gtk+")
(version "3.24.20")
(version "3.24.21")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
@ -832,7 +832,7 @@ application suites.")
name "-" version ".tar.xz"))
(sha256
(base32
"1wqxkd3xnqwihcawncp9mkf9bv5a5fg5i4ahm6klpl782vvnkb1d"))
"0llgq2adzn9p3bfq9rv2dhscmvzs35jp3glrfvy3vs1mrpknmsmf"))
(patches (search-patches "gtk3-respect-GUIX_GTK3_PATH.patch"
"gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch"))))
(propagated-inputs
@ -1613,7 +1613,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)))

View File

@ -501,12 +501,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

View File

@ -975,7 +975,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
@ -983,8 +983,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

View File

@ -48,14 +48,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-24")
(source (origin
(method url-fetch)
(uri (string-append "mirror://imagemagick/ImageMagick-"
version ".tar.xz"))
(sha256
(base32
"1b67rrppvm04aqr76qky5h2a0j2d161h8kwa04fv611w5xwandr2"))))
"1qxp8fpinh45y4fzdpqvwv2kgr8bh7dqfl08h9n24yadi5nxcqbk"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--with-frozenpaths" "--without-gcc-arch"

View File

@ -290,7 +290,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 +307,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 +715,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 +782,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 +792,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)

View File

@ -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)

View File

@ -1271,7 +1271,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)
@ -1280,7 +1280,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)
@ -2023,7 +2023,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
@ -2031,7 +2031,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="
@ -2047,14 +2047,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.

View File

@ -536,7 +536,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)

View File

@ -1213,7 +1213,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")

View File

@ -35,7 +35,7 @@
(define-public nspr
(package
(name "nspr")
(version "4.25")
(version "4.27")
(source (origin
(method url-fetch)
(uri (string-append
@ -43,7 +43,7 @@
version "/src/nspr-" version ".tar.gz"))
(sha256
(base32
"0mjjk2b7ika3v4y99cnaqz3z1iq1a50r1psn9i3s87gr46z0khqb"))))
"16z82qc1l4cqn66p59ai0dy9ycllywn4jlxhip1a605bns952jbd"))))
(build-system gnu-build-system)
(native-inputs
`(("perl" ,perl)))
@ -72,7 +72,7 @@ in the Mozilla clients.")
(define-public nss
(package
(name "nss")
(version "3.52.1")
(version "3.55")
(source (origin
(method url-fetch)
(uri (let ((version-with-underscores
@ -83,7 +83,7 @@ in the Mozilla clients.")
"nss-" version ".tar.gz")))
(sha256
(base32
"0y4jb9095f7bbgw7d7kvzm4c3g4p5i6y68fwhb8wlkpb7b1imj5w"))
"0100hm7n1xrp144xy665z46s0wf1jpkqkncc6bk2w22snhyjwsgw"))
;; Create nss.pc and nss-config.
(patches (search-patches "nss-pkgconfig.patch"
"nss-increase-test-timeout.patch"))
@ -108,7 +108,8 @@ in the Mozilla clients.")
(string-append "NSPR_INCLUDE_DIR=" nspr "/include/nspr")
;; Add $out/lib/nss to RPATH.
(string-append "RPATH=" rpath)
(string-append "LDFLAGS=" rpath)))
(string-append "LDFLAGS=" rpath)
"all"))
#:modules ((guix build gnu-build-system)
(guix build utils)
(ice-9 ftw)
@ -138,7 +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")))
(invoke "faketime" "2020-07-01" "./nss/tests/all.sh")))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@ -160,15 +161,6 @@ in the Mozilla clients.")
(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)

View File

@ -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)

View File

@ -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(

View 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

View 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

View 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

View File

@ -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:

View File

@ -217,9 +217,12 @@ Later adapted to apply cleanly to nss-3.21.
+
--- nss-3.21/nss/manifest.mn
+++ nss-3.21/nss/manifest.mn
@@ -10,4 +10,4 @@
@@ -10,7 +10,7 @@
RELEASE = nss
-DIRS = coreconf lib cmd cpputil gtests
+DIRS = coreconf lib cmd cpputil gtests config
lib: coreconf
cmd: lib

View File

@ -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

View File

@ -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/")

View File

@ -224,7 +224,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)

View File

@ -497,14 +497,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.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "cryptography_vectors" version))
(sha256
(base32
"1d4iykcv7cn9j399hczlxm5pzxmqy6d80h3j16dkjwlmv3293b4r"))))
"0fa26ggksyhknb43cja1g0jwp35qkdbavivdq6yynj1igd2z1vsj"))))
(build-system python-build-system)
(home-page "https://github.com/pyca/cryptography")
(synopsis "Test vectors for the cryptography package")
@ -519,14 +519,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.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "cryptography" version))
(sha256
(base32
"0af25w5mkd6vwns3r6ai1w5ip9xp0ms9s261zzssbpadzdr05hx0"))))
"0lr06a9317n2iwfqwz9mpalqm99acqwk1478arvyj1jj0ay4v4lf"))))
(build-system python-build-system)
(inputs
`(("openssl" ,openssl)))
@ -741,7 +741,7 @@ ECB and OFB).")
(define-public python-asn1crypto
(package
(name "python-asn1crypto")
(version "0.24.0")
(version "1.3.0")
(source
(origin
(method git-fetch)
@ -751,8 +751,13 @@ ECB and OFB).")
(file-name (git-file-name name version))
(sha256
(base32
"10lai2cs5mnz3gpaffbw1m7b885ls8328q5wxm35vfmcip1f0xmb"))))
"0c7rj3hs9fplrj4bv63ppvnnr8fay727w3a9zx3jfkz63wklvm1w"))))
(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

View File

@ -1882,13 +1882,13 @@ WebSocket usage in Python programs.")
(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)
@ -2113,7 +2113,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/")
@ -2122,6 +2121,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.
@ -2137,7 +2137,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

View File

@ -3472,14 +3472,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.
@ -3488,10 +3488,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
@ -4168,14 +4179,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
@ -9126,14 +9137,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")
@ -10988,14 +10999,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
@ -16425,14 +16436,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")

View File

@ -346,7 +346,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 +358,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 +372,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
@ -477,6 +479,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 +606,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 +2763,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

View File

@ -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>
@ -421,7 +421,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)
@ -756,6 +758,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)
@ -798,7 +803,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
@ -827,11 +831,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)
@ -883,6 +882,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))))))))
@ -1145,14 +1146,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
@ -1195,9 +1195,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))
@ -1252,8 +1249,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)))))))))
@ -1322,4 +1317,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)

View File

@ -197,14 +197,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"

View File

@ -48,14 +48,14 @@
(define-public python-sphinx
(package
(name "python-sphinx")
(version "2.3.1")
(version "3.1.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "Sphinx" version))
(sha256
(base32
"19a28nsb0w4bs6k8rdfyk6vzrcwdpvhs2wq77rgpmww59yvndrz6"))))
"1zd8l4dh0v4p8m7s51xr001k09cq2023dd0953ygw7xa76dypnmr"))))
(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

View File

@ -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

View File

@ -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 '())))

View File

@ -1318,7 +1318,7 @@ libebml is a C++ library to read and write EBML files.")
(define-public libva
(package
(name "libva")
(version "2.7.1")
(version "2.8.0")
(source
(origin
(method url-fetch)
@ -1330,7 +1330,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 "1hqy9pnz5jh3dz5r59358n9p2vfy8aj59wpwrj4qz43qs9215fxd"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
@ -3029,7 +3029,7 @@ and JACK.")
(define-public libvdpau
(package
(name "libvdpau")
(version "1.3")
(version "1.4")
(source
(origin
(method git-fetch)
@ -3039,7 +3039,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)))

View File

@ -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)

View File

@ -1272,15 +1272,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)
@ -1502,15 +1502,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
@ -4986,7 +4989,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")
@ -5027,7 +5030,7 @@ written in C. It is developed as part of the NetSurf project.")
(define-public libcyaml
(package
(name "libcyaml")
(version "1.0.1")
(version "1.1.0")
(source
(origin
(method git-fetch)
@ -5036,7 +5039,7 @@ written in C. It is developed as part of the NetSurf project.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0h5ydyqdl8kzh526np3jsi0pm7ks16nh1hjkdsjcd6pacw7y6i6z"))))
(base32 "0428p0rwq71nhh5nzcbapsbrjxa0x5l6h6ns32nxv7j624f0zd93"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags

View File

@ -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)

View File

@ -497,7 +497,7 @@ rasterisation.")
(define-public libdrm
(package
(name "libdrm")
(version "2.4.101")
(version "2.4.102")
(source (origin
(method url-fetch)
(uri (string-append
@ -505,8 +505,7 @@ rasterisation.")
version ".tar.xz"))
(sha256
(base32
"19vqbhqljhln0lrpnv3s7y3lkhsdcp76dl8bhqj3cis9ism1pwyx"))
(patches (search-patches "libdrm-realpath-virtio.patch"))))
"0nx0bd9dhymdsd99v4ifib77yjirkvkxf5hzdkbr7qr8dhrzkjwb"))))
(build-system meson-build-system)
(arguments
`(#:configure-flags

View File

@ -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"

View File

@ -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.30")
(source
(origin
(method url-fetch)
@ -4042,7 +4031,7 @@ extension to the X11 protocol. It includes:
".tar.bz2"))
(sha256
(base32
"00hqc8nykvy8c09b8vab64dcd0ij3n5klxjn6rl00q7hickpah8x"))))
"1m4pnzlcdl6d1p7hdccpi0605zkikind00kjc5bx4gk3gd7m4nh9"))))
(build-system gnu-build-system)
(inputs
`(("libx11" ,libx11)
@ -5461,19 +5450,10 @@ draggable titlebars and borders.")
;; 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

View File

@ -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")))