#!/bin/sh set +e # its okay to fail in these script, most of the time the apt* stuff will generate errors if [ -z "$1" -o -z "$2" ]; then echo "Usage: $0 file codename pkg…" exit 1 fi CHECK_ARGS='no' TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" find_project_binary_dir BUILDDIRECTORY="${APT_INTEGRATION_TESTS_BUILD_DIR:-"${PROJECT_BINARY_DIR}/cmdline"}" GENERATE="$1" CODENAME="$2" shift 2 WORKDIR="$(mktemp -d)" cleanupworkdir() { if [ -z "$WORKDIR" ]; then return; fi rm -rf "$WORKDIR" } trap "cleanupworkdir;" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM touch "$WORKDIR/status" TMPGEN="$WORKDIR/Packages" export LANG=C.UTF-8 aptgetinstall() { aptget install "$@" --no-install-recommends -t "$CODENAME" -s \ -o Dir::state::status="$WORKDIR/status" \ -o Dir::Cache="$WORKDIR" \ -o pkgCacheGen::Essential=none \ -o APT::Immediate-Configure=0 } LISTOFPKGS="$(aptgetinstall "$@" 2> /dev/null | awk '/^Inst/ {print $2}' | sed -e "s#\$#/$CODENAME#")" if [ -z "$LISTOFPKGS" ]; then echo "List of packages is empty: run apt-get install command again for you now" aptgetinstall exit 1 fi aptcache show $LISTOFPKGS --no-all-versions 2> "$WORKDIR/error.lst" | sed -e '/^ / d' \ -e '/^SHA1: / d' -e '/^SHA256: / d' \ -e '/^Homepage: / d' -e '/^Tag: / d' \ -e '/^Xul-Appid: / d' \ -e '/^Status: / d' \ -e 's/^Description-en:/Description:/' \ > "$TMPGEN" if [ "$CODENAME" = "experimental" ]; then aptcache show $(cut -d"'" -f 4 "$WORKDIR/error.lst" | sed -e 's#$#/sid#') --no-all-versions 2> /dev/null >> "$TMPGEN" fi if echo "$GENERATE" | grep '^status-' > /dev/null; then sed -i "$TMPGEN" -e '/^Package: / a\ Status: install ok installed' \ -e '/^Filename: / d' -e '/^Size: / d' -e '/^MD5sum: / d' fi apt-sortpkgs "$TMPGEN" > "$GENERATE"