net-fs/samba: Apply Flatcar modifications

- Add a minimal USE flag for only installing libraries
  - Change the Perl run-time dep to build-time only
  - Disable building libraries requiring Python
  - Disable building Perl JSON libraries
  - Limit the size of bundled libraries

Co-authored-by: Sayan Chowdhury <schowdhury@microsoft.com>
This commit is contained in:
Dongsu Park 2024-04-08 15:27:25 +02:00
parent aaed8d7ebb
commit 5ee18c9039

View File

@ -5,6 +5,7 @@ EAPI=8
PYTHON_COMPAT=( python3_{10..11} ) PYTHON_COMPAT=( python3_{10..11} )
PYTHON_REQ_USE="threads(+),xml(+)" PYTHON_REQ_USE="threads(+),xml(+)"
TMPFILES_OPTIONAL=1
inherit python-single-r1 flag-o-matic waf-utils multilib-minimal linux-info systemd pam tmpfiles inherit python-single-r1 flag-o-matic waf-utils multilib-minimal linux-info systemd pam tmpfiles
DESCRIPTION="Samba Suite Version 4" DESCRIPTION="Samba Suite Version 4"
@ -26,6 +27,7 @@ IUSE="acl addc ads ceph client cluster cpu_flags_x86_aes cups debug fam glusterf
IUSE+=" iprint json ldap llvm-libunwind pam profiling-data python quota +regedit selinux" IUSE+=" iprint json ldap llvm-libunwind pam profiling-data python quota +regedit selinux"
IUSE+=" snapper spotlight syslog system-heimdal +system-mitkrb5 systemd test unwind winbind" IUSE+=" snapper spotlight syslog system-heimdal +system-mitkrb5 systemd test unwind winbind"
IUSE+=" zeroconf" IUSE+=" zeroconf"
IUSE+=" +minimal" # Flatcar: Only install libraries, not executables.
REQUIRED_USE="${PYTHON_REQUIRED_USE} REQUIRED_USE="${PYTHON_REQUIRED_USE}
addc? ( json python !system-mitkrb5 winbind ) addc? ( json python !system-mitkrb5 winbind )
@ -59,14 +61,13 @@ TALLOC_VERSION="2.4.0"
TDB_VERSION="1.4.8" TDB_VERSION="1.4.8"
TEVENT_VERSION="0.14.1" TEVENT_VERSION="0.14.1"
# Flatcar: exclude perl, icu, libtasn1, Parse-Yapp from DEPEND
COMMON_DEPEND=" COMMON_DEPEND="
>=app-arch/libarchive-3.1.2:=[${MULTILIB_USEDEP}] >=app-arch/libarchive-3.1.2:=[${MULTILIB_USEDEP}]
dev-lang/perl:= spotlight? ( dev-libs/icu:=[${MULTILIB_USEDEP}] )
dev-libs/icu:=[${MULTILIB_USEDEP}]
dev-libs/libbsd[${MULTILIB_USEDEP}] dev-libs/libbsd[${MULTILIB_USEDEP}]
dev-libs/libtasn1:=[${MULTILIB_USEDEP}] !minimal? ( dev-libs/libtasn1:=[${MULTILIB_USEDEP}] )
dev-libs/popt[${MULTILIB_USEDEP}] dev-libs/popt[${MULTILIB_USEDEP}]
dev-perl/Parse-Yapp
>=net-libs/gnutls-3.4.7:=[${MULTILIB_USEDEP}] >=net-libs/gnutls-3.4.7:=[${MULTILIB_USEDEP}]
>=sys-fs/e2fsprogs-1.46.4-r51[${MULTILIB_USEDEP}] >=sys-fs/e2fsprogs-1.46.4-r51[${MULTILIB_USEDEP}]
>=sys-libs/ldb-2.7.2:=[ldap(+)?,${MULTILIB_USEDEP}] >=sys-libs/ldb-2.7.2:=[ldap(+)?,${MULTILIB_USEDEP}]
@ -117,8 +118,9 @@ COMMON_DEPEND="
) )
zeroconf? ( net-dns/avahi[dbus] ) zeroconf? ( net-dns/avahi[dbus] )
" "
# Flatcar: pull in JSON only if json is enabled
DEPEND="${COMMON_DEPEND} DEPEND="${COMMON_DEPEND}
dev-perl/JSON json? ( dev-perl/JSON )
net-libs/libtirpc[${MULTILIB_USEDEP}] net-libs/libtirpc[${MULTILIB_USEDEP}]
net-libs/rpcsvc-proto net-libs/rpcsvc-proto
spotlight? ( dev-libs/glib ) spotlight? ( dev-libs/glib )
@ -138,6 +140,8 @@ RDEPEND="${COMMON_DEPEND}
selinux? ( sec-policy/selinux-samba ) selinux? ( sec-policy/selinux-samba )
" "
BDEPEND="${PYTHON_DEPS} BDEPEND="${PYTHON_DEPS}
dev-lang/perl:=
dev-perl/Parse-Yapp
app-text/docbook-xsl-stylesheets app-text/docbook-xsl-stylesheets
dev-libs/libxslt dev-libs/libxslt
virtual/pkgconfig virtual/pkgconfig
@ -248,6 +252,10 @@ multilib_src_configure() {
EOF EOF
fi fi
# Flatcar: we need only the mandatory bundled library, ldb by default.
# Without that, configure will fail because of a missing bundled library.
bundled_libs="ldb"
local myconf=( local myconf=(
--enable-fhs --enable-fhs
--sysconfdir="${EPREFIX}/etc" --sysconfdir="${EPREFIX}/etc"
@ -358,7 +366,8 @@ multilib_src_install() {
newinitd "${CONFDIR}/samba4.initd-r1" samba newinitd "${CONFDIR}/samba4.initd-r1" samba
newconfd "${CONFDIR}/samba4.confd" samba newconfd "${CONFDIR}/samba4.confd" samba
dotmpfiles "${FILESDIR}"/samba.conf # Flatcar: do not create samba config if minimal enabled
use minimal || dotmpfiles "${FILESDIR}"/samba.conf
if ! use addc ; then if ! use addc ; then
rm "${D}/$(systemd_get_systemunitdir)/samba.service" \ rm "${D}/$(systemd_get_systemunitdir)/samba.service" \
|| die || die
@ -376,8 +385,22 @@ multilib_src_install() {
insinto /etc/security insinto /etc/security
doins examples/pam_winbind/pam_winbind.conf doins examples/pam_winbind/pam_winbind.conf
fi fi
# Flatcar: clean up unnecessary files
rm -f "${ED%/}"/etc/samba/*
rm -f "${ED%/}"/usr/lib*/samba/ldb/*
if use minimal ; then
mv "${ED%/}"/usr/bin/net "${T}"/
rm -f "${ED%/}"/usr/bin/* "${ED%/}"/usr/sbin/*
mv "${T}"/net "${ED%/}"/usr/bin/net
rm -rf ${ED%/}/lib*/security
rm -rf ${ED%/}/usr/lib/systemd
rm -rf ${ED%/}/usr/lib*/perl*
rm -rf ${ED%/}/usr/lib*/python*
rm -rf ${ED%/}/var
fi
} }
pkg_postinst() { pkg_postinst() {
tmpfiles_process samba.conf use minimal || tmpfiles_process samba.conf
} }