#!/bin/sh set -e verify_by_hash() { for hash_gen in SHA256:sha256sum SHA512:sha512sum; do hash=$(echo ${hash_gen} | cut -f1 -d:) gen=$(echo ${hash_gen} | cut -f2 -d:) testsuccess stat aptarchive/dists/unstable/main/binary-i386/by-hash/$hash/$($gen aptarchive/dists/unstable/main/binary-i386/Packages | cut -f1 -d' ') testsuccess stat aptarchive/dists/unstable/main/binary-i386/by-hash/$hash/$($gen aptarchive/dists/unstable/main/binary-i386/Packages.gz | cut -f1 -d' ') done } # # main() # TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment configarchitecture 'i386' configcompression 'gz' '.' confighashes 'SHA256' 'SHA512' # enable by-hash in apt-ftparchive echo 'APT::FTPArchive::DoByHash "1";' >> aptconfig.conf # build one package buildsimplenativepackage 'foo' 'i386' '1' 'unstable' buildaptarchivefromincoming # verify initial run verify_by_hash previous_hash=$(sha256sum aptarchive/dists/unstable/main/binary-i386/Packages | cut -f1 -d' ') # insert new package buildsimplenativepackage 'bar' 'i386' '1' 'unstable' # and build again buildaptarchivefromincoming # ensure the new package packag is there testsuccess zgrep "Package: bar" aptarchive/dists/unstable/main/binary-i386/Packages.gz # ensure we have the by-hash stuff verify_by_hash # ensure the old hash is still there testsuccess stat aptarchive/dists/unstable/main/binary-i386/by-hash/SHA256/$previous_hash # ensure we have it in the Release file testsuccess grep "Acquire-By-Hash: yes" aptarchive/dists/unstable/*Release # now ensure gc work for i in $(seq 3); do buildsimplenativepackage 'bar' 'i386' "$i" 'unstable' buildaptarchivefromincoming done hash_count=$(ls aptarchive/dists/unstable/main/binary-i386/by-hash/SHA256/|wc -l) # we have 2 files (uncompressed, gz) per run, 5 runs in total # by default apt-ftparchive keeps three generations (current plus 2 older) msgtest "Check that gc for by-hash works… " if [ "$hash_count" = "6" ]; then msgpass else echo "Got $hash_count expected 6" msgfail fi # ensure the current generation is still there verify_by_hash