commit:     7c91210daeec22ee47bfda9296a99dd8139be6ea
Author:     Alexander Puck Neuwirth <apn-pucky <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 27 09:19:58 2025 +0000
Commit:     Alexander Puck Neuwirth <apn-pucky <AT> gentoo <DOT> org>
CommitDate: Sat Sep 27 09:31:50 2025 +0000
URL:        https://gitweb.gentoo.org/proj/sci.git/commit/?id=7c91210d

sci-physics/openloops: add 2.1.5, 9999

Signed-off-by: Alexander Puck Neuwirth <apn-pucky <AT> gentoo.org>

 sci-physics/openloops/openloops-2.1.5.ebuild | 184 +++++++++++++++++++++++++++
 sci-physics/openloops/openloops-9999.ebuild  | 184 +++++++++++++++++++++++++++
 2 files changed, 368 insertions(+)

diff --git a/sci-physics/openloops/openloops-2.1.5.ebuild 
b/sci-physics/openloops/openloops-2.1.5.ebuild
new file mode 100644
index 000000000..60c683874
--- /dev/null
+++ b/sci-physics/openloops/openloops-2.1.5.ebuild
@@ -0,0 +1,184 @@
+# Copyright 2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{11..13} )
+
+inherit fortran-2 python-single-r1 scons-utils toolchain-funcs
+
+MY_PN=OpenLoops
+MY_P=${MY_PN}-${PV}
+
+DESCRIPTION="Evaluation of tree and one-loop matrix elements for any Standard 
Model."
+HOMEPAGE="https://openloops.hepforge.org/index.html";
+#SRC_URI="https://openloops.hepforge.org/downloads?f=${MY_P}.tar.gz -> 
${MY_P}.tar.gz"
+#S="${WORKDIR}/${MY_P}"
+# since the files are not publicly versioned we mirror them from
+# https://www.physik.uzh.ch/data/openloops/repositories/public/processes/2
+COMMON_URI="https://gitlab.com/openloopsmirror/";
+
+IUSE_OPENLOOPS_PROCESSES="
+       openloops_processes_eella-ew
+       openloops_processes_ppajj
+       openloops_processes_pphllj-ew
+       openloops_processes_ppjj
+       openloops_processes_ppjjj
+       openloops_processes_pplla
+       openloops_processes_ppllaj
+       openloops_processes_ppllajj
+       openloops_processes_pplla-ew
+       openloops_processes_ppllj
+       openloops_processes_ppllj-ew
+       openloops_processes_pplljj
+       openloops_processes_pplnj-ckm
+       openloops_processes_pplnjj-ckm
+"
+
+SRC_URI="
+       openloops_processes_eella-ew?   ( 
${COMMON_URI}/eella_ew/-/archive/a4b41a31/eella_ew-a4b41a31.tar.bz2   )
+       openloops_processes_ppajj?      ( 
${COMMON_URI}/ppajj/-/archive/93a6e3f7/ppajj-93a6e3f7.tar.bz2         )
+       openloops_processes_pphllj-ew?  ( 
${COMMON_URI}/pphllj_ew/-/archive/93a6e3f7/pphllj_ew-93a6e3f7.tar.bz2 )
+       openloops_processes_ppjj?       ( 
${COMMON_URI}/ppjj/-/archive/d3d5302/ppjj-d3d5302.tar.bz2             )
+       openloops_processes_ppjjj?      ( 
${COMMON_URI}/ppjjj/-/archive/93a6e3f7/ppjjj-93a6e3f7.tar.bz2         )
+       openloops_processes_pplla?      ( 
${COMMON_URI}/pplla/-/archive/a3a36918/pplla-a3a36918.tar.bz2         )
+       openloops_processes_ppllaj?     ( 
${COMMON_URI}/ppllaj/-/archive/c77e3a3/ppllaj-c77e3a3.tar.bz2         )
+       openloops_processes_ppllajj?    ( 
${COMMON_URI}/ppllajj/-/archive/4d8743c/ppllajj-4d8743c.tar.bz2       )
+       openloops_processes_pplla-ew?   ( 
${COMMON_URI}/pplla_ew/-/archive/0a26af9a/pplla_ew-0a26af9a.tar.bz2   )
+       openloops_processes_ppllj?      ( 
${COMMON_URI}/ppllj/-/archive/a4b41a31/ppllj-a4b41a31.tar.bz2         )
+       openloops_processes_ppllj-ew?   ( 
${COMMON_URI}/ppllj_ew/-/archive/4d20a80d/ppllj_ew-4d20a80d.tar.bz2   )
+       openloops_processes_pplljj?     ( 
${COMMON_URI}/pplljj/-/archive/93a6e3f7/pplljj-93a6e3f7.tar.bz2       )
+       openloops_processes_pplnj-ckm?  ( 
${COMMON_URI}/pplnj_ckm/-/archive/4d8743c/pplnj_ckm-4d8743c.tar.bz2   )
+       openloops_processes_pplnjj-ckm? ( 
${COMMON_URI}/pplnjj_ckm/-/archive/d3d5302/pplnjj_ckm-d3d5302.tar.bz2 )
+"
+
+if [[ ${PV} == 9999 ]]; then
+       inherit git-r3
+       EGIT_REPO_URI="https://gitlab.com/openloops/OpenLoops";
+       EGIT_BRANCH="master"
+else
+       
SRC_URI+="https://gitlab.com/openloops/OpenLoops/-/archive/${MY_P}/${MY_PN}-${MY_P}.tar.bz2";
+       S="${WORKDIR}/${MY_PN}-${MY_P}"
+       KEYWORDS="~amd64"
+fi
+
+LICENSE="GPL-3+"
+SLOT="0"
+IUSE="+collier +cuttools +extra ${IUSE_OPENLOOPS_PROCESSES}"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="
+       sci-physics/qcdloop
+       sci-physics/oneloop[dpkind,qpkind16,-qpkind,-cppintf]
+       collier? ( sci-physics/collier[-static-libs] )
+       cuttools? ( sci-physics/cuttools[dummy] )
+       ${PYTHON_DEPS}
+"
+DEPEND="${RDEPEND}"
+
+src_unpack() {
+       # Needed to unpack the processes
+       default
+
+       if [[ ${PV} == 9999 ]] ; then
+               git-r3_src_unpack
+       fi
+}
+
+src_prepare() {
+       default
+       mv openloops.cfg.tmpl openloops.cfg || die
+       sed -i "s|\\\$BASEDIR/scons -Q|scons -Q -C /opt/${MY_P}/|g" openloops 
|| die
+       if use extra ; then
+               sed -i "s|#compile_extra.*|compile_extra = 1|" openloops.cfg || 
die
+       fi
+
+       cat <<-EOF >> openloops.cfg || die
+       compile_libraries = rambo trred
+       link_libraries = $(usev collier) $(usev cuttools) rambo trred
+       ccflags = ${CFLAGS}
+       cxxflags = ${CXXFLAGS}
+       f_path = ${ESYSROOT}/usr/include/
+       f_flags = ${FFLAGS} -I${ESYSROOT}/usr/include/cuttools -lcollier
+       link_flags = ${LDFLAGS} -I${ESYSROOT}/usr/include/ 
-I${ESYSROOT}/usr/include/cuttools -lcollier
+       cc = $(tc-getCC)
+       cxx = $(tc-getCXX)
+       fortran_compiler = $(tc-getFC)
+
+       release = $PV
+       import_env = @all
+       EOF
+
+       # fix rename for py3.12
+       sed -i 's/SafeConfigParser/ConfigParser/g' pyol/tools/OLBaseConfig.py 
|| die
+       # wipe local scons
+       rm -r scons-local || die
+       rm scons || die
+}
+
+src_compile() {
+       escons --cache-disable
+       for OLPROC in ${IUSE_OPENLOOPS_PROCESSES};
+       do
+               if use ${OLPROC}; then
+                       MY_OLPROC=${OLPROC//-/_}
+                       MY_OLPROC=${MY_OLPROC#openloops_processes_}
+                       # move downloaded files to src
+                       mkdir -p "${S}/process_src/${MY_OLPROC}" || die
+                       mv "${WORKDIR}/${MY_OLPROC}-"*/* 
"${S}/process_src/${MY_OLPROC}" || die
+                       # compile it
+                       escons auto=${MY_OLPROC} generator=0
+               fi
+       done
+
+       # insert these later since we are done with compiling in ${S} now
+       cat <<-EOF >> openloops.cfg || die
+       process_src_dir = ${EPREFIX}/opt/${MY_P}/process_src/
+       process_obj_dir = ${EPREFIX}/opt/${MY_P}/process_obj/
+       process_lib_dir = ${EPREFIX}/opt/${MY_P}/proclib/
+       EOF
+}
+
+src_install() {
+       dosym ../opt/${MY_P} /opt/OpenLoops2
+       dobin openloops
+       cd include || die
+       doheader openloops.h
+
+       newenvd - 99openloops2 <<- _EOF_
+               OpenLoopsPath=${EPREFIX}/opt/OpenLoops2
+       _EOF_
+
+       # Also install so.version links
+       cd ../lib || die
+       dolib.so libolcommon.so* libopenloops.so* librambo.so* libtrred.so*
+
+       cd .. || die
+       # install processes
+       if [ -d "./proclib" ]; then
+               dodir "/opt/${MY_P}/proclib"
+               mv proclib/* "${ED}/opt/${MY_P}/proclib/" || die
+       fi
+
+       cd ./lib_src/olcommon/mod || die
+       doheader *.mod
+       cd ../../openloops/mod || die
+       doheader *.mod
+       cd ../../rambo/mod || die
+       doheader *.mod
+       cd ../../trred/mod || die
+       doheader *.mod
+
+       cd "${S}" || die "Failed to cd into ${S}"
+       insinto /opt/${MY_P}
+       doins openloops.cfg SConstruct
+       doins -r pyol
+
+       # no need to also install the source code
+       #doins -r process_src
+}
+
+pkg_postinst() {
+       elog "Install processes with openloops libinstall."
+       elog "They are installed in ${EPREFIX}/opt/${MY_P}/proclib/."
+}

diff --git a/sci-physics/openloops/openloops-9999.ebuild 
b/sci-physics/openloops/openloops-9999.ebuild
new file mode 100644
index 000000000..60c683874
--- /dev/null
+++ b/sci-physics/openloops/openloops-9999.ebuild
@@ -0,0 +1,184 @@
+# Copyright 2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{11..13} )
+
+inherit fortran-2 python-single-r1 scons-utils toolchain-funcs
+
+MY_PN=OpenLoops
+MY_P=${MY_PN}-${PV}
+
+DESCRIPTION="Evaluation of tree and one-loop matrix elements for any Standard 
Model."
+HOMEPAGE="https://openloops.hepforge.org/index.html";
+#SRC_URI="https://openloops.hepforge.org/downloads?f=${MY_P}.tar.gz -> 
${MY_P}.tar.gz"
+#S="${WORKDIR}/${MY_P}"
+# since the files are not publicly versioned we mirror them from
+# https://www.physik.uzh.ch/data/openloops/repositories/public/processes/2
+COMMON_URI="https://gitlab.com/openloopsmirror/";
+
+IUSE_OPENLOOPS_PROCESSES="
+       openloops_processes_eella-ew
+       openloops_processes_ppajj
+       openloops_processes_pphllj-ew
+       openloops_processes_ppjj
+       openloops_processes_ppjjj
+       openloops_processes_pplla
+       openloops_processes_ppllaj
+       openloops_processes_ppllajj
+       openloops_processes_pplla-ew
+       openloops_processes_ppllj
+       openloops_processes_ppllj-ew
+       openloops_processes_pplljj
+       openloops_processes_pplnj-ckm
+       openloops_processes_pplnjj-ckm
+"
+
+SRC_URI="
+       openloops_processes_eella-ew?   ( 
${COMMON_URI}/eella_ew/-/archive/a4b41a31/eella_ew-a4b41a31.tar.bz2   )
+       openloops_processes_ppajj?      ( 
${COMMON_URI}/ppajj/-/archive/93a6e3f7/ppajj-93a6e3f7.tar.bz2         )
+       openloops_processes_pphllj-ew?  ( 
${COMMON_URI}/pphllj_ew/-/archive/93a6e3f7/pphllj_ew-93a6e3f7.tar.bz2 )
+       openloops_processes_ppjj?       ( 
${COMMON_URI}/ppjj/-/archive/d3d5302/ppjj-d3d5302.tar.bz2             )
+       openloops_processes_ppjjj?      ( 
${COMMON_URI}/ppjjj/-/archive/93a6e3f7/ppjjj-93a6e3f7.tar.bz2         )
+       openloops_processes_pplla?      ( 
${COMMON_URI}/pplla/-/archive/a3a36918/pplla-a3a36918.tar.bz2         )
+       openloops_processes_ppllaj?     ( 
${COMMON_URI}/ppllaj/-/archive/c77e3a3/ppllaj-c77e3a3.tar.bz2         )
+       openloops_processes_ppllajj?    ( 
${COMMON_URI}/ppllajj/-/archive/4d8743c/ppllajj-4d8743c.tar.bz2       )
+       openloops_processes_pplla-ew?   ( 
${COMMON_URI}/pplla_ew/-/archive/0a26af9a/pplla_ew-0a26af9a.tar.bz2   )
+       openloops_processes_ppllj?      ( 
${COMMON_URI}/ppllj/-/archive/a4b41a31/ppllj-a4b41a31.tar.bz2         )
+       openloops_processes_ppllj-ew?   ( 
${COMMON_URI}/ppllj_ew/-/archive/4d20a80d/ppllj_ew-4d20a80d.tar.bz2   )
+       openloops_processes_pplljj?     ( 
${COMMON_URI}/pplljj/-/archive/93a6e3f7/pplljj-93a6e3f7.tar.bz2       )
+       openloops_processes_pplnj-ckm?  ( 
${COMMON_URI}/pplnj_ckm/-/archive/4d8743c/pplnj_ckm-4d8743c.tar.bz2   )
+       openloops_processes_pplnjj-ckm? ( 
${COMMON_URI}/pplnjj_ckm/-/archive/d3d5302/pplnjj_ckm-d3d5302.tar.bz2 )
+"
+
+if [[ ${PV} == 9999 ]]; then
+       inherit git-r3
+       EGIT_REPO_URI="https://gitlab.com/openloops/OpenLoops";
+       EGIT_BRANCH="master"
+else
+       
SRC_URI+="https://gitlab.com/openloops/OpenLoops/-/archive/${MY_P}/${MY_PN}-${MY_P}.tar.bz2";
+       S="${WORKDIR}/${MY_PN}-${MY_P}"
+       KEYWORDS="~amd64"
+fi
+
+LICENSE="GPL-3+"
+SLOT="0"
+IUSE="+collier +cuttools +extra ${IUSE_OPENLOOPS_PROCESSES}"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="
+       sci-physics/qcdloop
+       sci-physics/oneloop[dpkind,qpkind16,-qpkind,-cppintf]
+       collier? ( sci-physics/collier[-static-libs] )
+       cuttools? ( sci-physics/cuttools[dummy] )
+       ${PYTHON_DEPS}
+"
+DEPEND="${RDEPEND}"
+
+src_unpack() {
+       # Needed to unpack the processes
+       default
+
+       if [[ ${PV} == 9999 ]] ; then
+               git-r3_src_unpack
+       fi
+}
+
+src_prepare() {
+       default
+       mv openloops.cfg.tmpl openloops.cfg || die
+       sed -i "s|\\\$BASEDIR/scons -Q|scons -Q -C /opt/${MY_P}/|g" openloops 
|| die
+       if use extra ; then
+               sed -i "s|#compile_extra.*|compile_extra = 1|" openloops.cfg || 
die
+       fi
+
+       cat <<-EOF >> openloops.cfg || die
+       compile_libraries = rambo trred
+       link_libraries = $(usev collier) $(usev cuttools) rambo trred
+       ccflags = ${CFLAGS}
+       cxxflags = ${CXXFLAGS}
+       f_path = ${ESYSROOT}/usr/include/
+       f_flags = ${FFLAGS} -I${ESYSROOT}/usr/include/cuttools -lcollier
+       link_flags = ${LDFLAGS} -I${ESYSROOT}/usr/include/ 
-I${ESYSROOT}/usr/include/cuttools -lcollier
+       cc = $(tc-getCC)
+       cxx = $(tc-getCXX)
+       fortran_compiler = $(tc-getFC)
+
+       release = $PV
+       import_env = @all
+       EOF
+
+       # fix rename for py3.12
+       sed -i 's/SafeConfigParser/ConfigParser/g' pyol/tools/OLBaseConfig.py 
|| die
+       # wipe local scons
+       rm -r scons-local || die
+       rm scons || die
+}
+
+src_compile() {
+       escons --cache-disable
+       for OLPROC in ${IUSE_OPENLOOPS_PROCESSES};
+       do
+               if use ${OLPROC}; then
+                       MY_OLPROC=${OLPROC//-/_}
+                       MY_OLPROC=${MY_OLPROC#openloops_processes_}
+                       # move downloaded files to src
+                       mkdir -p "${S}/process_src/${MY_OLPROC}" || die
+                       mv "${WORKDIR}/${MY_OLPROC}-"*/* 
"${S}/process_src/${MY_OLPROC}" || die
+                       # compile it
+                       escons auto=${MY_OLPROC} generator=0
+               fi
+       done
+
+       # insert these later since we are done with compiling in ${S} now
+       cat <<-EOF >> openloops.cfg || die
+       process_src_dir = ${EPREFIX}/opt/${MY_P}/process_src/
+       process_obj_dir = ${EPREFIX}/opt/${MY_P}/process_obj/
+       process_lib_dir = ${EPREFIX}/opt/${MY_P}/proclib/
+       EOF
+}
+
+src_install() {
+       dosym ../opt/${MY_P} /opt/OpenLoops2
+       dobin openloops
+       cd include || die
+       doheader openloops.h
+
+       newenvd - 99openloops2 <<- _EOF_
+               OpenLoopsPath=${EPREFIX}/opt/OpenLoops2
+       _EOF_
+
+       # Also install so.version links
+       cd ../lib || die
+       dolib.so libolcommon.so* libopenloops.so* librambo.so* libtrred.so*
+
+       cd .. || die
+       # install processes
+       if [ -d "./proclib" ]; then
+               dodir "/opt/${MY_P}/proclib"
+               mv proclib/* "${ED}/opt/${MY_P}/proclib/" || die
+       fi
+
+       cd ./lib_src/olcommon/mod || die
+       doheader *.mod
+       cd ../../openloops/mod || die
+       doheader *.mod
+       cd ../../rambo/mod || die
+       doheader *.mod
+       cd ../../trred/mod || die
+       doheader *.mod
+
+       cd "${S}" || die "Failed to cd into ${S}"
+       insinto /opt/${MY_P}
+       doins openloops.cfg SConstruct
+       doins -r pyol
+
+       # no need to also install the source code
+       #doins -r process_src
+}
+
+pkg_postinst() {
+       elog "Install processes with openloops libinstall."
+       elog "They are installed in ${EPREFIX}/opt/${MY_P}/proclib/."
+}

Reply via email to