You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
209 lines
4.8 KiB
209 lines
4.8 KiB
# Copyright 1999-2023 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=8
|
|
|
|
PYTHON_COMPAT=( python3_{9..12} )
|
|
DISTUTILS_EXT=1
|
|
DISTUTILS_OPTIONAL=1
|
|
DISTUTILS_USE_PEP517="setuptools"
|
|
DOCS_BUILDER="doxygen"
|
|
DOCS_DEPEND="
|
|
media-gfx/graphviz
|
|
virtual/latex-base
|
|
python? ( dev-python/sphinx )
|
|
"
|
|
|
|
inherit cmake docs distutils-r1 systemd
|
|
|
|
DESCRIPTION="Extended ROOT remote file server"
|
|
HOMEPAGE="https://xrootd.slac.stanford.edu/"
|
|
LICENSE="LGPL-3+"
|
|
|
|
IUSE="ceph examples fuse http kerberos +libxml2 macaroons python readline scitokens +server systemd test xrdec"
|
|
SLOT="0"
|
|
|
|
KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
|
|
SRC_URI="https://xrootd.slac.stanford.edu/download/v${PV}/${P}.tar.gz"
|
|
|
|
RESTRICT="!test? ( test )"
|
|
|
|
REQUIRED_USE="
|
|
http? ( kerberos )
|
|
macaroons? ( server http )
|
|
python? ( ${PYTHON_REQUIRED_USE} )
|
|
scitokens? ( server )
|
|
test? ( server )
|
|
"
|
|
|
|
CDEPEND="acct-group/xrootd
|
|
acct-user/xrootd
|
|
dev-libs/openssl:0=
|
|
sys-libs/zlib
|
|
virtual/libcrypt:=
|
|
ceph? ( sys-cluster/ceph )
|
|
fuse? ( sys-fs/fuse:0= )
|
|
http? (
|
|
net-misc/curl:=
|
|
net-libs/davix
|
|
)
|
|
kerberos? ( virtual/krb5 )
|
|
libxml2? ( dev-libs/libxml2:2= )
|
|
macaroons? ( dev-libs/libmacaroons )
|
|
python? ( ${PYTHON_DEPS} )
|
|
readline? ( sys-libs/readline:0= )
|
|
scitokens? ( dev-cpp/scitokens-cpp )
|
|
systemd? ( sys-apps/systemd:= )
|
|
xrdec? ( dev-libs/isa-l )
|
|
"
|
|
DEPEND="${CDEPEND}"
|
|
BDEPEND="
|
|
python? (
|
|
${PYTHON_DEPS}
|
|
${DISTUTILS_DEPS}
|
|
test? ( >=dev-python/pytest-7.1.2[${PYTHON_USEDEP}] )
|
|
)
|
|
test? (
|
|
dev-cpp/gtest
|
|
dev-util/cppunit
|
|
)
|
|
"
|
|
RDEPEND="${CDEPEND}
|
|
dev-lang/perl
|
|
"
|
|
|
|
PATCHES=(
|
|
"${FILESDIR}"/${PN}-4.8.3-crc32.patch
|
|
"${FILESDIR}"/${PN}-5.4.3-python_tests_py3.patch
|
|
)
|
|
|
|
# xrootd plugins are not intended to be linked with,
|
|
# they are to be loaded at runtime by xrootd,
|
|
# see https://github.com/xrootd/xrootd/issues/447
|
|
QA_SONAME="/usr/lib.*/libXrd.*-$(ver_cut 1)\.so
|
|
/usr/lib.*/libXrd.*Tests\.so"
|
|
|
|
pkg_setup() {
|
|
use python && python_setup
|
|
}
|
|
|
|
src_prepare() {
|
|
cmake_src_prepare
|
|
|
|
if use python; then
|
|
pushd "${S}"/bindings/python > /dev/null || die
|
|
distutils-r1_src_prepare
|
|
popd > /dev/null || die
|
|
fi
|
|
}
|
|
|
|
# FIXME: support xrdec - currently only builds against bundled isa-l
|
|
src_configure() {
|
|
local mycmakeargs=(
|
|
-DUSE_SYSTEM_ISAL=TRUE
|
|
$(usex python "-DINSTALL_PYTHON_BINDINGS=FALSE" "")
|
|
-DXRDCEPH_SUBMODULE=$(usex ceph)
|
|
-DCMAKE_DISABLE_FIND_PACKAGE_LibXml2=$(usex libxml2 "no" "yes")
|
|
-DCMAKE_DISABLE_FIND_PACKAGE_systemd=$(usex systemd "no" "yes")
|
|
-DENABLE_FUSE=$(usex fuse)
|
|
-DENABLE_HTTP=$(usex http)
|
|
-DENABLE_KRB5=$(usex kerberos)
|
|
-DENABLE_MACAROONS=$(usex macaroons)
|
|
-DENABLE_PYTHON=$(usex python)
|
|
-DENABLE_READLINE=$(usex readline)
|
|
-DENABLE_SCITOKENS=$(usex scitokens)
|
|
-DENABLE_TESTS=$(usex test)
|
|
-DENABLE_VOMS=no
|
|
-DENABLE_XRDCL=yes
|
|
-DENABLE_XRDCLHTTP=$(usex http)
|
|
-DENABLE_XRDEC=$(usex xrdec)
|
|
-DFORCE_ENABLED=yes
|
|
-DXRDCL_ONLY=$(usex server "no" "yes")
|
|
)
|
|
cmake_src_configure
|
|
|
|
if use python; then
|
|
pushd "${BUILD_DIR}"/bindings/python > /dev/null || die
|
|
distutils-r1_src_configure
|
|
popd > /dev/null || die
|
|
fi
|
|
}
|
|
|
|
src_compile() {
|
|
cmake_src_compile
|
|
if use python; then
|
|
pushd "${BUILD_DIR}"/bindings/python > /dev/null || die
|
|
distutils-r1_src_compile
|
|
popd > /dev/null || die
|
|
fi
|
|
|
|
docs_compile
|
|
# secondary documentation for python bindings
|
|
if use python && use doc; then
|
|
emake -C bindings/python/docs html
|
|
fi
|
|
}
|
|
|
|
python_test() {
|
|
epytest
|
|
}
|
|
|
|
src_test() {
|
|
cmake_src_test
|
|
# Python tests currently require manual configuration and start-up of an xrootd server.
|
|
# TODO: get this to run properly.
|
|
#use python && distutils-r1_src_test
|
|
}
|
|
|
|
src_install() {
|
|
dodoc docs/ReleaseNotes.txt
|
|
cmake_src_install
|
|
find "${ED}" \( -iname '*.md5' -o -iname '*.map' \) -delete || die
|
|
|
|
if use server; then
|
|
local i
|
|
for i in cmsd frm_purged frm_xfrd xrootd; do
|
|
newinitd "${FILESDIR}"/${i}.initd ${i}
|
|
done
|
|
# all daemons MUST use single master config file
|
|
newconfd "${FILESDIR}"/xrootd.confd xrootd
|
|
|
|
if use systemd; then
|
|
systemd_dounit packaging/common/*.{service,socket}
|
|
fi
|
|
fi
|
|
|
|
# base configs
|
|
insinto /etc/xrootd
|
|
doins packaging/common/*.cfg
|
|
|
|
keepdir /etc/xrootd/config.d
|
|
keepdir /var/log/xrootd
|
|
|
|
fowners -R xrootd:xrootd /etc/xrootd
|
|
fowners -R xrootd:xrootd /var/log/xrootd
|
|
|
|
if use python; then
|
|
pushd "${BUILD_DIR}"/bindings/python > /dev/null || die
|
|
distutils-r1_src_install
|
|
popd > /dev/null || die
|
|
|
|
if use doc; then
|
|
docinto python
|
|
docompress -x "/usr/share/doc/${PF}/python/html"
|
|
dodoc -r bindings/python/docs/build/html
|
|
fi
|
|
if use examples; then
|
|
docinto python
|
|
dodoc -r bindings/python/examples
|
|
fi
|
|
fi
|
|
|
|
if use test; then
|
|
for f in test-runner xrdshmap; do
|
|
rm "${ED}"/usr/bin/${f} || die "Failed to remove test helper ${f} from installed tree"
|
|
done
|
|
rm "${ED}"/usr/$(get_libdir)/libXrd*Test*.so || die "Failed to remove test libraries from installed tree"
|
|
fi
|
|
}
|