@@ -59,6 +59,7 @@ Options:
59
59
--no-preupgrade skip preupgrade script before upgrade package
60
60
--no-postupgrade skip postupgrade script after upgrade package
61
61
--no-backup skip backup when upgrading package
62
+ --print-dbdir print package database path
62
63
--root=<path> install to custom root directory
63
64
64
65
EOF
@@ -96,6 +97,7 @@ parse_opts() {
96
97
--no-preupgrade) NO_PREUPGRADE=yes ;;
97
98
--no-postupgrade) NO_POSTUPGRADE=yes ;;
98
99
--no-backup) NO_BACKUP=yes ;;
100
+ --print-dbdir) PRINTDBDIR=yes ;;
99
101
--root=* ) ROOT_DIR=" ${1#* =} " ;;
100
102
* .spkg.tar.* ) PKGNAME=" $( realpath $1 ) " ;;
101
103
* ) msg " Invalid option! ($1 )" ; exit 1 ;;
@@ -112,7 +114,7 @@ ret() {
112
114
}
113
115
114
116
isinstalled () {
115
- if [ -s " $ROOT_DIR /$INDEX_DIR /$1 /.pkginfo" ] && grep -q " $1 " " $ROOT_DIR /$INDEX_DIR /$1 /.pkginfo" ; then
117
+ if [ -s " $ROOT_DIR /$PKGDB_DIR /$1 /.pkginfo" ] && grep -q " $1 " " $ROOT_DIR /$PKGDB_DIR /$1 /.pkginfo" ; then
116
118
return 0
117
119
else
118
120
return 1
@@ -130,17 +132,24 @@ run_scripts() {
130
132
parse_opts $( extract_opts " $@ " )
131
133
132
134
SCRATCHPKG_DIR=" var/lib/scratchpkg"
133
- INDEX_DIR =" $SCRATCHPKG_DIR /index"
135
+ PKGDB_DIR =" $SCRATCHPKG_DIR /index"
134
136
LOCK_FILE=" $SCRATCHPKG_DIR /spkg.lock"
135
137
138
+ ROOT_DIR=" ${ROOT_DIR%/ } " # remove trailing slash
139
+
140
+ [ " $PRINTDBDIR " ] && {
141
+ echo " $ROOT_DIR /$PKGDB_DIR "
142
+ ret 0
143
+ }
144
+
136
145
# show help page
137
146
[ " $SHOWHELP " ] || [ -z " $PKGNAME " ] && {
138
147
help
139
148
ret 0
140
149
}
141
150
142
- [ -d " $ROOT_DIR /$INDEX_DIR " ] || {
143
- msgerr " Package's database directory not exist: $ROOT_DIR /$INDEX_DIR "
151
+ [ -d " $ROOT_DIR /$PKGDB_DIR " ] || {
152
+ msgerr " Package's database directory not exist: $ROOT_DIR /$PKGDB_DIR "
144
153
ret 1
145
154
}
146
155
@@ -178,8 +187,8 @@ name=${noextname%-*}
178
187
179
188
# get package information if installed
180
189
if isinstalled $name ; then
181
- iversion=$( grep ^version $ROOT_DIR /$INDEX_DIR /$name /.pkginfo | cut -d " " -f3-)
182
- irelease=$( grep ^release $ROOT_DIR /$INDEX_DIR /$name /.pkginfo | cut -d " " -f3-)
190
+ iversion=$( grep ^version $ROOT_DIR /$PKGDB_DIR /$name /.pkginfo | cut -d " " -f3-)
191
+ irelease=$( grep ^release $ROOT_DIR /$PKGDB_DIR /$name /.pkginfo | cut -d " " -f3-)
183
192
ALREADYINSTALLED=yes
184
193
fi
185
194
@@ -227,7 +236,7 @@ if [ ! "$IGNORE_CONFLICT" ]; then
227
236
fi
228
237
if [ -e " $ROOT_DIR /$line " ] || [ -L " $ROOT_DIR /$line " ]; then
229
238
if [ " $UPGRADE_PKG " ] || [ " $REINSTALL_PKG " ]; then
230
- if ! grep -Fqx " $line " " $ROOT_DIR /$INDEX_DIR /$name /.files" ; then
239
+ if ! grep -Fqx " $line " " $ROOT_DIR /$PKGDB_DIR /$name /.files" ; then
231
240
echo " $line "
232
241
touch " $TMP_CONFLICT "
233
242
fi
@@ -290,12 +299,12 @@ if [ "$UPGRADE_PKG" ] || [ "$REINSTALL_PKG" ]; then
290
299
rmlist_dir=" $ROOT_DIR /$SCRATCHPKG_DIR /.rmlist_dir"
291
300
reserve_dir=" $ROOT_DIR /$SCRATCHPKG_DIR /.reserve_dir"
292
301
rmlist_all=" $ROOT_DIR /$SCRATCHPKG_DIR /.rmlist_all"
293
- grep ' /$' $ROOT_DIR /$INDEX_DIR /* /.files \
294
- | grep -v $ROOT_DIR /$INDEX_DIR /$name /.files \
302
+ grep ' /$' $ROOT_DIR /$PKGDB_DIR /* /.files \
303
+ | grep -v $ROOT_DIR /$PKGDB_DIR /$name /.files \
295
304
| awk -F : ' {print $2}' \
296
305
| sort \
297
306
| uniq > $reserve_dir # get list reserved dirs
298
- grep -Fxv -f " $TMP_PKGINSTALL " $ROOT_DIR /$INDEX_DIR /$name /.files > $rmlist_all # get list files and dirs to remove
307
+ grep -Fxv -f " $TMP_PKGINSTALL " $ROOT_DIR /$PKGDB_DIR /$name /.files > $rmlist_all # get list files and dirs to remove
299
308
grep -v ' /$' " $rmlist_all " | tac > " $rmlist_file " # get files only to remove
300
309
grep -Fxv -f " $reserve_dir " " $rmlist_all " | grep ' /$' | tac > " $rmlist_dir " # get dirs only (safe) to remove
301
310
(cd " $ROOT_DIR " /
@@ -306,30 +315,30 @@ if [ "$UPGRADE_PKG" ] || [ "$REINSTALL_PKG" ]; then
306
315
fi
307
316
308
317
# register package into database
309
- rm -fr " $ROOT_DIR /$INDEX_DIR /$name "
310
- mkdir " $ROOT_DIR /$INDEX_DIR /$name "
311
- echo " name = $name " > " $ROOT_DIR /$INDEX_DIR /$name /.pkginfo"
312
- echo " version = $version " >> " $ROOT_DIR /$INDEX_DIR /$name /.pkginfo"
313
- echo " release = $release " >> " $ROOT_DIR /$INDEX_DIR /$name /.pkginfo"
314
- install -m644 " $TMP_PKGINSTALL " " $ROOT_DIR /$INDEX_DIR /$name /.files"
318
+ rm -fr " $ROOT_DIR /$PKGDB_DIR /$name "
319
+ mkdir " $ROOT_DIR /$PKGDB_DIR /$name "
320
+ echo " name = $name " > " $ROOT_DIR /$PKGDB_DIR /$name /.pkginfo"
321
+ echo " version = $version " >> " $ROOT_DIR /$PKGDB_DIR /$name /.pkginfo"
322
+ echo " release = $release " >> " $ROOT_DIR /$PKGDB_DIR /$name /.pkginfo"
323
+ install -m644 " $TMP_PKGINSTALL " " $ROOT_DIR /$PKGDB_DIR /$name /.files"
315
324
316
325
for ii in $( grep ^.pkg* $TMP_PKGADD ) ; do
317
326
pkgfiles=" $pkgfiles $ii "
318
327
done
319
328
320
329
if [ " $pkgfiles " ]; then
321
- tar -x -f " $PKGNAME " -C " $ROOT_DIR /$INDEX_DIR /$name " $pkgfiles > /dev/null 2>&1
330
+ tar -x -f " $PKGNAME " -C " $ROOT_DIR /$PKGDB_DIR /$name " $pkgfiles > /dev/null 2>&1
322
331
fi
323
332
324
- if [ -f " $ROOT_DIR /$INDEX_DIR /$name /.pkginstall" ]; then
333
+ if [ -f " $ROOT_DIR /$PKGDB_DIR /$name /.pkginstall" ]; then
325
334
if [ ! " $NO_POSTINSTALL " ] && [ ! " $UPGRADE_PKG " ]; then
326
335
(cd " $ROOT_DIR " /
327
- run_scripts " $INDEX_DIR /$name /.pkginstall" post-install " $version "
336
+ run_scripts " $PKGDB_DIR /$name /.pkginstall" post-install " $version "
328
337
)
329
338
fi
330
339
if [ " $UPGRADE_PKG " ] && [ ! " $NO_POSTUPGRADE " ]; then
331
340
(cd " $ROOT_DIR " /
332
- run_scripts " $INDEX_DIR /$name /.pkginstall" post-upgrade " $version " " $iversion "
341
+ run_scripts " $PKGDB_DIR /$name /.pkginstall" post-upgrade " $version " " $iversion "
333
342
)
334
343
fi
335
344
fi
0 commit comments