# # spec file for package apparmor # # Copyright (c) 2024 SUSE LLC # Copyright (c) 2011-2024 Christian Boltz # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via https://bugs.opensuse.org/ # %if 0%{?suse_version} >= 1550 %define sbindir %_sbindir %define apparmor_bin_prefix /usr/lib/apparmor %else %define sbindir /sbin %define apparmor_bin_prefix /lib/apparmor %endif %if 0%{?suse_version} <= 1500 # _pamdir isn't defined in 15.x %define _pamdir /%{_lib}/security %endif # warning - confusing syntax ahead ;-) # bcond_with means "disable" # bcond_without means "enable" %bcond_with tomcat %bcond_without pam %bcond_without apache %bcond_without perl %bcond_without python3 %bcond_without ruby %if 0%{?suse_version} <= 1550 # enable precompiled profile cache on <= 15.x %bcond_without precompiled_cache %else # don't build precompiled profile cache on Tumbleweed as long as it's purely validated based on timestamps (boo#1205659) %bcond_with precompiled_cache %endif %define CATALINA_HOME /usr/share/tomcat6 #define APPARMOR_DOC_DIR /usr/share/doc/packages/apparmor-docs/ #define JNI_SO libJNIChangeHat.so %define JAR_FILE changeHatValve.jar Name: apparmor Version: 3.1.7 Release: 0 Summary: AppArmor userlevel parser utility License: GPL-2.0-or-later Group: Productivity/Networking/Security URL: https://launchpad.net/apparmor Source0: apparmor-%{version}.tar.gz Source1: apparmor-%{version}.tar.gz.asc Source2: %{name}.keyring Source5: update-trans.sh Source6: baselibs.conf Source7: apparmor-rpmlintrc # enable caching of profiles (= massive performance speedup when loading profiles) # and set cache-loc in parser.conf and apparmor.service accordingly Patch1: apparmor-enable-profile-cache.diff # include autogenerated profile sniplet for samba shares (bnc#688040) - include rule upstreamed in 3.0.5 (MR 838), now "just" creates the local/ sniplet # (technically only needed in Leap 15.x, the samba script in Tumbleweed also works if the local/ sniplet doesn't exist - but dropping the local/ sniplet will move existing autogenerated sniplets to *.rpmsave) Patch2: apparmor-samba-include-permissions-for-shares.diff # Ruby 2.0 mkmf prefixes everything with $(DESTDIR), bnc#822277, kkaempf@suse.de Patch3: ruby-2_0-mkmf-destdir.patch # bug 906858 - confine lessopen.sh (submitted upstream 2014-12-21) Patch4: apparmor-lessopen-profile.patch # workaround for boo#1119937 / lp#1784499 - allow network access for reading files on NFS (proper solution needs kernel fix) # fixed in Kernel 6.0 and later (see comment in https://bugs.launchpad.net/bugs/1784499) Patch5: apparmor-lessopen-nfs-workaround.diff # make include in apache extra profile optional to make openQA happy (boo#1178527) Patch6: apache-extra-profile-include-if-exists.diff # add path for precompiled cache (only done/applied if precompiled_cache is enabled) Patch7: apparmor-enable-precompiled-cache.diff # allow dovecot-auth to execute unix_chkpwd, and add a profile for unix_chkpwd. This is needed for PAM 1.6 (boo#1219139) Patch9: dovecot-unix_chkpwd.diff # abstractions/openssl: allow version specific engdef & engines paths (boo#1219571) Patch10: apparmor-abstractions-openssl-allow-version-specific-en.patch PreReq: sed BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: bison BuildRequires: dejagnu BuildRequires: flex BuildRequires: gcc-c++ BuildRequires: iproute2 BuildRequires: pcre-devel BuildRequires: pkg-config BuildRequires: python3 BuildRequires: perl(Locale::gettext) BuildRequires: swig %if %{with python3} BuildRequires: python-rpm-macros BuildRequires: python3-devel BuildRequires: python3-notify2 BuildRequires: python3-psutil BuildRequires: python3-setuptools %endif %if %{with ruby} BuildRequires: ruby-devel %endif %if %{with apache} BuildRequires: apache-rpm-macros BuildRequires: apache2-devel %endif %if %{with tomcat} BuildRequires: ant BuildRequires: java-devel >= 1.6.0 BuildRequires: tomcat6 %endif %package parser Summary: AppArmor userlevel parser utility License: GPL-2.0-or-later Group: Productivity/Networking/Security Conflicts: apparmor-utils < 3.0 Obsoletes: libimnxcert < 2.9 Obsoletes: subdomain-leaf-cert < 2.9 Obsoletes: subdomain-parser < 2.9 Obsoletes: subdomain-parser-common < 2.9 Obsoletes: subdomain-parser-demo < 2.9 Obsoletes: subdomain_parser < 2.9 Provides: libimnxcert = %{version} Provides: subdomain-leaf-cert = %{version} Provides: subdomain-parser = %{version} Provides: subdomain-parser-common = %{version} Provides: subdomain-parser-demo = %{version} Provides: subdomain_parser = %{version} Provides: apparmor-parser(CAP_SYSLOG) BuildRequires: systemd-rpm-macros %{?systemd_ordering} %description parser The AppArmor Parser is a userlevel program that is used to load in program profiles to the AppArmor Security kernel module. This package is part of a suite of tools that used to be named SubDomain. %package docs Summary: AppArmor Documentation package License: GPL-2.0-or-later Group: Documentation/Other BuildArch: noarch %description docs This package contains documentation for AppArmor. This package is part of a suite of tools that used to be named SubDomain. %if %{with apache} %package -n apache2-mod_apparmor Summary: AppArmor module for apache2 License: GPL-2.0-or-later Group: Productivity/Security %description -n apache2-mod_apparmor apache2-modapparmor adds support to apache2 to provide AppArmor confinement to individual cgi scripts handled by apache modules like mod_php and mod_perl. This package is part of a suite of tools that used to be named SubDomain. The documentation is in the apparmor-admin_en package. %endif %if %{with perl} %package -n perl-apparmor Summary: Perl interface for libapparmor functions License: GPL-2.0-only AND LGPL-2.1-or-later Group: Development/Libraries/Perl Requires: libapparmor1 = %{version} Requires: perl = %{perl_version} Provides: perl-libapparmor = %{version} Obsoletes: perl-libapparmor < 2.5 %description -n perl-apparmor This package provides the perl interface to AppArmor. It is used for perl applications interfacing with AppArmor. %endif %if %{with python3} %package -n python3-apparmor Summary: Python 3 interface for libapparmor functions License: GPL-2.0-only AND LGPL-2.1-or-later Group: Development/Libraries/Python Requires: libapparmor1 = %{version} Requires: python3 Requires: python(abi) = %{py3_ver} %description -n python3-apparmor This package provides the python interface to AppArmor. It is used for python applications interfacing with AppArmor. %endif %if %{with ruby} %package -n ruby-apparmor Summary: Ruby interface for libapparmor functions License: GPL-2.0-only AND LGPL-2.1-or-later Group: Development/Languages/Ruby Requires: libapparmor1 = %{version} Requires: ruby = %(rpm -q --qf '%%{version}' ruby) Provides: ruby-libapparmor = %{version} Obsoletes: ruby-libapparmor < 2.5 %description -n ruby-apparmor This package provides the ruby interface to AppArmor. It is used for ruby applications interfacing with AppArmor. %endif %package abstractions Summary: AppArmor abstractions and directory structure License: GPL-2.0-only AND LGPL-2.1-or-later Group: Productivity/Security Requires: apparmor-parser(CAP_SYSLOG) BuildArch: noarch %description abstractions AppArmor abstractions (common parts used in various profiles) and the /etc/apparmor.d/ directory structure. AppArmor is a file and network mandatory access control mechanism. AppArmor confines processes to the resources allowed by the systems administrator and can constrain the scope of potential security vulnerabilities. This package is part of a suite of tools that used to be named SubDomain. %package profiles Summary: AppArmor profiles that are loaded into the apparmor kernel module License: GPL-2.0-only AND LGPL-2.1-or-later Group: Productivity/Security Requires: apparmor-abstractions >= %{version} Requires: apparmor-parser(CAP_SYSLOG) Obsoletes: subdomain-profiles < 2.9 Provides: subdomain-profiles = %{version} BuildArch: noarch %description profiles Base profiles. AppArmor is a file and network mandatory access control mechanism. AppArmor confines processes to the resources allowed by the systems administrator and can constrain the scope of potential security vulnerabilities. This package is part of a suite of tools that used to be named SubDomain. %package utils Summary: AppArmor User-Level Utilities Useful for Creating AppArmor Profiles License: GPL-2.0-only AND LGPL-2.1-or-later Group: Productivity/Security Requires: apparmor-parser Requires: libapparmor1 = %{version} Requires: python3-apparmor = %{version} Requires: python3-base Requires: python3-notify2 Requires: python3-psutil # aa-unconfined needs ss Recommends: iproute2 BuildArch: noarch %description utils This package provides the aa-logprof, aa-genprof, aa-autodep, aa-enforce, and aa-complain tools to assist with profile authoring. Besides it provides the aa-unconfined server information tool. It is part of a suite of tools that used to be named SubDomain. %if %{with tomcat} %package -n tomcat_apparmor Summary: Tomcat 6 plugin for AppArmor change_hat License: GPL-2.0-only AND LGPL-2.1-or-later Group: System/Libraries Requires: libapparmor1 = %{version} Requires: tomcat6 %description -n tomcat_apparmor tomcat_apparmor - is a plugin for Apache Tomcat version 6 that provides support for AppArmor change_hat for creating AppArmor containers that are bound to discrete elements of processing within the Tomcat servlet container. The AppArmor containers, or "hats", can be created for individual URL processing or per servlet. %endif %if %{with pam} %package -n pam_apparmor Summary: PAM module for AppArmor change_hat License: GPL-2.0-only AND LGPL-2.1-or-later Group: Productivity/Security BuildRequires: pam-devel PreReq: pam PreReq: pam-config Requires: pam Requires: pam-config %description -n pam_apparmor The pam_apparmor module provides the means for any PAM applications that call pam_open_session() to automatically perform an AppArmor change_hat operation in order to switch to a user-specific security policy. %endif %description The AppArmor Parser is a userlevel program that is used to load in program profiles to the AppArmor Security kernel module. This package is part of a suite of tools that used to be named SubDomain. %lang_package -n apparmor-utils %lang_package -n apparmor-parser %prep %setup -q # very loose profile that doesn't even match the apache2 binary path in openSUSE. Move it away instead of confusing people (boo#872984) mv -v profiles/apparmor.d/usr.lib.apache2.mpm-prefork.apache2 profiles/apparmor/profiles/extras/ %patch1 %patch2 %patch3 -p1 %patch4 %patch5 %patch6 %if %{with precompiled_cache} %patch7 %endif %patch9 -p1 %patch10 -p1 %build export SUSE_ASNEEDED=0 # libapparmor: ( cd ./libraries/libapparmor %configure \ %if %{with perl} --with-perl \ %endif %if %{with python3} --with-python \ %else --without-python \ %endif %if %{with ruby} --with-ruby \ %else --without-ruby \ %endif make ) # Utilities: make -C utils # binutils make -C binutils # parser: make -C parser V=1 # Apache mod_apparmor: %if %{with apache} make -C changehat/mod_apparmor %endif # PAM AppArmor: %if %{with pam} make -C changehat/pam_apparmor %endif # Profiles: make -C profiles %if %{with tomcat} make -C changehat/tomcat_apparmor/tomcat_5_5 CATALINA_HOME=%{CATALINA_HOME} %endif # pre-build profile cache # note that -L only works with an absolute path, therefore prefix it with $(pwd) %if %{with precompiled_cache} parser/apparmor_parser --config-file $(pwd)/parser/parser.conf --write-cache -QT -L $(pwd)/profiles/cache -I profiles/apparmor.d/ profiles/apparmor.d/ %endif %check make check -C libraries/libapparmor make check -C parser make check -C binutils # profiles make check fails for the utils (they expect /sbin/apparmor_parser to exist), therefore only do parser-based check make -C profiles check-parser # test for a few files that should exist in the cache %if %{with precompiled_cache} test -f profiles/cache/*/bin.ping test -f profiles/cache/*/.features %endif # run checks in utils except linting -- https://gitlab.com/apparmor/apparmor/-/issues/121 make check -o check_lint -C utils %install # libapparmor: swig bindings only, libapparmor is packaged via libapparmor.spec %makeinstall -C libraries/libapparmor/swig # utilities %makeinstall -C utils test ! -x %{buildroot}/%{_bindir}/aa-easyprof && chmod +x %{buildroot}/%{_bindir}/aa-easyprof # https://bugs.launchpad.net/apparmor/+bug/1366568 mkdir -p %{buildroot}%{_localstatedir}/log/apparmor # binutils %makeinstall -C binutils ( cd %{buildroot}/%{_sbindir} && ln -s %{_bindir}/aa-exec exec ) %makeinstall -C profiles %if %{with precompiled_cache} install -d -m 755 %{buildroot}/usr/share/apparmor/cache echo -e "\n\n *** WARNING: precompiling cache is known to fail under 'osc build' - use 'osc build --vm-type kvm' instead or skip building the precompiled cache with 'osc build --without precompiled_cache' ***\n\n" # ensure cache files are newer than (text) profiles by sleeping a few seconds, and using cp -r which updates the timestamps sleep 2 cp -r profiles/cache/* %{buildroot}/usr/share/apparmor/cache test -f %{buildroot}/usr/share/apparmor/cache/*/.features test -f %{buildroot}/usr/share/apparmor/cache/*/bin.ping %endif %makeinstall SBINDIR="%{buildroot}%{sbindir}" APPARMOR_BIN_PREFIX="%{buildroot}%{apparmor_bin_prefix}" -C parser # default cache dir (up to 2.12) is /etc/apparmor.d/cache - not the best location. # Use /var/lib/apparmor/cache and make /etc/apparmor.d/cache a symlink to it mkdir -p %{buildroot}%{_localstatedir}/lib/apparmor/cache ( cd %{buildroot}/%{_sysconfdir}/apparmor.d/ && ln -s ../../%{_localstatedir}/lib/apparmor/cache cache ) # default cache dir (starting with 2.13) is /etc/apparmor.d/cache.d - also not the best location # Use /var/cache/apparmor and make /etc/apparmor.d/cache.d a symlink to it mkdir -p %{buildroot}%{_localstatedir}/cache/apparmor ( cd %{buildroot}/%{_sysconfdir}/apparmor.d/ && ln -s ../../%{_localstatedir}/cache/apparmor cache.d ) %if %{with apache} %makeinstall -C changehat/mod_apparmor %endif %if %{with pam} %makeinstall -C changehat/pam_apparmor SECDIR=%{buildroot}%{_pamdir} %endif %if %{with tomcat} mkdir -p %{buildroot}/%{CATALINA_HOME} %makeinstall -C changehat/tomcat_apparmor/tomcat_5_5 CATALINA_HOME=%{buildroot}/%{CATALINA_HOME} %endif find %{buildroot} -name .packlist -exec rm -vf {} \; find %{buildroot} -name perllocal.pod -exec rm -vf {} \; # Re-create the links to the old names, but only for tools and manpages that had it for historic reasons[tm]. # Tools and manpages added in >= 2.9 won't get symlinks without aa- prefix for file in %{buildroot}%{_prefix}/{sbin,share/man/man[0-9]}/aa-*; do d=$(dirname $file) f=$(basename $file) case "${f#aa-}" in audit | autodep | complain | decode | disable | enforce | exec | genprof | logprof | notify | status | unconfined | \ audit.8* | autodep.8* | complain.8* | disable.8* | easyprof.8* | enforce.8* | exec.1* | genprof.8* | logprof.8* | notify.8 | status.8 | unconfined.8* ) if [ "${f#aa-}" != "$f" ]; then ln -s $f $d/${f#aa-} fi ;; esac done mv -f %{buildroot}%{_mandir}/man8/{status.8,apparmor_status.8} mv -f %{buildroot}%{_mandir}/man8/{notify.8,apparmor_notify.8} rm -f %{buildroot}%{_mandir}/man8/decode.8 for pkg in apparmor-utils apparmor-parser aa-binutils; do %find_lang $pkg done # remove *.la files rm -fv %{buildroot}%{_libdir}/libapparmor.la %files docs %defattr(-,root,root) %doc parser/*.[1-9].html %doc utils/vim/apparmor.vim.5.html %doc common/apparmor.css %doc parser/techdoc.pdf # apparmor.vim is included in the vim package. Ideally it should be in a -devel package, but that's overmuch for one file %dir %{_datadir}/apparmor %{_datadir}/apparmor/apparmor.vim %files parser %defattr(-,root,root) %license parser/COPYING.GPL %doc parser/README %{sbindir}/apparmor_parser %{_bindir}/aa-enabled %{_bindir}/aa-exec %{_bindir}/aa-features-abi %{_sbindir}/aa-status %{_sbindir}/apparmor_status %{_sbindir}/status %{_sbindir}/aa-teardown %{_sbindir}/exec %dir %attr(-, root, root) %{_sysconfdir}/apparmor %dir %{_sysconfdir}/apparmor.d %{_sysconfdir}/apparmor.d/cache %{_sysconfdir}/apparmor.d/cache.d %{sbindir}/rcapparmor %{_unitdir}/apparmor.service %config(noreplace) %{_sysconfdir}/apparmor/parser.conf %{_localstatedir}/lib/apparmor %{_localstatedir}/cache/apparmor %dir %attr(-, root, root) %{apparmor_bin_prefix} %{apparmor_bin_prefix}/rc.apparmor.functions %{apparmor_bin_prefix}/apparmor.systemd %{apparmor_bin_prefix}/profile-load %doc %{_mandir}/man1/aa-enabled.1.gz %doc %{_mandir}/man1/aa-exec.1.gz %doc %{_mandir}/man1/aa-features-abi.1.gz %doc %{_mandir}/man1/exec.1.gz %doc %{_mandir}/man5/apparmor.d.5.gz %doc %{_mandir}/man5/apparmor.vim.5.gz %doc %{_mandir}/man7/apparmor.7.gz %doc %{_mandir}/man7/apparmor_xattrs.7.gz %doc %{_mandir}/man8/aa-status.8.gz %doc %{_mandir}/man8/aa-teardown.8.gz %doc %{_mandir}/man8/apparmor_parser.8.gz %doc %{_mandir}/man8/apparmor_status.8.gz %pre parser %service_add_pre apparmor.service %files parser-lang -f apparmor-parser.lang -f aa-binutils.lang %defattr(-,root,root) %files abstractions %defattr(644,root,root,755) %dir %{_sysconfdir}/apparmor.d/ %dir %{_sysconfdir}/apparmor.d/abi %config(noreplace) %{_sysconfdir}/apparmor.d/abi/3.0 %config(noreplace) %{_sysconfdir}/apparmor.d/abi/kernel-5.4-outoftree-network %config(noreplace) %{_sysconfdir}/apparmor.d/abi/kernel-5.4-vanilla %dir %{_sysconfdir}/apparmor.d/abstractions %config(noreplace) %{_sysconfdir}/apparmor.d/abstractions/* %dir %{_sysconfdir}/apparmor.d/disable %dir %{_sysconfdir}/apparmor.d/local %dir %{_sysconfdir}/apparmor.d/tunables %config(noreplace) %{_sysconfdir}/apparmor.d/tunables/* %files profiles %defattr(644,root,root,755) %dir %{_sysconfdir}/apparmor.d/apache2.d %config(noreplace) %{_sysconfdir}/apparmor.d/apache2.d/phpsysinfo %config(noreplace) %{_sysconfdir}/apparmor.d/bin.* %config(noreplace) %{_sysconfdir}/apparmor.d/sbin.* %config(noreplace) %{_sysconfdir}/apparmor.d/usr.* %config(noreplace) %{_sysconfdir}/apparmor.d/lsb_release %config(noreplace) %{_sysconfdir}/apparmor.d/nvidia_modprobe %config(noreplace) %{_sysconfdir}/apparmor.d/php-fpm %config(noreplace) %{_sysconfdir}/apparmor.d/samba-bgqd %config(noreplace) %{_sysconfdir}/apparmor.d/samba-dcerpcd %config(noreplace) %{_sysconfdir}/apparmor.d/samba-rpcd %config(noreplace) %{_sysconfdir}/apparmor.d/samba-rpcd-* %config(noreplace) %{_sysconfdir}/apparmor.d/unix-chkpwd %config(noreplace) %{_sysconfdir}/apparmor.d/zgrep %config(noreplace) %{_sysconfdir}/apparmor.d/local/* %dir /usr/share/apparmor/ %if %{with precompiled_cache} /usr/share/apparmor/cache/ %endif /usr/share/apparmor/extra-profiles/ %files utils %defattr(-,root,root) %dir %{_sysconfdir}/apparmor %config(noreplace) %{_sysconfdir}/apparmor/easyprof.conf %config(noreplace) %{_sysconfdir}/apparmor/logprof.conf %config(noreplace) %{_sysconfdir}/apparmor/notify.conf %config(noreplace) %{_sysconfdir}/apparmor/severity.db %{_sbindir}/aa-audit %{_sbindir}/aa-autodep %{_sbindir}/aa-cleanprof %{_sbindir}/aa-complain %{_sbindir}/aa-decode %{_sbindir}/aa-disable %{_sbindir}/aa-enforce %{_sbindir}/aa-genprof %{_sbindir}/aa-logprof %{_sbindir}/aa-mergeprof %{_sbindir}/aa-notify %{_sbindir}/aa-remove-unknown %{_sbindir}/aa-unconfined %{_sbindir}/audit %{_sbindir}/autodep %{_sbindir}/complain %{_sbindir}/decode %{_sbindir}/disable %{_sbindir}/enforce %{_sbindir}/genprof %{_sbindir}/logprof %{_sbindir}/notify %{_sbindir}/unconfined %{_bindir}/aa-easyprof %dir %{_datadir}/apparmor %{_datadir}/apparmor/easyprof/ %dir %{_localstatedir}/log/apparmor %doc %{_mandir}/man5/logprof.conf.5.gz %doc %{_mandir}/man8/apparmor_notify.8.gz %doc %{_mandir}/man8/aa-audit.8.gz %doc %{_mandir}/man8/aa-autodep.8.gz %doc %{_mandir}/man8/aa-cleanprof.8.gz %doc %{_mandir}/man8/aa-complain.8.gz %doc %{_mandir}/man8/aa-decode.8.gz %doc %{_mandir}/man8/aa-disable.8.gz %doc %{_mandir}/man8/aa-easyprof.8.gz %doc %{_mandir}/man8/aa-enforce.8.gz %doc %{_mandir}/man8/aa-genprof.8.gz %doc %{_mandir}/man8/aa-logprof.8.gz %doc %{_mandir}/man8/aa-mergeprof.8.gz %doc %{_mandir}/man8/aa-notify.8.gz %doc %{_mandir}/man8/aa-remove-unknown.8.gz %doc %{_mandir}/man8/aa-unconfined.8.gz %doc %{_mandir}/man8/audit.8.gz %doc %{_mandir}/man8/autodep.8.gz %doc %{_mandir}/man8/complain.8.gz %doc %{_mandir}/man8/disable.8.gz %doc %{_mandir}/man8/easyprof.8.gz %doc %{_mandir}/man8/enforce.8.gz %doc %{_mandir}/man8/genprof.8.gz %doc %{_mandir}/man8/logprof.8.gz %doc %{_mandir}/man8/unconfined.8.gz %doc utils/*.[0-9].html %doc common/apparmor.css %files utils-lang -f apparmor-utils.lang %if %{with perl} %files -n perl-apparmor %defattr(-,root,root) %{perl_vendorarch}/auto/LibAppArmor/ %{perl_vendorarch}/LibAppArmor.pm %endif %if %{with python3} %files -n python3-apparmor %defattr(-,root,root) %{python3_sitearch}/LibAppArmor-%{version}-py*.egg-info %dir %{python3_sitearch}/LibAppArmor %dir %{python3_sitearch}/LibAppArmor/__pycache__ %{python3_sitearch}/LibAppArmor/_LibAppArmor.cpython-*.so %{python3_sitearch}/LibAppArmor/__pycache__/__init__.cpython-*.pyc %{python3_sitearch}/LibAppArmor/__pycache__/LibAppArmor.cpython-*.pyc %{python3_sitearch}/LibAppArmor/__init__.py %{python3_sitearch}/LibAppArmor/LibAppArmor.py %{python3_sitelib}/apparmor/ %{python3_sitelib}/apparmor-%{version}-py*.egg-info %endif %if %{with ruby} %files -n ruby-apparmor %defattr(-,root,root) %{rb_sitearchdir}/LibAppArmor.so %endif %if %{with pam} %files -n pam_apparmor %defattr(444,root,root,755) %attr(555,root,root) %{_pamdir}/pam_apparmor.so %doc changehat/pam_apparmor/README %endif %if %{with tomcat} %files -n tomcat_apparmor %defattr(-,root,root) %{CATALINA_HOME}/lib/%{JAR_FILE} %{_libdir}/libJNI* %doc %attr(0644,root,root) changehat/tomcat_apparmor/tomcat_5_5/README.tomcat_apparmor %endif %if %{with apache} %files -n apache2-mod_apparmor %defattr(-,root,root) %{apache_libexecdir}/mod_apparmor.so %doc %{_mandir}/man8/mod_apparmor.8.gz %endif %post parser %service_add_post apparmor.service %preun parser %service_del_preun apparmor.service %postun parser # don't call try-restart, see bnc#853019 %if 0%{?suse_version} <= 1500 export DISABLE_RESTART_ON_UPDATE="yes" %service_del_postun apparmor.service %else %service_del_postun_without_restart apparmor.service %endif %posttrans abstractions # workaround for bnc#904620#c8 / lp#1392042 rm -f /var/cache/apparmor/* 2>/dev/null #restart_on_update apparmor - but non-broken (bnc#853019) systemctl is-active -q apparmor && systemctl reload apparmor ||: %posttrans profiles # workaround for bnc#904620#c8 / lp#1392042 # old cache location up to 2.12 rm -f /var/lib/apparmor/cache/* 2>/dev/null # cache location starting with 2.13 rm -f /var/cache/apparmor/* 2>/dev/null #restart_on_update apparmor - but non-broken (bnc#853019) systemctl is-active -q apparmor && systemctl reload apparmor ||: %if %{with tomcat} %post -n tomcat_apparmor -p /sbin/ldconfig %postun -n tomcat_apparmor -p /sbin/ldconfig %endif %if %{with pam} %post -n pam_apparmor if [ $1 -eq 1 ]; then pam-config --add --apparmor || : fi %postun -n pam_apparmor if [ $1 -eq 0 ]; then pam-config --delete --apparmor || : fi %endif %changelog