[oe] [meta-networking][PATCH] strongswan: Split plugins

Martin Jansa martin.jansa at gmail.com
Thu Apr 20 14:36:03 UTC 2017


I think currently the preferred way is only one -dev/-dbg/-staticdev
package per recipe.

Why not set RDEPENDS_${PN} based on plugins packaged in first do_split_packages
call?

Just my 2c - I'm not using strongswan and Joe has last word for
meta-networking.

On Thu, Apr 20, 2017 at 3:57 PM, David Vincent <freesilicon at gmail.com>
wrote:

> strongSwan offers a plugin mechanism therefore it should not be
> mandatory to install all of them when installing the package. Each
> plugin is now a self-contained package with the library and its
> configuration.
>
> To remain compatible with the current configuration, a default set of
> plugins has been selected as RDEPENDS of the main package. This default
> list is based on the default strongSwan list minus some plugins enabled
> via PACKAGECONFIG
> (see https://wiki.strongswan.org/projects/strongswan/PluginList).
>
> Signed-off-by: David Vincent <freesilicon at gmail.com>
> ---
>  .../recipes-support/strongswan/strongswan_5.5.1.bb | 101
> ++++++++++++++++++---
>  1 file changed, 88 insertions(+), 13 deletions(-)
>
> diff --git a/meta-networking/recipes-support/strongswan/strongswan_
> 5.5.1.bb b/meta-networking/recipes-support/strongswan/strongswan_5.5.1.bb
> index f9e7ae3c1..d63214ba4 100644
> --- a/meta-networking/recipes-support/strongswan/strongswan_5.5.1.bb
> +++ b/meta-networking/recipes-support/strongswan/strongswan_5.5.1.bb
> @@ -24,17 +24,17 @@ EXTRA_OECONF += "${@bb.utils.contains('DISTRO_FEATURES',
> 'systemd', '--with-syst
>  PACKAGECONFIG ??= "charon curl gmp openssl stroke sqlite3 \
>          ${@bb.utils.filter('DISTRO_FEATURES', 'ldap', d)} \
>  "
> -PACKAGECONFIG[aesni] = "--enable-aesni,--disable-aesni,"
> +PACKAGECONFIG[aesni] = "--enable-aesni,--disable-
> aesni,,${PN}-plugin-aesni"
>  PACKAGECONFIG[charon] = "--enable-charon,--disable-charon,"
> -PACKAGECONFIG[curl] = "--enable-curl,--disable-curl,curl,"
> -PACKAGECONFIG[gmp] = "--enable-gmp,--disable-gmp,gmp,"
> -PACKAGECONFIG[ldap] = "--enable-ldap,--disable-ldap,openldap,"
> -PACKAGECONFIG[mysql] = "--enable-mysql,--disable-mysql,mysql5,"
> -PACKAGECONFIG[openssl] = "--enable-openssl,--disable-openssl,openssl,"
> +PACKAGECONFIG[curl] = "--enable-curl,--disable-curl,
> curl,${PN}-plugin-curl"
> +PACKAGECONFIG[gmp] = "--enable-gmp,--disable-gmp,gmp,${PN}-plugin-gmp"
> +PACKAGECONFIG[ldap] = "--enable-ldap,--disable-ldap,
> openldap,${PN}-plugin-ldap"
> +PACKAGECONFIG[mysql] = "--enable-mysql,--disable-
> mysql,mysql5,${PN}-plugin-mysql"
> +PACKAGECONFIG[openssl] = "--enable-openssl,--disable-
> openssl,openssl,${PN}-plugin-openssl"
>  PACKAGECONFIG[scep] = "--enable-scepclient,--disable-scepclient,"
> -PACKAGECONFIG[soup] = "--enable-soup,--disable-soup,libsoup-2.4,"
> -PACKAGECONFIG[sqlite3] = "--enable-sqlite,--disable-sqlite,sqlite3,"
> -PACKAGECONFIG[stroke] = "--enable-stroke,--disable-stroke,"
> +PACKAGECONFIG[soup] = "--enable-soup,--disable-soup,
> libsoup-2.4,${PN}-plugin-soup"
> +PACKAGECONFIG[sqlite3] = "--enable-sqlite,--disable-
> sqlite,sqlite3,${PN}-plugin-sqlite"
> +PACKAGECONFIG[stroke] = "--enable-stroke,--disable-
> stroke,,${PN}-plugin-stroke"
>  PACKAGECONFIG[swanctl] = "--enable-swanctl,--disable-swanctl,,libgcc"
>
>  # requires swanctl
> @@ -44,10 +44,85 @@ inherit autotools systemd pkgconfig
>
>  RRECOMMENDS_${PN} = "kernel-module-ipsec"
>
> -FILES_${PN} += "${libdir}/ipsec/lib*${SOLIBS}
> ${libdir}/ipsec/plugins/*.so"
> -FILES_${PN}-dbg += "${libdir}/ipsec/.debug ${libdir}/ipsec/plugins/.debug
> ${libexecdir}/ipsec/.debug"
> -FILES_${PN}-dev += "${libdir}/ipsec/lib*${SOLIBSDEV}
> ${libdir}/ipsec/*.la ${libdir}/ipsec/plugins/*.la"
> -FILES_${PN}-staticdev += "${libdir}/ipsec/*.a ${libdir}/ipsec/plugins/*.a"
> +FILES_${PN} += "${libdir}/ipsec/lib*${SOLIBS}"
> +FILES_${PN}-dbg += "${bindir}/.debug ${libdir}/ipsec/.debug
> ${libexecdir}/ipsec/.debug"
> +FILES_${PN}-dev += "${libdir}/ipsec/lib*${SOLIBSDEV}
> ${libdir}/ipsec/*.la"
> +FILES_${PN}-staticdev += "${libdir}/ipsec/*.a"
> +
> +CONFFILES_${PN} = "${sysconfdir}/*.conf ${sysconfdir}/ipsec.d/*.conf
> ${sysconfdir}/strongswan.d/*.conf"
> +
> +PACKAGES += "${PN}-plugins"
> +ALLOW_EMPTY_${PN}-plugins = "1"
> +
> +PACKAGES_DYNAMIC += "^${PN}-plugin-.*$"
> +NOAUTOPACKAGEDEBUG = "1"
> +
> +python split_strongswan_plugins () {
> +    sysconfdir = d.expand('${sysconfdir}/strongswan.d/charon')
> +    libdir = d.expand('${libdir}/ipsec/plugins')
> +    dbglibdir = os.path.join(libdir, '.debug')
> +
> +    def add_plugin_conf(f, pkg, file_regex, output_pattern, modulename):
> +        dvar = d.getVar('PKGD', True)
> +        oldfiles = d.getVar('CONFFILES_' + pkg, True)
> +        newfile = '/' + os.path.relpath(f, dvar)
> +
> +        if not oldfiles:
> +            d.setVar('CONFFILES_' + pkg, newfile)
> +        else:
> +            d.setVar('CONFFILES_' + pkg, oldfiles + " " + newfile)
> +
> +    split_packages = do_split_packages(d, libdir,
> 'libstrongswan-(.*)\.so', '${PN}-plugin-%s', 'strongSwan %s plugin',
> prepend=True)
> +    do_split_packages(d, sysconfdir, '(.*)\.conf', '${PN}-plugin-%s',
> 'strongSwan %s plugin', prepend=True, hook=add_plugin_conf)
> +
> +    split_dbg_packages = do_split_packages(d, dbglibdir,
> 'libstrongswan-(.*)\.so', '${PN}-plugin-%s-dbg', 'strongSwan %s plugin -
> Debugging files', prepend=True, extra_depends='${PN}-dbg')
> +    split_dev_packages = do_split_packages(d, libdir,
> 'libstrongswan-(.*)\.la', '${PN}-plugin-%s-dev', 'strongSwan %s plugin -
> Development files', prepend=True, extra_depends='${PN}-dev')
> +    split_staticdev_packages = do_split_packages(d, libdir,
> 'libstrongswan-(.*)\.a', '${PN}-plugin-%s-staticdev', 'strongSwan %s plugin
> - Development files (Static Libraries)', prepend=True, extra_depends='${PN}-
> staticdev')
> +
> +    if split_packages:
> +        pn = d.getVar('PN', True)
> +        d.setVar('RRECOMMENDS_' + pn + '-plugins', '
> '.join(split_packages))
> +        d.appendVar('RRECOMMENDS_' + pn + '-dbg', ' ' + '
> '.join(split_dbg_packages))
> +        d.appendVar('RRECOMMENDS_' + pn + '-dev', ' ' + '
> '.join(split_dev_packages))
> +        d.appendVar('RRECOMMENDS_' + pn + '-staticdev', ' ' + '
> '.join(split_staticdev_packages))
> +}
> +
> +PACKAGESPLITFUNCS_prepend = "split_strongswan_plugins "
> +
> +# Install some default plugins based on default strongSwan ./configure
> options
> +# See https://wiki.strongswan.org/projects/strongswan/wiki/Pluginlist
> +RDEPENDS_${PN} += "\
> +    ${PN}-plugin-aes \
> +    ${PN}-plugin-attr \
> +    ${PN}-plugin-cmac \
> +    ${PN}-plugin-constraints \
> +    ${PN}-plugin-des \
> +    ${PN}-plugin-dnskey \
> +    ${PN}-plugin-hmac \
> +    ${PN}-plugin-kernel-netlink \
> +    ${PN}-plugin-md5 \
> +    ${PN}-plugin-nonce \
> +    ${PN}-plugin-pem \
> +    ${PN}-plugin-pgp \
> +    ${PN}-plugin-pkcs1 \
> +    ${PN}-plugin-pkcs7 \
> +    ${PN}-plugin-pkcs8 \
> +    ${PN}-plugin-pkcs12 \
> +    ${PN}-plugin-pubkey \
> +    ${PN}-plugin-random \
> +    ${PN}-plugin-rc2 \
> +    ${PN}-plugin-resolve \
> +    ${PN}-plugin-revocation \
> +    ${PN}-plugin-sha1 \
> +    ${PN}-plugin-sha2 \
> +    ${PN}-plugin-socket-default \
> +    ${PN}-plugin-sshkey \
> +    ${PN}-plugin-updown \
> +    ${PN}-plugin-vici \
> +    ${PN}-plugin-x509 \
> +    ${PN}-plugin-xauth-generic \
> +    ${PN}-plugin-xcbc \
> +    "
>
>  RPROVIDES_${PN} += "${PN}-systemd"
>  RREPLACES_${PN} += "${PN}-systemd"
> --
> 2.12.2
>
> --
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel
>



More information about the Openembedded-devel mailing list