summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2023-05-11 07:45:18 +0200
committerMichał Górny <mgorny@gentoo.org>2023-05-11 08:22:16 +0200
commit8fc01b059708c6ec3c09a5bc42cde5bd33fd7d85 (patch)
treea5282be1149eddc9dbc84b0b42c9ca66802e5072 /dev-python/cvxopt
parentdev-python/types-docutils: Bump to 0.20.0.1 (diff)
downloadgentoo-8fc01b059708c6ec3c09a5bc42cde5bd33fd7d85.tar.gz
gentoo-8fc01b059708c6ec3c09a5bc42cde5bd33fd7d85.tar.bz2
gentoo-8fc01b059708c6ec3c09a5bc42cde5bd33fd7d85.zip
dev-python/cvxopt: Bump to 1.3.1
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'dev-python/cvxopt')
-rw-r--r--dev-python/cvxopt/Manifest1
-rw-r--r--dev-python/cvxopt/cvxopt-1.3.1.ebuild178
2 files changed, 179 insertions, 0 deletions
diff --git a/dev-python/cvxopt/Manifest b/dev-python/cvxopt/Manifest
index 5f22377a8027..4b6128412973 100644
--- a/dev-python/cvxopt/Manifest
+++ b/dev-python/cvxopt/Manifest
@@ -1 +1,2 @@
DIST cvxopt-1.3.0.gh.tar.gz 4120085 BLAKE2B f4cb23146897d3f4b24e0fc4d59bd89e2c5b49c83aecdbec02297abbea8a16ecab85a02e9c187debbf3a03cc62e4c46128acefbec2af7ea20558e7fa1d1c0bd0 SHA512 b719100abb0b049765963dc4ca9f646b508a319b5f8390aa7a0578056d32a32573e195c136ffb907a57135e337887d2256c9a0883e63dad966dab43cad0bf58a
+DIST cvxopt-1.3.1.gh.tar.gz 3958725 BLAKE2B 48b5477f27323da3c5ba69eb993250fe54e793ebb757c84d77ff5c63fb47a649a4a15137d32efd747627ccd629096fd4ac3c70912222fe3e367f0fc062760266 SHA512 9531b83785589c55192e1daa98e3a78288b429a67d2704c8953b9def1a2f8dd4389d17be43fd5deb6c051485e43e5e0e726a2752d126d7289163d7a5a02205dc
diff --git a/dev-python/cvxopt/cvxopt-1.3.1.ebuild b/dev-python/cvxopt/cvxopt-1.3.1.ebuild
new file mode 100644
index 000000000000..73bb03e8da33
--- /dev/null
+++ b/dev-python/cvxopt/cvxopt-1.3.1.ebuild
@@ -0,0 +1,178 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9..11} )
+
+inherit distutils-r1 toolchain-funcs
+
+DESCRIPTION="Python package for convex optimization"
+HOMEPAGE="
+ https://cvxopt.org/
+ https://github.com/cvxopt/cvxopt/
+ https://pypi.org/project/cvxopt/
+"
+# no sdist, as of 1.3.1
+SRC_URI="
+ https://github.com/${PN}/${PN}/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="+dsdp examples fftw +glpk gsl"
+
+DEPEND="
+ virtual/blas
+ virtual/lapack
+ sci-libs/amd:0=
+ sci-libs/cholmod:0=
+ sci-libs/colamd:0=
+ sci-libs/suitesparseconfig:0=
+ sci-libs/umfpack:0=
+ dsdp? ( sci-libs/dsdp:0= )
+ fftw? ( sci-libs/fftw:3.0= )
+ glpk? ( >=sci-mathematics/glpk-4.49:0= )
+ gsl? ( sci-libs/gsl:0= )
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ >=dev-python/setuptools-scm-6.2[${PYTHON_USEDEP}]
+ virtual/pkgconfig
+"
+
+distutils_enable_sphinx doc/source --no-autodoc
+distutils_enable_tests pytest
+
+# The BLAS_LIB and LAPACK_LIB variables (among others) in cvxopt's
+# setup.py are passed in as colon-delimited strings. So, for example,
+# if your blas "l" flags are "-lblas -lcblas", then cvxopt wants
+# "blas;cblas" for BLAS_LIB.
+#
+# The following function takes a flag type ("l", "L", or "I") as its
+# first argument and a list of packages as its remaining arguments. It
+# outputs a list of libraries, library paths, or include paths,
+# respectively, for the given packages, retrieved using pkg-config and
+# deduplicated, in the appropriate format.
+#
+cvxopt_output() {
+ local FLAGNAME="${1}"
+ shift
+ local PACKAGES="${@}"
+
+ local PKGCONFIG_MODE
+ case "${FLAGNAME}" in
+ l) PKGCONFIG_MODE="--libs-only-l";;
+ L) PKGCONFIG_MODE="--libs-only-L";;
+ I) PKGCONFIG_MODE="--cflags-only-I";;
+ *) echo "invalid flag name: ${FLAGNAME}"; exit 1;;
+ esac
+
+ local CVXOPT_OUTPUT=""
+ local PKGCONFIG_ITEM
+ for PKGCONFIG_ITEM in $($(tc-getPKG_CONFIG) ${PKGCONFIG_MODE} ${PACKAGES})
+ do
+ # First strip off the leading "-l", "-L", or "-I", and replace
+ # it with a semicolon...
+ PKGCONFIG_ITEM=";${PKGCONFIG_ITEM#-${FLAGNAME}}"
+
+ # Now check to see if this element is already present in the
+ # list, and skip it if it is. This eliminates multiple entries
+ # from winding up in the list when multiple package arguments are
+ # passed to this function.
+ if [[ "${CVXOPT_OUTPUT}" != "${CVXOPT_OUTPUT%${PKGCONFIG_ITEM}}" ]]
+ then
+ # It was already the last entry in the list, so skip it.
+ continue
+ elif [[ "${CVXOPT_OUTPUT}" != "${CVXOPT_OUTPUT%${PKGCONFIG_ITEM};*}" ]]
+ then
+ # It was an earlier entry in the list. These two cases are
+ # separate to ensure that we can e.g. find ";m" at the end
+ # of the list, but that we don't find ";metis" in the process.
+ continue
+ fi
+
+ # It isn't in the list yet, so append it.
+ CVXOPT_OUTPUT+="${PKGCONFIG_ITEM}"
+ done
+
+ # Strip the leading ";" from ";foo;bar" before output.
+ echo "${CVXOPT_OUTPUT#;}"
+}
+
+src_configure() {
+ # Mandatory dependencies.
+ export CVXOPT_BLAS_LIB="$(cvxopt_output l blas)"
+ export CVXOPT_BLAS_LIB_DIR="${EPREFIX}/usr/$(get_libdir);$(cvxopt_output L blas)"
+ export CVXOPT_LAPACK_LIB="$(cvxopt_output l lapack)"
+ export CVXOPT_SUITESPARSE_LIB_DIR="${EPREFIX}/usr/$(get_libdir);$(cvxopt_output L umfpack cholmod amd colamd suitesparseconfig)"
+
+ # Most of these CVXOPT_* variables can be blank or have "empty"
+ # entries and the resulting command-line with e.g. "-L -L/some/path"
+ # won't hurt anything. The INC_DIR variables, however, cause
+ # problems, because at least gcc doesn't like a bare "-I". We
+ # pre-populate these variable with something safe so that setup.py
+ # doesn't look in the wrong place if pkg-config doesn't return any
+ # extra -I directories. This is
+ #
+ # https://github.com/cvxopt/cvxopt/issues/167
+ #
+ CVXOPT_SUITESPARSE_INC_DIR="${EPREFIX}/usr/include"
+ local SUITESPARSE_LOCAL_INCS="$(cvxopt_output I umfpack cholmod amd colamd suitesparseconfig)"
+ if [[ -n "${SUITESPARSE_LOCAL_INCS}" ]]; then
+ CVXOPT_SUITESPARSE_INC_DIR+=";${SUITESPARSE_LOCAL_INCS}"
+ fi
+ export CVXOPT_SUITESPARSE_INC_DIR
+
+ # optional dependencies
+ if use dsdp; then
+ # no pkg-config file at the moment
+ export CVXOPT_BUILD_DSDP=1
+ export CVXOPT_DSDP_LIB_DIR="${EPREFIX}/usr/$(get_libdir)"
+ export CVXOPT_DSDP_INC_DIR="${EPREFIX}/usr/include"
+ fi
+
+ if use fftw; then
+ export CVXOPT_BUILD_FFTW=1
+ export CVXOPT_FFTW_LIB_DIR="${EPREFIX}/usr/$(get_libdir);$(cvxopt_output L fftw3)"
+ CVXOPT_FFTW_INC_DIR="${EPREFIX}/usr/include"
+ FFTW_LOCAL_INCS="$(cvxopt_output I fftw3)"
+ if [[ -n "${FFTW_LOCAL_INCS}" ]]; then
+ CVXOPT_FFTW_INC_DIR+=";${FFTW_LOCAL_INCS}"
+ fi
+ export CVXOPT_FFTW_INC_DIR
+ fi
+
+ if use glpk; then
+ # no pkg-config file at the moment
+ export CVXOPT_BUILD_GLPK=1
+ export CVXOPT_GLPK_LIB_DIR="${EPREFIX}/usr/$(get_libdir)"
+ export CVXOPT_GLPK_INC_DIR="${EPREFIX}/usr/include"
+ fi
+
+ if use gsl; then
+ export CVXOPT_BUILD_GSL=1
+ export CVXOPT_GSL_LIB_DIR="${EPREFIX}/usr/$(get_libdir);$(cvxopt_output L gsl)"
+ CVXOPT_GSL_INC_DIR="${EPREFIX}/usr/include"
+ GSL_LOCAL_INCS="$(cvxopt_output I gsl)"
+ if [[ -n "${GSL_LOCAL_INCS}" ]]; then
+ CVXOPT_GSL_INC_DIR+=";${GSL_LOCAL_INCS}"
+ fi
+ export CVXOPT_GSL_INC_DIR
+ fi
+
+ export SETUPTOOLS_SCM_PRETEND_VERSION=${PV}
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+ if use examples; then
+ dodoc -r examples
+ docompress -x "/usr/share/doc/${PF}/examples"
+ fi
+}