gitlab-ci: test re-buildability of distribution tarballs

Adds tests for making a distribution tarball, and then attempting to build NM from its contents.
Files have been left out from the distribution in the past by accident (e.g. 75027879, b2931c96)
and hopefully this test will catch this type of errors.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1862
This commit is contained in:
Jan Vaclav
2024-02-05 13:59:50 +01:00
committed by Íñigo Huguet
parent 4c76d49f1f
commit 61f0531509
4 changed files with 80 additions and 34 deletions

View File

@@ -57,11 +57,11 @@ variables:
# #
# This is done by running `ci-fairy generate-template` and possibly bumping # This is done by running `ci-fairy generate-template` and possibly bumping
# ".default_tag". # ".default_tag".
ALPINE_TAG: 'tag-7da44bbacc09' ALPINE_TAG: 'tag-947df94197e7'
CENTOS_TAG: 'tag-df11907da86a' CENTOS_TAG: 'tag-2f354aa44865'
DEBIAN_TAG: 'tag-86a16c2d74d8' DEBIAN_TAG: 'tag-fb7953849851'
FEDORA_TAG: 'tag-df11907da86a' FEDORA_TAG: 'tag-2f354aa44865'
UBUNTU_TAG: 'tag-86a16c2d74d8' UBUNTU_TAG: 'tag-fb7953849851'
ALPINE_EXEC: 'bash .gitlab-ci/alpine-install.sh' ALPINE_EXEC: 'bash .gitlab-ci/alpine-install.sh'
CENTOS_EXEC: 'bash .gitlab-ci/fedora-install.sh' CENTOS_EXEC: 'bash .gitlab-ci/fedora-install.sh'
@@ -391,6 +391,8 @@ t_fedora:39:
- meson+clang - meson+clang
- rpm+autotools - rpm+autotools
- rpm+meson - rpm+meson
- tarball+autotools
- tarball+meson
- tarball - tarball
- subtree - subtree
variables: variables:

View File

@@ -157,6 +157,8 @@ t_{{distro.name}}:{{version}}:
- meson+clang - meson+clang
- rpm+autotools - rpm+autotools
- rpm+meson - rpm+meson
- tarball+autotools
- tarball+meson
- tarball - tarball
- subtree - subtree
{% endif %} {% endif %}

View File

@@ -63,6 +63,8 @@ check_run_assert() {
meson+clang meson+clang
rpm+autotools rpm+autotools
rpm+meson rpm+meson
tarball+autotools
tarball+meson
tarball tarball
subtree subtree
@@ -127,6 +129,42 @@ if check_run_clean tarball && [ "$NM_BUILD_TARBALL" = 1 ]; then
do_clean do_clean
fi fi
if check_run_clean tarball+autotools; then
BUILD_TYPE=autotools CC=gcc WITH_DOCS=1 CONFIGURE_ONLY=1 contrib/scripts/nm-ci-run.sh
pushd ./build
# dist & build with autotools
make distcheck -j$(nproc)
# build with meson
DISTSRC="./distsrc-$RANDOM"
mkdir $DISTSRC
tar xvf ./NetworkManager-1*.tar.xz -C $DISTSRC --strip-components=1
pushd $DISTSRC
BUILD_TYPE=meson CC=gcc WITH_DOCS=1 ../../contrib/scripts/nm-ci-run.sh
popd
popd
do_clean
fi
if check_run_clean tarball+meson; then
BUILD_TYPE=meson CC=gcc WITH_DOCS=1 CONFIGURE_ONLY=1 contrib/scripts/nm-ci-run.sh
pushd ./build
# dist with meson
meson dist
# build with autotools
DISTSRC="./distsrc-$RANDOM"
mkdir $DISTSRC
tar xvf ./meson-dist/NetworkManager-1*.tar.xz -C $DISTSRC --strip-components=1
pushd $DISTSRC
BUILD_TYPE=autotools CC=gcc WITH_DOCS=1 ../../contrib/scripts/nm-ci-run.sh
popd
rm -rf $DISTSRC
popd
do_clean
fi
############################################################################### ###############################################################################
test_subtree() { test_subtree() {

View File

@@ -191,24 +191,26 @@ run_autotools() {
\ \
#end #end
make -j 6 if [ "$CONFIGURE_ONLY" != 1 ]; then
make install make -j 6
make install
export NM_TEST_CLIENT_CHECK_L10N=1 export NM_TEST_CLIENT_CHECK_L10N=1
if ! make check -j 6 -k ; then if ! make check -j 6 -k ; then
_print_test_logs "first-test" _print_test_logs "first-test"
echo ">>>> RUN SECOND TEST (start)" echo ">>>> RUN SECOND TEST (start)"
NMTST_DEBUG="debug,TRACE,no-expect-message" make check -k || : NMTST_DEBUG="debug,TRACE,no-expect-message" make check -k || :
echo ">>>> RUN SECOND TEST (done)" echo ">>>> RUN SECOND TEST (done)"
_print_test_logs "second-test" _print_test_logs "second-test"
die "autotools test failed" die "autotools test failed"
fi fi
if _with_valgrind; then if _with_valgrind; then
if ! NMTST_USE_VALGRIND=1 make check -j 3 -k ; then if ! NMTST_USE_VALGRIND=1 make check -j 3 -k ; then
_print_test_logs "(valgrind test)" _print_test_logs "(valgrind test)"
die "autotools+valgrind test failed" die "autotools+valgrind test failed"
fi
fi fi
fi fi
popd popd
@@ -222,7 +224,7 @@ run_meson() {
else else
_WITH_WERROR_VAL="" _WITH_WERROR_VAL=""
fi fi
meson build \ meson setup build \
\ \
-Dprefix="$PWD/INST" \ -Dprefix="$PWD/INST" \
\ \
@@ -262,21 +264,23 @@ run_meson() {
export NM_TEST_CLIENT_CHECK_L10N=1 export NM_TEST_CLIENT_CHECK_L10N=1
ninja -C build -v if [ "$CONFIGURE_ONLY" != 1 ]; then
ninja -C build install ninja -C build -v
ninja -C build install
if ! meson test -C build -v --print-errorlogs ; then if ! meson test -C build -v --print-errorlogs ; then
echo ">>>> RUN SECOND TEST (start)" echo ">>>> RUN SECOND TEST (start)"
NMTST_DEBUG="debug,TRACE,no-expect-message" \ NMTST_DEBUG="debug,TRACE,no-expect-message" \
meson test -C build -v --print-errorlogs || : meson test -C build -v --print-errorlogs || :
echo ">>>> RUN SECOND TEST (done)" echo ">>>> RUN SECOND TEST (done)"
die "meson test failed" die "meson test failed"
fi fi
if _with_valgrind; then if _with_valgrind; then
if ! NMTST_USE_VALGRIND=1 meson test -C build -v --print-errorlogs ; then if ! NMTST_USE_VALGRIND=1 meson test -C build -v --print-errorlogs ; then
_print_test_logs "(valgrind test)" _print_test_logs "(valgrind test)"
die "meson+valgrind test failed" die "meson+valgrind test failed"
fi
fi fi
fi fi
} }