@@ -59,6 +59,7 @@ Options:
5959 --no-preupgrade skip preupgrade script before upgrade package
6060 --no-postupgrade skip postupgrade script after upgrade package
6161 --no-backup skip backup when upgrading package
62+ --print-dbdir print package database path
6263 --root=<path> install to custom root directory
6364
6465EOF
@@ -96,6 +97,7 @@ parse_opts() {
9697 --no-preupgrade) NO_PREUPGRADE=yes ;;
9798 --no-postupgrade) NO_POSTUPGRADE=yes ;;
9899 --no-backup) NO_BACKUP=yes ;;
100+ --print-dbdir) PRINTDBDIR=yes ;;
99101 --root=* ) ROOT_DIR=" ${1#* =} " ;;
100102 * .spkg.tar.* ) PKGNAME=" $( realpath $1 ) " ;;
101103 * ) msg " Invalid option! ($1 )" ; exit 1 ;;
@@ -112,7 +114,7 @@ ret() {
112114}
113115
114116isinstalled () {
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
116118 return 0
117119 else
118120 return 1
@@ -130,17 +132,24 @@ run_scripts() {
130132parse_opts $( extract_opts " $@ " )
131133
132134SCRATCHPKG_DIR=" var/lib/scratchpkg"
133- INDEX_DIR =" $SCRATCHPKG_DIR /index"
135+ PKGDB_DIR =" $SCRATCHPKG_DIR /index"
134136LOCK_FILE=" $SCRATCHPKG_DIR /spkg.lock"
135137
138+ ROOT_DIR=" ${ROOT_DIR%/ } " # remove trailing slash
139+
140+ [ " $PRINTDBDIR " ] && {
141+ echo " $ROOT_DIR /$PKGDB_DIR "
142+ ret 0
143+ }
144+
136145# show help page
137146[ " $SHOWHELP " ] || [ -z " $PKGNAME " ] && {
138147 help
139148 ret 0
140149}
141150
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 "
144153 ret 1
145154}
146155
@@ -178,8 +187,8 @@ name=${noextname%-*}
178187
179188# get package information if installed
180189if 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-)
183192 ALREADYINSTALLED=yes
184193fi
185194
@@ -227,7 +236,7 @@ if [ ! "$IGNORE_CONFLICT" ]; then
227236 fi
228237 if [ -e " $ROOT_DIR /$line " ] || [ -L " $ROOT_DIR /$line " ]; then
229238 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
231240 echo " $line "
232241 touch " $TMP_CONFLICT "
233242 fi
@@ -290,12 +299,12 @@ if [ "$UPGRADE_PKG" ] || [ "$REINSTALL_PKG" ]; then
290299 rmlist_dir=" $ROOT_DIR /$SCRATCHPKG_DIR /.rmlist_dir"
291300 reserve_dir=" $ROOT_DIR /$SCRATCHPKG_DIR /.reserve_dir"
292301 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 \
295304 | awk -F : ' {print $2}' \
296305 | sort \
297306 | 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
299308 grep -v ' /$' " $rmlist_all " | tac > " $rmlist_file " # get files only to remove
300309 grep -Fxv -f " $reserve_dir " " $rmlist_all " | grep ' /$' | tac > " $rmlist_dir " # get dirs only (safe) to remove
301310 (cd " $ROOT_DIR " /
@@ -306,30 +315,30 @@ if [ "$UPGRADE_PKG" ] || [ "$REINSTALL_PKG" ]; then
306315fi
307316
308317# 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"
315324
316325for ii in $( grep ^.pkg* $TMP_PKGADD ) ; do
317326 pkgfiles=" $pkgfiles $ii "
318327done
319328
320329if [ " $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
322331fi
323332
324- if [ -f " $ROOT_DIR /$INDEX_DIR /$name /.pkginstall" ]; then
333+ if [ -f " $ROOT_DIR /$PKGDB_DIR /$name /.pkginstall" ]; then
325334 if [ ! " $NO_POSTINSTALL " ] && [ ! " $UPGRADE_PKG " ]; then
326335 (cd " $ROOT_DIR " /
327- run_scripts " $INDEX_DIR /$name /.pkginstall" post-install " $version "
336+ run_scripts " $PKGDB_DIR /$name /.pkginstall" post-install " $version "
328337 )
329338 fi
330339 if [ " $UPGRADE_PKG " ] && [ ! " $NO_POSTUPGRADE " ]; then
331340 (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 "
333342 )
334343 fi
335344fi
0 commit comments