summaryrefslogtreecommitdiffstats
path: root/tests/eatmydata-via-hook-dir
diff options
context:
space:
mode:
Diffstat (limited to 'tests/eatmydata-via-hook-dir')
-rw-r--r--tests/eatmydata-via-hook-dir43
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/eatmydata-via-hook-dir b/tests/eatmydata-via-hook-dir
new file mode 100644
index 0000000..0df72df
--- /dev/null
+++ b/tests/eatmydata-via-hook-dir
@@ -0,0 +1,43 @@
+#!/bin/sh
+set -eu
+export LC_ALL=C.UTF-8
+cat << SCRIPT > /tmp/checkeatmydata.sh
+#!/bin/sh
+set -exu
+cat << EOF | diff - "\$1"/usr/bin/dpkg
+#!/bin/sh
+exec /usr/bin/eatmydata /usr/bin/dpkg.distrib "\\\$@"
+EOF
+[ -e "\$1"/usr/bin/eatmydata ]
+SCRIPT
+chmod +x /tmp/checkeatmydata.sh
+# first four bytes: magic
+elfheader="\\177ELF"
+# fifth byte: bits
+case "$(dpkg-architecture -qDEB_HOST_ARCH_BITS)" in
+ 32) elfheader="$elfheader\\001";;
+ 64) elfheader="$elfheader\\002";;
+ *) echo "bits not supported"; exit 1;;
+esac
+# sixth byte: endian
+case "$(dpkg-architecture -qDEB_HOST_ARCH_ENDIAN)" in
+ little) elfheader="$elfheader\\001";;
+ big) elfheader="$elfheader\\002";;
+ *) echo "endian not supported"; exit 1;;
+esac
+# seventh and eigth byte: elf version (1) and abi (unset)
+elfheader="$elfheader\\001\\000"
+{{ CMD }} --mode=root --variant=apt \
+ --customize-hook=/tmp/checkeatmydata.sh \
+ --essential-hook=/tmp/checkeatmydata.sh \
+ --extract-hook='printf "'"$elfheader"'" | cmp --bytes=8 - "$1"/usr/bin/dpkg' \
+ --hook-dir=./hooks/eatmydata \
+ --customize-hook='printf "'"$elfheader"'" | cmp --bytes=8 - "$1"/usr/bin/dpkg' \
+ {{ DIST }} /tmp/debian-chroot {{ MIRROR }}
+ tar -C /tmp/debian-chroot --one-file-system -c . \
+ | tar -t \
+ | sort \
+ | grep -v '^\./var/lib/dpkg/diversions\(-old\)\?$' \
+ | diff -u tar1.txt -
+rm /tmp/checkeatmydata.sh
+rm -r /tmp/debian-chroot