From 782251aa8fe387b2545c8e7e20a1a90c26300883 Mon Sep 17 00:00:00 2001 From: Kai Kang Date: Fri, 28 Jul 2023 14:30:08 +0800 Subject: sssd: 2.7.4 -> 2.9.1 Update sssd from 2.7.4 to 2.9.1. * backport patch to fix interpreter of script sss_analyze * add runtime dependency python3-systemd when systemd is enabled * update FILES Signed-off-by: Kai Kang Signed-off-by: Armin Kuster --- .../files/0001-sssctl-add-error-analyzer.patch | 318 +++++++++++++++++++++ .../recipes-security/sssd/sssd_2.7.4.bb | 157 ---------- .../recipes-security/sssd/sssd_2.9.1.bb | 159 +++++++++++ 3 files changed, 477 insertions(+), 157 deletions(-) create mode 100644 dynamic-layers/networking-layer/recipes-security/sssd/files/0001-sssctl-add-error-analyzer.patch delete mode 100644 dynamic-layers/networking-layer/recipes-security/sssd/sssd_2.7.4.bb create mode 100644 dynamic-layers/networking-layer/recipes-security/sssd/sssd_2.9.1.bb diff --git a/dynamic-layers/networking-layer/recipes-security/sssd/files/0001-sssctl-add-error-analyzer.patch b/dynamic-layers/networking-layer/recipes-security/sssd/files/0001-sssctl-add-error-analyzer.patch new file mode 100644 index 0000000..6880405 --- /dev/null +++ b/dynamic-layers/networking-layer/recipes-security/sssd/files/0001-sssctl-add-error-analyzer.patch @@ -0,0 +1,318 @@ +Backport patch to fix interpreter of sss_analyze. + +Upstream-Status: Backport [https://github.com/SSSD/sssd/commit/ed3726c] + +Signed-off-by: Kai Kang + +From ed3726c37fe07aab788404bfa2f9003db15f4210 Mon Sep 17 00:00:00 2001 +From: roy214 +Date: Tue, 25 Apr 2023 20:01:24 +0530 +Subject: [PATCH] sssctl: add error analyzer +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Also removing unused variable and import. + +Reviewed-by: Justin Stephenson +Reviewed-by: Tomáš Halman +--- + src/tools/analyzer/Makefile.am | 2 + + src/tools/analyzer/modules/error.py | 61 +++++++++++++++++++++++++++ + src/tools/analyzer/modules/request.py | 54 +++++------------------- + src/tools/analyzer/sss_analyze | 2 +- + src/tools/analyzer/sss_analyze.py | 3 ++ + src/tools/analyzer/util.py | 44 +++++++++++++++++++ + 6 files changed, 121 insertions(+), 45 deletions(-) + create mode 100644 src/tools/analyzer/modules/error.py + create mode 100644 src/tools/analyzer/util.py + +diff --git a/src/tools/analyzer/Makefile.am b/src/tools/analyzer/Makefile.am +index b40043d043..7692af8528 100644 +--- a/src/tools/analyzer/Makefile.am ++++ b/src/tools/analyzer/Makefile.am +@@ -13,10 +13,12 @@ dist_pkgpython_DATA = \ + source_reader.py \ + parser.py \ + sss_analyze.py \ ++ util.py \ + $(NULL) + + modulesdir = $(pkgpythondir)/modules + dist_modules_DATA = \ + modules/__init__.py \ + modules/request.py \ ++ modules/error.py \ + $(NULL) +diff --git a/src/tools/analyzer/modules/error.py b/src/tools/analyzer/modules/error.py +new file mode 100644 +index 0000000000..71173670c5 +--- /dev/null ++++ b/src/tools/analyzer/modules/error.py +@@ -0,0 +1,61 @@ ++from sssd import util ++from sssd.parser import SubparsersAction ++from sssd import sss_analyze ++ ++class ErrorAnalyzer: ++ """ ++ An error analyzer module, list if there is any error reported by sssd_be ++ """ ++ module_parser = None ++ print_opts = [] ++ ++ def print_module_help(self, args): ++ """ ++ Print the module parser help output ++ ++ Args: ++ args (Namespace): argparse parsed arguments ++ """ ++ self.module_parser.print_help() ++ ++ def setup_args(self, parser_grp, cli): ++ """ ++ Setup module parser, subcommands, and options ++ ++ Args: ++ parser_grp (argparse.Action): Parser group to nest ++ module and subcommands under ++ """ ++ desc = "Analyze error check module" ++ self.module_parser = parser_grp.add_parser('error', ++ description=desc, ++ help='Error checker') ++ ++ subparser = self.module_parser.add_subparsers(title=None, ++ dest='subparser', ++ action=SubparsersAction, ++ metavar='COMMANDS') ++ ++ subcmd_grp = subparser.add_parser_group('Operation Modes') ++ cli.add_subcommand(subcmd_grp, 'list', 'Print error messages found in backend', ++ self.print_error, self.print_opts) ++ ++ self.module_parser.set_defaults(func=self.print_module_help) ++ ++ return self.module_parser ++ ++ def print_error(self, args): ++ err = 0 ++ utl = util.Utils() ++ source = utl.load(args) ++ component = source.Component.BE ++ source.set_component(component, False) ++ patterns = ['sdap_async_sys_connect request failed', 'terminated by own WATCHDOG', ++ 'ldap_sasl_interactive_bind_s failed', 'Communication with KDC timed out', 'SSSD is offline', 'Backend is offline', ++ 'tsig verify failure', 'ldap_install_tls failed', 's2n exop request failed'] ++ for line in utl.matched_line(source, patterns): ++ err +=1 ++ print(line) ++ if err > 0: ++ print("For possible solutions please refer to https://sssd.io/troubleshooting/errors.html") ++ return +diff --git a/src/tools/analyzer/modules/request.py b/src/tools/analyzer/modules/request.py +index d661dddb84..e4d5f060c7 100644 +--- a/src/tools/analyzer/modules/request.py ++++ b/src/tools/analyzer/modules/request.py +@@ -1,6 +1,6 @@ + import re + import logging +- ++from sssd import util + from sssd.parser import SubparsersAction + from sssd.parser import Option + +@@ -38,7 +38,6 @@ def print_module_help(self, args): + def setup_args(self, parser_grp, cli): + """ + Setup module parser, subcommands, and options +- + Args: + parser_grp (argparse.Action): Parser group to nest + module and subcommands under +@@ -63,42 +62,6 @@ def setup_args(self, parser_grp, cli): + + return self.module_parser + +- def load(self, args): +- """ +- Load the appropriate source reader. +- +- Args: +- args (Namespace): argparse parsed arguments +- +- Returns: +- Instantiated source object +- """ +- if args.source == "journald": +- from sssd.source_journald import Journald +- source = Journald() +- else: +- from sssd.source_files import Files +- source = Files(args.logdir) +- return source +- +- def matched_line(self, source, patterns): +- """ +- Yield lines which match any number of patterns (OR) in +- provided patterns list. +- +- Args: +- source (Reader): source Reader object +- Yields: +- lines matching the provided pattern(s) +- """ +- for line in source: +- for pattern in patterns: +- re_obj = re.compile(pattern) +- if re_obj.search(line): +- if line.startswith(' * '): +- continue +- yield line +- + def get_linked_ids(self, source, pattern, regex): + """ + Retrieve list of associated REQ_TRACE ids. Filter +@@ -114,8 +77,9 @@ def get_linked_ids(self, source, pattern, regex): + Returns: + List of linked ids discovered + """ ++ utl = util.Utils() + linked_ids = [] +- for match in self.matched_line(source, pattern): ++ for match in utl.matched_line(source, pattern): + id_re = re.compile(regex) + match = id_re.search(match) + if match: +@@ -250,7 +214,8 @@ def list_requests(self, args): + Args: + args (Namespace): populated argparse namespace + """ +- source = self.load(args) ++ utl = util.Utils() ++ source = utl.load(args) + component = source.Component.NSS + resp = "nss" + # Log messages matching the following regex patterns contain +@@ -266,7 +231,7 @@ def list_requests(self, args): + if args.verbose: + self.print_formatted_verbose(source) + else: +- for line in self.matched_line(source, patterns): ++ for line in utl.matched_line(source, patterns): + if type(source).__name__ == 'Journald': + print(line) + else: +@@ -279,7 +244,8 @@ def track_request(self, args): + Args: + args (Namespace): populated argparse namespace + """ +- source = self.load(args) ++ utl = util.Utils() ++ source = utl.load(args) + cid = args.cid + resp_results = False + be_results = False +@@ -294,7 +260,7 @@ def track_request(self, args): + logger.info(f"******** Checking {resp} responder for Client ID" + f" {cid} *******") + source.set_component(component, args.child) +- for match in self.matched_line(source, pattern): ++ for match in utl.matched_line(source, pattern): + resp_results = self.consume_line(match, source, args.merge) + + logger.info(f"********* Checking Backend for Client ID {cid} ********") +@@ -307,7 +273,7 @@ def track_request(self, args): + pattern.clear() + [pattern.append(f'\\{id}') for id in be_ids] + +- for match in self.matched_line(source, pattern): ++ for match in utl.matched_line(source, pattern): + be_results = self.consume_line(match, source, args.merge) + + if args.merge: +diff --git a/src/tools/analyzer/sss_analyze b/src/tools/analyzer/sss_analyze +index 3f1beaf38b..6d4b5b30c6 100755 +--- a/src/tools/analyzer/sss_analyze ++++ b/src/tools/analyzer/sss_analyze +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + + from sssd import sss_analyze + +diff --git a/src/tools/analyzer/sss_analyze.py b/src/tools/analyzer/sss_analyze.py +index 18b998f380..dafc84fc03 100644 +--- a/src/tools/analyzer/sss_analyze.py ++++ b/src/tools/analyzer/sss_analyze.py +@@ -1,6 +1,7 @@ + import argparse + + from sssd.modules import request ++from sssd.modules import error + from sssd.parser import SubparsersAction + + +@@ -55,9 +56,11 @@ def load_modules(self, parser, parser_grp): + """ + # Currently only the 'request' module exists + req = request.RequestAnalyzer() ++ err = error.ErrorAnalyzer() + cli = Analyzer() + + req.setup_args(parser_grp, cli) ++ err.setup_args(parser_grp, cli) + + def setup_args(self): + """ +diff --git a/src/tools/analyzer/util.py b/src/tools/analyzer/util.py +new file mode 100644 +index 0000000000..2a8d153a71 +--- /dev/null ++++ b/src/tools/analyzer/util.py +@@ -0,0 +1,44 @@ ++import re ++import logging ++ ++from sssd.source_files import Files ++from sssd.source_journald import Journald ++ ++logger = logging.getLogger() ++ ++ ++class Utils: ++ ++ def load(self, args): ++ """ ++ Load the appropriate source reader. ++ ++ Args: ++ args (Namespace): argparse parsed arguments ++ ++ Returns: ++ Instantiated source object ++ """ ++ if args.source == "journald": ++ source = Journald() ++ else: ++ source = Files(args.logdir) ++ return source ++ ++ def matched_line(self, source, patterns): ++ """ ++ Yield lines which match any number of patterns (OR) in ++ provided patterns list. ++ ++ Args: ++ source (Reader): source Reader object ++ Yields: ++ lines matching the provided pattern(s) ++ """ ++ for line in source: ++ for pattern in patterns: ++ re_obj = re.compile(pattern) ++ if re_obj.search(line): ++ if line.startswith(' * '): ++ continue ++ yield line diff --git a/dynamic-layers/networking-layer/recipes-security/sssd/sssd_2.7.4.bb b/dynamic-layers/networking-layer/recipes-security/sssd/sssd_2.7.4.bb deleted file mode 100644 index 78d29c3..0000000 --- a/dynamic-layers/networking-layer/recipes-security/sssd/sssd_2.7.4.bb +++ /dev/null @@ -1,157 +0,0 @@ -SUMMARY = "system security services daemon" -DESCRIPTION = "SSSD is a system security services daemon" -HOMEPAGE = "https://pagure.io/SSSD/sssd/" -SECTION = "base" -LICENSE = "GPL-3.0-or-later" -LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" - -DEPENDS = "acl attr cyrus-sasl libtdb ding-libs libpam c-ares krb5 autoconf-archive" -DEPENDS:append = " libldb dbus libtalloc libpcre2 glib-2.0 popt e2fsprogs libtevent" -DEPENDS:append = " openldap bind p11-kit jansson softhsm openssl libunistring" - -DEPENDS:append:libc-musl = " musl-nscd" - -# If no crypto has been selected, default to DEPEND on nss, since that's what -# sssd will pick if no active choice is made during configure -DEPENDS += "${@bb.utils.contains('PACKAGECONFIG', 'nss', '', \ - bb.utils.contains('PACKAGECONFIG', 'crypto', '', 'nss', d), d)}" - -SRC_URI = "https://github.com/SSSD/sssd/releases/download/${PV}/sssd-${PV}.tar.gz \ - file://sssd.conf \ - file://volatiles.99_sssd \ - file://no_gen.patch \ - file://fix_gid.patch \ - file://drop_ntpdate_chk.patch \ - file://fix-ldblibdir.patch \ - file://musl_fixup.patch \ - " - -SRC_URI[sha256sum] = "10ef90c63fdbfda905145077679035bd5ad16b24daad13160de8d0ff82ea9950" - -UPSTREAM_CHECK_URI = "https://github.com/SSSD/${BPN}/releases" - -inherit autotools pkgconfig gettext python3-dir features_check systemd - -REQUIRED_DISTRO_FEATURES = "pam" - -SSSD_UID ?= "root" -SSSD_GID ?= "root" - -CACHED_CONFIGUREVARS = "ac_cv_member_struct_ldap_conncb_lc_arg=no \ - ac_cv_prog_HAVE_PYTHON3=${PYTHON_DIR} \ - " - -PACKAGECONFIG ?="nss autofs sudo infopipe" -PACKAGECONFIG += "${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux', '', d)}" -PACKAGECONFIG += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}" - -PACKAGECONFIG[autofs] = "--with-autofs, --with-autofs=no" -PACKAGECONFIG[crypto] = ", , libcrypto" -PACKAGECONFIG[curl] = "--with-kcm, --without-kcm, curl jansson" -PACKAGECONFIG[infopipe] = "--with-infopipe, --with-infopipe=no, " -PACKAGECONFIG[manpages] = "--with-manpages, --with-manpages=no, libxslt-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native" -PACKAGECONFIG[nl] = "--with-libnl, --with-libnl=no, libnl" -PACKAGECONFIG[nss] = ", ,nss," -PACKAGECONFIG[oidc_child] = "--with-oidc-child, --without-oidc-child" -PACKAGECONFIG[python3] = "--with-python3-bindings, --without-python3-bindings" -PACKAGECONFIG[samba] = "--with-samba, --with-samba=no, samba" -PACKAGECONFIG[selinux] = "--with-selinux, --with-selinux=no --with-semanage=no, libselinux" -PACKAGECONFIG[ssh] = "--with-ssh, --with-ssh=no, " -PACKAGECONFIG[sudo] = "--with-sudo, --with-sudo=no, " -PACKAGECONFIG[systemd] = "--with-initscript=systemd,--with-initscript=sysv" - -EXTRA_OECONF += " \ - --disable-cifs-idmap-plugin \ - --without-nfsv4-idmapd-plugin \ - --without-ipa-getkeytab \ - --without-python2-bindings \ - --enable-pammoddir=${base_libdir}/security \ - --without-python2-bindings \ - --with-xml-catalog-path=${STAGING_ETCDIR_NATIVE}/xml/catalog \ - --with-pid-path=/run \ -" - -do_configure:prepend() { - mkdir -p ${AUTOTOOLS_AUXDIR}/build - cp ${STAGING_DATADIR_NATIVE}/gettext/config.rpath ${AUTOTOOLS_AUXDIR}/build/ - - # additional_libdir defaults to /usr/lib so replace with staging_libdir globally - sed -i -e "s#\$additional_libdir#\${STAGING_LIBDIR}#" ${S}/src/build_macros.m4 -} - -do_compile:prepend () { - echo '#define NSUPDATE_PATH "${bindir}"' >> ${B}/config.h -} -do_install () { - oe_runmake install DESTDIR="${D}" - rmdir --ignore-fail-on-non-empty "${D}/${bindir}" - - install -d ${D}/${sysconfdir}/${BPN} - install -d ${D}/${PYTHON_SITEPACKAGES_DIR} - mv ${D}/${BPN} ${D}/${PYTHON_SITEPACKAGES_DIR} - - install -m 600 ${WORKDIR}/${BPN}.conf ${D}/${sysconfdir}/${BPN} - - # /var/log/sssd needs to be created in runtime. Use rmdir to catch if - # upstream stops creating /var/log/sssd, or adds something else in - # /var/log. - rmdir ${D}${localstatedir}/log/${BPN} ${D}${localstatedir}/log - rmdir --ignore-fail-on-non-empty ${D}${localstatedir} - - if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then - install -d ${D}${sysconfdir}/tmpfiles.d - echo "d /var/log/sssd 0750 - - - -" > ${D}${sysconfdir}/tmpfiles.d/sss.conf - fi - - if [ "${@bb.utils.filter('DISTRO_FEATURES', 'sysvinit', d)}" ]; then - install -d ${D}${sysconfdir}/default/volatiles - echo "d ${SSSD_UID}:${SSSD_GID} 0755 ${localstatedir}/log/${BPN} none" > ${D}${sysconfdir}/default/volatiles/99_${BPN} - fi - - # Remove /run as it is created on startup - rm -rf ${D}/run - -# rm -fr ${D}/sssd - rm -f ${D}${systemd_system_unitdir}/sssd-secrets.* -} - -pkg_postinst_ontarget:${PN} () { -if [ -e /etc/init.d/populate-volatile.sh ] ; then - ${sysconfdir}/init.d/populate-volatile.sh update -fi - chown ${SSSD_UID}:${SSSD_GID} ${sysconfdir}/${BPN}/${BPN}.conf -} - -CONFFILES:${PN} = "${sysconfdir}/${BPN}/${BPN}.conf" - -INITSCRIPT_NAME = "sssd" -INITSCRIPT_PARAMS = "start 02 5 3 2 . stop 20 0 1 6 ." -SYSTEMD_SERVICE:${PN} = " \ - ${@bb.utils.contains('PACKAGECONFIG', 'autofs', 'sssd-autofs.service sssd-autofs.socket', '', d)} \ - ${@bb.utils.contains('PACKAGECONFIG', 'curl', 'sssd-kcm.service sssd-kcm.socket', '', d)} \ - ${@bb.utils.contains('PACKAGECONFIG', 'infopipe', 'sssd-ifp.service ', '', d)} \ - ${@bb.utils.contains('PACKAGECONFIG', 'ssh', 'sssd-ssh.service sssd-ssh.socket', '', d)} \ - ${@bb.utils.contains('PACKAGECONFIG', 'sudo', 'sssd-sudo.service sssd-sudo.socket', '', d)} \ - sssd-nss.service \ - sssd-nss.socket \ - sssd-pam-priv.socket \ - sssd-pam.service \ - sssd-pam.socket \ - sssd.service \ -" -SYSTEMD_AUTO_ENABLE = "disable" - -PACKAGES =+ "libsss-sudo" -ALLOW_EMPTY:libsss-sudo = "1" - -FILES:${PN} += "${base_libdir}/security/pam_sss*.so \ - ${nonarch_libdir}/tmpfiles.d \ - ${datadir}/dbus-1/system-services/*.service \ - ${libdir}/krb5/* \ - ${libdir}/ldb/* \ - ${PYTHON_SITEPACKAGES_DIR}/sssd \ - " - -FILES:libsss-sudo = "${libdir}/libsss_sudo.so" - -RDEPENDS:${PN} = "bind bind-utils dbus libldb libpam libsss-sudo" diff --git a/dynamic-layers/networking-layer/recipes-security/sssd/sssd_2.9.1.bb b/dynamic-layers/networking-layer/recipes-security/sssd/sssd_2.9.1.bb new file mode 100644 index 0000000..9fa9d3b --- /dev/null +++ b/dynamic-layers/networking-layer/recipes-security/sssd/sssd_2.9.1.bb @@ -0,0 +1,159 @@ +SUMMARY = "system security services daemon" +DESCRIPTION = "SSSD is a system security services daemon" +HOMEPAGE = "https://pagure.io/SSSD/sssd/" +SECTION = "base" +LICENSE = "GPL-3.0-or-later" +LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" + +DEPENDS = "acl attr cyrus-sasl libtdb ding-libs libpam c-ares krb5 autoconf-archive" +DEPENDS:append = " libldb dbus libtalloc libpcre2 glib-2.0 popt e2fsprogs libtevent" +DEPENDS:append = " openldap bind p11-kit jansson softhsm openssl libunistring" + +DEPENDS:append:libc-musl = " musl-nscd" + +# If no crypto has been selected, default to DEPEND on nss, since that's what +# sssd will pick if no active choice is made during configure +DEPENDS += "${@bb.utils.contains('PACKAGECONFIG', 'nss', '', \ + bb.utils.contains('PACKAGECONFIG', 'crypto', '', 'nss', d), d)}" + +SRC_URI = "https://github.com/SSSD/sssd/releases/download/${PV}/${BP}.tar.gz \ + file://sssd.conf \ + file://volatiles.99_sssd \ + file://no_gen.patch \ + file://fix_gid.patch \ + file://drop_ntpdate_chk.patch \ + file://fix-ldblibdir.patch \ + file://musl_fixup.patch \ + file://0001-sssctl-add-error-analyzer.patch \ + " + +SRC_URI[sha256sum] = "97703d38159994a869aad1c852de4582c76f189cf044f51e15ba26e1e4b75298" + +UPSTREAM_CHECK_URI = "https://github.com/SSSD/${BPN}/releases" + +inherit autotools pkgconfig gettext python3-dir features_check systemd + +REQUIRED_DISTRO_FEATURES = "pam" + +SSSD_UID ?= "root" +SSSD_GID ?= "root" + +CACHED_CONFIGUREVARS = "ac_cv_member_struct_ldap_conncb_lc_arg=no \ + ac_cv_prog_HAVE_PYTHON3=${PYTHON_DIR} \ + " + +PACKAGECONFIG ?="nss autofs sudo infopipe" +PACKAGECONFIG += "${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux', '', d)}" +PACKAGECONFIG += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}" + +PACKAGECONFIG[autofs] = "--with-autofs, --with-autofs=no" +PACKAGECONFIG[crypto] = ", , libcrypto" +PACKAGECONFIG[curl] = "--with-kcm, --without-kcm, curl jansson" +PACKAGECONFIG[infopipe] = "--with-infopipe, --with-infopipe=no, " +PACKAGECONFIG[manpages] = "--with-manpages, --with-manpages=no, libxslt-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native" +PACKAGECONFIG[nl] = "--with-libnl, --with-libnl=no, libnl" +PACKAGECONFIG[nss] = ", ,nss," +PACKAGECONFIG[oidc_child] = "--with-oidc-child, --without-oidc-child" +PACKAGECONFIG[python3] = "--with-python3-bindings, --without-python3-bindings" +PACKAGECONFIG[samba] = "--with-samba, --with-samba=no, samba" +PACKAGECONFIG[selinux] = "--with-selinux, --with-selinux=no --with-semanage=no, libselinux" +PACKAGECONFIG[ssh] = "--with-ssh, --with-ssh=no, " +PACKAGECONFIG[sudo] = "--with-sudo, --with-sudo=no, " +PACKAGECONFIG[systemd] = "--with-initscript=systemd,--with-initscript=sysv,,python3-systemd" + +EXTRA_OECONF += " \ + --disable-cifs-idmap-plugin \ + --without-nfsv4-idmapd-plugin \ + --without-ipa-getkeytab \ + --without-python2-bindings \ + --enable-pammoddir=${base_libdir}/security \ + --without-python2-bindings \ + --with-xml-catalog-path=${STAGING_ETCDIR_NATIVE}/xml/catalog \ + --with-pid-path=/run \ +" + +do_configure:prepend() { + mkdir -p ${AUTOTOOLS_AUXDIR}/build + cp ${STAGING_DATADIR_NATIVE}/gettext/config.rpath ${AUTOTOOLS_AUXDIR}/build/ + + # additional_libdir defaults to /usr/lib so replace with staging_libdir globally + sed -i -e "s#\$additional_libdir#\${STAGING_LIBDIR}#" ${S}/src/build_macros.m4 +} + +do_compile:prepend () { + echo '#define NSUPDATE_PATH "${bindir}"' >> ${B}/config.h +} +do_install () { + oe_runmake install DESTDIR="${D}" + rmdir --ignore-fail-on-non-empty "${D}/${bindir}" + + install -d ${D}/${sysconfdir}/${BPN} + install -d ${D}/${PYTHON_SITEPACKAGES_DIR} + mv ${D}/${BPN} ${D}/${PYTHON_SITEPACKAGES_DIR} + + install -m 600 ${WORKDIR}/${BPN}.conf ${D}/${sysconfdir}/${BPN} + + # /var/log/sssd needs to be created in runtime. Use rmdir to catch if + # upstream stops creating /var/log/sssd, or adds something else in + # /var/log. + rmdir ${D}${localstatedir}/log/${BPN} ${D}${localstatedir}/log + rmdir --ignore-fail-on-non-empty ${D}${localstatedir} + + if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then + install -d ${D}${sysconfdir}/tmpfiles.d + echo "d /var/log/sssd 0750 - - - -" > ${D}${sysconfdir}/tmpfiles.d/sss.conf + fi + + if [ "${@bb.utils.filter('DISTRO_FEATURES', 'sysvinit', d)}" ]; then + install -d ${D}${sysconfdir}/default/volatiles + echo "d ${SSSD_UID}:${SSSD_GID} 0755 ${localstatedir}/log/${BPN} none" > ${D}${sysconfdir}/default/volatiles/99_${BPN} + fi + + # Remove /run as it is created on startup + rm -rf ${D}/run + +# rm -fr ${D}/sssd + rm -f ${D}${systemd_system_unitdir}/sssd-secrets.* +} + +pkg_postinst_ontarget:${PN} () { +if [ -e /etc/init.d/populate-volatile.sh ] ; then + ${sysconfdir}/init.d/populate-volatile.sh update +fi + chown ${SSSD_UID}:${SSSD_GID} ${sysconfdir}/${BPN}/${BPN}.conf +} + +CONFFILES:${PN} = "${sysconfdir}/${BPN}/${BPN}.conf" + +INITSCRIPT_NAME = "sssd" +INITSCRIPT_PARAMS = "start 02 5 3 2 . stop 20 0 1 6 ." +SYSTEMD_SERVICE:${PN} = " \ + ${@bb.utils.contains('PACKAGECONFIG', 'autofs', 'sssd-autofs.service sssd-autofs.socket', '', d)} \ + ${@bb.utils.contains('PACKAGECONFIG', 'curl', 'sssd-kcm.service sssd-kcm.socket', '', d)} \ + ${@bb.utils.contains('PACKAGECONFIG', 'infopipe', 'sssd-ifp.service ', '', d)} \ + ${@bb.utils.contains('PACKAGECONFIG', 'ssh', 'sssd-ssh.service sssd-ssh.socket', '', d)} \ + ${@bb.utils.contains('PACKAGECONFIG', 'sudo', 'sssd-sudo.service sssd-sudo.socket', '', d)} \ + sssd-nss.service \ + sssd-nss.socket \ + sssd-pam-priv.socket \ + sssd-pam.service \ + sssd-pam.socket \ + sssd.service \ +" +SYSTEMD_AUTO_ENABLE = "disable" + +PACKAGES =+ "libsss-sudo" +ALLOW_EMPTY:libsss-sudo = "1" + +FILES:${PN} += "${base_libdir}/security/pam_sss*.so \ + ${nonarch_libdir}/tmpfiles.d \ + ${datadir}/dbus-1/system.d/*.conf \ + ${datadir}/dbus-1/system-services/*.service \ + ${libdir}/krb5/* \ + ${libdir}/ldb/* \ + ${PYTHON_SITEPACKAGES_DIR}/sssd \ + " + +FILES:libsss-sudo = "${libdir}/libsss_sudo.so" + +RDEPENDS:${PN} = "bind bind-utils dbus libldb libpam libsss-sudo" -- cgit v1.2.3-54-g00ecf