rh-bkr: build package for beaker script in beaker task

Building NetworkManager during kickstart has the serious disadvantage
that we don't yet run the installed system. E.g. if the kernel has
issues there, it fails `make check` of the build process, although
the later run kernel is fine.

Also, a failure during kickstart does not allow to access the machine
later to inspect the failure reason (e.g. the testing logfiles).

Instead, move the building to a separate script and run it as a beaker
task.
This commit is contained in:
Thomas Haller 2016-01-14 13:56:37 +01:00
parent 1d2133d8b8
commit b33afa291a
2 changed files with 131 additions and 73 deletions

View file

@ -0,0 +1,126 @@
#!/bin/bash
set -e
set -xv
BUILD_DIR="${BUILD_DIR:-/tmp/nm-build}"
BUILD_ID="${BUILD_ID:-master}"
BUILD_REPO="${BUILD_REPO-git://anongit.freedesktop.org/NetworkManager/NetworkManager}"
ARCH="${ARCH:-`arch`}"
DO_TEST_BUILD="${DO_TEST_BUILD:-yes}"
DO_TEST_PACKAGE="${DO_TEST_PACKAGE:-yes}"
DO_INSTALL="${DO_INSTALL:-yes}"
if [ -z "$SUDO" ]; then
unset SUDO
fi
$SUDO yum install \
git \
rpm-build \
valgrind \
dbus-devel \
dbus-glib-devel \
wireless-tools-devel \
glib2-devel \
gobject-introspection-devel \
gettext-devel \
pkgconfig \
libnl3-devel \
'perl(XML::Parser)' \
'perl(YAML)' \
automake \
ppp-devel \
nss-devel \
dhclient \
readline-devel \
audit-libs-devel \
gtk-doc \
libudev-devel \
libuuid-devel \
libgudev1-devel \
vala-tools \
iptables \
bluez-libs-devel \
systemd \
libsoup-devel \
libndp-devel \
ModemManager-glib-devel \
newt-devel \
/usr/bin/dbus-launch \
pygobject3-base \
dbus-python \
libselinux-devel \
polkit-devel \
teamd-devel \
-y
# for the tests, let's pre-load some modules:
$SUDO modprobe ip_gre
mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR"
rm -rf "./NetworkManager"
git clone "$BUILD_REPO"
cd "./NetworkManager/"
git checkout "$BUILD_ID"
if [[ "$DO_TEST_BUILD" == yes ]]; then
NOCONFIGURE=yes ./autogen.sh
./configure \
--enable-maintainer-mode \
--enable-more-warnings=error \
--prefix=/opt/test \
--sysconfdir=/etc \
--enable-gtk-doc \
--enable-more-asserts \
--with-more-asserts=100 \
--enable-more-logging \
--enable-compile-warnings=yes\
--with-valgrind=no \
--enable-concheck \
--enable-ifcfg-rh \
--enable-ifcfg-suse \
--enable-ifupdown \
--enable-ifnet \
--enable-vala=yes \
--enable-polkit=yes \
--with-nmtui=yes \
--with-modem-manager-1 \
--with-suspend-resume=systemd \
--enable-teamdctl=yes \
--enable-tests=root \
--with-netconfig=yes \
--with-crypto=nss \
--with-session-tracking=systemd \
--with-consolekit=yes \
--with-systemd-logind=yes \
--with-consolekit=yes
make -j4
make check -k
fi
if [[ "$DO_TEST_PACKAGE" == yes || "$DO_INSTALL" == yes ]]; then
./contrib/fedora/rpm/build_clean.sh -c
fi
if [[ "$DO_INSTALL" == yes ]]; then
pushd "./contrib/fedora/rpm/latest/RPMS/$ARCH/"
for p in $(ls -1 ./*.rpm | sed 's#.*\(NetworkManager.*\)-1\.[0-9]\..*#\1#'); do
$SUDO rpm -e --nodeps $p || true
done
$SUDO yum install -y ./*.rpm
popd
# ensure that the expected NM is installed.
COMMIT_ID="$(git rev-parse --verify HEAD | sed 's/^\(.\{10\}\).*/\1/')"
$SUDO yum list installed NetworkManager | grep -q -e "\.$COMMIT_ID\."
$SUDO systemctl restart NetworkManager
fi
echo "BUILDING $BUILD_ID COMPLETED SUCCESSFULLY"

View file

@ -53,79 +53,6 @@ if [[ -n "$RPM_LIST" ]]; then
yum install -y $RPM_LIST
fi
if [[ -n "$BUILD_ID" ]]; then
yum install -y git rpm-build valgrind dbus-devel dbus-glib-devel wireless-tools-devel glib2-devel gobject-introspection-devel gettext-devel pkgconfig libnl3-devel 'perl(XML::Parser)' 'perl(YAML)' automake ppp-devel nss-devel dhclient readline-devel audit-libs-devel gtk-doc libudev-devel libuuid-devel libgudev1-devel vala-tools iptables bluez-libs-devel systemd libsoup-devel libndp-devel ModemManager-glib-devel newt-devel /usr/bin/dbus-launch pygobject3-base dbus-python libselinux-devel polkit-devel teamd-devel
mkdir /root/nm-build
cd /root/nm-build
git clone "$BUILD_REPO"
cd "./NetworkManager/"
git checkout "$BUILD_ID"
# for the tests, let's load some modules:
modprobe ip_gre
if [[ "$BUILD_TEST" != "" ]]; then
NOCONFIGURE=yes ./autogen.sh
./configure \
--enable-maintainer-mode \
--enable-more-warnings=error \
--prefix=/opt/test \
--sysconfdir=/etc \
--enable-gtk-doc \
--enable-more-asserts \
--with-more-asserts=100 \
--enable-more-logging \
--enable-compile-warnings=yes\
--with-valgrind=no \
--enable-concheck \
--enable-ifcfg-rh \
--enable-ifcfg-suse \
--enable-ifupdown \
--enable-ifnet \
--enable-vala=yes \
--enable-polkit=yes \
--with-nmtui=yes \
--with-modem-manager-1 \
--with-suspend-resume=systemd \
--enable-teamdctl=yes \
--enable-tests=root \
--with-netconfig=yes \
--with-crypto=nss \
--with-session-tracking=systemd \
--with-consolekit=yes \
--with-systemd-logind=yes \
--with-consolekit=yes
make -j4
if ! make check -k ; then
find -regex '.*/tests/[^/]+.log$$' -exec sh -c 'echo ">>>> $$1"; cat "$$1"' '--' '{}' ';'
echo ">> test failed"
NMTST_DEBUG=TRACE,no-expect-messages make check -k || :
find -regex '.*/tests/[^/]+.log$$' -exec sh -c 'echo ">>>> $$1"; cat "$$1"' '--' '{}' ';'
exit 57
fi
fi
./contrib/fedora/rpm/build_clean.sh -c
pushd "./contrib/fedora/rpm/latest/RPMS/$ARCH/"
for p in $$(ls -1 ./*.rpm | sed 's#.*\(NetworkManager.*\)-1\.[0-9]\..*#\1#'); do
rpm -e --nodeps $$p || true
done
yum install -y ./*.rpm
popd
# ensure that the expected NM is installed.
COMMIT_ID="$$(git rev-parse --verify HEAD | sed 's/^\(.\{10\}\).*/\1/')"
yum list installed NetworkManager | grep -q -e "\.$$COMMIT_ID\."
echo "BUILD '$BUILD_ID' COMPLETE"
fi
%end
]]>
</ks_append>
@ -158,6 +85,11 @@ fi
<param name="PKGARGNAME" value="python-setuptools python-netaddr pexpect bash-completion iw net-tools teamd NetworkManager radvd wireshark git firewalld psmisc bridge-utils"/>
</params>
</task>
<task name="/distribution/command" role="STANDALONE">
<params>
<param name="CMDS_TO_RUN" value="test -n '$BUILD_ID' || exit 0; wget 'http://cgit.freedesktop.org/NetworkManager/NetworkManager/plain/contrib/rh-bkr/build-from-source.sh?id=automation' -O /tmp/nm-build-from-source.sh &amp;&amp; BUILD_ID='$BUILD_ID' ARCH='$ARCH' sh /tmp/nm-build-from-source.sh"/>
</params>
</task>
<task name="/qe/desktop/simpletestharness" role="STANDALONE">
<params>
<param name="GIT_URL" value="$GIT_TEST_REPO"/>