xref: /aosp_15_r20/external/selinux/python/sepolicy/sepolicy/templates/spec.py (revision 2d543d20722ada2425b5bdab9d0d1d29470e7bba)
1header_comment_section="""\
2# vim: sw=4:ts=4:et
3"""
4
5base_section="""\
6
7%define selinux_policyver VERSION
8
9Name:   MODULENAME_selinux
10Version:	1.0
11Release:	1%{?dist}
12Summary:	SELinux policy module for MODULENAME
13
14Group:	System Environment/Base
15License:	GPLv2+
16# This is an example. You will need to change it.
17URL:		http://HOSTNAME
18Source0:	MODULENAME.pp
19Source1:	MODULENAME.if
20Source2:	DOMAINNAME_selinux.8
21Source3:	DOMAINNAME_u
22
23Requires: policycoreutils, libselinux-utils
24Requires(post): selinux-policy-base >= %{selinux_policyver}, policycoreutils
25Requires(postun): policycoreutils
26"""
27
28mid_section="""\
29BuildArch: noarch
30
31%description
32This package installs and sets up the  SELinux policy security module for MODULENAME.
33
34%install
35install -d %{buildroot}%{_datadir}/selinux/packages
36install -m 644 %{SOURCE0} %{buildroot}%{_datadir}/selinux/packages
37install -d %{buildroot}%{_datadir}/selinux/devel/include/contrib
38install -m 644 %{SOURCE1} %{buildroot}%{_datadir}/selinux/devel/include/contrib/
39install -d %{buildroot}%{_mandir}/man8/
40install -m 644 %{SOURCE2} %{buildroot}%{_mandir}/man8/DOMAINNAME_selinux.8
41install -d %{buildroot}/etc/selinux/targeted/contexts/users/
42install -m 644 %{SOURCE3} %{buildroot}/etc/selinux/targeted/contexts/users/DOMAINNAME_u
43
44%post
45semodule -n -i %{_datadir}/selinux/packages/MODULENAME.pp
46# Add the new user defined in DOMAINNAME_u only when the package is installed (not during updates)
47if [ $1 -eq 1 ]; then
48    /usr/sbin/semanage user -a -R DOMAINNAME_r DOMAINNAME_u
49fi
50if /usr/sbin/selinuxenabled ; then
51    /usr/sbin/load_policy
52    %relabel_files
53fi;
54exit 0
55
56%postun
57if [ $1 -eq 0 ]; then
58    /usr/sbin/semanage user -d DOMAINNAME_u
59    semodule -n -r MODULENAME
60    if /usr/sbin/selinuxenabled ; then
61       /usr/sbin/load_policy
62       %relabel_files
63    fi;
64fi;
65exit 0
66
67%files
68%attr(0600,root,root) %{_datadir}/selinux/packages/MODULENAME.pp
69%{_datadir}/selinux/devel/include/contrib/MODULENAME.if
70%{_mandir}/man8/DOMAINNAME_selinux.8.*
71/etc/selinux/targeted/contexts/users/DOMAINNAME_u
72
73%changelog
74* TODAYSDATE YOUR NAME <YOUR@EMAILADDRESS> 1.0-1
75- Initial version
76
77"""
78
79define_relabel_files_begin ="""\
80\n
81%define relabel_files() \\
82"""
83
84define_relabel_files_end ="""\
85restorecon -R FILENAME; \\
86"""
87