]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
scripts: update OBS source creation script
authorTomas Krizek <tomas.krizek@nic.cz>
Tue, 8 Jun 2021 13:38:45 +0000 (15:38 +0200)
committerTomas Krizek <tomas.krizek@nic.cz>
Thu, 10 Jun 2021 09:17:37 +0000 (11:17 +0200)
.gitlab-ci.yml
scripts/build-in-obs.sh
scripts/make-distrofiles.sh [deleted file]
scripts/make-obs.sh [new file with mode: 0755]

index 2e5acdaf22b9277581577f46acb48008c7eee5d6..12a600cb19d47cbe9df5314c5110416d9e76a820 100644 (file)
@@ -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:
index 72258387f77d8d2e068e2e38adf9ed3532b4acfd..3256ddee8e4ca61ae0e66048891d4de1212904b0 100755 (executable)
@@ -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 (executable)
index c1e0a7e..0000000
+++ /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 (executable)
index 0000000..abe9670
--- /dev/null
@@ -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"
+