|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
# This file is part of dracut.
|
|
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
|
|
|
|
# shellcheck disable=SC2034
|
|
|
|
TEST_DESCRIPTION="rpm integrity after dracut and kernel install"
|
|
|
|
|
|
|
|
test_check() {
|
|
|
|
# disable for now
|
|
|
|
return 1
|
|
|
|
command -v rpm &> /dev/null && (command -v yum || command -v dnf) &> /dev/null
|
|
|
|
}
|
|
|
|
|
|
|
|
test_run() {
|
|
|
|
set -x
|
|
|
|
set -e
|
|
|
|
export rootdir=$TESTDIR/root
|
|
|
|
|
|
|
|
mkdir -p "$rootdir"
|
|
|
|
|
|
|
|
mkdir -p "$rootdir/proc"
|
|
|
|
mkdir -p "$rootdir/sys"
|
|
|
|
mkdir -p "$rootdir/dev"
|
|
|
|
mkdir -p "$rootdir/boot"
|
|
|
|
|
|
|
|
trap 'ret=$?; [[ -d $rootdir ]] && { umount "$rootdir/proc"; umount "$rootdir/sys"; umount "$rootdir/dev"; rm -rf -- "$rootdir"; } || :; exit $ret;' EXIT
|
|
|
|
trap '[[ -d $rootdir ]] && { umount "$rootdir/proc"; umount "$rootdir/sys"; umount "$rootdir/dev"; rm -rf -- "$rootdir"; } || :; exit 1;' SIGINT
|
|
|
|
|
|
|
|
mount --bind /proc "$rootdir/proc"
|
|
|
|
mount --bind /sys "$rootdir/sys"
|
|
|
|
mount -t devtmpfs devtmpfs "$rootdir/dev"
|
|
|
|
|
|
|
|
mkdir -p "$rootdir/$TESTDIR"
|
|
|
|
cp --reflink=auto -a \
|
|
|
|
"$TESTDIR"/dracut-[0-9]*."$(uname -m)".rpm \
|
|
|
|
"$TESTDIR"/dracut-network-[0-9]*."$(uname -m)".rpm \
|
|
|
|
"$rootdir/$TESTDIR/"
|
|
|
|
. /etc/os-release
|
|
|
|
dnf_or_yum=yum
|
|
|
|
dnf_or_yum_cmd=yum
|
|
|
|
command -v dnf > /dev/null && {
|
|
|
|
dnf_or_yum="dnf"
|
|
|
|
dnf_or_yum_cmd="dnf --allowerasing"
|
|
|
|
}
|
|
|
|
for ((i = 0; i < 5; i++)); do
|
|
|
|
if $dnf_or_yum_cmd -v --nogpgcheck --installroot "$rootdir"/ --releasever "$VERSION_ID" --disablerepo='*' \
|
|
|
|
--enablerepo=fedora --enablerepo=updates --setopt=install_weak_deps=False \
|
|
|
|
install -y \
|
|
|
|
$dnf_or_yum \
|
|
|
|
passwd \
|
|
|
|
rootfiles \
|
|
|
|
systemd \
|
|
|
|
systemd-udev \
|
|
|
|
kernel \
|
|
|
|
kernel-core \
|
|
|
|
redhat-release \
|
|
|
|
device-mapper-multipath \
|
|
|
|
lvm2 \
|
|
|
|
mdadm \
|
|
|
|
bash \
|
|
|
|
iscsi-initiator-utils \
|
|
|
|
"$TESTDIR"/dracut-[0-9]*."$(uname -m)".rpm; then
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
((i < 5))
|
|
|
|
|
|
|
|
cat > "$rootdir"/test.sh << EOF
|
|
|
|
#!/bin/bash
|
|
|
|
set -x
|
|
|
|
export LC_MESSAGES=C
|
|
|
|
rpm -Va 2>&1 | \\
|
|
|
|
grep -F \\
|
|
|
|
'85-display-manager.preset| /run| /var| /usr/lib/variant| /etc/machine-id| /etc/systemd/system/dbus-org.freedesktop.network1.service| /etc/systemd/system/dbus-org.freedesktop.resolve1.service| /etc/udev/hwdb.bin| /usr/share/info/dir.old' \\
|
|
|
|
&> /test.output
|
|
|
|
|
|
|
|
find / -xdev -type f -not -path '/var/*' \\
|
|
|
|
-not -path '/usr/lib/modules/*/modules.*' \\
|
|
|
|
-not -path '/etc/*-' \\
|
|
|
|
-not -path '/etc/.pwd.lock' \\
|
|
|
|
-not -path '/run/mount/utab' \\
|
|
|
|
-not -path '/test.sh' \\
|
|
|
|
-not -path '/test.output' \\
|
|
|
|
-not -path '/etc/nsswitch.conf.bak' \\
|
|
|
|
-not -path '/etc/iscsi/initiatorname.iscsi' \\
|
|
|
|
-not -path '/boot/*0-rescue*' \\
|
|
|
|
-not -path '/usr/share/mime/*' \\
|
|
|
|
-not -path '/etc/crypto-policies/*' \\
|
|
|
|
-not -path '/dev/null' \\
|
|
|
|
-not -path "/boot/loader/entries/\$(cat /etc/machine-id)-*" \\
|
|
|
|
-not -path "/boot/\$(cat /etc/machine-id)/*" \\
|
|
|
|
-not -path '/etc/openldap/certs/*' \\
|
|
|
|
-not -path '/etc/dnf/*' \\
|
|
|
|
-print0 | xargs -0 rpm -qf | \\
|
|
|
|
grep -F 'not owned' &>> /test.output || :
|
|
|
|
exit 0
|
|
|
|
EOF
|
|
|
|
|
|
|
|
chmod 0755 "$rootdir/test.sh"
|
|
|
|
|
|
|
|
chroot "$rootdir" /test.sh || :
|
|
|
|
|
|
|
|
if [[ -s "$rootdir"/test.output ]]; then
|
|
|
|
failed=1
|
|
|
|
echo TEST Failed >&2
|
|
|
|
cat "$rootdir"/test.output >&2
|
|
|
|
fi
|
|
|
|
|
|
|
|
umount "$rootdir/proc"
|
|
|
|
umount "$rootdir/sys"
|
|
|
|
umount "$rootdir/dev"
|
|
|
|
|
|
|
|
[[ $failed ]] && return 1
|
|
|
|
return 0
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
test_setup() {
|
|
|
|
make -C "$basedir" DESTDIR="$TESTDIR/" rpm
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
test_cleanup() {
|
|
|
|
rm -fr -- "$TESTDIR"/*.rpm
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
# shellcheck disable=SC1090
|
|
|
|
. "$testdir"/test-functions
|