чување 1285fb28a295cfcf502ec545e9eca3ee0bc9c474
родитељ 6e7f68059c0ae7d61ea10a9e3979456694422e75
Аутор: Страхиња Радић <contact@strahinja.org>
Датум: Thu, 4 Aug 2022 21:08:44 +0200
Add fetch; check SHA512 sums before installing
Signed-off-by: Страхиња Радић <contact@strahinja.org>
Diffstat:
измењених датотека: 6, додавања: 55(+), брисања: 10(-)
diff --git a/TODO b/TODO
@@ -1,9 +1,9 @@
TODO
====
-[ ] mkpk fetch
+[x] mkpk fetch
-[ ] Actually check SHA512 sums when installing
+[x] Actually check SHA512 sums when installing
[x] More accurately locate packages based on name (currently, "gcc" refers also
to eg. directory "gcc-mlfs" if it happens to be under /src); keep fetched
diff --git a/lib/build.mk b/lib/build.mk
@@ -1,14 +1,21 @@
<$mkpklib/defaults.mk
build-package:QV:
- recentver=$(find $SRCBASEDIR/* -type d -prune -name "$PKGBASE-*" | \
- sed 's,\([^0-9]\+[^-]-\)\+\([0-9].*\),\2,' | recent)
- if [ -z "$recentver" ]; then
- printf "Directory %s does not exist (try fetch?)" \
- "$PKGBASE" >&2
- exit 1
+ if [ -d "$SRCBASEDIR/$PKGBASE" ]; then
+ # No ver = git clone
+ found=$SRCBASEDIR/$PKGBASE
+ else
+ # From source tarball
+ recentver=$(find $SRCBASEDIR/* -type d -prune \
+ -name "$PKGBASE-*" | \
+ sed 's,\([^0-9]\+[^-]-\)\+\([0-9].*\),\2,' | recent)
+ if [ -z "$recentver" ]; then
+ printf "Directory %s does not exist (try fetch?)" \
+ "$PKGBASE" >&2
+ exit 1
+ fi
+ found=$SRCBASEDIR/$PKGBASE-$recentver
fi
- found=$SRCBASEDIR/$PKGBASE-$recentver
cp -R "$SRCMKFILES/$PKGBASE"/* "$found/"
cd "$found"
"$MK" package-install
diff --git a/lib/defaults.mk b/lib/defaults.mk
@@ -29,6 +29,7 @@ LDFLAGS= `{ if [ -n "$LDFLAGS" ]; then echo $LDFLAGS; \
BC= `{ if [ -n "$BC" ]; then echo $BC; \
else echo /plan9/bin/bc; fi }
CC= `{ if [ -n "$CC" ]; then echo $CC; else echo cc; fi }
+CURL= `{ if [ -n "$CURL" ]; then echo $CURL; else echo curl; fi }
DATE= `{ if [ -n "$DATE" ]; then echo $DATE; else echo date; fi }
GIT= `{ if [ -n "$GIT" ]; then echo $GIT; else echo git; fi }
GZ= `{ if [ -n "$GZ" ]; then echo $GZ; else echo gzip; fi }
diff --git a/lib/fetch.mk b/lib/fetch.mk
@@ -1,3 +1,9 @@
<$mkpklib/defaults.mk
-fetch-package:QV:
+fetch:QV:
+ if [ ! -d "$SRCMKFILES/$PKGBASE" ]; then
+ printf "Package %s not found in mkfiles\n" "$PKGBASE" >&2
+ exit 1
+ fi
+ cd "$SRCMKFILES/$PKGBASE"
+ "$MK" package-fetch
diff --git a/lib/install.mk b/lib/install.mk
@@ -11,6 +11,13 @@ install-package:QV:
exit 1
else
pkg=$PKGDIR/$PKGBASE-$recentver.tar.xz
+ sha=$PKGDIR/$PKGBASE-$recentver.sha512
+ cd "$PKGDIR"
+ printf " SHA512\t%s\n" "$sha"
+ if ! $SHA512SUM -c "$sha"; then
+ printf "Checksum mismatch in %s\n" "$sha" >&2
+ exit 1
+ fi
cd /
printf " TAR\t%s\n" "$pkg"
xz -dc "$pkg" | tar -xf - 2>/dev/null
diff --git a/lib/package.mk b/lib/package.mk
@@ -18,3 +18,27 @@ package-install:QV: package
"$INSTALL" -Dm0644 $PKG.tar.xz $PKGDIR/$PKG.tar.xz
printf " INST\t%s\n" $PKG.sha512
"$INSTALL" -Dm0644 $PKG.sha512 $PKGDIR/$PKG.sha512
+
+package-fetch:QV:
+ cd "$SRCBASEDIR"
+ for srctarball in $SRCTARBALLS; do
+ tbfile="${srctarball##*/}"
+ if [ ! -e "$tbfile" ]; then
+ printf " CURL\t%s\n" "$tbfile"
+ $CURL "$srctarball" > "$tbfile"
+ printf " TAR\t%s\n" "$tbfile"
+ xz -dc "$tbfile" | $TAR -xf -
+ fi
+ done
+ for srcrepo in $SRCREPOS; do
+ repodir="${srcrepo##*/}"
+ if [ ! -d "$repodir" ]; then
+ printf " GIT\t%s %s\n" clone "$repodir"
+ $GIT clone "$srcrepo"
+ else
+ cd "$repodir"
+ printf " GIT\t%s %s\n" pull "$repodir"
+ $GIT pull --ff-only
+ cd - >/dev/null
+ fi
+ done