blob: 59fef3dda332b6e330dea7a75737a1ee84264326 [file] [log] [blame]
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{6,7,8} )
inherit cmake python-single-r1
DESCRIPTION="Framework which enables integration with Security Content Automation Protocol"
HOMEPAGE="https://www.open-scap.org/"
SRC_URI="https://github.com/OpenSCAP/openscap/releases/download/${PV}/${P}.tar.gz"
KEYWORDS="*"
LICENSE="LGPL-2.1+"
SLOT="0"
IUSE="acl caps chroot doc docker gconf ldap nss dbus perl podman python rpm selinux sce ssh sql test vm xattr"
RESTRICT="!test? ( test )"
REQUIRED_USE="${PYTHON_REQUIRED_USE}
test? ( perl python )
docker? ( python )"
RDEPEND="
app-arch/bzip2
acl? ( virtual/acl )
dbus? ( sys-apps/dbus )
caps? ( sys-libs/libcap )
dev-libs/libxslt
dev-libs/libxml2:2=
dev-libs/popt
gconf? ( gnome-base/gconf )
ldap? ( net-nds/openldap )
net-misc/curl
nss? ( dev-libs/nss )
!nss? ( dev-libs/libgcrypt:0 )
dev-libs/libpcre:3=[unicode]
podman? ( app-emulation/libpod )
perl? (
dev-lang/perl
dev-perl/XML-Parser
dev-perl/XML-XPath
)
python? ( ${PYTHON_DEPS}
$(python_gen_cond_dep '
dev-python/docker-py[${PYTHON_MULTI_USEDEP}]
docker? ( dev-python/requests[${PYTHON_MULTI_USEDEP}] )
')
)
rpm? ( app-arch/rpm )
selinux? ( sys-libs/libselinux )
ssh? ( virtual/ssh )
sql? ( dev-db/opendbx )
sys-process/procps
xattr? ( sys-apps/attr )"
DEPEND="${RDEPEND}
doc? (
app-doc/doxygen
app-text/asciidoc
)
test? ( net-misc/ipcalc )"
BDEPEND="python? ( dev-lang/swig )"
pkg_setup() {
#if use python; then
python-single-r1_pkg_setup
#fi
}
src_prepare() {
if use test; then
# modify/disable not gentoo specific tests
sed -i 's,.*test_run ,#&,' tests/API/XCCDF/default_cpe/test_default_cpe.sh || die
sed -i 's,.*assert_exists ,#&,' tests/API/XCCDF/unittests/test_deriving_xccdf_result_from_oval.sh || die
sed -i '/\[ $ret -eq 2 \]/d;s,.*assert_exists ,#&,' tests/API/XCCDF/unittests/test_remediate_unresolved.sh || die
sed -i 's/uname -p/uname -m/' tests/probes/uname/test_probes_uname.xml.sh || die
#sed -i 's,.*test_run ,#&,' tests/probes/rpminfo/test_probes_rpminfo.xml.sh || die
#sed -i 's,.*test_run ,#&,' tests/probes/rpmverify/all.sh || die
#sed -i 's,.*test_run ,#&,' tests/probes/rpmverifyfile/all.sh || die
#sed -i 's,.*test_run ,#&,' tests/probes/rpmverifypackage/test_probes_rpmverifypackage.sh || die
sed -i 's,.*test_run ,#&,' tests/probes/sysctl/all.sh || die
# update paths for valgrind
#sed -i "s:valgrind_output=/tmp/valgrind_\$$.log:valgrind_output=${T}/valgrind_\$$.log:" tests/valgrind_test.sh || die
#sed -i 's:oscap_program=$actualdir/utils/.libs/oscap:oscap_program=$actualdir/utils/oscap:' tests/valgrind_test.sh || die
# https://github.com/OpenSCAP/openscap/blob/52be17e064df72d8453c7b484bd6224f3f3263b6/src/OVAL/probes/SEAP/seap-packet.c#L845
:
fi
python_fix_shebang -q "${S}"
cmake_src_prepare
}
src_configure() {
local mycmakeargs=(
-DENABLE_SCE="$(usex sce)"
-DENABLE_PERL="$(usex perl)"
-DENABLE_PYTHON3="$(usex python)"
-DPYTHON_EXECUTABLE="${PYTHON}"
-DENABLE_DOCS="$(usex doc)"
-DCMAKE_INSTALL_DOCDIR="/usr/share/doc/${PF}"
-DENABLE_OSCAP_UTIL="ON"
-DENABLE_OSCAP_UTIL_AS_RPM="$(usex rpm)" # scap-as-rpm — is a py3 script
-DENABLE_OSCAP_UTIL_PODMAN="$(usex podman)"
-DENABLE_OSCAP_UTIL_SSH="$(usex ssh)"
-DENABLE_OSCAP_UTIL_CHROOT="$(usex chroot)"
-DENABLE_OSCAP_UTIL_VM="$(usex vm)" # req: ENABLE_OSCAP_UTIL=yes
-DENABLE_OSCAP_UTIL_DOCKER="$(usex docker)" # req: python flag (python bindings)
-DENABLE_TESTS="$(usex test)"
-DENABLE_MITRE="OFF" # mitre testing requires specific environment support
-DENABLE_VALGRIND="OFF" # because it's not completely with sandbox too
-DCMAKE_C_FLAGS="-Wl, -ldl -Wl, -lm" # Needed for succesful compilation on COS
)
# upstream wants to building it only in ${S}/build directory
# do not remove it without testing.
#
# see more:
# * https://github.com/OpenSCAP/openscap/blob/2c04d939b93b7394f76adb86bf0b24ff0d76d963/CMakeLists.txt#L50-L54
BUILD_DIR="${S}/build"
cmake_src_configure
}
src_install() {
cmake_src_install
use python && python_optimize "${D}$(python_get_sitedir)"
}