@@ -227,6 +227,48 @@ scratch_sync() {
227
227
portsync
228
228
}
229
229
230
+ cvperms () {
231
+ # converts symbolic to numeric permissions
232
+ # required an input (symbolic, eg: drwxr-xr-x)
233
+ s=0; n=0; count=0
234
+ for i in $( echo " $1 " | sed -e ' s/\(.\)/\1\n/g' ) ; do
235
+ count=$(( count+ 1 ))
236
+ case $i in
237
+ d) ;;
238
+ r) n=$(( n+ 4 )) ;;
239
+ w) n=$(( n+ 2 )) ;;
240
+ x) n=$(( n+ 1 )) ;;
241
+ s) [ $count = 4 ] && s=$(( s+ 4 )) || s=$(( s+ 2 )) ; n=$(( n+ 1 )) ;;
242
+ t) s=$(( s+ 1 )) ; n=$(( n+ 1 )) ;;
243
+ S) s=$(( s+ 2 )) ;;
244
+ T) s=$(( s+ 1 )) ;;
245
+ esac
246
+ [ " $count " = 4 ] && {
247
+ user=$n ; n=0
248
+ }
249
+ [ " $count " = 7 ] && {
250
+ group=$n ; n=0
251
+ }
252
+ [ " $count " = 10 ] && {
253
+ other=$n ; n=0
254
+ }
255
+ done
256
+ echo " $s$user$group$other "
257
+ }
258
+
259
+ fixperms () {
260
+ needroot " Fix permissions"
261
+ for i in $PKGDBPERMS_DIR /* ; do
262
+ [ -s $i ] || continue
263
+ while read -r perms own dir; do
264
+ chmod $( cvperms $perms ) /$dir
265
+ echo $own | while IFS=/ read -r o g; do
266
+ chown $o :$g /$dir
267
+ done
268
+ done < $i
269
+ done
270
+ }
271
+
230
272
scratch_trigger () {
231
273
needroot " Run trigger"
232
274
if [ -z " $* " ]; then
@@ -239,27 +281,7 @@ scratch_trigger() {
239
281
post_triggers
240
282
}
241
283
242
- post_triggers () {
243
- if [ " $trig_12 " = 1 ]; then
244
- echo " trigger: Running mkdirs..."
245
- for mkd in $PKGDB_DIR /* /.pkgmkdirs; do
246
- [ -s $mkd ] || continue
247
- grep -Ev ' ^(#|$)' $mkd | while read -r dir mode uid gid junk; do
248
- if [ -e " $dir " ]; then
249
- if [ " $uid " != ' -' ]; then
250
- getent passwd $uid > /dev/null && chown " $uid " " $dir "
251
- fi
252
- if [ " $gid " != ' -' ]; then
253
- getent group $gid > /dev/null && chgrp " $gid " " $dir "
254
- fi
255
- if [ " $mode " != ' -' ]; then
256
- chmod " $mode " " $dir "
257
- fi
258
- fi
259
- done
260
- done
261
- fi
262
-
284
+ post_triggers () {
263
285
if [ " $trig_11 " = 1 ] && [ $( command -v fc-cache) ]; then
264
286
echo " trigger: Updating fontconfig cache..."
265
287
fc-cache -s
@@ -327,6 +349,9 @@ post_triggers() {
327
349
echo " trigger: Updating the MIME type database..."
328
350
update-mime-database /usr/share/mime
329
351
fi
352
+
353
+ echo " trigger: Fix files ownership and permissions..."
354
+ fixperms
330
355
}
331
356
332
357
pre_triggers () {
@@ -439,16 +464,6 @@ pre_triggers() {
439
464
fi
440
465
done
441
466
fi
442
-
443
- # makedirs
444
- if [ " $trig_12 " != " 1" ]; then
445
- for pkg in $@ ; do
446
- if [ -s " $PKGDB_DIR /$pkg /.pkgmkdirs" ]; then
447
- trig_12=1
448
- break
449
- fi
450
- done
451
- fi
452
467
}
453
468
454
469
scratch_build () {
@@ -899,7 +914,6 @@ scratch_outdate() {
899
914
fi
900
915
iversion=$( get_iver $pkg )
901
916
irelease=$( get_irelease $pkg )
902
- [ -f " $PKGDB_DIR /$pkg /.lock" ] && ITSLOCK=" [masked]"
903
917
if [ -f " $MASK_FILE " ] && [ $( grep -Ev ' ^(#|$| )' $MASK_FILE | grep $pkg ) ]; then
904
918
ITSLOCK=" [masked]"
905
919
fi
@@ -1270,12 +1284,6 @@ scratch_missingdep() {
1270
1284
done
1271
1285
}
1272
1286
1273
- scratch_locked () {
1274
- for pkg in $( allinstalled) ; do
1275
- [ -f " $PKGDB_DIR /$pkg /.lock" ] && echo " $pkg "
1276
- done
1277
- }
1278
-
1279
1287
scratch_orphan () {
1280
1288
tmpallpkg=" /tmp/.pkgquery_allpkg.$$ "
1281
1289
tmpalldep=" /tmp/.pkgquery_alldep.$$ "
@@ -1430,6 +1438,7 @@ done
1430
1438
1431
1439
BUILD_SCRIPT=" spkgbuild"
1432
1440
PKGDB_DIR=" $( pkgadd --print-dbdir) "
1441
+ PKGDBPERMS_DIR=${PKGDB_DIR} .perms
1433
1442
REPO_FILE=" ${REPO_FILE:-/ etc/ scratchpkg.repo} "
1434
1443
ALIAS_FILE=" ${ALIAS_FILE:-/ etc/ scratchpkg.alias} "
1435
1444
MASK_FILE=" ${MASK_FILE:-/ etc/ scratchpkg.mask} "
0 commit comments