From e963af9c0972765749e671281797ca84a373710c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Sun, 9 Oct 2022 17:46:15 -0300 Subject: [PATCH 1/4] SuiteSparse: update to 6.0.1. Also: use openblas instead of lapack when available. --- common/shlibs | 7 ++-- .../patches/skip-demo-on-build.patch | 22 ---------- srcpkgs/SuiteSparse/template | 40 +++++++++++-------- 3 files changed, 27 insertions(+), 42 deletions(-) delete mode 100644 srcpkgs/SuiteSparse/patches/skip-demo-on-build.patch diff --git a/common/shlibs b/common/shlibs index 1a4d1031475a..7429bfcd2e23 100644 --- a/common/shlibs +++ b/common/shlibs @@ -71,7 +71,6 @@ libppl.so.14 ppl-1.2_1 libppl_c.so.4 ppl-0.11_1 libstdc++.so.6 libstdc++-4.4.0_1 libssp.so.0 libssp-4.4.0_1 -libcxsparse.so.3 SuiteSparse-5.10.1_1 libncurses.so.6 ncurses-libs-6.0_1 ignore libncursesw.so.6 ncurses-libs-5.8_1 ignore libtinfo.so.6 ncurses-libtinfo-libs-6.2_2 @@ -4064,9 +4063,9 @@ libprimecount.so.7 primecount-7.2_1 libprimesieve.so.10 primesieve-8.0_1 libavif.so.15 libavif-0.11.0_1 libkdumpfile.so.10 libkdumpfile-0.4.1_1 -libamd.so.2 SuiteSparse-5.10.1_1 -libcholmod.so.3 SuiteSparse-5.10.1_1 -libumfpack.so.5 SuiteSparse-5.10.1_1 +libamd.so.3 SuiteSparse-6.0.1_1 +libcholmod.so.4 SuiteSparse-6.0.1_1 +libumfpack.so.6 SuiteSparse-6.0.1_1 libecl.so.21.2 ecl-21.2.1_1 libecm.so.1 ecm-7.0.4_3 libcliquer.so.1 cliquer-1.22_1 diff --git a/srcpkgs/SuiteSparse/patches/skip-demo-on-build.patch b/srcpkgs/SuiteSparse/patches/skip-demo-on-build.patch deleted file mode 100644 index 9ec775229ed6..000000000000 --- a/srcpkgs/SuiteSparse/patches/skip-demo-on-build.patch +++ /dev/null @@ -1,22 +0,0 @@ -This is to avoid running demos on `make install`, which break cross compile - ---- a/Makefile -+++ b/Makefile -@@ -294,7 +294,7 @@ endif - # just compile GraphBLAS - gb: - echo $(CMAKE_OPTIONS) -- ( cd GraphBLAS && $(MAKE) JOBS=$(JOBS) CMAKE_OPTIONS='$(CMAKE_OPTIONS)' ) -+ ( cd GraphBLAS && $(MAKE) JOBS=$(JOBS) CMAKE_OPTIONS='$(CMAKE_OPTIONS)' library ) - - # compile and install GraphBLAS libgraphblas_renamed, for MATLAB - gbrenamed: -@@ -309,7 +309,7 @@ gbrenamed: - - # just compile Mongoose - mon: -- ( cd Mongoose && $(MAKE) CMAKE_OPTIONS='$(CMAKE_OPTIONS)' ) -+ ( cd Mongoose && $(MAKE) CMAKE_OPTIONS='$(CMAKE_OPTIONS)' library ) - - # compile and install Mongoose - moninstall: mon diff --git a/srcpkgs/SuiteSparse/template b/srcpkgs/SuiteSparse/template index b304dfc8f786..212162449103 100644 --- a/srcpkgs/SuiteSparse/template +++ b/srcpkgs/SuiteSparse/template @@ -1,33 +1,43 @@ # Template file for 'SuiteSparse' pkgname=SuiteSparse -version=5.12.0 +version=6.0.1 revision=1 -# XXX: re-enable TBB=-ltbb -DSPQR_CONFIG=-DHAVE_TBB when updating, if possible -make_build_args="BLAS=-lblas LAPACK=-llapack" -hostmakedepends="cmake chrpath" -makedepends="libgomp-devel lapack-devel mpfr-devel" +hostmakedepends="cmake gcc-fortran" +makedepends="libgomp-devel mpfr-devel + $(vopt_if openblas 'openblas-devel' 'lapack-devel')" short_desc="Suite of sparse matrix software" maintainer="Gonzalo TornarĂ­a " license="custom:multiple" homepage="https://people.engr.tamu.edu/davis/suitesparse.html" changelog="https://raw.githubusercontent.com/DrTimothyAldenDavis/SuiteSparse/master/ChangeLog" distfiles="https://github.com/DrTimothyAldenDavis/SuiteSparse/archive/refs/tags/v${version}.tar.gz" -checksum=5fb0064a3398111976f30c5908a8c0b40df44c6dd8f0cc4bfa7b9e45d8c647de +checksum=06f55a0449775d1f43d8a33ba8c8417ea8cf76c27833b465c49825baa8741d0c + +build_options="openblas" + +case "$XBPS_TARGET_MACHINE" in + x86_64*|i686*|aarch64*|armv[67]*|ppc64*) + # Prefer accelerated routines where available + build_options_default="openblas" + ;; + *) ;; +esac do_build() { - make config library $make_build_args JOBS=$XBPS_MAKEJOBS + make library \ + JOBS=$XBPS_MAKEJOBS \ + CMAKE_OPTIONS="-DBLA_VENDOR=$(vopt_if openblas 'OpenBLAS' 'Generic') \ + -DCMAKE_INSTALL_PREFIX=$DESTDIR/usr" } do_check() { - make go $make_build_args LD_LIBRARY_PATH=$wrksrc/lib JOBS=$XBPS_MAKEJOBS + make demos \ + JOBS=$XBPS_MAKEJOBS } do_install() { - make install $make_build_args INSTALL=$DESTDIR/usr + make install vlicense LICENSE.txt - - # remove invalid rpath - chrpath -d $DESTDIR/usr/lib/lib*.so } SuiteSparse-devel_package() { @@ -35,10 +45,8 @@ SuiteSparse-devel_package() { short_desc+=" - development files" pkg_install() { vmove usr/include + vmove usr/lib/cmake vmove "usr/lib/*.a" - # do not vmove libmetis.so - vmove "usr/lib/lib[a-ln-z]*.so" - vmove "usr/lib/libmo*.so" - vmove usr/share/doc + vmove "usr/lib/*.so" } } From 8a1aa4992a10714d59ea5bff31790a63171901c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Sun, 13 Nov 2022 00:33:48 -0300 Subject: [PATCH 2/4] python3-cvxopt: revbump for SuiteSparse 6.0.1. Also: use openblas instead of lapack when available. --- srcpkgs/python3-cvxopt/patches/fix-gsl.patch | 11 --- .../python3-cvxopt/patches/test-modules.patch | 76 +++++++++++++++++++ srcpkgs/python3-cvxopt/template | 18 ++++- 3 files changed, 91 insertions(+), 14 deletions(-) delete mode 100644 srcpkgs/python3-cvxopt/patches/fix-gsl.patch create mode 100644 srcpkgs/python3-cvxopt/patches/test-modules.patch diff --git a/srcpkgs/python3-cvxopt/patches/fix-gsl.patch b/srcpkgs/python3-cvxopt/patches/fix-gsl.patch deleted file mode 100644 index e32dc2fbf1e1..000000000000 --- a/srcpkgs/python3-cvxopt/patches/fix-gsl.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/setup.py 2022-03-07 18:58:58.000000000 -0300 -+++ b/setup.py 2022-04-14 22:25:18.860887901 -0300 -@@ -129,7 +129,7 @@ - # optional modules - - if BUILD_GSL: -- gsl = Extension('gsl', libraries = M_LIB + ['gsl'] + BLAS_LIB, -+ gsl = Extension('gsl', libraries = M_LIB + ['gsl', 'gslcblas'], - include_dirs = [ GSL_INC_DIR ], - library_dirs = [ GSL_LIB_DIR, BLAS_LIB_DIR ], - define_macros = GSL_MACROS, diff --git a/srcpkgs/python3-cvxopt/patches/test-modules.patch b/srcpkgs/python3-cvxopt/patches/test-modules.patch new file mode 100644 index 000000000000..6562b7e002e1 --- /dev/null +++ b/srcpkgs/python3-cvxopt/patches/test-modules.patch @@ -0,0 +1,76 @@ +diff --git a/tests/test_dsdp.py b/tests/test_dsdp.py +index d514dc8..2a5e5bf 100644 +--- a/tests/test_dsdp.py ++++ b/tests/test_dsdp.py +@@ -4,9 +4,10 @@ class TestDSDP(unittest.TestCase): + + def setUp(self): + try: +- from cvxopt import dsdp, matrix +- except: ++ import cvxopt.dsdp ++ except ModuleNotFoundError: + self.skipTest("DSDP not available") ++ from cvxopt import matrix + c = matrix([1.,-1.,1.]) + G = [ matrix([[-7., -11., -11., 3.], + [ 7., -18., -18., 8.], +diff --git a/tests/test_glpk.py b/tests/test_glpk.py +index 89f876d..dad5801 100644 +--- a/tests/test_glpk.py ++++ b/tests/test_glpk.py +@@ -4,15 +4,16 @@ class TestGLPK(unittest.TestCase): + + def setUp(self): + try: +- from cvxopt import glpk, matrix +- c = matrix([-4., -5.]) +- G = matrix([[2., 1., -1., 0.], [1., 2., 0., -1.]]) +- h = matrix([3., 3., 0., 0.]) +- A = matrix([1.0,1.0],(1,2)) +- b = matrix(1.0) +- self._prob_data = (c,G,h,A,b) +- except: ++ import cvxopt.glpk ++ except ModuleNotFoundError: + self.skipTest("GLPK not available") ++ from cvxopt import matrix ++ c = matrix([-4., -5.]) ++ G = matrix([[2., 1., -1., 0.], [1., 2., 0., -1.]]) ++ h = matrix([3., 3., 0., 0.]) ++ A = matrix([1.0,1.0],(1,2)) ++ b = matrix(1.0) ++ self._prob_data = (c,G,h,A,b) + + def test_lp(self): + from cvxopt import solvers, glpk +diff --git a/tests/test_gsl.py b/tests/test_gsl.py +index d24f058..3ee9a37 100644 +--- a/tests/test_gsl.py ++++ b/tests/test_gsl.py +@@ -4,8 +4,8 @@ class TestGSL(unittest.TestCase): + + def setUp(self): + try: +- from cvxopt import gsl +- except: ++ import cvxopt.gsl ++ except ModuleNotFoundError: + self.skipTest("GSL not available") + + def test1(self): +diff --git a/tests/test_mosek.py b/tests/test_mosek.py +index e3d0f4e..6cd1fbf 100644 +--- a/tests/test_mosek.py ++++ b/tests/test_mosek.py +@@ -4,8 +4,8 @@ class TestMOSEK(unittest.TestCase): + + def setUp(self): + try: +- from cvxopt import msk +- except: ++ import cvxopt.msk ++ except ModuleNotFoundError: + self.skipTest("MOSEK not available") + + def assertAlmostEqualLists(self,L1,L2,places=3): diff --git a/srcpkgs/python3-cvxopt/template b/srcpkgs/python3-cvxopt/template index 4044fbfea2a7..944086e37837 100644 --- a/srcpkgs/python3-cvxopt/template +++ b/srcpkgs/python3-cvxopt/template @@ -1,11 +1,11 @@ # Template file for 'python3-cvxopt' pkgname=python3-cvxopt version=1.3.0 -revision=2 +revision=3 build_style=python3-module hostmakedepends="python3-setuptools" -makedepends="python3-devel blas-devel lapack-devel SuiteSparse-devel gsl-devel - glpk-devel fftw-devel" +makedepends="python3-devel SuiteSparse-devel gsl-devel glpk-devel fftw-devel + $(vopt_if openblas 'openblas-devel' 'lapack-devel')" checkdepends="python3-pytest" short_desc="Python software for convex optimization" maintainer="Gonzalo TornarĂ­a " @@ -14,8 +14,20 @@ homepage="http://cvxopt.org/" distfiles="${PYPI_SITE}/c/cvxopt/cvxopt-${version}.tar.gz" checksum=00b1b232f9d1f902d578a9d75814b67fa020758d5ae422e28ca8cef6269fa5c6 +build_options="openblas" + +case "$XBPS_TARGET_MACHINE" in + x86_64*|i686*|aarch64*|armv[67]*|ppc64*) + # Prefer accelerated routines where available + build_options_default="openblas" + ;; + *) ;; +esac + pre_build() { export CVXOPT_BUILD_GSL=1 export CVXOPT_BUILD_GLPK=1 export CVXOPT_BUILD_FFTW=1 + export CVXOPT_BLAS_LIB=$(vopt_if openblas 'openblas' 'blas;gslcblas') + export CVXOPT_LAPACK_LIB=$(vopt_if openblas 'openblas' 'lapack') } From 30b25102f22009d83c311f9abf520de7dbaa3a5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Mon, 21 Nov 2022 23:12:25 -0300 Subject: [PATCH 3/4] rapidjson: apply upstream patch needed for octave --- .../5d9d0f78b53dd8cd1ec757fd8ef07211ee114161.patch | 13 +++++++++++++ srcpkgs/rapidjson/template | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/rapidjson/patches/5d9d0f78b53dd8cd1ec757fd8ef07211ee114161.patch diff --git a/srcpkgs/rapidjson/patches/5d9d0f78b53dd8cd1ec757fd8ef07211ee114161.patch b/srcpkgs/rapidjson/patches/5d9d0f78b53dd8cd1ec757fd8ef07211ee114161.patch new file mode 100644 index 000000000000..bd3dee81b6f7 --- /dev/null +++ b/srcpkgs/rapidjson/patches/5d9d0f78b53dd8cd1ec757fd8ef07211ee114161.patch @@ -0,0 +1,13 @@ +See: https://github.com/Tencent/rapidjson/pull/909 + +--- a/include/rapidjson/prettywriter.h ++++ b/include/rapidjson/prettywriter.h +@@ -47,7 +47,7 @@ enum PrettyFormatOptions { + template, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags> + class PrettyWriter : public Writer { + public: +- typedef Writer Base; ++ typedef Writer Base; + typedef typename Base::Ch Ch; + + //! Constructor diff --git a/srcpkgs/rapidjson/template b/srcpkgs/rapidjson/template index 99d92702cc9d..2b47472c94f3 100644 --- a/srcpkgs/rapidjson/template +++ b/srcpkgs/rapidjson/template @@ -1,7 +1,7 @@ # Template file for 'rapidjson' pkgname=rapidjson version=1.1.0 -revision=4 +revision=5 build_style=cmake short_desc="Fast JSON parser/generator for C++ with both SAX/DOM style API" maintainer="Alexander Egorenkov " From 1a048130472c4517b6f4db5badd747684f73c26f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Thu, 17 Nov 2022 15:17:33 -0300 Subject: [PATCH 4/4] octave: update to 7.3.0. - Fix cross build - Use SuiteSparse - Use rapidjson - Use --disable-docs to skip building docs, instead install the docs in the tarball. This way we don't need texlive/texinfo/gnuplot to build. - Avoid warnings due to egrep deprecation - xlint fixes --- common/shlibs | 6 +++ srcpkgs/octave/template | 113 ++++++++++++++++++++++++---------------- 2 files changed, 74 insertions(+), 45 deletions(-) diff --git a/common/shlibs b/common/shlibs index 7429bfcd2e23..b3b5c470ec27 100644 --- a/common/shlibs +++ b/common/shlibs @@ -4064,7 +4064,13 @@ libprimesieve.so.10 primesieve-8.0_1 libavif.so.15 libavif-0.11.0_1 libkdumpfile.so.10 libkdumpfile-0.4.1_1 libamd.so.3 SuiteSparse-6.0.1_1 +libcamd.so.3 SuiteSparse-6.0.1_1 +libccolamd.so.3 SuiteSparse-6.0.1_1 libcholmod.so.4 SuiteSparse-6.0.1_1 +libcolamd.so.3 SuiteSparse-6.0.1_1 +libcxsparse.so.4 SuiteSparse-6.0.1_1 +libspqr.so.3 SuiteSparse-6.0.1_1 +libsuitesparseconfig.so.6 SuiteSparse-6.0.1_1 libumfpack.so.6 SuiteSparse-6.0.1_1 libecl.so.21.2 ecl-21.2.1_1 libecm.so.1 ecm-7.0.4_3 diff --git a/srcpkgs/octave/template b/srcpkgs/octave/template index 08ba298b09dd..8cf23fe9279f 100644 --- a/srcpkgs/octave/template +++ b/srcpkgs/octave/template @@ -1,20 +1,24 @@ # Template file for 'octave' pkgname=octave -version=6.3.0 +version=7.3.0 revision=1 build_style=gnu-configure -hostmakedepends="perl gcc-fortran pkg-config gnuplot texinfo texlive-dvi tar" +configure_args="--disable-docs" +hostmakedepends="perl gcc-fortran pkg-config" makedepends="pcre-devel readline-devel libSM-devel libltdl-devel lcms2-devel - glpk-devel" -depends="$(vopt_if gui qt5-plugin-sqlite) texinfo" -checkdepends="zip unzip" + glpk-devel SuiteSparse-devel rapidjson" +depends="$(vopt_if gui qt5-plugin-sqlite)" +checkdepends="zip unzip ghostscript" short_desc="High-level language, primarily intended for numerical computations" maintainer="Diogo Leal " license="GPL-3.0-or-later" homepage="https://gnu.org/software/octave/" -changelog="https://www.gnu.org/software/octave/NEWS-6.1.html" +changelog="https://www.gnu.org/software/octave/NEWS-7.html" distfiles="${GNU_SITE}/octave/octave-${version}.tar.gz" -checksum=232065f3a72fc3013fe9f17f429a3df69d672c1f6b6077029a31c8f3cd58a66e +checksum=6e14a4649d70af45ab660f8cbbf645aaf1ec33f25f88bfda4697cb17e440c4f5 + +# avoid warnings due to egrep deprecation +export EGREP="grep -E" # Use OpenBLAS on platforms where it is available and fallback to regular BLAS # on all others. @@ -22,7 +26,7 @@ case "$XBPS_TARGET_MACHINE" in # List of supported architectures copied from openblas. armv[67]*|aarch64*|i686*|x86_64*|ppc64*) makedepends+=" openblas-devel" - configure_args=" --with-blas=openblas --with-lapack=openblas" + configure_args+=" --with-blas=openblas --with-lapack=openblas" ;; *) makedepends+=" blas-devel lapack-devel" @@ -30,21 +34,20 @@ case "$XBPS_TARGET_MACHINE" in esac # Package build options -# TODO: some options are still missing, such as -# java, qrupdate, suitesparse +# TODO: some options are still missing, such as java, qrupdate build_options=" - arpack - audio - curl - fftw3 - graphicsmagick - gui - hdf5 - imagemagick - opengl - openmp - qhull - zlib" + arpack + audio + curl + fftw3 + graphicsmagick + gui + hdf5 + imagemagick + opengl + openmp + qhull + zlib" vopt_conflict graphicsmagick imagemagick @@ -61,31 +64,42 @@ desc_option_openmp="Enable support for OpenMP SMP multi-threading" desc_option_zlib="Support for compressed data." build_options_default=" - arpack - audio - curl - fftw3 - graphicsmagick - gui - hdf5 - opengl - openmp - qhull - zlib" + arpack + audio + curl + fftw3 + graphicsmagick + gui + opengl + openmp + qhull + zlib" + +if [ -z "$CROSS_BUILD" ]; then + # hdf5 is nocross + build_options_default+=" hdf5" +fi + +if [ -n "$CROSS_BUILD" ];then + # cross build cannot determine integer size for BLAS + # our BLAS (lapack and openblas) are built with 32 bit ints + # even in 64 bit architectures + configure_args+=" ax_blas_integer_size=4" +fi makedepends+=" - $(vopt_if arpack arpack-ng-devel) - $(vopt_if audio 'libsndfile-devel portaudio-devel') - $(vopt_if curl libcurl-devel) - $(vopt_if fftw3 fftw-devel) - $(vopt_if graphicsmagick libgraphicsmagick-devel) - $(vopt_if gui 'qt5-devel qt5-plugin-sqlite qscintilla-qt5-devel qt5-tools-devel') - $(vopt_if hdf5 hdf5-devel) - $(vopt_if imagemagick libmagick-devel) - $(vopt_if opengl "glu-devel fltk-devel fontconfig-devel freetype-devel gl2ps-devel") - $(vopt_if openmp libgomp-devel) - $(vopt_if qhull libqhull-devel) - $(vopt_if zlib zlib-devel)" + $(vopt_if arpack arpack-ng-devel) + $(vopt_if audio 'libsndfile-devel portaudio-devel') + $(vopt_if curl libcurl-devel) + $(vopt_if fftw3 fftw-devel) + $(vopt_if graphicsmagick libgraphicsmagick-devel) + $(vopt_if gui 'qt5-devel qt5-plugin-sqlite qscintilla-qt5-devel qt5-tools-devel') + $(vopt_if hdf5 hdf5-devel) + $(vopt_if imagemagick libmagick-devel) + $(vopt_if opengl "glu-devel fltk-devel fontconfig-devel freetype-devel gl2ps-devel") + $(vopt_if openmp libgomp-devel) + $(vopt_if qhull libqhull-devel) + $(vopt_if zlib zlib-devel)" case "$XBPS_TARGET_MACHINE" in ppc64*) ;; @@ -100,4 +114,13 @@ post_install() { # add helper to launch octave from dmenu etc. printf "#!/bin/sh\noctave --gui" > octave-gui vbin octave-gui + + # install man pages + vmkdir usr/share/man/man1 + vcopy "doc/*/*.1" usr/share/man/man1 + + # install info files + vmkdir usr/share/info + touch ${DESTDIR}/usr/share/info/dir + vcopy "doc/*/*.info*" usr/share/info }