From 5e25a69e6e3733ad8845d1b187940877deba7750 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Fri, 13 May 2022 14:03:41 -0400 Subject: gnu: mozjs: Cleanup to only keep the last version. * gnu/packages/gnuzilla.scm (mozjs): Preserve only the metadata and otherwise update fields to use those of mozjs-78. [arguments]: Use gexps. [phases]: Delete trailing #t. [native-inputs]: Use new style. (mozjs-38, mozjs-52, mozjs-60, mozjs-78): Delete variables. * gnu/packages/patches/mozjs17-aarch64-support.patch * gnu/packages/patches/mozjs24-aarch64-support.patch * gnu/packages/patches/mozjs38-pkg-config-version.patch * gnu/packages/patches/mozjs38-shell-version.patch * gnu/packages/patches/mozjs38-tracelogger.patch * gnu/packages/patches/mozjs38-version-detection.patch * gnu/packages/patches/mozjs60-riscv64-support.patch: Delete patches. * gnu/local.mk (dist_patch_DATA): De-register them. * gnu/packages/games.scm (0ad): Adjust accordingly. * gnu/packages/gnome.scm (gjs): Likewise. * gnu/packages/polkit.scm (polkit-mozjs): Likewise. --- gnu/local.mk | 7 - gnu/packages/games.scm | 2 +- gnu/packages/gnome.scm | 2 +- gnu/packages/gnuzilla.scm | 567 ++++--------------- gnu/packages/patches/mozjs17-aarch64-support.patch | 60 -- gnu/packages/patches/mozjs24-aarch64-support.patch | 21 - .../patches/mozjs38-pkg-config-version.patch | 24 - gnu/packages/patches/mozjs38-shell-version.patch | 67 --- gnu/packages/patches/mozjs38-tracelogger.patch | 608 --------------------- .../patches/mozjs38-version-detection.patch | 180 ------ gnu/packages/patches/mozjs60-riscv64-support.patch | 122 ----- gnu/packages/polkit.scm | 2 +- 12 files changed, 114 insertions(+), 1548 deletions(-) delete mode 100644 gnu/packages/patches/mozjs17-aarch64-support.patch delete mode 100644 gnu/packages/patches/mozjs24-aarch64-support.patch delete mode 100644 gnu/packages/patches/mozjs38-pkg-config-version.patch delete mode 100644 gnu/packages/patches/mozjs38-shell-version.patch delete mode 100644 gnu/packages/patches/mozjs38-tracelogger.patch delete mode 100644 gnu/packages/patches/mozjs38-version-detection.patch delete mode 100644 gnu/packages/patches/mozjs60-riscv64-support.patch diff --git a/gnu/local.mk b/gnu/local.mk index 83ee7e2930..947669459e 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1509,13 +1509,6 @@ dist_patch_DATA = \ %D%/packages/patches/monero-use-system-miniupnpc.patch \ %D%/packages/patches/mono-mdoc-timestamping.patch \ %D%/packages/patches/mosaicatcher-unbundle-htslib.patch \ - %D%/packages/patches/mozjs17-aarch64-support.patch \ - %D%/packages/patches/mozjs24-aarch64-support.patch \ - %D%/packages/patches/mozjs38-pkg-config-version.patch \ - %D%/packages/patches/mozjs38-shell-version.patch \ - %D%/packages/patches/mozjs38-tracelogger.patch \ - %D%/packages/patches/mozjs38-version-detection.patch \ - %D%/packages/patches/mozjs60-riscv64-support.patch \ %D%/packages/patches/mrrescue-support-love-11.patch \ %D%/packages/patches/mtools-mformat-uninitialized.patch \ %D%/packages/patches/mumps-build-parallelism.patch \ diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 76f1e5df86..05bcdc9b98 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -6690,7 +6690,7 @@ fight against their plot and save his fellow rabbits from slavery.") libxcursor libxml2 miniupnpc - mozjs-78 + mozjs openal sdl2 wxwidgets diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index f33f3a2632..15d0d5f6a0 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -7203,7 +7203,7 @@ configuration program to choose applications starting on login.") ("xvfb" ,xorg-server-for-tests))) (propagated-inputs ;; These are all in the Requires.private field of gjs-1.0.pc. - (list cairo gobject-introspection mozjs-78)) + (list cairo gobject-introspection mozjs)) (inputs (list gtk+ readline)) (synopsis "Javascript bindings for GNOME") diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 8f1e8fe647..0c64c44adf 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -96,356 +96,6 @@ (define-public mozjs (package (name "mozjs") - (version "17.0.0") - (source (origin - (method url-fetch) - (uri (string-append - "https://ftp.mozilla.org/pub/mozilla.org/js/" - name version ".tar.gz")) - (sha256 - (base32 - "1fig2wf4f10v43mqx67y68z6h77sy900d1w0pz9qarrqx57rc7ij")) - (patches (search-patches "mozjs17-aarch64-support.patch")) - (modules '((guix build utils))) - (snippet - ;; Fix incompatibility with Perl 5.22+. - '(begin - (substitute* '("js/src/config/milestone.pl") - (("defined\\(@TEMPLATE_FILE)") "@TEMPLATE_FILE")) - #t)))) - (build-system gnu-build-system) - (native-inputs - `(("perl" ,perl) - ("pkg-config" ,pkg-config) - ("python" ,python-2))) - (propagated-inputs - (list nspr)) ; in the Requires.private field of mozjs-17.0.pc - (inputs - (list zlib)) - (arguments - `(;; XXX: parallel build fails, lacking: - ;; mkdir -p "system_wrapper_js/" - #:parallel-build? #f - #:make-flags '("CXXFLAGS=-fpermissive") - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'delete-timedout-test - ;; This test times out on slower hardware. - (lambda _ - (delete-file "js/src/jit-test/tests/basic/bug698584.js") - #t)) - (add-before 'configure 'chdir - (lambda _ - (chdir "js/src") - #t)) - (replace 'configure - ;; configure fails if it is followed by SHELL and CONFIG_SHELL - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (setenv "SHELL" (which "sh")) - (setenv "CONFIG_SHELL" (which "sh")) - (invoke "./configure" (string-append "--prefix=" out) - ,@(if (string=? "aarch64-linux" - (%current-system)) - '("--host=aarch64-unknown-linux-gnu") - '())))))))) - (home-page - "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey") - (synopsis "Mozilla javascript engine") - (description "SpiderMonkey is Mozilla's JavaScript engine written -in C/C++.") - (license license:mpl2.0))) ; and others for some files - -(define-public mozjs-24 - (package (inherit mozjs) - (name "mozjs") - (version "24.2.0") - (source (origin - (method url-fetch) - (uri (string-append - "https://ftp.mozilla.org/pub/mozilla.org/js/" - name "-" version ".tar.bz2")) - (sha256 - (base32 - "1n1phk8r3l8icqrrap4czplnylawa0ddc2cc4cgdz46x3lrkybz6")) - (modules '((guix build utils))) - (patches (search-patches "mozjs24-aarch64-support.patch")) - (snippet - ;; Fix incompatibility with Perl 5.22+. - '(begin - (substitute* '("js/src/config/milestone.pl") - (("defined\\(@TEMPLATE_FILE)") "@TEMPLATE_FILE")) - #t)))) - (arguments - (substitute-keyword-arguments (package-arguments mozjs) - ((#:phases phases) - `(modify-phases ,phases - (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - ;; configure fails if it is followed by SHELL and CONFIG_SHELL - (setenv "SHELL" (which "sh")) - (setenv "CONFIG_SHELL" (which "sh")) - (invoke "./configure" - (string-append "--prefix=" out) - "--with-system-nspr" - "--enable-system-ffi" - "--enable-threadsafe" - ,@(if (string=? "aarch64-linux" - (%current-system)) - '("--host=aarch64-unknown-linux-gnu") - '()))))))))) - (inputs - (list libffi zlib)))) - -(define-public mozjs-38 - (package - (inherit mozjs) - (name "mozjs") - (version "38.2.1.rc0") - (source (origin - (method url-fetch) - (uri (string-append - "https://anduin.linuxfromscratch.org/BLFS/mozjs/" - name "-" version ".tar.bz2")) - (sha256 - (base32 - "0p4bmbpgkfsj54xschcny0a118jdrdgg0q29rwxigg3lh5slr681")) - (patches - (search-patches - ;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1269317 for - ;; GCC 6 compatibility. - - "mozjs38-version-detection.patch" ; for 0ad - "mozjs38-tracelogger.patch" - - ;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1339931. - "mozjs38-pkg-config-version.patch" - "mozjs38-shell-version.patch")) - (modules '((guix build utils))) - (snippet - '(begin - ;; Fix incompatibility with sed 4.4. - (substitute* "js/src/configure" - (("\\^\\[:space:\\]") "^[[:space:]]")) - - ;; The headers are symlinks to files that are in /tmp, so they - ;; end up broken. Copy them instead. - (substitute* - "python/mozbuild/mozbuild/backend/recursivemake.py" - (("\\['dist_include'\\].add_symlink") - "['dist_include'].add_copy")) - - ;; Remove bundled libraries. - (for-each delete-file-recursively - '("intl" - "js/src/ctypes/libffi" - "js/src/ctypes/libffi-patches" - "modules/zlib")) - #t)))) - (arguments - `(;; XXX: parallel build fails, lacking: - ;; mkdir -p "system_wrapper_js/" - #:parallel-build? #f - ;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1008470. - #:tests? #f - #:phases - (modify-phases %standard-phases - (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (chdir "js/src") - (setenv "SHELL" (which "sh")) - (setenv "CONFIG_SHELL" (which "sh")) - (invoke "./configure" - (string-append "--prefix=" out) - "--enable-ctypes" - "--enable-gcgenerational" - "--enable-optimize" - "--enable-pie" - "--enable-readline" - "--enable-shared-js" - "--enable-system-ffi" - "--enable-threadsafe" - "--enable-xterm-updates" - "--with-system-icu" - "--with-system-nspr" - "--with-system-zlib" - - ;; Intl API requires bundled ICU. - "--without-intl-api"))))))) - (native-inputs - `(("perl" ,perl) - ("pkg-config" ,pkg-config) - ("python-2" ,python-2))) - (inputs - (list libffi readline icu4c zlib)))) - -(define-public mozjs-52 - ;; No releases yet at . - ;; While we could take a snapshot of the complete mozilla-esr52 repository at - ;; , - ;; we take the Debian version instead, because it is easier to work with. - (let ((commit "6507e63cc416fd7a3269e390efe712f8b56f374a") - (revision "1")) - (package (inherit mozjs-38) - (version (git-version "52.0" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://salsa.debian.org/gnome-team/mozjs52.git") - (commit commit))) - (file-name (git-file-name "mozjs" version)) - (sha256 - (base32 - "1ny0s53r8wn4byys87h784xrq1xg767akmfm6gqrbvrz57mlm3q2")))) - (arguments - `(#:tests? #f ; depends on repository metadata - #:configure-flags - '("--enable-ctypes" - "--enable-optimize" - "--enable-pie" - "--enable-readline" - "--enable-shared-js" - "--enable-system-ffi" - "--with-system-icu" - "--with-system-nspr" - "--with-system-zlib" - - ;; Intl API requires bundled ICU. - "--without-intl-api" - - ;; Without this gnome-shell will crash at runtime. - "--disable-jemalloc") - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-and-chdir - (lambda* (#:key inputs #:allow-other-keys) - ;; This patch prevents a segfault when executing JS_Init(). - ;; The build does not fail without this patch, but the - ;; configure phase of the gjs package would fail. - ;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1176787 - (make-file-writable "js/src/old-configure.in") - (make-file-writable "js/src/old-configure") - (make-file-writable "mozglue/build/moz.build") - (invoke "patch" "-p1" "--force" - "--input" "debian/patches/disable-mozglue.patch") - (invoke "touch" "js/src/configure") - (chdir "js/src") - #t)) - (replace 'configure - (lambda* (#:key inputs outputs configure-flags #:allow-other-keys) - ;; The configure script does not accept environment variables - ;; as arguments. - (let ((out (assoc-ref outputs "out"))) - (setenv "SHELL" (which "sh")) - (setenv "CONFIG_SHELL" (which "sh")) - (setenv "AUTOCONF" (which "autoconf")) - (apply invoke "./configure" - (cons (string-append "--prefix=" out) - configure-flags)))))))) - (native-inputs - (modify-inputs (package-native-inputs mozjs-38) - (prepend autoconf-2.13 automake)))))) - -(define-public mozjs-60 - ;; No releases yet at . - ;; While we could take a snapshot of the complete mozilla-esr60 repository at - ;; , - ;; we take the Debian version instead, because it is easier to work with. - (package - (inherit mozjs-38) - (version "60.2.3-4") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://salsa.debian.org/gnome-team/mozjs60.git") - (commit (string-append "debian/" version)))) - (file-name (git-file-name "mozjs" version)) - (sha256 - (base32 - "1xl6avsj9gkgma71p56jzs7nasc767k3n1frnmri5pad4rj94bij")) - (patches (search-patches "mozjs60-riscv64-support.patch")))) - (arguments - `(#:tests? #f ; FIXME: all tests pass, but then the check phase fails anyway. - #:test-target "check-jstests" - #:configure-flags - ,#~(quasiquote - ("--enable-ctypes" - "--enable-optimize" - "--enable-pie" - "--enable-readline" - "--enable-shared-js" - "--enable-system-ffi" - "--with-system-nspr" - #$@(if (%current-target-system) - #~(,(string-append "--with-nspr-prefix=" - #$(this-package-input "nspr"))) - #~()) - "--with-system-zlib" - "--with-system-icu" - "--with-intl-api" - ;; This is important because without it gjs will segfault during the - ;; configure phase. With jemalloc only the standalone mozjs console - ;; will work. - "--disable-jemalloc" - ;; Mozilla deviates from Autotools conventions due to historical - ;; reasons. - #$@(if (%current-target-system) - #~(#$(string-append - "--host=" - (nix-system->gnu-triplet (%current-system))) - #$(string-append "--target=" (%current-target-system))) - #~()))) - #:phases - (modify-phases %standard-phases - ;; Make sure pkg-config will be found. - ,@(if (%current-target-system) - `((add-before 'configure 'set-PKG-CONFIG - (lambda _ - (setenv "PKG_CONFIG" ,(pkg-config-for-target))))) - '()) - (replace 'configure - (lambda* (#:key inputs outputs configure-flags #:allow-other-keys) - ;; The configure script does not accept environment variables as - ;; arguments. It also must be run from a different directory, - ;; but not the root directory either. - (let ((out (assoc-ref outputs "out"))) - (mkdir "run-configure-from-here") - (chdir "run-configure-from-here") - (setenv "SHELL" (which "sh")) - (setenv "CONFIG_SHELL" (which "sh")) - (setenv "AUTOCONF" (which "autoconf")) - (apply invoke "../js/src/configure" - (cons (string-append "--prefix=" out) - configure-flags)) - #t))) - (add-after 'unpack 'update-config-scripts - (lambda* (#:key native-inputs inputs #:allow-other-keys) - (for-each (lambda (file) - (install-file - (search-input-file - (or native-inputs inputs) - (string-append "/bin/" file)) "build/autoconf")) - '("config.guess" "config.sub")))) - (add-after 'unpack 'disable-broken-tests - (lambda _ - ;; This test assumes that /bin exists and contains certain - ;; executables. - (delete-file "js/src/tests/shell/os.js") - #t))))) - (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("config" ,config) - ("which" ,which) - ("perl" ,perl) - ("pkg-config" ,pkg-config) - ("python" ,python-2))))) - -(define-public mozjs-78 - (package - (inherit mozjs-60) (version "78.15.0") (source (origin (method url-fetch) @@ -456,13 +106,16 @@ in C/C++.") (sha256 (base32 "0l91cxdc5v9fps79ckb1kid4gw6v5qng1jd9zvaacwaiv628shx4")))) + (build-system gnu-build-system) (arguments - `(#:imported-modules ,%cargo-utils-modules ;for `generate-all-checksums' - #:modules ((guix build cargo-utils) + (list + #:imported-modules %cargo-utils-modules ;for `generate-all-checksums' + #:modules `((guix build cargo-utils) ,@%gnu-build-system-modules) - #:test-target "check-jstests" - #:configure-flags - '(;; Disable debugging symbols to save space. + #:test-target "check-jstests" + #:configure-flags + #~(list + ;; Disable debugging symbols to save space. "--disable-debug" "--disable-debug-symbols" ;; This is important because without it gjs will segfault during the @@ -483,109 +136,111 @@ in C/C++.") "--with-system-nspr" "--with-system-zlib" "--with-intl-api") - #:phases - (modify-phases %standard-phases - (add-after 'patch-source-shebangs 'patch-cargo-checksums - (lambda _ - (let ((null-hash - "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")) - (for-each (lambda (file) - (format #t "patching checksums in ~a~%" file) - (substitute* file - (("^checksum = \".*\"") - (string-append "checksum = \"" null-hash "\"")))) - (find-files "." "Cargo\\.lock$")) - (for-each generate-all-checksums - '("js" "third_party/rust")) - #t))) - (replace 'configure - (lambda* (#:key inputs outputs configure-flags #:allow-other-keys) - ;; The configure script does not accept environment variables as - ;; arguments. It also must be run from a different directory, - ;; but not the root directory either. - (let ((out (assoc-ref outputs "out"))) - (mkdir "run-configure-from-here") - (chdir "run-configure-from-here") - (setenv "SHELL" (which "sh")) - (setenv "CONFIG_SHELL" (which "sh")) - (setenv "AUTOCONF" (which "autoconf")) - (apply invoke "../js/src/configure" - (cons (string-append "--prefix=" out) - configure-flags)) - #t))) - (add-after 'unpack 'adjust-for-icu-68 - (lambda _ - (with-directory-excursion "js/src/tests" - ;; The test suite expects a lightly patched ICU 67. Since - ;; Guix is about to switch to ICU 68, massage the tests to - ;; work with that instead of patching ICU. Try removing this - ;; phase for newer versions of mozjs. - - ;; These tests look up locale names and expects to get - ;; "GB" instead of "UK". - (substitute* "non262/Intl/DisplayNames/language.js" - (("Traditionell, GB") - "Traditionell, UK")) - (substitute* "non262/Intl/DisplayNames/region.js" - (("\"GB\": \"GB\"") - "\"GB\": \"UK\"")) - - ;; XXX: Some localized time formats have changed, and - ;; substitution fails for accented characters, even though - ;; it works in the REPL(?). Just delete these for now. - (delete-file "non262/Intl/Date/toLocaleString_timeZone.js") - (delete-file "non262/Intl/Date/toLocaleDateString_timeZone.js") - - ;; Similarly, these get an unexpected "A" suffix when looking - ;; up a time in the "ar-MA-u-ca-islamicc" locale, which is - ;; tricky to substitute. - (delete-file "non262/Intl/DateTimeFormat/format_timeZone.js") - (delete-file "non262/Intl/DateTimeFormat/format.js") - - ;; This file compares a generated list of ICU locale names - ;; with actual lookups. Some have changed slightly, i.e. - ;; daf-Latn-ZZ -> daf-Latn-CI, so drop it for simplicity. - (delete-file "non262/Intl/Locale/likely-subtags-generated.js")) - - #t)) - (add-before 'check 'pre-check - (lambda _ - (with-directory-excursion "../js/src/tests" - (substitute* "shell/os.js" - ;; FIXME: Why does the killed process have an exit status? - ((".*killed process should not have exitStatus.*") - "")) - - ;; XXX: Delete all tests that test time zone functionality, - ;; because the test suite uses /etc/localtime to figure out - ;; the offset from the hardware clock, which does not work - ;; in the build container. See . - (delete-file-recursively "non262/Date") - (delete-file "non262/Intl/DateTimeFormat/tz-environment-variable.js") - - (setenv "JSTESTS_EXTRA_ARGS" - (string-join - (list - ;; Do not run tests marked as "random". - "--exclude-random" - ;; Exclude web platform tests. - "--wpt=disabled" - ;; Respect the daemons configured number of jobs. - (string-append "--worker-count=" - (number->string (parallel-job-count))))))) - #t))))) + #:phases + #~(modify-phases %standard-phases + (add-after 'patch-source-shebangs 'patch-cargo-checksums + (lambda _ + (let ((null-hash + "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")) + (for-each (lambda (file) + (format #t "patching checksums in ~a~%" file) + (substitute* file + (("^checksum = \".*\"") + (string-append "checksum = \"" null-hash "\"")))) + (find-files "." "Cargo\\.lock$")) + (for-each generate-all-checksums + '("js" "third_party/rust"))))) + (replace 'configure + (lambda* (#:key inputs configure-flags #:allow-other-keys) + ;; The configure script does not accept environment variables as + ;; arguments. It also must be run from a different directory, + ;; but not the root directory either. + (mkdir "run-configure-from-here") + (chdir "run-configure-from-here") + (setenv "SHELL" (which "sh")) + (setenv "CONFIG_SHELL" (which "sh")) + (setenv "AUTOCONF" (which "autoconf")) + (apply invoke "../js/src/configure" + (cons (string-append "--prefix=" #$output) + configure-flags)))) + (add-after 'unpack 'adjust-for-icu-68 + (lambda _ + (with-directory-excursion "js/src/tests" + ;; The test suite expects a lightly patched ICU 67. Since + ;; Guix is about to switch to ICU 68, massage the tests to + ;; work with that instead of patching ICU. Try removing this + ;; phase for newer versions of mozjs. + + ;; These tests look up locale names and expects to get + ;; "GB" instead of "UK". + (substitute* "non262/Intl/DisplayNames/language.js" + (("Traditionell, GB") + "Traditionell, UK")) + (substitute* "non262/Intl/DisplayNames/region.js" + (("\"GB\": \"GB\"") + "\"GB\": \"UK\"")) + + ;; XXX: Some localized time formats have changed, and + ;; substitution fails for accented characters, even though + ;; it works in the REPL(?). Just delete these for now. + (delete-file "non262/Intl/Date/toLocaleString_timeZone.js") + (delete-file "non262/Intl/Date/toLocaleDateString_timeZone.js") + + ;; Similarly, these get an unexpected "A" suffix when looking + ;; up a time in the "ar-MA-u-ca-islamicc" locale, which is + ;; tricky to substitute. + (delete-file "non262/Intl/DateTimeFormat/format_timeZone.js") + (delete-file "non262/Intl/DateTimeFormat/format.js") + + ;; This file compares a generated list of ICU locale names + ;; with actual lookups. Some have changed slightly, i.e. + ;; daf-Latn-ZZ -> daf-Latn-CI, so drop it for simplicity. + (delete-file "non262/Intl/Locale/likely-subtags-generated.js")))) + (add-before 'check 'pre-check + (lambda _ + (with-directory-excursion "../js/src/tests" + (substitute* "shell/os.js" + ;; FIXME: Why does the killed process have an exit status? + ((".*killed process should not have exitStatus.*") + "")) + + ;; XXX: Delete all tests that test time zone functionality, + ;; because the test suite uses /etc/localtime to figure out + ;; the offset from the hardware clock, which does not work + ;; in the build container. See . + (delete-file-recursively "non262/Date") + (delete-file "non262/Intl/DateTimeFormat/tz-environment-variable.js") + + (setenv "JSTESTS_EXTRA_ARGS" + (string-join + (list + ;; Do not run tests marked as "random". + "--exclude-random" + ;; Exclude web platform tests. + "--wpt=disabled" + ;; Respect the daemons configured number of jobs. + (string-append "--worker-count=" + (number->string (parallel-job-count)))))))))))) (native-inputs - `(("autoconf" ,autoconf-2.13) - ("automake" ,automake) - ;; TODO(staging): Use the default LLVM in the next rebuild cycle. - ("llvm" ,llvm-9) ;for llvm-objdump - ("perl" ,perl) - ("pkg-config" ,pkg-config) - ("python" ,python-3) - ("rust" ,rust) - ("cargo" ,rust "cargo"))) + (list autoconf-2.13 + automake + ;; TODO(staging): Use the default LLVM in the next rebuild cycle. + llvm-9 ;for llvm-objdump + perl + pkg-config + python-3 + rust + `(,rust "cargo"))) (inputs - (list icu4c readline zlib)))) + (list icu4c readline zlib)) + (propagated-inputs + (list nspr)) ; in the Requires.private field of mozjs-*.pc + (home-page + "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey") + (synopsis "Mozilla javascript engine") + (description "SpiderMonkey is Mozilla's JavaScript engine written +in C/C++.") + (license license:mpl2.0))) ; and others for some files (define mozilla-compare-locales (origin diff --git a/gnu/packages/patches/mozjs17-aarch64-support.patch b/gnu/packages/patches/mozjs17-aarch64-support.patch deleted file mode 100644 index 51e2e306d5..0000000000 --- a/gnu/packages/patches/mozjs17-aarch64-support.patch +++ /dev/null @@ -1,60 +0,0 @@ -https://build.opensuse.org/package/view_file/openSUSE:Factory/mozjs17/mozjs-aarch64-support.patch - -index c071c33..90764c3 100644 ---- a/js/src/assembler/jit/ExecutableAllocator.h -+++ b/js/src/assembler/jit/ExecutableAllocator.h -@@ -382,6 +382,12 @@ public: - { - reprotectRegion(start, size, Executable); - } -+#elif WTF_CPU_AARCH64 && WTF_PLATFORM_LINUX -+ static void cacheFlush(void* code, size_t size) -+ { -+ intptr_t end = reinterpret_cast(code) + size; -+ __builtin___clear_cache(reinterpret_cast(code), reinterpret_cast(end)); -+ } - #else - static void makeWritable(void*, size_t) {} - static void makeExecutable(void*, size_t) {} -diff --git a/js/src/assembler/wtf/Platform.h b/js/src/assembler/wtf/Platform.h -index 0c84896..e8763a7 100644 ---- a/js/src/assembler/wtf/Platform.h -+++ b/js/src/assembler/wtf/Platform.h -@@ -325,6 +325,10 @@ - #define WTF_THUMB_ARCH_VERSION 0 - #endif - -+/* CPU(AArch64) - 64-bit ARM */ -+#if defined(__aarch64__) -+#define WTF_CPU_AARCH64 1 -+#endif - - /* WTF_CPU_ARMV5_OR_LOWER - ARM instruction set v5 or earlier */ - /* On ARMv5 and below the natural alignment is required. -diff --git a/js/src/configure.in b/js/src/configure.in -index 15605b2..19fd704 100644 ---- a/js/src/configure.in -+++ b/js/src/configure.in -@@ -1121,6 +1121,10 @@ arm*) - CPU_ARCH=arm - ;; - -+aarch64) -+ CPU_ARCH=aarch64 -+ ;; -+ - mips|mipsel) - CPU_ARCH="mips" - ;; -diff --git a/mfbt/double-conversion/utils.h b/mfbt/double-conversion/utils.h -index 0eec2d9..fe26dab 100644 ---- a/mfbt/double-conversion/utils.h -+++ b/mfbt/double-conversion/utils.h -@@ -58,6 +58,7 @@ - defined(__mips__) || defined(__powerpc__) || \ - defined(__sparc__) || defined(__sparc) || defined(__s390__) || \ - defined(__SH4__) || defined(__alpha__) || \ -+ defined(__aarch64__) || \ - defined(_MIPS_ARCH_MIPS32R2) - #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 - #elif defined(_M_IX86) || defined(__i386__) || defined(__i386) diff --git a/gnu/packages/patches/mozjs24-aarch64-support.patch b/gnu/packages/patches/mozjs24-aarch64-support.patch deleted file mode 100644 index 9dca8e500c..0000000000 --- a/gnu/packages/patches/mozjs24-aarch64-support.patch +++ /dev/null @@ -1,21 +0,0 @@ -This patch is sourced from Debian's mozjs24 patch set. - -Description: Add arm64 support -Author: Andreas Schwab -Origin: vendor, https://build.opensuse.org/package/view_file/openSUSE:Factory/mozjs17/mozjs-aarch64-support.patch -Forwarded: no -Last-Update: 2014-01-03 - -Index: b/mfbt/double-conversion/utils.h -=================================================================== ---- a/mfbt/double-conversion/utils.h -+++ b/mfbt/double-conversion/utils.h -@@ -58,7 +58,7 @@ - defined(__mips__) || defined(__powerpc__) || \ - defined(__sparc__) || defined(__sparc) || defined(__s390__) || \ - defined(__SH4__) || defined(__alpha__) || \ -- defined(_MIPS_ARCH_MIPS32R2) -+ defined(_MIPS_ARCH_MIPS32R2) || defined(__aarch64__) - #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 - #elif defined(_M_IX86) || defined(__i386__) || defined(__i386) - #if defined(_WIN32) diff --git a/gnu/packages/patches/mozjs38-pkg-config-version.patch b/gnu/packages/patches/mozjs38-pkg-config-version.patch deleted file mode 100644 index 49ff6f6f8d..0000000000 --- a/gnu/packages/patches/mozjs38-pkg-config-version.patch +++ /dev/null @@ -1,24 +0,0 @@ -Taken from https://bug1339931.bmoattachments.org/attachment.cgi?id=8837770. - -Add major version to pkg-config filename. -Author: Rico Tzschichholz -Forwarded: no -Last-Update: 2015-05-04 - -Index: b/js/src/Makefile.in -=================================================================== ---- a/js/src/Makefile.in -+++ b/js/src/Makefile.in -@@ -214,10 +214,10 @@ - $(JS_CONFIG_NAME): js-config - cp $^ $@ - --$(LIBRARY_NAME).pc: js.pc -+$(JS_LIBRARY_NAME).pc: js.pc - cp $^ $@ - --install:: $(LIBRARY_NAME).pc -+install:: $(JS_LIBRARY_NAME).pc - $(SYSINSTALL) $^ $(DESTDIR)$(libdir)/pkgconfig - - install:: js-config.h diff --git a/gnu/packages/patches/mozjs38-shell-version.patch b/gnu/packages/patches/mozjs38-shell-version.patch deleted file mode 100644 index e7d3d19c85..0000000000 --- a/gnu/packages/patches/mozjs38-shell-version.patch +++ /dev/null @@ -1,67 +0,0 @@ -Taken from https://bug1339931.bmoattachments.org/attachment.cgi?id=8837771. - -# HG changeset patch -# Parent 4732a0e5d22bc7e5c1f1ace7a182d537d9cc2c6a -Add major version to shell and js-config filenames. -Author: Rico Tzschichholz -Forwarded: no -Last-Update: 2014-10-29 - ---- -diff --git a/js/src/configure b/js/src/configure ---- a/js/src/configure -+++ b/js/src/configure -@@ -1696,8 +1696,13 @@ - MOZJS_PATCH_VERSION=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.[0-9]*[^0-9]*||"` - IS_ALPHA=`echo $MOZILLA_VERSION | grep '[ab]'` - -+if test -n "$JS_STANDALONE"; then -+JS_SHELL_NAME=js$MOZJS_MAJOR_VERSION -+JS_CONFIG_NAME=js$MOZJS_MAJOR_VERSION-config -+else - JS_SHELL_NAME=js - JS_CONFIG_NAME=js-config -+fi - - - if test -n "$IS_ALPHA"; then - -diff --git a/js/src/configure.in b/js/src/configure.in ---- a/js/src/configure.in -+++ b/js/src/configure.in -@@ -234,16 +234,13 @@ MOZJS_MINOR_VERSION=`echo $MOZILLA_VERSI - MOZJS_PATCH_VERSION=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.[0-9]*[^0-9]*||"` - IS_ALPHA=`echo $MOZILLA_VERSION | grep '[ab]'` - --dnl XXX in a temporary bid to avoid developer anger at renaming files --dnl XXX before "js" symlinks exist, don't change names. --dnl --dnl if test -n "$JS_STANDALONE"; then --dnl JS_SHELL_NAME=js$MOZJS_MAJOR_VERSION --dnl JS_CONFIG_NAME=js$MOZJS_MAJOR_VERSION-config --dnl else -+if test -n "$JS_STANDALONE"; then -+JS_SHELL_NAME=js$MOZJS_MAJOR_VERSION -+JS_CONFIG_NAME=js$MOZJS_MAJOR_VERSION-config -+else - JS_SHELL_NAME=js - JS_CONFIG_NAME=js-config --dnl fi -+fi - - changequote([,]) - if test -n "$IS_ALPHA"; then - -diff -r 80a9e64d75f5 js/src/Makefile.in ---- a/js/src/Makefile.in Wed Jun 25 15:11:42 2014 +0200 -+++ b/js/src/Makefile.in Sat Jul 05 14:08:38 2014 +0200 -@@ -273,6 +273,9 @@ - SCRIPTS = $(JS_CONFIG_NAME) - SDK_BINARY = $(JS_CONFIG_NAME) - -+$(JS_CONFIG_NAME): js-config -+ cp $^ $@ -+ - $(JS_LIBRARY_NAME).pc: js.pc - cp $^ $@ - diff --git a/gnu/packages/patches/mozjs38-tracelogger.patch b/gnu/packages/patches/mozjs38-tracelogger.patch deleted file mode 100644 index 0375ec36cc..0000000000 --- a/gnu/packages/patches/mozjs38-tracelogger.patch +++ /dev/null @@ -1,608 +0,0 @@ -Squashed version of several commits to fix the tracelogger. - -Taken from -https://github.com/GNOME/jhbuild/blob/master/patches/mozjs38-fix-tracelogger.patch. - -# === Fix the SM38 tracelogger === -# This patch is a squashed version of several patches that were adapted -# to fix failing hunks. -# -# Applied in the following order, they are: -# * https://bugzilla.mozilla.org/show_bug.cgi?id=1223767 -# Assertion failure: i < size_, at js/src/vm/TraceLoggingTypes.h:210 -# Also fix stop-information to make reduce.py work correctly. -# * https://bugzilla.mozilla.org/show_bug.cgi?id=1227914 -# Limit the memory tracelogger can take. -# This causes tracelogger to flush data to the disk regularly and prevents out of -# memory issues if a lot of data gets logged. -# * https://bugzilla.mozilla.org/show_bug.cgi?id=1155618 -# Fix tracelogger destructor that touches possibly uninitialised hash table. -# * https://bugzilla.mozilla.org/show_bug.cgi?id=1223636 -# Don't treat extraTextId as containing only extra ids. -# This fixes an assertion failure: id == nextTextId at js/src/vm/TraceLoggingGraph.cpp -# * https://bugzilla.mozilla.org/show_bug.cgi?id=1227028 -# Fix when to keep the payload of a TraceLogger event. -# This fixes an assertion failure: textId < uint32_t(1 << 31) at js/src/vm/TraceLoggingGraph.h -# * https://bugzilla.mozilla.org/show_bug.cgi?id=1266649 -# Handle failing to add to pointermap gracefully. -# * https://bugzilla.mozilla.org/show_bug.cgi?id=1280648 -# Don't cache based on pointers to movable GC things. -# * https://bugzilla.mozilla.org/show_bug.cgi?id=1224123 -# Fix the use of LastEntryId in tracelogger.h. -# * https://bugzilla.mozilla.org/show_bug.cgi?id=1231170 -# Use size in debugger instead of the current id to track last logged item. -# * https://bugzilla.mozilla.org/show_bug.cgi?id=1221844 -# Move TraceLogger_Invalidation to LOG_ITEM. -# Add some debug checks to logTimestamp. -# * https://bugzilla.mozilla.org/show_bug.cgi?id=1255766 -# Also mark resizing of memory. -# * https://bugzilla.mozilla.org/show_bug.cgi?id=1259403 -# Only increase capacity by multiples of 2. -# Always make sure there are 3 free slots for events. -# === - -diff --git a/js/src/jit-test/tests/tracelogger/bug1231170.js b/js/src/jit-test/tests/tracelogger/bug1231170.js -new file mode 100644 -index 0000000..023e93e ---- /dev/null -+++ b/js/src/jit-test/tests/tracelogger/bug1231170.js -@@ -0,0 +1,3 @@ -+var du = new Debugger(); -+if (typeof du.drainTraceLogger === "function") -+ du.drainTraceLogger(); -diff --git a/js/src/jit-test/tests/tracelogger/bug1266649.js b/js/src/jit-test/tests/tracelogger/bug1266649.js -new file mode 100644 -index 0000000..81ae7ad ---- /dev/null -+++ b/js/src/jit-test/tests/tracelogger/bug1266649.js -@@ -0,0 +1,10 @@ -+ -+var du = new Debugger(); -+if (typeof du.setupTraceLogger === "function" && -+ typeof oomTest === 'function') -+{ -+ du.setupTraceLogger({ -+ Scripts: true -+ }) -+ oomTest(() => function(){}); -+} -diff --git a/js/src/jit/Ion.cpp b/js/src/jit/Ion.cpp -index 93e2fda..09049d6 100644 ---- a/js/src/jit/Ion.cpp -+++ b/js/src/jit/Ion.cpp -@@ -1055,6 +1055,8 @@ IonScript::Destroy(FreeOp* fop, IonScript* script) - - script->destroyCaches(); - script->unlinkFromRuntime(fop); -+ // Frees the potential event we have set. -+ script->traceLoggerScriptEvent_ = TraceLoggerEvent(); - fop->free_(script); - } - -diff --git a/js/src/vm/Debugger.cpp b/js/src/vm/Debugger.cpp -index 26262fd..af7f313 100644 ---- a/js/src/vm/Debugger.cpp -+++ b/js/src/vm/Debugger.cpp -@@ -369,10 +369,10 @@ Debugger::Debugger(JSContext* cx, NativeObject* dbg) - objects(cx), - environments(cx), - #ifdef NIGHTLY_BUILD -- traceLoggerLastDrainedId(0), -+ traceLoggerLastDrainedSize(0), - traceLoggerLastDrainedIteration(0), - #endif -- traceLoggerScriptedCallsLastDrainedId(0), -+ traceLoggerScriptedCallsLastDrainedSize(0), - traceLoggerScriptedCallsLastDrainedIteration(0) - { - assertSameCompartment(cx, dbg); -@@ -3907,9 +3907,9 @@ Debugger::drainTraceLogger(JSContext* cx, unsigned argc, Value* vp) - size_t num; - TraceLoggerThread* logger = TraceLoggerForMainThread(cx->runtime()); - bool lostEvents = logger->lostEvents(dbg->traceLoggerLastDrainedIteration, -- dbg->traceLoggerLastDrainedId); -+ dbg->traceLoggerLastDrainedSize); - EventEntry* events = logger->getEventsStartingAt(&dbg->traceLoggerLastDrainedIteration, -- &dbg->traceLoggerLastDrainedId, -+ &dbg->traceLoggerLastDrainedSize, - &num); - - RootedObject array(cx, NewDenseEmptyArray(cx)); -@@ -4002,10 +4002,10 @@ Debugger::drainTraceLoggerScriptCalls(JSContext* cx, unsigned argc, Value* vp) - size_t num; - TraceLoggerThread* logger = TraceLoggerForMainThread(cx->runtime()); - bool lostEvents = logger->lostEvents(dbg->traceLoggerScriptedCallsLastDrainedIteration, -- dbg->traceLoggerScriptedCallsLastDrainedId); -+ dbg->traceLoggerScriptedCallsLastDrainedSize); - EventEntry* events = logger->getEventsStartingAt( - &dbg->traceLoggerScriptedCallsLastDrainedIteration, -- &dbg->traceLoggerScriptedCallsLastDrainedId, -+ &dbg->traceLoggerScriptedCallsLastDrainedSize, - &num); - - RootedObject array(cx, NewDenseEmptyArray(cx)); -diff --git a/js/src/vm/Debugger.h b/js/src/vm/Debugger.h -index 8cac36a..c92d685 100644 ---- a/js/src/vm/Debugger.h -+++ b/js/src/vm/Debugger.h -@@ -314,10 +314,10 @@ class Debugger : private mozilla::LinkedListElement - * lost events. - */ - #ifdef NIGHTLY_BUILD -- uint32_t traceLoggerLastDrainedId; -+ uint32_t traceLoggerLastDrainedSize; - uint32_t traceLoggerLastDrainedIteration; - #endif -- uint32_t traceLoggerScriptedCallsLastDrainedId; -+ uint32_t traceLoggerScriptedCallsLastDrainedSize; - uint32_t traceLoggerScriptedCallsLastDrainedIteration; - - class FrameRange; -diff --git a/js/src/vm/TraceLogging.cpp b/js/src/vm/TraceLogging.cpp -index 6715b36..9766a6f 100644 ---- a/js/src/vm/TraceLogging.cpp -+++ b/js/src/vm/TraceLogging.cpp -@@ -131,7 +131,7 @@ TraceLoggerThread::init() - { - if (!pointerMap.init()) - return false; -- if (!extraTextId.init()) -+ if (!textIdPayloads.init()) - return false; - if (!events.init()) - return false; -@@ -185,10 +185,10 @@ TraceLoggerThread::~TraceLoggerThread() - graph = nullptr; - } - -- for (TextIdHashMap::Range r = extraTextId.all(); !r.empty(); r.popFront()) -- js_delete(r.front().value()); -- extraTextId.finish(); -- pointerMap.finish(); -+ if (textIdPayloads.initialized()) { -+ for (TextIdHashMap::Range r = textIdPayloads.all(); !r.empty(); r.popFront()) -+ js_delete(r.front().value()); -+ } - } - - bool -@@ -287,7 +287,7 @@ TraceLoggerThread::eventText(uint32_t id) - if (id < TraceLogger_Last) - return TLTextIdString(static_cast(id)); - -- TextIdHashMap::Ptr p = extraTextId.lookup(id); -+ TextIdHashMap::Ptr p = textIdPayloads.lookup(id); - MOZ_ASSERT(p); - - return p->value()->string(); -@@ -341,13 +341,15 @@ TraceLoggerThread::extractScriptDetails(uint32_t textId, const char** filename, - TraceLoggerEventPayload* - TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId textId) - { -- TextIdHashMap::AddPtr p = extraTextId.lookupForAdd(textId); -- if (p) -+ TextIdHashMap::AddPtr p = textIdPayloads.lookupForAdd(textId); -+ if (p) { -+ MOZ_ASSERT(p->value()->textId() == textId); // Sanity check. - return p->value(); -+ } - - TraceLoggerEventPayload* payload = js_new(textId, (char*)nullptr); - -- if (!extraTextId.add(p, textId, payload)) -+ if (!textIdPayloads.add(p, textId, payload)) - return nullptr; - - return payload; -@@ -357,8 +359,10 @@ TraceLoggerEventPayload* - TraceLoggerThread::getOrCreateEventPayload(const char* text) - { - PointerHashMap::AddPtr p = pointerMap.lookupForAdd((const void*)text); -- if (p) -+ if (p) { -+ MOZ_ASSERT(p->value()->textId() < nextTextId); // Sanity check. - return p->value(); -+ } - - size_t len = strlen(text); - char* str = js_pod_malloc(len + 1); -@@ -369,7 +373,7 @@ TraceLoggerThread::getOrCreateEventPayload(const char* text) - MOZ_ASSERT(ret == len); - MOZ_ASSERT(strlen(str) == len); - -- uint32_t textId = extraTextId.count() + TraceLogger_Last; -+ uint32_t textId = nextTextId; - - TraceLoggerEventPayload* payload = js_new(textId, str); - if (!payload) { -@@ -377,17 +381,19 @@ TraceLoggerThread::getOrCreateEventPayload(const char* text) - return nullptr; - } - -- if (!extraTextId.putNew(textId, payload)) { -+ if (!textIdPayloads.putNew(textId, payload)) { - js_delete(payload); - return nullptr; - } - -- if (!pointerMap.add(p, text, payload)) -- return nullptr; -- - if (graph.get()) - graph->addTextId(textId, str); - -+ nextTextId++; -+ -+ if (!pointerMap.add(p, text, payload)) -+ return nullptr; -+ - return payload; - } - -@@ -407,9 +413,14 @@ TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId type, const char* f - if (!traceLoggerState->isTextIdEnabled(type)) - return getOrCreateEventPayload(type); - -- PointerHashMap::AddPtr p = pointerMap.lookupForAdd(ptr); -- if (p) -- return p->value(); -+ PointerHashMap::AddPtr p; -+ if (ptr) { -+ p = pointerMap.lookupForAdd(ptr); -+ if (p) { -+ MOZ_ASSERT(p->value()->textId() < nextTextId); // Sanity check. -+ return p->value(); -+ } -+ } - - // Compute the length of the string to create. - size_t lenFilename = strlen(filename); -@@ -428,24 +439,28 @@ TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId type, const char* f - MOZ_ASSERT(ret == len); - MOZ_ASSERT(strlen(str) == len); - -- uint32_t textId = extraTextId.count() + TraceLogger_Last; -+ uint32_t textId = nextTextId; - TraceLoggerEventPayload* payload = js_new(textId, str); - if (!payload) { - js_free(str); - return nullptr; - } - -- if (!extraTextId.putNew(textId, payload)) { -+ if (!textIdPayloads.putNew(textId, payload)) { - js_delete(payload); - return nullptr; - } - -- if (!pointerMap.add(p, ptr, payload)) -- return nullptr; -- - if (graph.get()) - graph->addTextId(textId, str); - -+ nextTextId++; -+ -+ if (ptr) { -+ if (!pointerMap.add(p, ptr, payload)) -+ return nullptr; -+ } -+ - return payload; - } - -@@ -453,14 +468,14 @@ TraceLoggerEventPayload* - TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId type, JSScript* script) - { - return getOrCreateEventPayload(type, script->filename(), script->lineno(), script->column(), -- script); -+ nullptr); - } - - TraceLoggerEventPayload* - TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId type, - const JS::ReadOnlyCompileOptions& script) - { -- return getOrCreateEventPayload(type, script.filename(), script.lineno, script.column, &script); -+ return getOrCreateEventPayload(type, script.filename(), script.lineno, script.column, nullptr); - } - - void -@@ -485,7 +500,7 @@ TraceLoggerThread::startEvent(uint32_t id) - if (!traceLoggerState->isTextIdEnabled(id)) - return; - -- logTimestamp(id); -+ log(id); - } - - void -@@ -510,7 +525,7 @@ TraceLoggerThread::stopEvent(uint32_t id) - if (!traceLoggerState->isTextIdEnabled(id)) - return; - -- logTimestamp(TraceLogger_Stop); -+ log(TraceLogger_Stop); - } - - void -@@ -522,23 +537,57 @@ TraceLoggerThread::logTimestamp(TraceLoggerTextId id) - void - TraceLoggerThread::logTimestamp(uint32_t id) - { -+ MOZ_ASSERT(id > TraceLogger_LastTreeItem && id < TraceLogger_Last); -+ log(id); -+} -+ -+void -+TraceLoggerThread::log(uint32_t id) -+{ - if (enabled == 0) - return; - - MOZ_ASSERT(traceLoggerState); -- if (!events.ensureSpaceBeforeAdd()) { -+ -+ // We request for 3 items to add, since if we don't have enough room -+ // we record the time it took to make more place. To log this information -+ // we need 2 extra free entries. -+ if (!events.hasSpaceForAdd(3)) { - uint64_t start = rdtsc() - traceLoggerState->startupTime; - -- if (graph.get()) -- graph->log(events); -+ if (!events.ensureSpaceBeforeAdd(3)) { -+ if (graph.get()) -+ graph->log(events); -+ -+ iteration_++; -+ events.clear(); -+ -+ // Remove the item in the pointerMap for which the payloads -+ // have no uses anymore -+ for (PointerHashMap::Enum e(pointerMap); !e.empty(); e.popFront()) { -+ if (e.front().value()->uses() != 0) -+ continue; -+ -+ TextIdHashMap::Ptr p = textIdPayloads.lookup(e.front().value()->textId()); -+ MOZ_ASSERT(p); -+ textIdPayloads.remove(p); -+ -+ e.removeFront(); -+ } - -- iteration_++; -- events.clear(); -+ // Free all payloads that have no uses anymore. -+ for (TextIdHashMap::Enum e(textIdPayloads); !e.empty(); e.popFront()) { -+ if (e.front().value()->uses() == 0) { -+ js_delete(e.front().value()); -+ e.removeFront(); -+ } -+ } -+ } - - // Log the time it took to flush the events as being from the - // Tracelogger. - if (graph.get()) { -- MOZ_ASSERT(events.capacity() > 2); -+ MOZ_ASSERT(events.hasSpaceForAdd(2)); - EventEntry& entryStart = events.pushUninitialized(); - entryStart.time = start; - entryStart.textId = TraceLogger_Internal; -@@ -548,13 +597,6 @@ TraceLoggerThread::logTimestamp(uint32_t id) - entryStop.textId = TraceLogger_Stop; - } - -- // Free all TextEvents that have no uses anymore. -- for (TextIdHashMap::Enum e(extraTextId); !e.empty(); e.popFront()) { -- if (e.front().value()->uses() == 0) { -- js_delete(e.front().value()); -- e.removeFront(); -- } -- } - } - - uint64_t time = rdtsc() - traceLoggerState->startupTime; -@@ -956,3 +998,16 @@ TraceLoggerEvent::~TraceLoggerEvent() - if (payload_) - payload_->release(); - } -+ -+TraceLoggerEvent& -+TraceLoggerEvent::operator=(const TraceLoggerEvent& other) -+{ -+ if (hasPayload()) -+ payload()->release(); -+ if (other.hasPayload()) -+ other.payload()->use(); -+ -+ payload_ = other.payload_; -+ -+ return *this; -+} -diff --git a/js/src/vm/TraceLogging.h b/js/src/vm/TraceLogging.h -index a124dcb..91a1eb0 100644 ---- a/js/src/vm/TraceLogging.h -+++ b/js/src/vm/TraceLogging.h -@@ -110,6 +110,9 @@ class TraceLoggerEvent { - bool hasPayload() const { - return !!payload_; - } -+ -+ TraceLoggerEvent& operator=(const TraceLoggerEvent& other); -+ TraceLoggerEvent(const TraceLoggerEvent& event) = delete; - }; - - /** -@@ -130,6 +133,10 @@ class TraceLoggerEventPayload { - uses_(0) - { } - -+ ~TraceLoggerEventPayload() { -+ MOZ_ASSERT(uses_ == 0); -+ } -+ - uint32_t textId() { - return textId_; - } -@@ -166,7 +173,8 @@ class TraceLoggerThread - mozilla::UniquePtr graph; - - PointerHashMap pointerMap; -- TextIdHashMap extraTextId; -+ TextIdHashMap textIdPayloads; -+ uint32_t nextTextId; - - ContinuousSpace events; - -@@ -181,6 +189,7 @@ class TraceLoggerThread - : enabled(0), - failed(false), - graph(), -+ nextTextId(TraceLogger_Last), - iteration_(0), - top(nullptr) - { } -@@ -195,22 +204,22 @@ class TraceLoggerThread - bool enable(JSContext* cx); - bool disable(); - -- // Given the previous iteration and lastEntryId, return an array of events -+ // Given the previous iteration and size, return an array of events - // (there could be lost events). At the same time update the iteration and -- // lastEntry and gives back how many events there are. -- EventEntry* getEventsStartingAt(uint32_t* lastIteration, uint32_t* lastEntryId, size_t* num) { -+ // size and gives back how many events there are. -+ EventEntry* getEventsStartingAt(uint32_t* lastIteration, uint32_t* lastSize, size_t* num) { - EventEntry* start; - if (iteration_ == *lastIteration) { -- MOZ_ASSERT(events.lastEntryId() >= *lastEntryId); -- *num = events.lastEntryId() - *lastEntryId; -- start = events.data() + *lastEntryId + 1; -+ MOZ_ASSERT(*lastSize <= events.size()); -+ *num = events.size() - *lastSize; -+ start = events.data() + *lastSize; - } else { -- *num = events.lastEntryId() + 1; -+ *num = events.size(); - start = events.data(); - } - - *lastIteration = iteration_; -- *lastEntryId = events.lastEntryId(); -+ *lastSize = events.size(); - return start; - } - -@@ -220,16 +229,16 @@ class TraceLoggerThread - const char** lineno, size_t* lineno_len, const char** colno, - size_t* colno_len); - -- bool lostEvents(uint32_t lastIteration, uint32_t lastEntryId) { -+ bool lostEvents(uint32_t lastIteration, uint32_t lastSize) { - // If still logging in the same iteration, there are no lost events. - if (lastIteration == iteration_) { -- MOZ_ASSERT(lastEntryId <= events.lastEntryId()); -+ MOZ_ASSERT(lastSize <= events.size()); - return false; - } - -- // When proceeded to the next iteration and lastEntryId points to -- // the maximum capacity there are no logs that are lost. -- if (lastIteration + 1 == iteration_ && lastEntryId == events.capacity()) -+ // If we are in a consecutive iteration we are only sure we didn't lose any events, -+ // when the lastSize equals the maximum size 'events' can get. -+ if (lastIteration == iteration_ - 1 && lastSize == events.maxSize()) - return false; - - return true; -@@ -268,6 +277,7 @@ class TraceLoggerThread - void stopEvent(uint32_t id); - private: - void stopEvent(); -+ void log(uint32_t id); - - public: - static unsigned offsetOfEnabled() { -diff --git a/js/src/vm/TraceLoggingGraph.cpp b/js/src/vm/TraceLoggingGraph.cpp -index d1b7f2e..a4eb273 100644 ---- a/js/src/vm/TraceLoggingGraph.cpp -+++ b/js/src/vm/TraceLoggingGraph.cpp -@@ -276,7 +276,7 @@ TraceLoggerGraph::flush() - if (bytesWritten < tree.size()) - return false; - -- treeOffset += tree.lastEntryId(); -+ treeOffset += tree.size(); - tree.clear(); - } - -@@ -359,7 +359,7 @@ TraceLoggerGraph::startEventInternal(uint32_t id, uint64_t timestamp) - - if (parent.lastChildId() == 0) { - MOZ_ASSERT(!entry.hasChildren()); -- MOZ_ASSERT(parent.treeId() == tree.lastEntryId() + treeOffset); -+ MOZ_ASSERT(parent.treeId() == treeOffset + tree.size() - 1); - - if (!updateHasChildren(parent.treeId())) - return false; -diff --git a/js/src/vm/TraceLoggingTypes.h b/js/src/vm/TraceLoggingTypes.h -index f1c9d0c..10b76d6 100644 ---- a/js/src/vm/TraceLoggingTypes.h -+++ b/js/src/vm/TraceLoggingTypes.h -@@ -21,7 +21,6 @@ - _(Internal) \ - _(Interpreter) \ - _(InlinedScripts) \ -- _(Invalidation) \ - _(IonCompilation) \ - _(IonCompilationPaused) \ - _(IonLinking) \ -@@ -60,6 +59,7 @@ - - #define TRACELOGGER_LOG_ITEMS(_) \ - _(Bailout) \ -+ _(Invalidation) \ - _(Disable) \ - _(Enable) \ - _(Stop) -@@ -130,6 +130,9 @@ class ContinuousSpace { - uint32_t size_; - uint32_t capacity_; - -+ // The maximum amount of ram memory a continuous space structure can take (in bytes). -+ static const uint32_t LIMIT = 200 * 1024 * 1024; -+ - public: - ContinuousSpace () - : data_(nullptr) -@@ -151,6 +154,10 @@ class ContinuousSpace { - data_ = nullptr; - } - -+ static uint32_t maxSize() { -+ return LIMIT / sizeof(T); -+ } -+ - T* data() { - return data_; - } -@@ -187,11 +194,14 @@ class ContinuousSpace { - if (hasSpaceForAdd(count)) - return true; - -+ // Limit the size of a continuous buffer. -+ if (size_ + count > maxSize()) -+ return false; -+ - uint32_t nCapacity = capacity_ * 2; -- if (size_ + count > nCapacity) -- nCapacity = size_ + count; -- T* entries = (T*) js_realloc(data_, nCapacity * sizeof(T)); -+ nCapacity = (nCapacity < maxSize()) ? nCapacity : maxSize(); - -+ T* entries = (T*) js_realloc(data_, nCapacity * sizeof(T)); - if (!entries) - return false; - diff --git a/gnu/packages/patches/mozjs38-version-detection.patch b/gnu/packages/patches/mozjs38-version-detection.patch deleted file mode 100644 index ec2d264ccc..0000000000 --- a/gnu/packages/patches/mozjs38-version-detection.patch +++ /dev/null @@ -1,180 +0,0 @@ -Taken from -https://trac.wildfiregames.com/export/18656/ps/trunk/libraries/source/spidermonkey/FixVersionDetectionConfigure.diff. - -Fixes a version detection issue in 0ad. See -https://lists.gnu.org/archive/html/guix-devel/2017-01/msg00625.html. - -diff --git a/js/src/configure b/js/src/configure ---- a/js/src/configure -+++ b/js/src/configure -@@ -1662,70 +1662,6 @@ esac - - fi - --MOZILLA_VERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir` --MOZILLA_UAVERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir --uaversion` --MOZILLA_SYMBOLVERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir --symbolversion` -- --cat >> confdefs.pytmp <> confdefs.h <> confdefs.pytmp <> confdefs.h <> confdefs.pytmp <> confdefs.h <> confdefs.pytmp <> confdefs.h <> confdefs.pytmp <> confdefs.h <> confdefs.pytmp <> confdefs.h <> confdefs.pytmp <> confdefs.h <> confdefs.pytmp <> confdefs.h <> confdefs.pytmp <> confdefs.h <> confdefs.pytmp <> confdefs.h <> $CONFIG_STATUS <> $CONFIG_STATUS <