From d2978c0e06ebd40641858edb379c3bf2adae62d4 Mon Sep 17 00:00:00 2001 From: Tomas Krizek Date: Tue, 8 Jun 2021 15:38:45 +0200 Subject: [PATCH] scripts: update OBS source creation script --- .gitlab-ci.yml | 2 +- scripts/build-in-obs.sh | 15 +++++----- scripts/make-distrofiles.sh | 39 ------------------------ scripts/make-obs.sh | 59 +++++++++++++++++++++++++++++++++++++ 4 files changed, 68 insertions(+), 47 deletions(-) delete mode 100755 scripts/make-distrofiles.sh create mode 100755 scripts/make-obs.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2e5acdaf2..12a600cb1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -499,7 +499,7 @@ obs:trigger: &obs_trigger - condor allow_failure: false # required to make when: manual action blocking script: - - scripts/make-distrofiles.sh + - scripts/make-obs.sh - echo y | scripts/build-in-obs.sh $OBS_REPO obs:release: diff --git a/scripts/build-in-obs.sh b/scripts/build-in-obs.sh index 72258387f..3256ddee8 100755 --- a/scripts/build-in-obs.sh +++ b/scripts/build-in-obs.sh @@ -1,12 +1,15 @@ #!/bin/bash # SPDX-License-Identifier: GPL-3.0-or-later - +# +# Push packaging files to OBS +# # Example usage: -# 1. place tarball to be released in git root dir -# 2. scripts/make-distrofiles.sh -# 3. scripts/build-in-obs.sh knot-resolver-latest +# 1. ./scripts/make-obs.sh +# 2. ./scripts/build-in-obs.sh knot-resolver-latest set -o errexit -o nounset -o xtrace +pkgdir='pkg/obs' + project=home:CZ-NIC:$1 package=knot-resolver @@ -23,9 +26,7 @@ fi osc co "${project}" "${package}" pushd "${project}/${package}" osc del * ||: -cp -L ../../*.orig.tar.xz ../../*.debian.tar.xz ../../*.dsc ./ -cp -rL ../../distro/rpm/* ./ -cp -rL ../../distro/arch/* ./ +cp -r ../../${pkgdir}/* ./ osc addremove osc ci -n popd diff --git a/scripts/make-distrofiles.sh b/scripts/make-distrofiles.sh deleted file mode 100755 index c1e0a7edb..000000000 --- a/scripts/make-distrofiles.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: GPL-3.0-or-later -set -o errexit -o nounset -o xtrace - -cd "$(dirname ${0})/.." -pkgdir="build_dist/meson-dist" - -package=knot-resolver - - -pushd ${pkgdir} -version=$(ls ${package}*.tar.xz | sed "s/${package}-\(.*\).tar.xz/\1/") -popd - -# Check version for invalid characters -if [[ $(echo "${version}" | grep '^[[:alnum:].]$') -ne 0 ]]; then - echo "Invalid version number: may contain only alphanumeric characters and dots" - exit 1 -fi - -# Fill in VERSION field in distribution specific files -files="distro/rpm/${package}.spec distro/deb/changelog distro/arch/PKGBUILD" -for file in ${files}; do - sed -i "s/__VERSION__/${version}/g" "${file}" -done - -# Rename archive to debian format -pkgname="${package}-${version}" -debname="${package}_${version}.orig" -cp "${pkgdir}/${pkgname}.tar.xz" "${debname}.tar.xz" - -# Prepare clean debian-specific directory -tar -xf "${debname}.tar.xz" -pushd "${pkgname}" > /dev/null -cp -arL ../distro/deb debian - -# Create debian archive and dsc -dpkg-source -b . -popd > /dev/null diff --git a/scripts/make-obs.sh b/scripts/make-obs.sh new file mode 100755 index 000000000..abe967016 --- /dev/null +++ b/scripts/make-obs.sh @@ -0,0 +1,59 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-3.0-or-later +# +# create OpenSUSE Build System (OBS) source package +# +# this needs to be run on a system with: +# +# * apkg +# * dpkg-buildpackage +# +# usage: +# ./scripts/make-obs.sh [path.to.archive.xz] [1] +# +# supply archives as optional arguments to build from, +# otherwise archive will be built from sources by apkg +# second argument is optional release number (defaults to 1) +# +# output at pkg/obs/ (removed on each run) +set -o errexit -o nounset + +pushd "$(dirname ${0})/.." + +OUTDIR="pkg/obs" +APKG_OPTS="-O $OUTDIR" + +if [ -z $@ ]; then + echo "building OBS srcpkg from project files" +else + AR=$1 + echo "building OBS srcpkg from specified archive(s)" + APKG_OPTS="-a $AR $APKG_OPTS" + + RELEASE=${2:-} + if [ ! -z "$RELEASE" ]; then + echo "custom release: $RELEASE" + APKG_OPTS="-r $RELEASE $APKG_OPTS" + fi +fi + +set -o xtrace + +: removing existing output files at output dir: $OUTDIR +rm -rf "$OUTDIR" +: making debian source package from archive +apkg srcpkg $APKG_OPTS -d debian +: removing extra debian source package files +rm -f $OUTDIR/*_source.* +: rendering RPM template +apkg srcpkg $APKG_OPTS -d fedora --render-template +: fixing RPM .spec to use debian source archive +sed -i 's/^\(Source0:\s\+\).*/\1knot-resolver_%{version}.orig.tar.xz/' $OUTDIR/*.spec +: rendering PKGBUILD template +apkg srcpkg $APKG_OPTS -d arch --render-template +: fixing PKGBUILD to use debian source archive +sed -i 's/^source=.*/source=("knot-resolver_${pkgver}.orig.tar.xz")/' $OUTDIR/PKGBUILD +popd >/dev/null + +echo "OBS srcpkg ready at: $OUTDIR" + -- 2.47.2