aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Oberritter <obi@opendreambox.org>2016-10-18 12:34:42 +0200
committerAndreas Oberritter <obi@opendreambox.org>2017-06-26 22:59:19 +0200
commit7a578b2669e79924e0bcfd5fc63ca75fb9637623 (patch)
tree64f9ff7dbd2a839e0e510dfd862f9e43e3480b56
parentd6b9388306a5dbbce3b2b4f331ec3917927ad84c (diff)
downloadmeta-openembedded-contrib-7a578b2669e79924e0bcfd5fc63ca75fb9637623.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 \