From 7a578b2669e79924e0bcfd5fc63ca75fb9637623 Mon Sep 17 00:00:00 2001 From: Andreas Oberritter Date: Tue, 18 Oct 2016 12:34:42 +0200 Subject: 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 --- .../recipes-connectivity/samba/samba_4.4.5.bb | 135 +++++---------------- 1 file changed, 30 insertions(+), 105 deletions(-) diff --git a/meta-networking/recipes-connectivity/samba/samba_4.4.5.bb b/meta-networking/recipes-connectivity/samba/samba_4.4.5.bb index a18dd4cb44..6ffe733d02 100644 --- a/meta-networking/recipes-connectivity/samba/samba_4.4.5.bb +++ b/meta-networking/recipes-connectivity/samba/samba_4.4.5.bb @@ -131,11 +131,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${PN}-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 \ @@ -154,121 +176,24 @@ 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${PN}-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_${PN}-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 \ -- cgit 1.2.3-korg