Skip to content

Commit f6a80ad

Browse files
authored
Merge branch 'master' into master
2 parents b66991a + 8691210 commit f6a80ad

12 files changed

+468
-678
lines changed

INSTALL.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ install -dm777 ${DESTDIR}${CACHE_DIR}/packages
1616
install -dm777 ${DESTDIR}${CACHE_DIR}/sources
1717
install -dm777 ${DESTDIR}${CACHE_DIR}/work
1818

19-
install -m755 xchroot revdep pkgadd pkgdel pkgbuild pkgquery scratch updateconf \
19+
install -m755 xchroot revdep pkgadd pkgdel pkgbuild scratch updateconf portsync \
2020
pkgbase pkgdepends pkgrebuild pkgfix portcreate ${DESTDIR}${BINDIR}
21-
install -m644 scratchpkg.conf scratchpkg.repo scratchpkg.alias ${DESTDIR}${CONFDIR}
21+
install -m644 scratchpkg.conf scratchpkg.repo scratchpkg.alias scratchpkg.mask ${DESTDIR}${CONFDIR}
2222

2323
install -m644 revdep.conf ${DESTDIR}${REVDEPCONF}

pkgadd

Lines changed: 23 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ ret() {
114114
}
115115

116116
isinstalled() {
117-
if [ -s "$ROOT_DIR/$PKGDB_DIR/$1/.pkginfo" ] && grep -q "$1" "$ROOT_DIR/$PKGDB_DIR/$1/.pkginfo"; then
117+
if [ -s "$ROOT_DIR/$PKGDB_DIR/$1" ]; then
118118
return 0
119119
else
120120
return 1
@@ -132,7 +132,8 @@ run_scripts() {
132132
parse_opts $(extract_opts "$@")
133133

134134
SCRATCHPKG_DIR="var/lib/scratchpkg"
135-
PKGDB_DIR="$SCRATCHPKG_DIR/index"
135+
PKGDB_DIR="$SCRATCHPKG_DIR/db"
136+
PKGDBPERMS_DIR="$PKGDB_DIR.perms"
136137
LOCK_FILE="$SCRATCHPKG_DIR/spkg.lock"
137138

138139
ROOT_DIR="${ROOT_DIR%/}" # remove trailing slash
@@ -187,8 +188,8 @@ name=${noextname%-*}
187188

188189
# get package information if installed
189190
if isinstalled $name; then
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-)
191+
iversion=$(head -n1 $ROOT_DIR/$PKGDB_DIR/$name | awk '{print $1}')
192+
irelease=$(head -n1 $ROOT_DIR/$PKGDB_DIR/$name | awk '{print $2}')
192193
ALREADYINSTALLED=yes
193194
fi
194195

@@ -216,7 +217,7 @@ TMP_PKGINSTALL="$ROOT_DIR/$SCRATCHPKG_DIR/.tmp_pkginstall"
216217
TMP_CONFLICT="$ROOT_DIR/$SCRATCHPKG_DIR/.tmp_conflict"
217218

218219
# check integrity of package and save list file/dirs to install in the meantime
219-
tar -tf $PKGNAME > $TMP_PKGADD 2>/dev/null || {
220+
tar -tvf $PKGNAME > $TMP_PKGADD 2>/dev/null || {
220221
msgerr "Package '$1' is corrupted!"
221222
ret 1
222223
}
@@ -230,13 +231,13 @@ echo "$opr: $name-$version-$release..."
230231

231232
# check for file conflict
232233
if [ ! "$IGNORE_CONFLICT" ]; then
233-
grep -Ev "^.pkg*" "$TMP_PKGADD" | grep -v '/$' | while read -r line; do
234+
grep -v '/$' "$TMP_PKGADD" | awk '{print $6}' | while read -r line; do
234235
if [ "$line" = "${line%.*}.spkgnew" ]; then
235236
line=${line%.*}
236237
fi
237238
if [ -e "$ROOT_DIR/$line" ] || [ -L "$ROOT_DIR/$line" ]; then
238239
if [ "$UPGRADE_PKG" ] || [ "$REINSTALL_PKG" ]; then
239-
if ! grep -Fqx "$line" "$ROOT_DIR/$PKGDB_DIR/$name/.files"; then
240+
if ! grep -Fqx "$line" "$ROOT_DIR/$PKGDB_DIR/$name"; then
240241
echo "$line"
241242
touch "$TMP_CONFLICT"
242243
fi
@@ -253,32 +254,10 @@ if [ ! "$IGNORE_CONFLICT" ]; then
253254
fi
254255
fi
255256

256-
# pre-install and pre-upgrade script
257-
if grep -qx .pkginstall $TMP_PKGADD; then
258-
TMP_PKGINSTALL_SCRIPT="$SCRATCHPKG_DIR/pkgadd_installscript"
259-
tar -xf "$PKGNAME" .pkginstall -O > "$ROOT_DIR/$TMP_PKGINSTALL_SCRIPT"
260-
if [ ! "$NO_PREINSTALL" ] && [ ! "$UPGRADE_PKG" ]; then
261-
(cd "$ROOT_DIR"/
262-
run_scripts "$TMP_PKGINSTALL_SCRIPT" pre-install "$version"
263-
)
264-
fi
265-
if [ "$UPGRADE_PKG" ] && [ ! "$NO_PREUPGRADE" ]; then
266-
(cd "$ROOT_DIR"/
267-
run_scripts "$TMP_PKGINSTALL_SCRIPT" pre-upgrade "$version" "$iversion"
268-
)
269-
fi
270-
rm -f "$ROOT_DIR/$TMP_PKGINSTALL_SCRIPT"
271-
fi
272-
273-
# exclude .pkg* files when extract into system
274-
for i in $(grep "^.pkg*" $TMP_PKGADD); do
275-
excludefile="$excludefile --exclude=$i"
276-
done
277-
278257
rm -f $TMP_PKGINSTALL
279258

280259
# extract package into ROOT_DIR
281-
tar --keep-directory-symlink -p -x -v -f "$PKGNAME" -C "$ROOT_DIR"/ $excludefile | while read -r line; do
260+
tar -xvhpf "$PKGNAME" -C "$ROOT_DIR"/ | while read -r line; do
282261
if [ "$line" = "${line%.*}.spkgnew" ]; then
283262
line=${line%.*}
284263
if [ "$UPGRADE_PKG" ] || [ "$REINSTALL_PKG" ]; then
@@ -295,53 +274,24 @@ done
295274

296275
# remove old files from old package that not exist in new package
297276
if [ "$UPGRADE_PKG" ] || [ "$REINSTALL_PKG" ]; then
298-
rmlist_file="$ROOT_DIR/$SCRATCHPKG_DIR/.rmlist_file"
299-
rmlist_dir="$ROOT_DIR/$SCRATCHPKG_DIR/.rmlist_dir"
300-
reserve_dir="$ROOT_DIR/$SCRATCHPKG_DIR/.reserve_dir"
301-
rmlist_all="$ROOT_DIR/$SCRATCHPKG_DIR/.rmlist_all"
302-
grep '/$' $ROOT_DIR/$PKGDB_DIR/*/.files \
303-
| grep -v $ROOT_DIR/$PKGDB_DIR/$name/.files \
304-
| awk -F : '{print $2}' \
305-
| sort \
306-
| uniq > $reserve_dir # get list reserved dirs
307-
grep -Fxv -f "$TMP_PKGINSTALL" $ROOT_DIR/$PKGDB_DIR/$name/.files > $rmlist_all # get list files and dirs to remove
308-
grep -v '/$' "$rmlist_all" | tac > "$rmlist_file" # get files only to remove
309-
grep -Fxv -f "$reserve_dir" "$rmlist_all" | grep '/$' | tac > "$rmlist_dir" # get dirs only (safe) to remove
310-
(cd "$ROOT_DIR"/
311-
[ -s $rmlist_file ] && xargs -a $rmlist_file -d'\n' rm $VERBOSE_INSTALL
312-
[ -s $rmlist_dir ] && xargs -a $rmlist_dir -d'\n' rmdir $VERBOSE_INSTALL
313-
)
314-
rm -f "$rmlist_file" "$rmlist_dir" "$reserve_dir" "$rmlist_all"
277+
tail -n+2 "$ROOT_DIR/$PKGDB_DIR/$name" | tac | while read -r line; do
278+
case $line in
279+
*/) grep "^$line$" $ROOT_DIR/$PKGDB_DIR/* "$TMP_PKGINSTALL" | grep -qv "$ROOT_DIR/$PKGDB_DIR/$name" || rmdir $([ "$VERBOSE_INSTALL" ] && echo -v) "$ROOT_DIR/$line";;
280+
*) grep -q "^$line$" "$TMP_PKGINSTALL" || rm $([ "$VERBOSE_INSTALL" ] && echo -v) "$ROOT_DIR/$line";;
281+
esac
282+
done
315283
fi
316284

317285
# register package into database
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"
324-
325-
for ii in $(grep ^.pkg* $TMP_PKGADD); do
326-
pkgfiles="$pkgfiles $ii"
327-
done
328-
329-
if [ "$pkgfiles" ]; then
330-
tar -x -f "$PKGNAME" -C "$ROOT_DIR/$PKGDB_DIR/$name" $pkgfiles >/dev/null 2>&1
331-
fi
332-
333-
if [ -f "$ROOT_DIR/$PKGDB_DIR/$name/.pkginstall" ]; then
334-
if [ ! "$NO_POSTINSTALL" ] && [ ! "$UPGRADE_PKG" ]; then
335-
(cd "$ROOT_DIR"/
336-
run_scripts "$PKGDB_DIR/$name/.pkginstall" post-install "$version"
337-
)
286+
echo "$version $release" > "$ROOT_DIR/$PKGDB_DIR/$name"
287+
cat "$TMP_PKGINSTALL" >> "$ROOT_DIR/$PKGDB_DIR/$name"
288+
mkdir -p "$ROOT_DIR/$PKGDBPERMS_DIR"
289+
grep '/$' $TMP_PKGADD | while read -r perms own junk1 junk2 junk3 dir; do
290+
if [ "$perms" != drwxr-xr-x ] || [ "$own" != root/root ]; then
291+
echo "$perms $own $dir" >> "$ROOT_DIR/$PKGDBPERMS_DIR/$name"
292+
[ -s "$ROOT_DIR/$PKGDBPERMS_DIR/$name" ] || rm "$ROOT_DIR/$PKGDBPERMS_DIR/$name"
338293
fi
339-
if [ "$UPGRADE_PKG" ] && [ ! "$NO_POSTUPGRADE" ]; then
340-
(cd "$ROOT_DIR"/
341-
run_scripts "$PKGDB_DIR/$name/.pkginstall" post-upgrade "$version" "$iversion"
342-
)
343-
fi
344-
fi
294+
done
345295

346296
# running ldconfig
347297
if [ -x "$ROOT_DIR"/sbin/ldconfig ]; then

0 commit comments

Comments
 (0)