1
0
mirror of https://github.com/openSUSE/osc.git synced 2024-11-14 00:06:15 +01:00
github.com_openSUSE_osc/behave/container-setup-prebuilt-rpms.sh

107 lines
3.4 KiB
Bash

set -x
set -e
TOPDIR=$(dirname $(readlink -f "$0"))
source "$TOPDIR/container-setup-common.sh"
start_obs_srcserver
start_obs_repserver
sleep 1
FIXTURES_DIR="$TOPDIR/fixtures"
function upload_rpms() {
local TMP_DIR=$(mktemp -d)
local RPM_DIR="$1"
local PROJECT="$2"
local REPO="$3"
local ARCH="$4"
local PACKAGE="$5"
# scan directory for all RPMs and link them to a flat dir to avoid
# 400 remote error: cpio filename contains a '/'
find "$RPM_DIR/SRPMS" -name '*.rpm' -exec ln -s {} "$TMP_DIR/" \; || :
find "$RPM_DIR/RPMS/noarch" -name '*.rpm' -exec ln -s {} "$TMP_DIR/" \; || :
find "$RPM_DIR/RPMS/$ARCH" -name '*.rpm' -exec ln -s {} "$TMP_DIR/" \; || :
pushd "$TMP_DIR"
find -name '*.rpm' | cpio --create --dereference -H newc > upload.cpio
curl \
--data-binary '@upload.cpio' \
-H 'X-username: Admin' \
-H 'Content-Type: application/x-cpio' \
"http://localhost:5352/build/$PROJECT/$REPO/$ARCH/$PACKAGE"
rm -rf "$TMP_DIR"
popd
}
# build package 'test:factory/test-pkgA'
TMP_DIR=$(mktemp -d)
rpmbuild -ba "$FIXTURES_DIR/pac/test-pkgA-3.spec" --define "_topdir $TMP_DIR"
upload_rpms "$TMP_DIR" test:factory standard i586 test-pkgA
upload_rpms "$TMP_DIR" test:factory standard x86_64 test-pkgA
rm -rf "$TMP_DIR"
# build package 'test:factory/test-pkgB'
TMP_DIR=$(mktemp -d)
setarch i586 rpmbuild -ba "$FIXTURES_DIR/pac/test-pkgB-2.spec" --define "_topdir $TMP_DIR"
upload_rpms "$TMP_DIR" test:factory standard i586 test-pkgB
rm -rf "$TMP_DIR"
TMP_DIR=$(mktemp -d)
rpmbuild -ba "$FIXTURES_DIR/pac/test-pkgB-2.spec" --define "_topdir $TMP_DIR"
upload_rpms "$TMP_DIR" test:factory standard x86_64 test-pkgB
rm -rf "$TMP_DIR"
# build package 'test:factory/multibuild-pkg'
TMP_DIR=$(mktemp -d)
rpmbuild -ba "$FIXTURES_DIR/pac/multibuild-pkg-1.spec" --define "_topdir $TMP_DIR" --target=x86_64,i586 --define "flavor %{nil}"
upload_rpms "$TMP_DIR" test:factory standard i586 multibuild-pkg
upload_rpms "$TMP_DIR" test:factory standard x86_64 multibuild-pkg
rm -rf "$TMP_DIR"
# build package 'test:factory/multibuild-pkg:flavor1'
TMP_DIR=$(mktemp -d)
rpmbuild -ba "$FIXTURES_DIR/pac/multibuild-pkg-1.spec" --define "_topdir $TMP_DIR" --target=x86_64,i586 --define "flavor flavor1"
upload_rpms "$TMP_DIR" test:factory standard i586 multibuild-pkg:flavor1
upload_rpms "$TMP_DIR" test:factory standard x86_64 multibuild-pkg:flavor1
rm -rf "$TMP_DIR"
# build package 'test:factory/multibuild-pkg:flavor2'
TMP_DIR=$(mktemp -d)
rpmbuild -ba "$FIXTURES_DIR/pac/multibuild-pkg-1.spec" --define "_topdir $TMP_DIR" --target=x86_64,i586 --define "flavor flavor2"
upload_rpms "$TMP_DIR" test:factory standard i586 multibuild-pkg:flavor2
upload_rpms "$TMP_DIR" test:factory standard x86_64 multibuild-pkg:flavor2
rm -rf "$TMP_DIR"
# run scheduler to process all jobs
/usr/lib/obs/server/bs_sched --testmode i586
/usr/lib/obs/server/bs_sched --testmode x86_64
# run publisher
# noarch packages from x86_64 win over those from i586
/usr/lib/obs/server/bs_publish --testmode
# create fake empty files that usually accompany RPMs
ARCHES="i586 x86_64"
PACKAGES="test-pkgA test-pkgB multibuild-pkg multibuild-pkg:flavor1 multibuild-pkg:flavor2"
FILES="_buildenv _statistics rpmlint.log"
for ARCH in $ARCHES; do
for PACKAGE in $PACKAGES; do
for FILE in $FILES; do
runuser -l obsrun -s /bin/bash -c "touch /srv/obs/build/test:factory/standard/$ARCH/$PACKAGE/$FILE"
done
done
done