wok diff cookutils/stuff/repo-cooking @ rev 25376
updated tzdata (2019c -> 2022a)
author | Hans-G?nter Theisgen |
---|---|
date | Sat Jul 30 10:43:02 2022 +0100 (2022-07-30) |
parents | |
children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/cookutils/stuff/repo-cooking Sat Jul 30 10:43:02 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"