aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2019-06-06 12:11:14 +0200
committerJosé Bollo <jose.bollo@iot.bzh>2019-06-14 11:17:53 +0200
commit533d5a1a51a07f2f92e508d113cb49d373e1bad8 (patch)
treeebfaa7db1f265b5c62e36fb0094cd34903d6dfe8
parent77bd42075de481ae89f6a5b2bc8a79bf967d95cd (diff)
Fix synchronisation of user setup
The user setup takes care of populating correctly the directory /run/user/UID with needed items BEFORE user services start. Bug-AGL: SPEC-1015 Change-Id: I6f942d73bf241d593c960dbf3bc6a038f1746fe0 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
-rw-r--r--conf/system/CMakeLists.txt6
-rw-r--r--conf/system/afm-user-setup.sh.in22
-rw-r--r--conf/system/afm-user-setup@.service.in3
l---------conf/system/user-runtime-dir@.service.wants/afm-user-setup@.service1
4 files changed, 25 insertions, 7 deletions
diff --git a/conf/system/CMakeLists.txt b/conf/system/CMakeLists.txt
index a49d37f..3cabd0c 100644
--- a/conf/system/CMakeLists.txt
+++ b/conf/system/CMakeLists.txt
@@ -51,6 +51,12 @@ if(NOT USE_SDK)
${UNITDIR_SYSTEM}
)
install(
+ DIRECTORY
+ ${CMAKE_CURRENT_SOURCE_DIR}/user-runtime-dir@.service.wants
+ DESTINATION
+ ${UNITDIR_SYSTEM}
+ )
+ install(
PROGRAMS
${CMAKE_CURRENT_BINARY_DIR}/afm-user-setup.sh
${CMAKE_CURRENT_BINARY_DIR}/afm-system-setup.sh
diff --git a/conf/system/afm-user-setup.sh.in b/conf/system/afm-user-setup.sh.in
index 24795ae..076676f 100644
--- a/conf/system/afm-user-setup.sh.in
+++ b/conf/system/afm-user-setup.sh.in
@@ -3,18 +3,28 @@
uid=$1
udir=/run/user/$uid
-dodir() {
+dodir_star() {
if ! test -e $1; then
mkdir -m 700 $1
chown $uid:$uid $1
- chsmack -a '*' $1
fi
+ chsmack -a '*' $1
}
-dodir $udir
-dodir $udir/apis
-dodir $udir/apis/ws
-dodir $udir/apis/link
+dodir_star $udir
+dodir_star $udir/apis
+dodir_star $udir/apis/ws
+dodir_star $udir/apis/link
+
+dodir_usrshr() {
+ if ! test -e $1; then
+ mkdir -m 700 $1
+ chown $uid:$uid $1
+ fi
+ chsmack -a User::App-Shared -t $1
+}
+
+dodir_usrshr $udir/usrshr
doln() {
if ! test -e $2; then
diff --git a/conf/system/afm-user-setup@.service.in b/conf/system/afm-user-setup@.service.in
index 86c0422..c1e4f1e 100644
--- a/conf/system/afm-user-setup@.service.in
+++ b/conf/system/afm-user-setup@.service.in
@@ -1,6 +1,7 @@
[Unit]
Description=Initiate afm-user-setup %i
-After=user@%i.service
+After=user-runtime-dir@%i.service
+Before=user@%i.service
[Service]
Type=oneshot
StartLimitInterval=0
diff --git a/conf/system/user-runtime-dir@.service.wants/afm-user-setup@.service b/conf/system/user-runtime-dir@.service.wants/afm-user-setup@.service
new file mode 120000
index 0000000..07fe155
--- /dev/null
+++ b/conf/system/user-runtime-dir@.service.wants/afm-user-setup@.service
@@ -0,0 +1 @@
+../afm-user-setup@.service \ No newline at end of file