summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sci-libs/coinor-csdp/Manifest2
-rw-r--r--sci-libs/coinor-csdp/coinor-csdp-6.2.0.ebuild (renamed from sci-libs/coinor-csdp/coinor-csdp-6.1.1-r1.ebuild)82
-rw-r--r--sci-libs/coinor-csdp/files/coinor-csdp-6.2.0_toolchain-vars.patch63
3 files changed, 112 insertions, 35 deletions
diff --git a/sci-libs/coinor-csdp/Manifest b/sci-libs/coinor-csdp/Manifest
index c1b820c5a266..c116a33ba755 100644
--- a/sci-libs/coinor-csdp/Manifest
+++ b/sci-libs/coinor-csdp/Manifest
@@ -1 +1 @@
-DIST Csdp-6.1.1.tgz 441574 BLAKE2B 0f8dbea26e64c5854a877e89b51d6b0c7a19af31c967f665bb27b20df872c32905882703537b67c6df3dd5f3335afdb30f9145a620f4176acb73b90204e626a2 SHA512 ba5dc0faea223bad6293f131ee63daee0a395a6e84c76fe108dbbefb3ab0696b2a59f435766c78a2d22244801a9abda2719798cbfe30dd9e1c32317e0283fd2e
+DIST coinor-csdp-6.2.0.tar.gz 526179 BLAKE2B af2ac8cb4268aef006cf68fb85d344a0f9eb9f47b78c38e176c24f87ac1c88059cf47eb40cf638d131e093b6d469b6a458a1eb59fa8eb33c53b49d1a4c50aae2 SHA512 6362e174f2935645dac359c48879c42cfd387c403fc264974922322de2f02f5ffac5a35f991eb793cf8ba5516a144f5e107d1cddd0ec0da79e7ebb9c1375269f
diff --git a/sci-libs/coinor-csdp/coinor-csdp-6.1.1-r1.ebuild b/sci-libs/coinor-csdp/coinor-csdp-6.2.0.ebuild
index bc7b2d55620f..a00b0d8e16f1 100644
--- a/sci-libs/coinor-csdp/coinor-csdp-6.1.1-r1.ebuild
+++ b/sci-libs/coinor-csdp/coinor-csdp-6.2.0.ebuild
@@ -1,33 +1,43 @@
-# Copyright 1999-2014 Gentoo Foundation
+# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
-EAPI=5
+EAPI=8
-inherit versionator toolchain-funcs flag-o-matic multilib
+inherit flag-o-matic multilib toolchain-funcs
-MYPN=Csdp
+MY_PN="Csdp"
+MY_P="${MY_PN}-${PV}"
DESCRIPTION="COIN-OR C Library for Semi-Definite Programming"
HOMEPAGE="https://projects.coin-or.org/Csdp/"
-SRC_URI="http://www.coin-or.org/download/source/${MYPN}/${MYPN}-${PV}.tgz"
+SRC_URI="https://www.coin-or.org/download/source/${MY_PN}/${MY_P}.tgz -> ${P}.tar.gz"
-LICENSE="CPL-1.0"
+LICENSE="EPL-2.0"
SLOT="0"
KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
-IUSE="doc examples openmp static-libs"
+IUSE="doc examples openmp"
-RDEPEND="
- virtual/blas
+RDEPEND="virtual/blas
virtual/lapack"
-DEPEND="${RDEPEND}
- virtual/pkgconfig"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
-S="${WORKDIR}/${MYPN}-${PV}"
+PATCHES=(
+ "${FILESDIR}"/${PN}-6.2.0_toolchain-vars.patch
+)
+
+S="${WORKDIR}"/${MY_P}
+
+_get_version_component_count() {
+ local cnt=( $(ver_rs 1- ' ') )
+ echo ${#cnt[@]} || die
+}
static_to_shared() {
- local libstatic=${1}; shift
+ local libstatic=${1}
+ shift
local libname=$(basename ${libstatic%.a})
- local soname=${libname}$(get_libname $(get_version_component_range 1-2))
+ local soname=${libname}$(get_libname $(ver_cut 1-2))
local libdir=$(dirname ${libstatic})
einfo "Making ${soname} from ${libstatic}"
@@ -41,43 +51,48 @@ static_to_shared() {
-shared -Wl,-soname=${soname} \
-Wl,--whole-archive ${libstatic} -Wl,--no-whole-archive \
"$@" -o ${libdir}/${soname} || die "${soname} failed"
- [[ $(get_version_component_count) -gt 1 ]] && \
- ln -s ${soname} ${libdir}/${libname}$(get_libname $(get_major_version))
- ln -s ${soname} ${libdir}/${libname}$(get_libname)
+
+ if [[ $(_get_version_component_count) -ge 1 ]] ; then
+ ln -s ${soname} ${libdir}/${libname}$(get_libname $(ver_cut 1)) || die
+ fi
+
+ ln -s ${soname} ${libdir}/${libname}$(get_libname) || die
fi
}
pkg_setup() {
- if use openmp && [[ $(tc-getCC) == *gcc* ]] && ! tc-has-openmp; then
- eerror "Your selected gcc compiler does not support OpenMP"
- die "OpenMP non capable gcc"
+ if [[ ${MERGE_TYPE} != binary ]]; then
+ use openmp && tc-check-openmp
fi
}
src_prepare() {
- find . -name Makefile -exec sed -i -e 's:make:$(MAKE):g' '{}' + || die
+ default
+
append-cflags -DNOSHORTS -DUSEGETTIME -I../include
+
if use openmp; then
- [[ $(tc-getCC) == *gcc* ]] && append-cflags -fopenmp \
- && append-ldflags -fopenmp
- [[ $(tc-getCC) == *icc* ]] && append-cflags -openmp
- append-cflags -DUSEOPENMP
+ append-cflags -DUSEOPENMP
+
+ if [[ $(tc-getCC) == *icc* ]]; then
+ append-cflags -openmp
+ else
+ append-cflags -fopenmp
+ append-ldflags -fopenmp
+ fi
fi
+
use amd64 && append-cflags -DBIT64
+
[[ $($(tc-getPKG_CONFIG) --libs blas) =~ atlas ]] && append-cflags -DUSEATLAS
- sed -i \
- -e "s:-O3:${CFLAGS} ${LDFLAGS}:" \
- -e "s:ar :$(tc-getAR) :" \
- */Makefile || die
tc-export CC
}
src_compile() {
emake CFLAGS="${CFLAGS} -fPIC" -C lib
- local libs="$($(tc-getPKG_CONFIG) --libs blas lapack)"
+ local libs="$($(tc-getPKG_CONFIG) --libs blas lapack)" || die
static_to_shared lib/libsdp.a ${libs}
- use static-libs && emake -C lib clean && emake -C lib
emake -C solver LIBS="${libs} -L../lib -lsdp -lm"
emake -C theta LIBS="${libs} -L../lib -lsdp -lm"
}
@@ -89,13 +104,12 @@ src_test() {
src_install() {
dobin solver/csdp theta/{theta,graphtoprob,complement,rand_graph}
dolib.so lib/libsdp$(get_libname)*
- use static-libs && dolib.a lib/libsdp.a
insinto /usr/include/${PN}
doins include/*
dodoc AUTHORS README
use doc && dodoc doc/csdpuser.pdf
if use examples; then
- insinto /usr/share/doc/${PF}/examples
- doins example/*
+ docinto examples
+ dodoc example/*
fi
}
diff --git a/sci-libs/coinor-csdp/files/coinor-csdp-6.2.0_toolchain-vars.patch b/sci-libs/coinor-csdp/files/coinor-csdp-6.2.0_toolchain-vars.patch
new file mode 100644
index 000000000000..d00528f66fe1
--- /dev/null
+++ b/sci-libs/coinor-csdp/files/coinor-csdp-6.2.0_toolchain-vars.patch
@@ -0,0 +1,63 @@
+--- a/example/Makefile
++++ b/example/Makefile
+@@ -6,7 +6,7 @@
+ # This builds the example code.
+ #
+ example: example.o
+- $(CC) $(CFLAGS) example.o $(LIBS) -o example
++ $(CC) $(CFLAGS) $(LDFLAGS) example.o $(LIBS) -o example
+ #
+ # To clean up the directory.
+ #
+--- a/lib/Makefile
++++ b/lib/Makefile
+@@ -2,7 +2,7 @@
+ # Build the library.
+ #
+ libsdp.a: readprob.o sdp.o op_o.o psd_feas.o op_a.o op_at.o Fnorm.o calc_pobj.o calc_dobj.o trace_prod.o zero_mat.o mat_mult.o sym_mat.o copy_mat.o addscaledmat.o user_exit.o make_i.o allocmat.o initsoln.o initparams.o add_mat.o writesol.o readsol.o easysdp.o writeprob.o solvesys.o makefill.o mat_multsp.o norms.o linesearch.o matvec.o chol.o qreig.o tweakgap.o freeprob.o packed.o sortentries.o
+- ar cr libsdp.a readprob.o sdp.o op_o.o psd_feas.o op_a.o op_at.o Fnorm.o calc_pobj.o calc_dobj.o trace_prod.o zero_mat.o mat_mult.o sym_mat.o copy_mat.o addscaledmat.o user_exit.o make_i.o allocmat.o initsoln.o initparams.o add_mat.o writesol.o readsol.o easysdp.o writeprob.o solvesys.o makefill.o mat_multsp.o norms.o linesearch.o matvec.o chol.o qreig.o tweakgap.o freeprob.o packed.o sortentries.o
++ $(AR) cr libsdp.a readprob.o sdp.o op_o.o psd_feas.o op_a.o op_at.o Fnorm.o calc_pobj.o calc_dobj.o trace_prod.o zero_mat.o mat_mult.o sym_mat.o copy_mat.o addscaledmat.o user_exit.o make_i.o allocmat.o initsoln.o initparams.o add_mat.o writesol.o readsol.o easysdp.o writeprob.o solvesys.o makefill.o mat_multsp.o norms.o linesearch.o matvec.o chol.o qreig.o tweakgap.o freeprob.o packed.o sortentries.o
+ #
+ # On some systems, you might need to add after "ar cr libsdp.a ..."
+ # ranlib libsdp.a
+--- a/solver/Makefile
++++ b/solver/Makefile
+@@ -2,7 +2,7 @@
+ # This builds the stand alone solver.
+ #
+ csdp: csdp.o
+- $(CC) $(CFLAGS) csdp.o $(LIBS) -o csdp
++ $(CC) $(CFLAGS) $(LDFLAGS) csdp.o $(LIBS) -o csdp
+ #
+ # To clean out the directory:
+ #
+--- a/theta/Makefile
++++ b/theta/Makefile
+@@ -6,23 +6,23 @@
+ # This builds the theta number code.
+ #
+ theta: theta.o
+- $(CC) $(CFLAGS) theta.o $(LIBS) -o theta
++ $(CC) $(CFLAGS) $(LDFLAGS) theta.o $(LIBS) -o theta
+ #
+ # Complement computes the complement of a graph.
+ #
+ complement: complement.o
+- $(CC) $(CFLAGS) complement.o $(LIBS) -o complement
++ $(CC) $(CFLAGS) $(LDFLAGS) complement.o $(LIBS) -o complement
+ #
+ # rand_graph generates a random graph.
+ #
+ rand_graph: rand_graph.o
+- $(CC) $(CFLAGS) rand_graph.o $(LIBS) -o rand_graph
++ $(CC) $(CFLAGS) $(LDFLAGS) rand_graph.o $(LIBS) -o rand_graph
+ #
+ # graphtoprob converts a file in the graph format to an SDP problem in our
+ # SDP format.
+ #
+ graphtoprob: graphtoprob.o
+- $(CC) $(CFLAGS) graphtoprob.o $(LIBS) -o graphtoprob
++ $(CC) $(CFLAGS) $(LDFLAGS) graphtoprob.o $(LIBS) -o graphtoprob
+ #
+ # To clean up the directory.
+ #