blob: 810106d75c36c2cb6d6a44ea1e3a10108a70cbd3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
DESCRIPTION = "Security manager and utilities"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327;beginline=3"
inherit cmake
# Out-of-tree build is broken ("sqlite3 .security-manager.db <db.sql" where db.sql is in $S/db).
B = "${S}"
DEPENDS = " \
attr \
boost \
cynara \
icu \
libcap \
smack \
sqlite3 \
sqlite3-native \
systemd \
"
PACKAGECONFIG ??= ""
PACKAGECONFIG[debug] = "-DCMAKE_BUILD_TYPE=DEBUG,-DCMAKE_BUILD_TYPE=RELEASE"
TZ_SYS_DB = "/var/local/db/security-manager"
EXTRA_OECMAKE = " \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DVERSION=${PV} \
-DSYSTEMD_INSTALL_DIR=${systemd_unitdir}/system \
-DBIN_INSTALL_DIR=${bindir} \
-DDB_INSTALL_DIR=${TZ_SYS_DB} \
-DLIB_INSTALL_DIR=${libdir} \
-DSHARE_INSTALL_PREFIX=${datadir} \
-DINCLUDE_INSTALL_DIR=${includedir} \
"
inherit systemd
SYSTEMD_SERVICE_${PN} = "security-manager.service"
inherit distro_features_check
REQUIRED_DISTRO_FEATURES += "smack"
# The upstream source code contains the Tizen-specific policy configuration files.
# To replace them, create a security-manager.bbappend and set the following variable to a
# space-separated list of policy file names (not URIs!), for example:
# SECURITY_MANAGER_POLICY = "privilege-group.list usertype-system.profile"
#
# Leave it empty to use the upstream Tizen policy.
SECURITY_MANAGER_POLICY ?= ""
SRC_URI_append = " ${@' '.join(['file://' + x for x in d.getVar('SECURITY_MANAGER_POLICY', True).split()])}"
python do_patch_append () {
import os
import shutil
import glob
files = d.getVar('SECURITY_MANAGER_POLICY', True).split()
if files:
s = d.getVar('S', True)
workdir = d.getVar('WORKDIR', True)
for pattern in ['*.profile', '*.list']:
for old_file in glob.glob(s + '/policy/' + pattern):
os.unlink(old_file)
for file in files:
shutil.copy(file, s + '/policy')
}
do_install_append () {
install -d ${D}/${systemd_unitdir}/system/multi-user.target.wants
ln -s ../security-manager.service ${D}/${systemd_unitdir}/system/multi-user.target.wants/security-manager.service
install -d ${D}/${systemd_unitdir}/system/sockets.target.wants
ln -s ../security-manager.socket ${D}/${systemd_unitdir}/system/sockets.target.wants/security-manager.socket
}
RDEPENDS_${PN} += "smack"
pkg_postinst_${PN} () {
set -e
chsmack -a System $D${TZ_SYS_DB}/.security-manager.db
chsmack -a System $D${TZ_SYS_DB}/.security-manager.db-journal
}
FILES_${PN} += " \
${systemd_unitdir} \
${TZ_SYS_DB} \
"
PACKAGES =+ "${PN}-policy"
FILES_${PN}-policy = " \
${datadir}/${PN} \
${bindir}/security-manager-policy-reload \
"
RDEPENDS_${PN}-policy += "sqlite3 cynara"
pkg_postinst_${PN}-policy () {
if [ x"$D" = "x" ] && ${bindir}/security-manager-policy-reload; then
exit 0
else
exit 1
fi
}
|