# HG changeset patch # User Aleksej Bobylev # Date 1430654849 -10800 # Node ID 2cf877e5b1677e2c7d6a3870bf4cc1985dab3ee2 # Parent 851a2b8075dc6c67c36ddec39e2e7b60470f2bd6 cook pkgdb: provide new mechanism of recharging: IDs contains "old" ID plus timestamp, bundle.tar.lzma contains all "old" recharge files plus files.list.md5 to determine whether to download massive files.list.lzma or not. diff -r 851a2b8075dc -r 2cf877e5b167 cook --- a/cook Fri Apr 17 14:10:59 2015 +0200 +++ b/cook Sun May 03 15:07:29 2015 +0300 @@ -1348,20 +1348,26 @@ echo "cook:pkgdb" > $command _ "Cook pkgdb: Creating all packages lists" | log newline; _ "Creating lists for: \$PKGS"; separator + datenow=$(date "$(_ '+%Y-%m-%d %H:%M')") _ "Cook pkgdb started: \$datenow" + cd $PKGS rm -f packages.* extra.list ln -s ../get.list extra.list + _ "Creating: packages.list" ls -1 *.tazpkg | sed s'/.tazpkg//' > $PKGS/packages.list + _ "Creating: packages.md5" md5sum *.tazpkg > $PKGS/packages.md5 + md5sum packages.md5 | cut -f1 -d' ' > ID + ( cat ./ID | tr $'\n' ' '; date -ur ./ID +%s ) > IDs # md5 and timestamp + _ "Creating lists from: \$WOK" cd $WOK - for pkg in * - do + for pkg in *; do unset_receipt . $pkg/receipt # PACKED_SIZE and UNPACKED_SIZE are only in built receipt @@ -1420,15 +1426,25 @@ # files.list.lzma _ "Creating: files.list.lzma" touch $PKGS/files.list - cd $PKGS; lzma e files.list files.list.lzma - rm -f files.list + # Pre-sorting filenames causes 10% smaller resulting lzma file + cat $PKGS/files.list | sort -k2 -o $PKGS/files.list.sorted + cd $PKGS; lzma e files.list.sorted files.list.lzma + rm -f files.list files.list.sorted + + md5sum files.list.lzma | cut -d' ' -f1 | tr -d $'\n' > files.list.md5 # packages.info.lzma PI=packages.info _ 'Creating: packages.info.lzma' touch $PKGS/$PI cd $PKGS; lzma e $PI $PI.lzma - rm -f $PI + + # Make bundle to fast recharge + _ 'Creating: bundle.tar.lzma' + [ -f bundle.tar.lzma ] && rm bundle.tar.lzma + busybox tar -caf bundle.tar.lzma \ + extra.list mirrors files.list.md5 packages.info \ + packages.desc packages.md5 packages.txt packages.list packages.equiv # Display some info. separator