[-- Attachment #1: Type: text/plain, Size: 784 bytes --] There is a new pull request by tornaria against master on the void-packages repository https://github.com/tornaria/void-packages maxima https://github.com/void-linux/void-packages/pull/34887 maxima: fix #34849 and #34861 - patch maxima-sbcl so it uses gmp for arithmetic (closes #34849) also add libgmp to shlib_requires since it won't be detected - remove `nopie=yes` to fix #34861, replace by `nopie_files` - remove `nostrip=yes`, replace by `nostrip_files` - add checks for #34849 and #34861 - run testsuite only for full check (not in CI) - some html and info files are shipped with source: do not rebuild I based this on top of #34886 so `nostrip_files` works better. A patch file from https://github.com/void-linux/void-packages/pull/34887.patch is attached [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: github-pr-maxima-34887.patch --] [-- Type: text/x-diff, Size: 5343 bytes --] From 093a1fa78ac0c78ecf4d189d4fecabcdcb516fe1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy> Date: Wed, 5 Jan 2022 20:59:20 -0300 Subject: [PATCH 1/2] nostrip_files: allow full path The option `nostrip_files` takes a filename without path, in contrast to option `nopie_files` which takes only full path. This commit makes it so that `nostrip_files` can take either the filename or the full path. --- common/hooks/post-install/06-strip-and-debug-pkgs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/hooks/post-install/06-strip-and-debug-pkgs.sh b/common/hooks/post-install/06-strip-and-debug-pkgs.sh index 2cec68412c50..191c025e552c 100644 --- a/common/hooks/post-install/06-strip-and-debug-pkgs.sh +++ b/common/hooks/post-install/06-strip-and-debug-pkgs.sh @@ -72,7 +72,7 @@ hook() { fname=${f##*/} for x in ${nostrip_files}; do - if [ "$x" = "$fname" ]; then + if [ "$x" = "$fname" -o "$x" = "${f#$PKGDESTDIR}" ]; then found=1 break fi From c0bb839cd7c13cb13ffd5f9c7613e2e3ef3b031f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy> Date: Wed, 5 Jan 2022 16:51:00 -0300 Subject: [PATCH 2/2] maxima: fix #34849 and #34861 - patch maxima-sbcl so it uses gmp for arithmetic (closes #34849) also add libgmp to shlib_requires since it won't be detected - remove `nopie=yes` to fix #34861, replace by `nopie_files` - remove `nostrip=yes`, replace by `nostrip_files` - add checks for #34849 and #34861 - run testsuite only for full check (not in CI) - some html and info files are shipped with source: do not rebuild --- .../maxima/patches/maxima-sbcl-with-gmp.patch | 19 +++++++ srcpkgs/maxima/template | 52 ++++++++++++++++--- 2 files changed, 63 insertions(+), 8 deletions(-) create mode 100644 srcpkgs/maxima/patches/maxima-sbcl-with-gmp.patch diff --git a/srcpkgs/maxima/patches/maxima-sbcl-with-gmp.patch b/srcpkgs/maxima/patches/maxima-sbcl-with-gmp.patch new file mode 100644 index 000000000000..074631ea2ba0 --- /dev/null +++ b/srcpkgs/maxima/patches/maxima-sbcl-with-gmp.patch @@ -0,0 +1,19 @@ +Patch maxima initialization for sbcl so it uses gmp for arithmetic + + +--- a/src/init-cl.lisp 2021-05-15 20:20:53.000000000 -0300 ++++ b/src/init-cl.lisp 2022-01-04 17:45:03.838273626 -0300 +@@ -574,8 +574,13 @@ + (delete-file file))))) + *temp-files-list*)) + ++#+sbcl ++(eval-when (:compile-toplevel :load-toplevel :execute) ++ (require 'sb-gmp)) ++ + (defun cl-user::run () + "Run Maxima in its own package." ++ #+sbcl (sb-gmp:install-gmp-funs) + (in-package :maxima) + (initialize-runtime-globals) + (let ((input-stream *standard-input*) diff --git a/srcpkgs/maxima/template b/srcpkgs/maxima/template index 1a4bec0dba18..69af367ca11d 100644 --- a/srcpkgs/maxima/template +++ b/srcpkgs/maxima/template @@ -1,7 +1,7 @@ # Template file for 'maxima' pkgname=maxima version=5.45.1 -revision=2 +revision=3 build_style=gnu-configure configure_args="$(vopt_enable clisp) $(vopt_enable sbcl sbcl-exec) $(vopt_enable ecl)" hostmakedepends="python3 perl emacs texinfo patchelf" @@ -15,8 +15,15 @@ homepage="http://maxima.sourceforge.net" distfiles="${SOURCEFORGE_SITE}/maxima/maxima-${version}.tar.gz" checksum=fe9016276970bef214a1a244348558644514d7fdfaa4fc8b9d0e87afcbb4e7dc -nostrip=yes -nopie=yes +# maxima-sbcl is nopie and should NOT be stripped or it won't work +nostrip_files=/usr/lib/maxima/$version/binary-sbcl/maxima +nopie_files=/usr/lib/maxima/$version/binary-sbcl/maxima + +if [ "$build_option_sbcl" ]; then + # binary-sbcl/maxima uses libgmp but this won't show up in objdump + shlib_requires=libgmp.so.10 +fi + build_options="clisp sbcl ecl" desc_option_clisp="Build with CLISP" desc_option_sbcl="Build with SBCL" @@ -24,6 +31,14 @@ desc_option_ecl="Build with ECL" build_options_default="sbcl ecl" vopt_conflict clisp sbcl +post_configure() { + # do not rebuild these files if they exist + touch -c doc/info/*.html + touch -c doc/info/maxima.info* + touch -c doc/info/maxima_toc.html + touch -c interfaces/xmaxima/doc/xmaxima.html +} + post_build() { if [ "$build_option_ecl" ]; then # everything will go in the same directory, use rpath=$ORIGIN @@ -38,13 +53,34 @@ post_build() { do_check() { if [ "$build_option_ecl" ]; then - echo "Check that maxima.fas works" - ecl --eval "(require 'maxima \"src/binary-ecl/maxima.fas\")" \ - --eval "(quit)" + echo "maxima-ecl: check that maxima.fas works (#34273)" + ecl --eval '(require :maxima "src/binary-ecl/maxima.fas")' \ + --eval '(quit)' + echo PASS + echo "maxima-ecl: check that unlimited heap-size works (#34861)" + ./maxima-local -q -l ecl --batch-string=":lisp \ + (ext:set-limit 'ext:heap-size 0) + showtime : true $ + a : 10^(10^5) $ + b : a^600 $ + c : a^600 $ + " + echo PASS + fi + if [ "$build_option_sbcl" ]; then + echo "maxima-sbcl: check that long arithmetic is fast (#34849)" + timeout -v 30s ./maxima-local -q -l sbcl --batch-string=" + showtime : true $ + a : 10^(10^5) $ + b : a^1000 $ + " + echo PASS fi - # now run the testsuite - make ${makejobs} check + if [ "$XBPS_CHECK_PKGS" = full ]; then + # run the testsuite for all versions enabled + make ${makejobs} check + fi } post_install() {
[-- Attachment #1: Type: text/plain, Size: 204 bytes --] New review comment by abenson on void-packages repository https://github.com/void-linux/void-packages/pull/34887#discussion_r779245745 Comment: I've not looked, but does this affect any other packages?
[-- Attachment #1: Type: text/plain, Size: 420 bytes --] New review comment by tornaria on void-packages repository https://github.com/void-linux/void-packages/pull/34887#discussion_r779249185 Comment: There are 23 source packages using `nostrip_files`, they all of course use filename without path and that shouldn't be affected by this change. I don't know if there is another package with two files of the same name such that one is nostrip and one isn't -- probably not.
[-- Attachment #1: Type: text/plain, Size: 326 bytes --] New comment by tornaria on void-packages repository https://github.com/void-linux/void-packages/pull/34887#issuecomment-1007602923 Comment: Just to confirm that this PR fixes the doctest failure we had for sagemath running long tests on i686 (https://github.com/void-linux/void-packages/pull/34030#issuecomment-1005080267).
[-- Attachment #1: Type: text/plain, Size: 789 bytes --] There is an updated pull request by tornaria against master on the void-packages repository https://github.com/tornaria/void-packages maxima https://github.com/void-linux/void-packages/pull/34887 maxima: fix #34849 and #34861 - patch maxima-sbcl so it uses gmp for arithmetic (closes #34849) also add libgmp to shlib_requires since it won't be detected - remove `nopie=yes` to fix #34861, replace by `nopie_files` - remove `nostrip=yes`, replace by `nostrip_files` - add checks for #34849 and #34861 - run testsuite only for full check (not in CI) - some html and info files are shipped with source: do not rebuild I based this on top of #34886 so `nostrip_files` works better. A patch file from https://github.com/void-linux/void-packages/pull/34887.patch is attached [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: github-pr-maxima-34887.patch --] [-- Type: text/x-diff, Size: 4299 bytes --] From 6acf130acb8fcd86ec011572d4a061482ea5e9e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy> Date: Wed, 5 Jan 2022 16:51:00 -0300 Subject: [PATCH] maxima: fix #34849 and #34861 - patch maxima-sbcl so it uses gmp for arithmetic (closes #34849) also add libgmp to shlib_requires since it won't be detected - remove `nopie=yes` to fix #34861, replace by `nopie_files` - remove `nostrip=yes`, replace by `nostrip_files` - add checks for #34849 and #34861 - run testsuite only for full check (not in CI) - some html and info files are shipped with source: do not rebuild --- .../maxima/patches/maxima-sbcl-with-gmp.patch | 19 +++++++ srcpkgs/maxima/template | 52 ++++++++++++++++--- 2 files changed, 63 insertions(+), 8 deletions(-) create mode 100644 srcpkgs/maxima/patches/maxima-sbcl-with-gmp.patch diff --git a/srcpkgs/maxima/patches/maxima-sbcl-with-gmp.patch b/srcpkgs/maxima/patches/maxima-sbcl-with-gmp.patch new file mode 100644 index 000000000000..074631ea2ba0 --- /dev/null +++ b/srcpkgs/maxima/patches/maxima-sbcl-with-gmp.patch @@ -0,0 +1,19 @@ +Patch maxima initialization for sbcl so it uses gmp for arithmetic + + +--- a/src/init-cl.lisp 2021-05-15 20:20:53.000000000 -0300 ++++ b/src/init-cl.lisp 2022-01-04 17:45:03.838273626 -0300 +@@ -574,8 +574,13 @@ + (delete-file file))))) + *temp-files-list*)) + ++#+sbcl ++(eval-when (:compile-toplevel :load-toplevel :execute) ++ (require 'sb-gmp)) ++ + (defun cl-user::run () + "Run Maxima in its own package." ++ #+sbcl (sb-gmp:install-gmp-funs) + (in-package :maxima) + (initialize-runtime-globals) + (let ((input-stream *standard-input*) diff --git a/srcpkgs/maxima/template b/srcpkgs/maxima/template index 1a4bec0dba18..69af367ca11d 100644 --- a/srcpkgs/maxima/template +++ b/srcpkgs/maxima/template @@ -1,7 +1,7 @@ # Template file for 'maxima' pkgname=maxima version=5.45.1 -revision=2 +revision=3 build_style=gnu-configure configure_args="$(vopt_enable clisp) $(vopt_enable sbcl sbcl-exec) $(vopt_enable ecl)" hostmakedepends="python3 perl emacs texinfo patchelf" @@ -15,8 +15,15 @@ homepage="http://maxima.sourceforge.net" distfiles="${SOURCEFORGE_SITE}/maxima/maxima-${version}.tar.gz" checksum=fe9016276970bef214a1a244348558644514d7fdfaa4fc8b9d0e87afcbb4e7dc -nostrip=yes -nopie=yes +# maxima-sbcl is nopie and should NOT be stripped or it won't work +nostrip_files=/usr/lib/maxima/$version/binary-sbcl/maxima +nopie_files=/usr/lib/maxima/$version/binary-sbcl/maxima + +if [ "$build_option_sbcl" ]; then + # binary-sbcl/maxima uses libgmp but this won't show up in objdump + shlib_requires=libgmp.so.10 +fi + build_options="clisp sbcl ecl" desc_option_clisp="Build with CLISP" desc_option_sbcl="Build with SBCL" @@ -24,6 +31,14 @@ desc_option_ecl="Build with ECL" build_options_default="sbcl ecl" vopt_conflict clisp sbcl +post_configure() { + # do not rebuild these files if they exist + touch -c doc/info/*.html + touch -c doc/info/maxima.info* + touch -c doc/info/maxima_toc.html + touch -c interfaces/xmaxima/doc/xmaxima.html +} + post_build() { if [ "$build_option_ecl" ]; then # everything will go in the same directory, use rpath=$ORIGIN @@ -38,13 +53,34 @@ post_build() { do_check() { if [ "$build_option_ecl" ]; then - echo "Check that maxima.fas works" - ecl --eval "(require 'maxima \"src/binary-ecl/maxima.fas\")" \ - --eval "(quit)" + echo "maxima-ecl: check that maxima.fas works (#34273)" + ecl --eval '(require :maxima "src/binary-ecl/maxima.fas")' \ + --eval '(quit)' + echo PASS + echo "maxima-ecl: check that unlimited heap-size works (#34861)" + ./maxima-local -q -l ecl --batch-string=":lisp \ + (ext:set-limit 'ext:heap-size 0) + showtime : true $ + a : 10^(10^5) $ + b : a^600 $ + c : a^600 $ + " + echo PASS + fi + if [ "$build_option_sbcl" ]; then + echo "maxima-sbcl: check that long arithmetic is fast (#34849)" + timeout -v 30s ./maxima-local -q -l sbcl --batch-string=" + showtime : true $ + a : 10^(10^5) $ + b : a^1000 $ + " + echo PASS fi - # now run the testsuite - make ${makejobs} check + if [ "$XBPS_CHECK_PKGS" = full ]; then + # run the testsuite for all versions enabled + make ${makejobs} check + fi } post_install() {
[-- Attachment #1: Type: text/plain, Size: 214 bytes --] New comment by tornaria on void-packages repository https://github.com/void-linux/void-packages/pull/34887#issuecomment-1008824041 Comment: Rebased on top of the sbcl update. @leahneukirchen can we merge now?
[-- Attachment #1: Type: text/plain, Size: 632 bytes --] There's a merged pull request on the void-packages repository maxima: fix #34849 and #34861 https://github.com/void-linux/void-packages/pull/34887 Description: - patch maxima-sbcl so it uses gmp for arithmetic (closes #34849) also add libgmp to shlib_requires since it won't be detected - remove `nopie=yes` to fix #34861, replace by `nopie_files` - remove `nostrip=yes`, replace by `nostrip_files` - add checks for #34849 and #34861 - run testsuite only for full check (not in CI) - some html and info files are shipped with source: do not rebuild I based this on top of #34886 so `nostrip_files` works better.