# Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 PYTHON_COMPAT=( python3_{11..13} ) inherit toolchain-funcs python-single-r1 MV=$(ver_cut 1-2) MY_P="${PN}${PV//./}" LHA_VER="6.2.1" DESCRIPTION="Lund Monte Carlo high-energy physics event generator" HOMEPAGE="https://pythia.org/" SRC_URI="test? ( lhapdf? ( https://lhapdfsets.web.cern.ch/lhapdfsets/current/CT10.tar.gz https://lhapdfsets.web.cern.ch/lhapdfsets/current/MRST2007lomod.tar.gz https://lhapdfsets.web.cern.ch/lhapdfsets/current/NNPDF23_nlo_as_0119_qed_mc.tar.gz https://lhapdfsets.web.cern.ch/lhapdfsets/current/NNPDF23_nnlo_as_0119_qed_mc.tar.gz https://lhapdfsets.web.cern.ch/lhapdfsets/current/cteq66.tar.gz https://lhapdfsets.web.cern.ch/lhapdfsets/current/cteq6l1.tar.gz https://www.hepforge.org/downloads/lhapdf/pdfsets/v6.backup/${LHA_VER}/MRST2004qed.tar.gz ) ) " if [[ ${PV} == 9999 ]]; then inherit git-r3 EGIT_REPO_URI="https://gitlab.com/Pythia8/releases" else SRC_URI="https://pythia.org/download/${PN}${MV//./}/${MY_P}.tgz ${SRC_URI}" KEYWORDS="~amd64 ~x86" S="${WORKDIR}/${MY_P}" fi LICENSE="GPL-2" SLOT="8" IUSE="doc examples fastjet +hepmc3 hepmc2 lhapdf root test zlib python highfive mpich rivet" # evtgen mg5mes rivet powheg RESTRICT="!test? ( test )" REQUIRED_USE=" ?? ( hepmc3 hepmc2 ) python? ( ${PYTHON_REQUIRED_USE} ) " RDEPEND=" fastjet? ( sci-physics/fastjet ) hepmc3? ( sci-physics/hepmc:3= ) hepmc2? ( sci-physics/hepmc:2= ) lhapdf? ( sci-physics/lhapdf:= ) zlib? ( sys-libs/zlib ) highfive? ( sci-libs/HighFive sci-libs/hdf5[cxx] ) rivet? ( sci-physics/rivet:* ) mpich? ( sys-cluster/mpich ) python? ( ${PYTHON_DEPS} ) " DEPEND="${RDEPEND}" # ROOT is used only when building related tests BDEPEND=" test? ( root? ( sci-physics/root:= ) ) " pkg_setup() { use python && python-single-r1_pkg_setup } pkg_pretend() { if use root && ! use test; then ewarn "ROOT support will only affect examples code build during test stage." ewarn "Since you have tests disabled, this is a no-op." fi } src_prepare() { PYTHIADIR="/usr/share/Pythia8" EPYTHIADIR="${EPREFIX}${PYTHIADIR}" default # set datadir for xmldor in include file sed -i \ -e "s|../share/Pythia8/xmldoc|${EPYTHIADIR}/xmldoc|" \ include/Pythia8/Pythia.h || die # respect libdir, prefix, flags sed -i \ -e "s|/lib|/$(get_libdir)|g" \ -e "s|/usr|${EPREFIX}/usr|g" \ -e "s|-O2|${CXXFLAGS}|g" \ -e "s|Cint|Core|g" \ configure || die # we use lhapdf6 instead of lhapdf5 # some PDFs changed, use something similar sed -i \ -e "s|LHAPDF5|LHAPDF6|g" \ -e "s|\.LHgrid||g" \ -e "s|\.LHpdf||g" \ -e "s|MRST2001lo|MRST2007lomod|g" \ -e "s|cteq6ll|cteq6l1|g" \ -e "s|cteq6m|cteq66|g" \ examples/*.{cc,cmnd} || die # After lhapdf5->6 migration PDFs are identical within ~1/1000 # https|//www.hepforge.org/archive/lhapdf/pdfsets/6.1/README sed -i \ -e "s|1e-8|3e-1|g" \ -e "s|nlo_as_0119_qed|nlo_as_0119_qed_mc|g" \ -e "s|xmldoc|share/Pythia8/xmldoc|g" \ examples/main203.cc || die # ask cflags from root sed -i "s|root-config|root-config --cflags|g" examples/Makefile || die sed -i 's|libpythia8\.a|libpythia8$(LIB_SUFFIX)|g' \ examples/Makefile || die } # TODO: the following optional packages are out of Gentoo tree: # - EvtGen http://atlas-computing.web.cern.ch/atlas-computing/links/externalDirectory/EvtGen/ # - PowHEG http://powhegbox.mib.infn.it/ # - ProMC https://github.com/Argonne-National-Laboratory/ProMC/ src_configure() { # homemade configure script local -x CXX="$(tc-getCXX) ${CXXFLAGS} ${LDFLAGS}" ./configure \ --arch=Linux \ --prefix="${EPREFIX}/usr" \ --prefix-lib="${EPREFIX}/usr/$(get_libdir)" \ --prefix-share="${EPYTHIADIR}" \ $(usex fastjet "--with-fastjet3" "") \ $(usex zlib "--with-gzip" "") \ $(use_with hepmc3) \ $(use_with highfive) \ $(usex highfive --with-hdf5 "") \ $(use_with python) \ $(use_with rivet) \ $(use_with mpich) \ $(use_with hepmc2) \ $(usex lhapdf "--with-lhapdf6 --with-lhapdf6-plugin=LHAPDF6.h --with-lhapdf6-lib=${EPREFIX}/usr/$(get_libdir)" "") \ $(usex root "--with-root --with-root-include=${EPREFIX}/usr/include/root --with-root-lib=${EPREFIX}/usr/$(get_libdir)/root" "") \ || die # fix pythia config script sed -i \ -e 's|Pythia8/examples/Makefile.inc|Pythia8/Makefile.inc|' \ -e "s|CFG_FILE=.*|CFG_FILE=${EPYTHIADIR}/Makefile.inc|" \ -e 's|LINE%=|LINE%%=|' \ bin/pythia8-config || die } src_test() { cd examples || die local tests="$(echo main{{101..103},{121..127}})" use hepmc3 && tests+=" $(echo main{131..135})" use hepmc3 && use mpich && use highfive && tests+=" $(echo main136)" use lhapdf && tests+=" $(echo main{201..204})" use fastjet && tests+=" $(echo main{211..216})" use root && tests+=" main143" use hepmc3 && use lhapdf && tests+=" $(echo main{133,162})" use fastjet && use hepmc3 && use lhapdf && tests+=" $(echo main161)" # Other tests disabled due to missing dependencies # use emake for parallel instead of long runmains LD_LIBRARY_PATH="${S}/$(get_libdir):${LD_LIBRARY_PATH}" \ PYTHIA8DATA="../share/Pythia8/xmldoc/" \ LHAPDF_DATA_PATH="${WORKDIR}" \ emake ${tests} emake clean } src_install() { # make install is too broken, much easier to install manually dobin bin/pythia8-config doheader -r include/* dolib.so lib/libpythia8.so use lhapdf && dolib.so lib/libpythia8lhapdf6.so insinto "${PYTHIADIR}" doins -r share/Pythia8/xmldoc share/Pythia8/pdfdata examples/Makefile.inc newenvd - 99pythia8 <<- _EOF_ PYTHIA8DATA=${EPYTHIADIR}/xmldoc _EOF_ dodoc AUTHORS GUIDELINES README if use doc; then dodoc -r share/Pythia8/pdfdoc/. dodoc -r share/Pythia8/htmldoc/. fi if use examples; then # reuse system Makefile.inc rm examples/Makefile.inc || die sed -i "s|include Makefile.inc|include ${EPYTHIADIR}|" \ examples/Makefile || die insinto /usr/share/${PN} doins -r examples docompress -x /usr/share/doc/${PF}/examples fi if use python; then local site_dir=$(python_get_sitedir) insinto "${site_dir#${EPREFIX}}" doins lib/pythia8.so fi # cleanup unset PYTHIADIR EPYTHIADIR }