mkpk

Систем за управљање пакетима који користи mk из система Plan9
git clone https://git.sr.ht/~strahinja/mkpk
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

package.mk (3430B)


      1 package:QV:
      2 	if [ "$NOBINDDIRS" -eq 1 ]; then
      3 		BINDDIRS=''
      4 	elif [ -z "$BINDDIRS" ]; then
      5 		BINDDIRS="-b /etc"
      6 	fi
      7 	printf "  MK\t%s\n" "clean"
      8 	"$MK" clean
      9 	printf "  MK\t%s\n" "DESTDIR=pkgroot install"
     10 	"$MK" DESTDIR=pkgroot install
     11 	printf "  PROOT\t%s\n" pkgroot
     12 	(cd pkgroot; find . | sort | uniq \
     13 		| sed 's,^\./,,;/^\.$/d;/filelist/d' > filelist)
     14 	"$PROOT" -r pkgroot -0 -b /bin/tar -b /bin/xz $BINDDIRS -w / \
     15 		tar -cJnf $PKG.tar.xz -T filelist
     16 	printf "  MV\t%s\n" $PKG.tar.xz
     17 	mv pkgroot/$PKG.tar.xz .
     18 	"$SHA512SUM" $PKG.tar.xz > $PKG.sha512
     19 	if [ "$SKIPCLEAN" -ne 1 ]; then
     20 		printf "  RM\t%s\n" pkgroot
     21 		rm -rf pkgroot
     22 	fi
     23 
     24 package-install:QV: package
     25 	printf "  INST\t%s\n" $PKG.tar.xz
     26 	"$INSTALL" -Dm0644 $PKG.tar.xz $PKGDIR/$PKG.tar.xz
     27 	printf "  INST\t%s\n" $PKG.sha512
     28 	"$INSTALL" -Dm0644 $PKG.sha512 $PKGDIR/$PKG.sha512
     29 
     30 package-fetch:QV:
     31 	if [ ! -d "$SRCBASEDIR" ]; then
     32 		printf "  MKDIR\t%s\n" "$SRCBASEDIR"
     33 		mkdir "$SRCBASEDIR"
     34 	fi
     35 	if [ ! -d "$SRCPKGDIR" ]; then
     36 		printf "  MKDIR\t%s\n" "$SRCPKGDIR"
     37 		mkdir "$SRCPKGDIR"
     38 	fi
     39 	cd "$SRCBASEDIR"
     40 	sums=$SHA512SUMS
     41 	dirs=$SRCDIRS
     42 	exdirs=$SRCEXDIRS
     43 	todirs=$SRCTODIRS
     44 	crdirs=$SRCCRDIRS
     45 	totarballs=$SRCTOTARBALLS
     46 	for srctarball in $SRCTARBALLS; do
     47 		currentsum=${sums%% *}
     48 		sums=${sums#* }
     49 		currentdir=${dirs%% *}
     50 		dirs=${dirs#* }
     51 		currentexdir=${exdirs%% *}
     52 		exdirs=${exdirs#* }
     53 		currenttodir=${todirs%% *}
     54 		todirs=${todirs#* }
     55 		currentcrdir=${crdirs%% *}
     56 		crdirs=${crdirs#* }
     57 		curtotarball=${totarballs%% *}
     58 		totarballs=${totarballs#* }
     59 		tbfile="${srctarball##*/}"
     60 		if [ -n "$currenttodir" ] && [ -d "$SRCPKGDIR/$currenttodir" ]
     61 		then
     62 			continue
     63 		elif [ -n "$currentdir" ] && [ -d "$SRCPKGDIR/$currentdir" ]
     64 		then
     65 			continue
     66 		fi
     67 		if [ -n "$curtotarball" ]; then
     68 			tbfile=$curtotarball
     69 		fi
     70 		if [ ! -e "$SRCPKGDIR/$tbfile" ]; then
     71 			printf "  CURL\t%s\n" "$tbfile"
     72 			$CURL -L "$srctarball" > "$SRCPKGDIR/$tbfile"
     73 			if [ -n "$currentsum" ]; then
     74 				printf "  SHA\t%s %s\n" -c "$tbfile"
     75 				if ! printf "%s  %s/%s\n" $currentsum \
     76 					$SRCPKGDIR \
     77 					${tbfile##*/} | $SHA512SUM -c -
     78 				then
     79 					printf "Checksum mismatch in %s\n" \
     80 						${tbfile##*/} >&2
     81 					exit 1
     82 				fi
     83 			fi
     84 		fi
     85 		case $tbfile in
     86 			*.tar.gz|*.tgz)
     87 				utility=TGZ
     88 				cmd='gunzip -dc';;
     89 			*.tar.bz2|*.tbz)
     90 				utility=TBZ
     91 				cmd='bunzip2 -dc';;
     92 			*.tar.xz|*.txz)
     93 				utility=TXZ
     94 				cmd='xz -dc';;
     95 			*.zip)	utility=ZIP;;
     96 			*)	printf "Unsupported archive format: %s\n" \
     97 					$tbfile
     98 				exit 1;;
     99 		esac
    100 		printf "  %s\t%s\n" $utility "$tbfile"
    101 		if [ "$utility" = "ZIP" ]; then
    102 			todir=$PKG
    103 			if [ -n "$currentexdir" ]; then
    104 				todir=$currentexdir
    105 			elif [ -n "$currentcrdir" ]; then
    106 				printf "  MKDIR\t%s\n" "$currentcrdir"
    107 				mkdir -p "$currentcrdir"
    108 				todir=$currentcrdir
    109 			fi
    110 			unzip -d "$todir" "$SRCPKGDIR/$tbfile"
    111 		else
    112 			$cmd "$SRCPKGDIR/$tbfile" | $TAR -xf -
    113 		fi
    114 		unset utility cmd todir
    115 		if [ -n "$currenttodir" ]; then
    116 			printf "  RM\t-fr %s\n" "$SRCBASEDIR/$currenttodir"
    117 			rm -fr "$SRCBASEDIR/$currenttodir"
    118 			printf "  MV\t%s/%s\n" "$SRCBASEDIR" "$currenttodir"
    119 			mv "$SRCBASEDIR/$currentdir" "$SRCBASEDIR/$currenttodir"
    120 		fi
    121 	done
    122 	for srcrepo in $SRCREPOS; do
    123 		repodir="${srcrepo##*/}"
    124 		if [ ! -d "$repodir" ]; then
    125 			printf "  GIT\t%s %s\n" clone "$repodir"
    126 			$GIT clone "$srcrepo"
    127 		else
    128 			cd "$repodir"
    129 			printf "  GIT\t%s %s\n" pull "$repodir"
    130 			$GIT pull --ff-only
    131 			cd - >/dev/null
    132 		fi
    133 	done