wok diff cookutils/stuff/repo-cooking @ rev 24915

updated monitorix (3.12.0 -> 3.14.0)
author Hans-G?nter Theisgen
date Sat Apr 09 16:53:38 2022 +0100 (2022-04-09)
parents
children
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/cookutils/stuff/repo-cooking	Sat Apr 09 16:53:38 2022 +0100
     1.3 @@ -0,0 +1,216 @@
     1.4 +#!/bin/sh
     1.5 +
     1.6 +# Make repo.json for Repology using SliTaz Cooking packages
     1.7 +# Aleksey Bobylev <al.bobylev@gmail.com>
     1.8 +#
     1.9 +# 2018-08-11: initial, working on my localhost
    1.10 +# 2018-09-04: fix paths for use at Tank
    1.11 +# 2018-09-08: fix space in src, fix md5sum when EXTRAVERSION used, skip empty src, skip broken, store log
    1.12 +# 2019-01-15: block parallel execution
    1.13 +# 2019-01-23: drop duplicate lines in DB (if any), discard empty repo.json, use absolute paths
    1.14 +
    1.15 +mirror='/home/slitaz/packages'
    1.16 +local_repo='/home/slitaz/wok-hg'
    1.17 +
    1.18 +my_log="/home/slitaz/log/repo-cooking.$(date '+%Y%m%d_%H%M%S')"
    1.19 +block='/home/slitaz/log/repo-cooking.block'
    1.20 +
    1.21 +local_bin=/root/bin
    1.22 +
    1.23 +# packages.info
    1.24 +#  1: name
    1.25 +#  2: version
    1.26 +#  3: category
    1.27 +#  4: short description
    1.28 +#  5: home
    1.29 +#  6: tags
    1.30 +#  7: size_packed size_unpacked
    1.31 +#  8: dependencies
    1.32 +#  9: checksum
    1.33 +# 10: maintainer
    1.34 +# 11: license
    1.35 +# 12: src URL
    1.36 +# 13: wanted
    1.37 +# 14: build dependencies
    1.38 +# 15: package md5sum
    1.39 +# 16: version without extraversion
    1.40 +
    1.41 +timestamp1=$(date '+%s')
    1.42 +date_for_json=$(date '+%F %T')
    1.43 +
    1.44 +if [ -e "$block" ]; then
    1.45 +	echo "$0 already executed. Exit" | tee "$my_log"
    1.46 +	exit 1
    1.47 +fi
    1.48 +touch "$block"
    1.49 +
    1.50 +ls ${my_log%.*}* | sed '1,10d;s|.*|rm -f &|' | sh    # keep only 10 log files
    1.51 +
    1.52 +
    1.53 +tempd=$(mktemp -d)
    1.54 +
    1.55 +sort -u $mirror/packages.info > $tempd/packages.info # drop duplicate lines
    1.56 +sort -u $mirror/packages.md5  > $tempd/packages.md5  #
    1.57 +
    1.58 +# get base settings
    1.59 +c_version=$(awk -F$'\t' -vp='cookutils' '{if ($1 == p) {print $2; exit}}' $tempd/packages.info) #'
    1.60 +cp $mirror/cookutils-$c_version.tazpkg $tempd/
    1.61 +
    1.62 +cd $tempd
    1.63 +tazpkg extract $tempd/cookutils-$c_version.tazpkg 2>/dev/null >&2
    1.64 +cp $tempd/cookutils-$c_version/fs/etc/slitaz/cook.conf $tempd/
    1.65 +rm $tempd/cookutils-$c_version.tazpkg
    1.66 +rm -r $tempd/cookutils-$c_version/
    1.67 +
    1.68 +# define some useful variables
    1.69 +. $tempd/cook.conf
    1.70 +
    1.71 +
    1.72 +ls $local_repo \
    1.73 +| while read pkg_i; do
    1.74 +	i=$(( i + 1 ))
    1.75 +	[ -f "$local_repo/$pkg_i/receipt" ] || continue
    1.76 +
    1.77 +	unset MAINTAINER LICENSE WGET_URL WANTED BUILD_DEPENDS VERSION EXTRAVERSION
    1.78 +
    1.79 +	case $i in
    1.80 +		*00) echo $i;;
    1.81 +		*0)  echo -n $i;;
    1.82 +	esac
    1.83 +	echo -n '.'
    1.84 +
    1.85 +	. "$local_repo/$pkg_i/receipt"
    1.86 +
    1.87 +	MAINTAINER=$(echo $MAINTAINER | sed 's|.*<||; s|>||')
    1.88 +
    1.89 +	LICENSE=$(echo $LICENSE)
    1.90 +
    1.91 +	WGET_URL=$(echo $WGET_URL | sed 's#^git|git#git#; s#^git|https*#git#; s#^svn|https*#svn#; s#^subversion|svn#svn#; s#^subversion|https*#svn#; s#^svn|svn#svn#; s#^hg|#hg://#; s#^mercurial|#hg://#; s#^bzr|#bzr://#; s#^cvs|#cvs://#')
    1.92 +
    1.93 +	WANTED=$(echo $WANTED)
    1.94 +	case $pkg_i in
    1.95 +		locale-*-extra) WANTED='slitaz-i18n-extra';;
    1.96 +		locale-*)       WANTED='slitaz-i18n';;
    1.97 +	esac
    1.98 +
    1.99 +	BUILD_DEPENDS=$(echo $BUILD_DEPENDS)
   1.100 +
   1.101 +	MD5SUM="$(fgrep "  $pkg_i-$VERSION" $tempd/packages.md5 | cut -d' ' -f1)"
   1.102 +	if [ $(echo "$MD5SUM" | wc -l) -ne 1 ]; then
   1.103 +		echo "$pkg_i: error: multiple md5sum" >>$my_log
   1.104 +	fi
   1.105 +
   1.106 +	sed -i "/^$pkg_i	/ s|$|	$MAINTAINER	$LICENSE	$WGET_URL	$WANTED	$BUILD_DEPENDS	$MD5SUM	$VERSION|" $tempd/packages.info
   1.107 +done
   1.108 +echo
   1.109 +echo
   1.110 +
   1.111 +timestamp2=$(date '+%s')
   1.112 +echo "Stage 1:  $(( timestamp2 - timestamp1 )) s" >>$my_log
   1.113 +echo "Packages: $(wc -l ./packages.info)" >>$my_log
   1.114 +echo >>$my_log
   1.115 +
   1.116 +
   1.117 +
   1.118 +{
   1.119 +	echo '{"repo":"SliTaz Cooking","date":"'$date_for_json'","items":['
   1.120 +
   1.121 +	comma_up=''
   1.122 +
   1.123 +	{ ls $local_repo; echo '@the_end@'; } \
   1.124 +	| while read pkg_i; do
   1.125 +		echo "$pkg_i" >&2
   1.126 +
   1.127 +		case $pkg_i in
   1.128 +			@the_end@) echo ']}'; break;;
   1.129 +			get-*)     continue;;
   1.130 +		esac
   1.131 +
   1.132 +		pkg_line=$(sed -n "/^$pkg_i	/p" $tempd/packages.info)
   1.133 +
   1.134 +		wanted=$(echo "$pkg_line" | cut -d$'\t' -f 13)
   1.135 +		[ -z "$wanted" ] || continue
   1.136 +
   1.137 +		echo "$pkg_i" >> $tempd/packages.txt
   1.138 +
   1.139 +		ver=$(       echo "$pkg_line" | cut -d$'\t' -f 16)
   1.140 +		home=$(      echo "$pkg_line" | cut -d$'\t' -f 5)
   1.141 +		maintainer=$(echo "$pkg_line" | cut -d$'\t' -f 10)
   1.142 +		license=$(   echo "$pkg_line" | cut -d$'\t' -f 11 | sed 's| |","|g')
   1.143 +		if [ -z "$license" ]; then
   1.144 +			echo "$pkg_i: license is empty" >>$my_log
   1.145 +			license='unknown'
   1.146 +		fi
   1.147 +		src=$(       echo "$pkg_line" | cut -d$'\t' -f 12 | sed 's| .*||')
   1.148 +		bdeps=$(     echo "$pkg_line" | cut -d$'\t' -f 14 | sed 's| |","|g')
   1.149 +
   1.150 +		# skip
   1.151 +		if [ -z "$ver" ]; then
   1.152 +			echo "$pkg_i: ver empty, skip" >>$my_log
   1.153 +			continue
   1.154 +		fi
   1.155 +
   1.156 +		echo "$comma_up{\"meta\":\"$pkg_i\", \"ver\":\"$ver\", \"maintainer\":\"$maintainer\", \"home\":\"$home\", \"license\":[\"$license\"]"
   1.157 +
   1.158 +		[ -z "$src"   ] || echo ", \"src\":\"$src\""
   1.159 +		[ -z "$bdeps" ] || echo ", \"bdeps\":[\"$bdeps\"]"
   1.160 +
   1.161 +		echo ", \"pkgs\":["
   1.162 +
   1.163 +		comma_up=','
   1.164 +		comma=''
   1.165 +
   1.166 +		want=$(awk -F$'\t' -vp="$pkg_i" '{if ($13 == p) {print $1}}' $tempd/packages.info) #'
   1.167 +		for pkg_j in $pkg_i $want; do
   1.168 +			echo "  - $pkg_j" >> $tempd/packages.txt
   1.169 +
   1.170 +			pkg_line=$(sed -n "/^$pkg_j	/p" $tempd/packages.info)
   1.171 +
   1.172 +			echo $comma; comma=','
   1.173 +
   1.174 +			ver_sub=$(echo "$pkg_line" | cut -d$'\t' -f 16)
   1.175 +			if [ "$ver" != "$ver_sub" ]; then
   1.176 +				echo "$pkg_i > $pkg_j: version mismatch '$ver' -> '$ver_sub'" >>$my_log
   1.177 +			fi
   1.178 +
   1.179 +			ver_ext=$(       echo "$pkg_line" | cut -d$'\t' -f 2)
   1.180 +			cat=$(           echo "$pkg_line" | cut -d$'\t' -f 3)
   1.181 +			desc=$(          echo "$pkg_line" | cut -d$'\t' -f 4 | sed 's|"|\\"|g')
   1.182 +			tags=$(          echo "$pkg_line" | cut -d$'\t' -f 6 | sed 's| |","|g')
   1.183 +			pkg_size=$(      echo "$pkg_line" | cut -d$'\t' -f 7 | cut -d' ' -f1)
   1.184 +			installed_size=$(echo "$pkg_line" | cut -d$'\t' -f 7 | cut -d' ' -f2)
   1.185 +			deps=$(          echo "$pkg_line" | cut -d$'\t' -f 8 | sed 's| |","|g')
   1.186 +			pkg_md5sum=$(    echo "$pkg_line" | cut -d$'\t' -f 15)
   1.187 +
   1.188 +			echo "{\"name\":\"$pkg_j\", \"cat\":\"$cat\", \"desc\":\"$desc\""
   1.189 +
   1.190 +			[ -z "$tags" ] || echo ",\"tags\":[\"$tags\"]"
   1.191 +
   1.192 +			[ -z "$deps" ] || echo ",\"deps\":[\"$deps\"]"
   1.193 +
   1.194 +			echo ",\"pkg_size\":\"$pkg_size\", \"installed_size\":\"$installed_size\", \"pkg_md5sum\":\"$pkg_md5sum\", \"get\":\"http://mirror.slitaz.org/packages/cooking/$pkg_j-$ver_ext.tazpkg\""
   1.195 +
   1.196 +			echo '}'
   1.197 +		done
   1.198 +
   1.199 +		echo ']}'
   1.200 +	done
   1.201 +} > $tempd/repo-dirt.json
   1.202 +
   1.203 +cat $tempd/repo-dirt.json | $local_bin/jq '.' > $tempd/repo.json
   1.204 +
   1.205 +if [ -s $tempd/repo.json ]; then
   1.206 +	gzip $tempd/repo.json
   1.207 +	$local_bin/advdef -z4 $tempd/repo.json.gz
   1.208 +	mv $tempd/repo.json.gz $mirror
   1.209 +else
   1.210 +	echo "ERROR! New repo.json was discarded" >>$my_log
   1.211 +fi
   1.212 +
   1.213 +rm -rf $tempd
   1.214 +
   1.215 +timestamp3=$(date '+%s')
   1.216 +
   1.217 +echo -e "\nStage 2: $(( timestamp3 - timestamp2 )) s" >>$my_log
   1.218 +echo "Finished: $(date '+%F %T')" >>$my_log
   1.219 +rm "$block"