mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-08-24 18:58:08 -07:00
98 lines
2.1 KiB
Bash
98 lines
2.1 KiB
Bash
# Copyright 1999-2024 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=8
|
|
|
|
inherit toolchain-funcs
|
|
|
|
DESCRIPTION="Reverse-search algorithm for vertex enumeration problems"
|
|
HOMEPAGE="https://cgm.cs.mcgill.ca/~avis/C/lrs.html"
|
|
SRC_URI="https://cgm.cs.mcgill.ca/~avis/C/lrslib/archive/${P}.tar.gz"
|
|
|
|
# COPYING is GPL-2, but e.g. lrslib.h says "or ... any later version."
|
|
LICENSE="GPL-2+"
|
|
SLOT="0"
|
|
KEYWORDS="amd64 ~arm ~riscv ~amd64-linux"
|
|
IUSE="gmp mpi"
|
|
|
|
RDEPEND="
|
|
gmp? (
|
|
dev-libs/gmp:0=
|
|
mpi? ( virtual/mpi )
|
|
)"
|
|
DEPEND="${RDEPEND}"
|
|
|
|
PATCHES=(
|
|
"${FILESDIR}/${P}-cflags-ldflags.patch"
|
|
)
|
|
|
|
src_prepare() {
|
|
default
|
|
tc-export CC
|
|
|
|
# A LIBDIR variable exists in the makefile but "lib" remains
|
|
# hard-coded in the install targets.
|
|
sed -e "s,/usr/local,${EPREFIX}/usr,g" \
|
|
-e "s,/lib,/$(get_libdir),g" \
|
|
-i makefile || die
|
|
}
|
|
|
|
src_compile() {
|
|
if use gmp ; then
|
|
emake
|
|
emake all-shared
|
|
use mpi && emake mplrs
|
|
else
|
|
emake allmp
|
|
fi
|
|
}
|
|
|
|
src_install() {
|
|
emake DESTDIR="${D}" prefix="${EPREFIX}/usr" install-common
|
|
if use gmp; then
|
|
emake DESTDIR="${D}" prefix="${EPREFIX}/usr" install
|
|
use mpi && dobin mplrs
|
|
fi
|
|
dodoc README
|
|
}
|
|
|
|
src_test() {
|
|
bins=()
|
|
|
|
if use gmp; then
|
|
bins+=( "./lrs" )
|
|
use mpi && bins+=( "mpirun ./mplrs" )
|
|
fi
|
|
|
|
for b in "${bins[@]}"; do
|
|
for f in cube mp5; do
|
|
# There are other ine/ext pairs in the tarball, but only
|
|
# these two are at the top level and are obviously H/V
|
|
# counterparts.
|
|
|
|
echo "Testing example ${f} under ${b}..."
|
|
# Convert this H-repr to a V-repr, keeping only the list of
|
|
# vertices (which are indented by one space). We also sort
|
|
# the output because it's only consistent up to a
|
|
# permutation.
|
|
${b} "${f}.ine" \
|
|
| grep '^ ' \
|
|
| sort \
|
|
> "${T}/actual.txt" \
|
|
|| die
|
|
|
|
# The expected output is contained in the "ext" counterpart,
|
|
# which we have to sort for the same reason we sorted the
|
|
# actual output.
|
|
grep '^ ' \
|
|
"${f}.ext" \
|
|
| sort \
|
|
> "${T}/expected.txt" \
|
|
|| die
|
|
|
|
cmp "${T}/actual.txt" "${T}/expected.txt" \
|
|
|| die "test case ${f} under ${b} failed"
|
|
done
|
|
done
|
|
}
|