mirror of
https://github.com/outbackdingo/scratchpkg.git
synced 2026-02-06 01:16:34 +00:00
updated
This commit is contained in:
109
installpkg
109
installpkg
@@ -38,6 +38,13 @@ installpkg() {
|
||||
# create lock file prevent simultaneous install package
|
||||
spkglock
|
||||
|
||||
# backup conf as set in spkgbuld if upgrade or reinstall package
|
||||
if [ "$UPGRADE_PKG" ] || [ "$REINSTALL_PKG" ]; then
|
||||
if [ ! "$NO_BACKUP" ]; then
|
||||
backupconf
|
||||
fi
|
||||
fi
|
||||
|
||||
# source .install file inside package
|
||||
if [ $(tar -tf "$PKGNAME" | grep -w ^".pkginstall") ] && [ ! "$REINSTALL_PKG" ]; then
|
||||
source <(tar -xf "$PKGNAME" .pkginstall -O)
|
||||
@@ -72,32 +79,43 @@ installpkg() {
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$UPGRADE_PKG" ] || [ "$REINSTALL_PKG" ]; then
|
||||
while IFS=' ' read -r line; do
|
||||
if [ ! "$(tar -tf "$PKGNAME" --exclude=.pkginfo --exclude=.pkginstall --exclude=.pkgreadme ${excludefile[@]} | grep -w "$line")" ]; then
|
||||
if [ "$UPGRADE_PKG" ] || [ "$REINSTALL_PKG" ]; then
|
||||
|
||||
TMP_TARLIST="/tmp/$name.tarlist.spkg"
|
||||
tar -tf "$PKGNAME" --exclude=.pkginfo --exclude=.pkginstall --exclude=.pkgreadme ${excludefile[@]} > $TMP_TARLIST
|
||||
|
||||
msg2 "Removing old files..."
|
||||
grep -v '/$' $INDEX_DIR/$name/.files | while read line; do
|
||||
if [ ! "$(grep -w "$line" $TMP_TARLIST)" ]; then
|
||||
pushd $ROOT_DIR
|
||||
rm_silent "$line" || msgwarn "Failed remove $line"
|
||||
if [ "$VERBOSE_INSTALL" = "yes" ]; then
|
||||
rm_silent "$line" && echo "$line" && OLDFILEREMOVE=yes || msgwarn "Failed remove $line"
|
||||
else
|
||||
rm_silent "$line" && OLDFILEREMOVE=yes || msgwarn "Failed remove $line"
|
||||
fi
|
||||
popd
|
||||
fi
|
||||
done < <(tac $INDEX_DIR/$name/.files | grep -v '/$')
|
||||
done
|
||||
|
||||
msg2 "Removing old dirs..."
|
||||
while IFS=' ' read -r line; do
|
||||
if [ ! "$(tar -tf "$PKGNAME" --exclude=.pkginfo --exclude=.pkginstall --exclude=.pkgreadme ${excludefile[@]} | grep -w "$line")" ] && [ ! "$(grep -R --exclude-dir="$name" -w "$line" "$INDEX_DIR")" ]; then
|
||||
if [ ! "$(tac $TMP_TARLIST | grep -w "$line")" ] && [ ! "$(grep -R --exclude-dir="$name" -w "$line" "$INDEX_DIR")" ]; then
|
||||
pushd $ROOT_DIR
|
||||
rmdir_silent "$line" || msgwarn "Failed remove $line"
|
||||
if [ "$VERBOSE_INSTALL" = "yes" ]; then
|
||||
rmdir_silent "$line" && echo "$line" || msgwarn "Failed remove $line"
|
||||
else
|
||||
rmdir_silent "$line" || msgwarn "Failed remove $line"
|
||||
fi
|
||||
popd
|
||||
fi
|
||||
done < <(tac $INDEX_DIR/$name/.files | grep '/$')
|
||||
tar -x -f $PKGNAME -C $INDEX_DIR/$name .pkginfo
|
||||
tar -t -f $PKGNAME --exclude=.pkginfo --exclude=.pkginstall --exclude=.pkgreadme ${excludefile[@]} > $INDEX_DIR/$name/.files
|
||||
tar -x -f $PKGNAME -C $INDEX_DIR/$name .pkginstall .pkgreadme >/dev/null 2>&1
|
||||
else
|
||||
# register package, for install
|
||||
mkdir $INDEX_DIR/$name
|
||||
tar -x -f $PKGNAME -C $INDEX_DIR/$name .pkginfo
|
||||
tar -t -f $PKGNAME --exclude=.pkginfo --exclude=.pkginstall --exclude=.pkgreadme ${excludefile[@]} > $INDEX_DIR/$name/.files
|
||||
tar -x -f $PKGNAME -C $INDEX_DIR/$name .pkginstall .pkgreadme >/dev/null 2>&1
|
||||
|
||||
rm $TMP_TARLIST
|
||||
fi
|
||||
msg "Successfully install ${color_green}$packagename${color_reset}."
|
||||
|
||||
registerpkg
|
||||
|
||||
msg "Successfully install ${color_green}$packagename${color_reset}."
|
||||
|
||||
if [ ! "$NO_POSTINSTALL" ] && [ ! "$UPGRADE_PKG" ]; then
|
||||
run_postinstall
|
||||
@@ -129,7 +147,7 @@ installpkg() {
|
||||
KO) msg "postupgrade : ${color_red}FAIL${color_reset}" ;;
|
||||
esac
|
||||
|
||||
if [ -f $INDEX_DIR/$name/readme ]; then
|
||||
if [ -f $INDEX_DIR/$name/.pkgreadme ]; then
|
||||
msg "This package has ${color_green}readme${color_reset}"
|
||||
fi
|
||||
|
||||
@@ -137,6 +155,15 @@ installpkg() {
|
||||
spkglock
|
||||
}
|
||||
|
||||
registerpkg() {
|
||||
|
||||
[ ! -d $INDEX_DIR/$name ] && mkdir $INDEX_DIR/$name
|
||||
tar -x -f $PKGNAME -C $INDEX_DIR/$name .pkginfo
|
||||
tar -t -f $PKGNAME --exclude=.pkginfo --exclude=.pkginstall --exclude=.pkgreadme ${excludefile[@]} > $INDEX_DIR/$name/.files
|
||||
tar -x -f $PKGNAME -C $INDEX_DIR/$name .pkginstall .pkgreadme >/dev/null 2>&1
|
||||
|
||||
}
|
||||
|
||||
checkdeps() {
|
||||
|
||||
for dep in ${depends[@]}; do
|
||||
@@ -174,11 +201,11 @@ checkconflict() {
|
||||
|
||||
while IFS=' ' read -r line; do
|
||||
pushd $ROOT_DIR
|
||||
if [ -f "$line" ] || [ -L "$line" ]; then
|
||||
if [ -e "$line" ]; then
|
||||
fileconflict+=(${line})
|
||||
fi
|
||||
popd
|
||||
done < <(tar -tf "$PKGNAME" --exclude=.pkginfo --exclude=.pkginstall --exclude=.pkgreadme ${excludefile[@]})
|
||||
done < <(tar -tf "$PKGNAME" --exclude=.pkginfo --exclude=.pkginstall --exclude=.pkgreadme ${excludefile[@]} | grep -v '/$')
|
||||
|
||||
if [ "${#fileconflict[@]}" -gt 0 ]; then
|
||||
msgerr "File conflict found:"
|
||||
@@ -194,13 +221,13 @@ upcheckconflict() {
|
||||
|
||||
while IFS=' ' read -r line; do
|
||||
pushd $ROOT_DIR
|
||||
if [ -f "$line" ] || [ -L "$line" ]; then
|
||||
if [ -e "$line" ]; then
|
||||
if [ ! "$(grep -w "$line" "$INDEX_DIR/$name/.files")" ]; then
|
||||
fileconflict+=(${line})
|
||||
fi
|
||||
fi
|
||||
popd
|
||||
done < <(tar -tf "$PKGNAME" --exclude=.pkginfo --exclude=.pkginstall --exclude=.pkgreadme ${excludefile[@]})
|
||||
done < <(tar -tf "$PKGNAME" --exclude=.pkginfo --exclude=.pkginstall --exclude=.pkgreadme ${excludefile[@]} | grep -v '/$')
|
||||
|
||||
if [ "${#fileconflict[@]}" -gt 0 ]; then
|
||||
msgerr "File conflict found:"
|
||||
@@ -248,14 +275,6 @@ updateinfopages() {
|
||||
popd
|
||||
}
|
||||
|
||||
upgradepkg() {
|
||||
|
||||
if [ ! "$NO_BACKUP" ]; then
|
||||
backupconf
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
backupconf() {
|
||||
|
||||
pushd $ROOT_DIR
|
||||
@@ -264,7 +283,7 @@ backupconf() {
|
||||
if [ -e $bkp ]; then
|
||||
msg2 "Backup ${color_purple}$bkp${color_reset}"
|
||||
cp $bkp $BACKUP_DIR
|
||||
DONE_BACKUP=yes
|
||||
FILEBACKUP+=($bkp)
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -273,22 +292,19 @@ backupconf() {
|
||||
|
||||
restoreconf() {
|
||||
|
||||
if [ "$DONE_BACKUP" ]; then
|
||||
|
||||
pushd $ROOT_DIR
|
||||
|
||||
for b in ${backup[@]}; do
|
||||
if [ -e $b ]; then
|
||||
mkdir -p $REJECTED_DIR/${b%/*}
|
||||
mv $b $REJECTED_DIR/$b
|
||||
msg2 "Restore ${color_purple}$b${color_reset}"
|
||||
mv $BACKUP_DIR/$(basename ${b}) $b
|
||||
fi
|
||||
done
|
||||
|
||||
popd
|
||||
if [ "${#FILEBACKUP[@]}" -gt 0 ]; then
|
||||
pushd $ROOT_DIR
|
||||
for b in ${FILEBACKUP[@]}; do
|
||||
if [ -e $b ]; then
|
||||
mkdir -p $REJECTED_DIR/${b%/*}
|
||||
mv $b $REJECTED_DIR/$b
|
||||
msg2 "Restore ${color_purple}$b${color_reset}"
|
||||
mv $BACKUP_DIR/$(basename ${b}) $b
|
||||
fi
|
||||
done
|
||||
popd
|
||||
fi
|
||||
|
||||
fi
|
||||
}
|
||||
|
||||
checkoutdate() {
|
||||
@@ -539,7 +555,6 @@ main() {
|
||||
elif [ "$REINSTALL_PKG" ]; then
|
||||
msg "Reinstall package ${color_green}$packagename${color_reset}."
|
||||
fi
|
||||
upgradepkg
|
||||
fi
|
||||
|
||||
### INSTALL PACKAGE INTO SYSTEM ###
|
||||
|
||||
Reference in New Issue
Block a user