samba: split libraries into their own packages

It's quite hard to track library dependencies manually between
releases. Splitting libraries into their own packages creates
some overhead but effectively uses less storage in minimal
installations.

Signed-off-by: Andreas Oberritter <obi@opendreambox.org>
Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
This commit is contained in:
Andreas Oberritter
2016-11-30 13:04:00 +01:00
committed by Joe MacDonald
parent 21c63e1b99
commit 264430e380
@@ -153,11 +153,33 @@ do_install_append() {
rm -rf ${D}/run ${D}${localstatedir}/run ${D}${localstatedir}/log
}
PACKAGES =+ "${PN}-python ${PN}-pidl libwinbind libwinbind-krb5-locator \
libwbclient libnss-winbind winbind libnetapi libsmbsharemodes \
libsmbclient lib${BPN}-base ${PN}-base ${PN}-ctdb-tests \
PACKAGES =+ "${PN}-python ${PN}-pidl \
winbind \
${PN}-common ${PN}-base ${PN}-ctdb-tests \
smbclient"
python samba_populate_packages() {
def module_hook(file, pkg, pattern, format, basename):
pn = d.getVar('PN', True)
d.appendVar('RRECOMMENDS_%s-base' % pn, ' %s' % pkg)
mlprefix = d.getVar('MLPREFIX', True) or ''
pam_libdir = d.expand('${base_libdir}/security')
pam_pkgname = mlprefix + 'pam-plugin%s'
do_split_packages(d, pam_libdir, '^pam_(.*)\.so$', pam_pkgname, 'PAM plugin for %s', extra_depends='', prepend=True)
libdir = d.getVar('libdir', True)
do_split_packages(d, libdir, '^lib(.*)\.so\..*$', 'lib%s', 'Samba %s library', extra_depends='${PN}-common', prepend=True, allow_links=True)
pkglibdir = '%s/samba' % libdir
do_split_packages(d, pkglibdir, '^lib(.*)\.so$', 'lib%s', 'Samba %s library', extra_depends='${PN}-common', prepend=True)
moduledir = '%s/samba/auth' % libdir
do_split_packages(d, moduledir, '^(.*)\.so$', 'samba-auth-%s', 'Samba %s authentication backend', hook=module_hook, extra_depends='', prepend=True)
moduledir = '%s/samba/pdb' % libdir
do_split_packages(d, moduledir, '^(.*)\.so$', 'samba-pdb-%s', 'Samba %s password backend', hook=module_hook, extra_depends='', prepend=True)
}
PACKAGESPLITFUNCS_prepend = "samba_populate_packages "
RDEPENDS_${PN} += "${PN}-base"
FILES_${PN}-base = "${sbindir}/nmbd \
@@ -178,121 +200,25 @@ FILES_${PN}-ctdb-tests = "${bindir}/ctdb_run_tests \
/run/ctdb \
"
# figured out by
# FILES="tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/samba/4.1.12-r0/image/usr/sbin/smbd tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/samba/4.1.12-r0/image/usr/sbin/nmbd"
#
# while [ "${FILES}" != "${OLDFILES}" ]
# do
# OLDFILES="${FILES}"
# NEEDED=`tmp/sysroots/x86_64-linux/usr/libexec/arm-poky-linux-gnueabi.gcc-cross-initial-arm/gcc/arm-poky-linux-gnueabi/5.2.0/objdump -x ${FILES} | grep NEEDED | egrep -E 'so(.[0-9]|$)' | sort -u | perl -MData::Dumper -le 'while (<>) {chomp; push @lib, (split)[1]}; print "(", join("|", @lib), ")"'`
# NF=`find tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/samba/4.1.12-r0/image/usr/lib -type f | egrep "${NEEDED}" | sort -u`
#
# FILES=`perl -le 'foreach (@ARGV) { $f{$_}++ }; print join(" ", sort keys %f)' ${FILES} ${NF}`
# done
#
# LIBS=`echo ${FILES} | sed -e 's,tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/samba/4.1.12-r0/image/usr/lib,${libdir},g' -e 's,.so.[0-9]+.*$,.so.*,g'`
# for l in ${LIBS}
# do
# echo $l
# done
FILES_lib${BPN}-base = "\
${sysconfdir}/default \
${sysconfdir}/samba \
${libdir}/libdcerpc-binding.so.* \
${libdir}/libgensec.so.* \
${libdir}/libndr-krb5pac.so.* \
${libdir}/libndr-nbt.so.* \
${libdir}/libndr-standard.so.* \
${libdir}/libndr.so.* \
${libdir}/libnetapi.so.* \
${libdir}/libpdb.so.* \
${libdir}/libsamba-credentials.so.* \
${libdir}/libsamba-hostconfig.so.* \
${libdir}/libsamba-util.so.* \
${libdir}/libsamdb.so.* \
${libdir}/libsmbconf.so.* \
${libdir}/libtevent-util.so.* \
${libdir}/samba/libCHARSET3.so \
${libdir}/samba/libaddns.so \
${libdir}/samba/libads.so \
${libdir}/samba/libasn1util.so \
${libdir}/samba/libauth.so \
${libdir}/samba/libauth_sam_reply.so \
${libdir}/samba/libauthkrb5.so \
${libdir}/samba/libccan.so \
${libdir}/samba/libcli-ldap-common.so \
${libdir}/samba/libcli-nbt.so \
${libdir}/samba/libcli_cldap.so \
${libdir}/samba/libcli_smb_common.so \
${libdir}/samba/libcli_spoolss.so \
${libdir}/samba/libcliauth.so \
${libdir}/samba/libdbwrap.so \
${libdir}/samba/libdcerpc-samba.so \
${libdir}/samba/liberrors.so \
${libdir}/samba/libflag_mapping.so \
${libdir}/samba/libgse.so \
${libdir}/samba/libinterfaces.so \
${libdir}/samba/libkrb5samba.so \
${libdir}/samba/libldbsamba.so \
${libdir}/samba/liblibcli_lsa3.so \
${libdir}/samba/liblibcli_netlogon3.so \
${libdir}/samba/liblibsmb.so \
${libdir}/samba/libmsrpc3.so \
${libdir}/samba/libndr-samba.so \
${libdir}/samba/libndr-samba4.so \
${libdir}/samba/libnpa_tstream.so \
${libdir}/samba/libntdb.so.* \
${libdir}/samba/libpopt_samba3.so \
${libdir}/samba/libprinting_migrate.so \
${libdir}/samba/libsamba-modules.so \
${libdir}/samba/libsamba-security.so \
${libdir}/samba/libsamba-sockets.so \
${libdir}/samba/libsamba3-util.so \
${libdir}/samba/libsamdb-common.so \
${libdir}/samba/libsecrets3.so \
${libdir}/samba/libserver-role.so \
${libdir}/samba/libsmb_transport.so \
${libdir}/samba/libsmbd_base.so \
${libdir}/samba/libsmbd_conn.so \
${libdir}/samba/libsmbd_shim.so \
${libdir}/samba/libsmbregistry.so \
${libdir}/samba/libtdb-wrap.so \
${libdir}/samba/libutil_cmdline.so \
${libdir}/samba/libutil_ntdb.so \
${libdir}/samba/libutil_reg.so \
${libdir}/samba/libutil_setid.so \
${libdir}/samba/libutil_tdb.so \
${libdir}/samba/pdb/smbpasswd.so \
${libdir}/samba/pdb/tdbsam.so \
${libdir}/samba/pdb/wbc_sam.so \
FILES_${BPN}-common = "${sysconfdir}/default \
${sysconfdir}/samba \
"
FILES_${PN} += "${libdir}/vfs/*.so \
${libdir}/charset/*.so \
${libdir}/*.dat \
${libdir}/auth/*.so \
${base_libdir}/security/pam_smbpass.so \
"
FILES_libwbclient = "${libdir}/libwbclient.so.* ${libdir}/samba/libwinbind-client.so"
FILES_libnetapi = "${libdir}/libnetapi.so.*"
FILES_libsmbsharemodes = "${libdir}/libsmbsharemodes.so.*"
FILES_libsmbclient = "${libdir}/libsmbclient.so.*"
FILES_winbind = "${sbindir}/winbindd \
${bindir}/wbinfo \
${bindir}/ntlm_auth \
${libdir}/samba/idmap \
${libdir}/samba/nss_info \
${libdir}/winbind_krb5_locator.so \
${sysconfdir}/init.d/winbind \
${systemd_system_unitdir}/winbind.service"
FILES_libnss-winbind = "${libdir}/libnss_*${SOLIBS} \
${libdir}/nss_info \
"
FILES_libwinbind = "${base_libdir}/security/pam_winbind.so \
${systemd_system_unitdir}/winbind.service"
FILES_libwinbind-krb5-locator = "${libdir}/winbind_krb5_locator.so"
FILES_${PN}-python = "${PYTHON_SITEPACKAGES_DIR}"
FILES_smbclient = "${bindir}/cifsdd \