diff options
Diffstat (limited to 'tests/basic/rpm.t')
-rwxr-xr-x | tests/basic/rpm.t | 145 |
1 files changed, 0 insertions, 145 deletions
diff --git a/tests/basic/rpm.t b/tests/basic/rpm.t deleted file mode 100755 index e5da49bb7e0..00000000000 --- a/tests/basic/rpm.t +++ /dev/null @@ -1,145 +0,0 @@ -#!/bin/bash -# -# This test will run mock and rebuild the srpm for the latest two EPEL version. -# By default, the results and the chroots are deleted. -# -# When debugging is needed, make sure to set DEBUG=1 in the environment or this -# script. When debugging is enabled, the resulting log files and chroots are -# kept. With debugging enabled, this test will fail the regression test, and -# all output is saved to rpmbuild-mock.log. Tests are run in parallel, so the -# logfile may be difficult to read. -# -# chroots are configured in /etc/mock/*.cfg, with site-defaults.cfg as main -# configuration file. The default for chroots is /var/lib/mock, but this -# depends on the 'basedir' configuration option set in the mentioned files. -# - -. $(dirname $0)/../include.rc - -case $OSTYPE in -Linux) - ;; -*) - echo "Skip test using mock, which requires Linux" >&2 - SKIP_TESTS - exit 0 - ;; -esac - -# enable some extra debugging -if [ -n "${DEBUG}" -a "${DEBUG}" != "0" ] -then - exec &> rpmbuild-mock.log - set -x - MOCK_CLEANUP='--no-cleanup-after' -else - MOCK_CLEANUP='--cleanup-after' -fi - -# detect the branch we're based off -if [ -n "${BRANCH}" ] ; then - # $BRANCH is set in the environment (by Jenkins or other) - GIT_PARENT="origin/${BRANCH}" -else - # get a reference to the latest clean tree - GIT_PARENT=$(git describe --abbrev=0) -fi - -# Filter out everything and what remains needs to be built -BUILD_FILES=$(git diff --name-status ${GIT_PARENT} | grep -Ev '^M.*\.(c|h|py)' | awk {'print $2'}) -SELFTEST=$(grep -e 'tests/basic/rpm.t' <<< "${BUILD_FILES}") -BUILD_FILES=$(grep -Ev '^tests/' <<< "${BUILD_FILES}") -if [ -z "${BUILD_FILES}" -a -z "${SELFTEST}" ] -then - # nothing affecting packaging changed, no need to retest rpmbuild - SKIP_TESTS - cleanup - exit 0 -fi - -# checkout the sources to a new directory to execute ./configure and all -REPO=${PWD} -COMMIT=$(git describe) - -# make sure to cleanup in case DEBUG was enabled in a previous run -[ -d rpmbuild-mock.d ] && rm -rf rpmbuild-mock.d -mkdir rpmbuild-mock.d -pushd rpmbuild-mock.d 2>/dev/null - -function git_quiet() { - git ${@} 2>&1 > /dev/null -} - -TEST git_quiet clone -s file://${REPO} . -TEST git_quiet checkout -b rpm-test ${COMMIT} - -# build the glusterfs-*.tar.gz -function build_srpm_from_tgz() { - rpmbuild -ts $1 \ - --define "_srcrpmdir ${PWD}" \ - --define '_source_payload w9.gzdio' \ - --define '_source_filedigest_algorithm 1' -} - -TEST ./autogen.sh -TEST ./configure -TEST make dist - -# build the glusterfs src.rpm -TEST build_srpm_from_tgz ${PWD}/*.tar.gz - -# even though the last two Fedora EPEL releases are x86_64 only, we allow other arches to build -for MOCK_CONF in $(ls -x1 /etc/mock/*.cfg | egrep -e 'epel-[0-9]+-'`uname -i`'.cfg$' | tail -n2) -do - EPEL_RELEASE=$(basename ${MOCK_CONF} .cfg) - mkdir -p "${PWD}/mock.d/${EPEL_RELEASE}" - chgrp mock "${PWD}/mock.d/${EPEL_RELEASE}" - chmod 0775 "${PWD}/mock.d/${EPEL_RELEASE}" - MOCK_RESULTDIR="--resultdir ${PWD}/mock.d/${EPEL_RELEASE}" - # expand the mock command line - MOCK_CMD="/usr/bin/mock ${MOCK_CLEANUP} \ - ${MOCK_RESULTDIR} \ - -r ${EPEL_RELEASE} --rebuild ${PWD}/*.src.rpm" - - # write the mock command to a file, so that its easier to execute - cat << EOF > mock-${EPEL_RELEASE}.sh -#!/bin/sh -${MOCK_CMD} -EOF - chmod +x mock-${EPEL_RELEASE}.sh - - # root can not run 'mock', it needs to drop privileges - if (groups | grep -q mock) - then - # the current user is in group 'mock' - ${PWD}/mock-${EPEL_RELEASE}.sh & - else - # "su" might not work, using sudo instead - sudo -u mock -E ${PWD}/mock-${EPEL_RELEASE}.sh & - fi - sleep 5 -done - -# TAP and Prove aren't smart about loops -TESTS_EXPECTED_IN_LOOP=2 -for mockjob in $(jobs -p) -do - TEST_IN_LOOP wait ${mockjob} -done - -# we could build for the last two Fedora releases too, but that is not -# possible on EPEL-5/6 installations, Fedora 17 and newer have unmet -# dependencies on the build-server :-/ - -# logs are archived by Jenkins -if [ -d '/build/install/var' ] -then - LOGS=$(find mock.d -type f -name '*.log') - [ -n "${LOGS}" ] && xargs cp --parents ${LOGS} /build/install/var/ -fi - -popd 2>/dev/null -# only remove rpmbuild-mock.d if we're not debugging -[ "${DEBUG}" = "0" ] && rm -rf rpmbuild-mock.d - -cleanup |