aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Oberritter <obi@opendreambox.org>2016-10-18 12:34:42 +0200
committerAndreas Oberritter <obi@opendreambox.org>2017-02-16 11:29:20 +0100
commite38d5bbee6bb105d98a0df39820722c8926a01c4 (patch)
tree0a6d25ad4860e183d6770f5c976adf0036b79eb9
parent21419d364cfef22fc21873ef5cd2a9603e07af0e (diff)
downloadmeta-openembedded-contrib-e38d5bbee6bb105d98a0df39820722c8926a01c4.tar.gz
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>
-rw-r--r--meta-networking/recipes-connectivity/samba/samba_4.4.5.bb135
1 files 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 \