add sys-libs/libselinux v3.0-r1 with musl libc build support

pull/1/head
Alexander Miroshnichenko 2020-04-17 18:09:47 +03:00
parent 2af939d1df
commit 66ea901237
Signed by: alex
GPG Key ID: E93720C6C73A77F4
3 changed files with 183 additions and 0 deletions

View File

@ -0,0 +1,3 @@
DIST libselinux-3.0.tar.gz 212096 BLAKE2B 7502c77243928adfc445f55357b0e894087859c3a83e2beb446c31818362d10111c3e52b970150638c055f96cccca6fccde79440026201a2a48bfda3565c27d3 SHA512 6fd8c3711e25cb1363232e484268609b71d823975537b3863e403836222eba026abce8ca198f64dba6f4c1ea4deb7ecef68a0397b9656a67b363e4d74409cd95
EBUILD libselinux-3.0-r1.ebuild 4418 BLAKE2B a1f76e41a90e3715f74583a0538084bc0deba8f50913e0a1fabe52e8cb6376ff50e6595b0fd9ac1b3960a3590c658d9d7b3f00116ac8ccb8e083106a4145aa0c SHA512 2ffaf840c75298dfe45a21562cb414f04f985ce9ff479be644597e893ad0b0a719e2833ec0ceab02d55ddceee6e06683acad3084c6101b0e59aa2f75a7e406b5
MISC metadata.xml 745 BLAKE2B 6658dad55bd195725b345865e152b62528e04201b9743dd3688058eeb6f3ca87add86035c2a14bea0b238273328464f5e2fa36ce6b96ac35fb1cc679e3cb4a7c SHA512 ee405602d0345a118c4b8eac9126417f082f4a37a7d5816a991e21191d4ce71ec883abe7e91f10f5330cdc61e6f7a174968c12f873b08a4bda5186cc4986b363

View File

@ -0,0 +1,160 @@
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="6"
PYTHON_COMPAT=( python{3_6,3_7,3_8} )
USE_RUBY="ruby24 ruby25 ruby26"
# No, I am not calling ruby-ng
inherit multilib python-r1 toolchain-funcs multilib-minimal
MY_P="${P//_/-}"
SEPOL_VER="${PV}"
MY_RELEASEDATE="20191204"
DESCRIPTION="SELinux userland library"
HOMEPAGE="https://github.com/SELinuxProject/selinux/wiki"
if [[ ${PV} == 9999 ]] ; then
inherit git-r3
EGIT_REPO_URI="https://github.com/SELinuxProject/selinux.git"
S="${WORKDIR}/${MY_P}/${PN}"
else
SRC_URI="https://github.com/SELinuxProject/selinux/releases/download/${MY_RELEASEDATE}/${MY_P}.tar.gz"
KEYWORDS="amd64 ~arm ~arm64 ~mips x86"
S="${WORKDIR}/${MY_P}"
fi
LICENSE="public-domain"
SLOT="0"
IUSE="pcre2 python ruby static-libs ruby_targets_ruby24 ruby_targets_ruby25 ruby_targets_ruby26"
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
RDEPEND=">=sys-libs/libsepol-${SEPOL_VER}:=[${MULTILIB_USEDEP}]
!pcre2? ( >=dev-libs/libpcre-8.33-r1:=[static-libs?,${MULTILIB_USEDEP}] )
pcre2? ( dev-libs/libpcre2:=[static-libs?,${MULTILIB_USEDEP}] )
python? ( ${PYTHON_DEPS} )
ruby? (
ruby_targets_ruby24? ( dev-lang/ruby:2.4 )
ruby_targets_ruby25? ( dev-lang/ruby:2.5 )
ruby_targets_ruby26? ( dev-lang/ruby:2.6 )
)
elibc_musl? ( sys-libs/fts-standalone )"
DEPEND="${RDEPEND}
virtual/pkgconfig
python? ( >=dev-lang/swig-2.0.9 )
ruby? ( >=dev-lang/swig-2.0.9 )"
src_prepare() {
eapply_user
if use elibc_musl; then
sed -i 's/^FTS_LDLIBS ?=/FTS_LDLIBS ?= -lfts/g' ${S}/src/Makefile
sed -i 's/^override LDLIBS += -lselinux/override LDLIBS += -lselinux -lfts/g' ${S}/utils/Makefile
fi
multilib_copy_sources
}
multilib_src_compile() {
tc-export AR CC PKG_CONFIG RANLIB
emake \
LIBDIR="\$(PREFIX)/$(get_libdir)" \
SHLIBDIR="/$(get_libdir)" \
LDFLAGS="-fPIC ${LDFLAGS} -pthread" \
USE_PCRE2="$(usex pcre2 y n)" \
FTS_LDLIBS="$(usex elibc_musl '-lfts' '')" \
all
if multilib_is_native_abi && use python; then
building() {
emake \
LDFLAGS="-fPIC ${LDFLAGS} -lpthread" \
LIBDIR="\$(PREFIX)/$(get_libdir)" \
SHLIBDIR="/$(get_libdir)" \
USE_PCRE2="$(usex pcre2 y n)" \
FTS_LDLIBS="$(usex elibc_musl '-lfts' '')" \
pywrap
}
python_foreach_impl building
fi
if multilib_is_native_abi && use ruby; then
building() {
einfo "Calling rubywrap for ${1}"
# Clean up .lo file to force rebuild
rm -f src/selinuxswig_ruby_wrap.lo || die
emake \
RUBY=${1} \
LDFLAGS="-fPIC ${LDFLAGS} -lpthread" \
LIBDIR="\$(PREFIX)/$(get_libdir)" \
SHLIBDIR="/$(get_libdir)" \
USE_PCRE2="$(usex pcre2 y n)" \
FTS_LDLIBS="$(usex elibc_musl '-lfts' '')" \
rubywrap
}
for RUBYTARGET in ${USE_RUBY}; do
use ruby_targets_${RUBYTARGET} || continue
building ${RUBYTARGET}
done
fi
}
multilib_src_install() {
emake DESTDIR="${D}" \
LIBDIR="\$(PREFIX)/$(get_libdir)" \
SHLIBDIR="/$(get_libdir)" \
USE_PCRE2="$(usex pcre2 y n)" \
install
if multilib_is_native_abi && use python; then
installation() {
emake DESTDIR="${D}" \
LIBDIR="\$(PREFIX)/$(get_libdir)" \
SHLIBDIR="/$(get_libdir)" \
USE_PCRE2="$(usex pcre2 y n)" \
install-pywrap
python_optimize # bug 531638
}
python_foreach_impl installation
fi
if multilib_is_native_abi && use ruby; then
installation() {
einfo "Calling install-rubywrap for ${1}"
# Forcing (re)build here as otherwise the resulting SO file is used for all ruby versions
rm src/selinuxswig_ruby_wrap.lo
emake DESTDIR="${D}" \
LIBDIR="\$(PREFIX)/$(get_libdir)" \
SHLIBDIR="/$(get_libdir)" \
RUBY=${1} \
USE_PCRE2="$(usex pcre2 y n)" \
install-rubywrap
}
for RUBYTARGET in ${USE_RUBY}; do
use ruby_targets_${RUBYTARGET} || continue
installation ${RUBYTARGET}
done
fi
use static-libs || rm "${D}"/usr/lib*/*.a || die
}
pkg_postinst() {
# Fix bug 473502
for POLTYPE in ${POLICY_TYPES};
do
mkdir -p /etc/selinux/${POLTYPE}/contexts/files || die
touch /etc/selinux/${POLTYPE}/contexts/files/file_contexts.local || die
# Fix bug 516608
for EXPRFILE in file_contexts file_contexts.homedirs file_contexts.local ; do
if [[ -f "/etc/selinux/${POLTYPE}/contexts/files/${EXPRFILE}" ]]; then
sefcontext_compile /etc/selinux/${POLTYPE}/contexts/files/${EXPRFILE} \
|| die "Failed to recompile contexts"
fi
done
done
}

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>selinux@gentoo.org</email>
<name>SELinux Team</name>
</maintainer>
<longdescription>
Libselinux provides an API for SELinux applications to get and set
process and file security contexts and to obtain security policy
decisions. Required for any applications that use the SELinux API.
</longdescription>
<use>
<flag name="pcre2">Use <pkg>dev-libs/libpcre2</pkg> for fcontext regexes</flag>
</use>
<upstream>
<remote-id type="cpe">cpe:/a:selinuxproject:libselinux</remote-id>
<remote-id type="github">SELinuxProject/selinux</remote-id>
</upstream>
</pkgmetadata>