diff options
author | Oliver Smith <osmith@sysmocom.de> | 2019-06-13 15:53:39 +0200 |
---|---|---|
committer | Oliver Smith <osmith@sysmocom.de> | 2019-06-17 12:21:32 +0200 |
commit | e26866af0da040a7ed37b17280a7f16a96999e09 (patch) | |
tree | 4543985520878f28c8f9ae178cc042aea45358ed /scripts/common-obs.sh | |
parent | 83f4f25d7cae8bb1ccfa4478304c8c8480651d59 (diff) |
OBS: make nightly packages conflict with latest
Add conflicting dummy packages osmocom-nightly and osmocom-latest, and
make all packages from each repository depend on the right one.
As usually, the latest packages will only get changed when a new release
appears. So the dependency will get introduced after tagging a new
release. I have tested in an own OBS namespace, that everything works as
expected.
Related: OS#2640
Change-Id: I79c45e798c10a65443b9fb9ecb54393d1918608a
Diffstat (limited to 'scripts/common-obs.sh')
-rw-r--r-- | scripts/common-obs.sh | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/scripts/common-obs.sh b/scripts/common-obs.sh new file mode 100644 index 0000000..2b33039 --- /dev/null +++ b/scripts/common-obs.sh @@ -0,0 +1,79 @@ +#!/bin/sh +# Various common code used in the OBS (opensuse build service) related osmo-ci shell scripts + +# Create the source for a dummy package, that conflicts with another dummy package in the current directory. Example +# of the structure that will be generated: +# osmocom-nightly +# └── debian +# ├── changelog +# ├── compat +# ├── control +# ├── copyright +# ├── rules +# └── source +# └── format +# $1: name of dummy package (e.g. "osmocom-nightly") +# $2: name of conflicting package (e.g. "osmocom-latest") +osmo_obs_prepare_conflict() { + local pkgname="$1" + local pkgname_conflict="$2" + local pkgver="0.0.0" + local oldpwd="$PWD" + + mkdir -p "$pkgname/debian/source" + cd "$pkgname/debian" + + # Fill control, changelog, rules + cat << EOF > control +Source: ${pkgname} +Section: unknown +Priority: optional +Maintainer: Oliver Smith <osmith@sysmocom.de> +Build-Depends: debhelper (>= 9) +Standards-Version: 3.9.8 + +Package: ${pkgname} +Depends: \${misc:Depends} +Architecture: any +Conflicts: ${pkgname_conflict} +Description: Dummy package, which conflicts with ${pkgname_conflict} +EOF + cat << EOF > changelog +${pkgname} (${pkgver}) unstable; urgency=medium + + * Dummy package, which conflicts with ${pkgname_conflict}. + + -- Oliver Smith <osmith@sysmocom.de> Thu, 13 Jun 2019 12:50:19 +0200 +EOF + cat << EOF > rules +#!/usr/bin/make -f +%: + dh \$@ +EOF + + # Finish up debian dir + chmod +x rules + echo "9" > compat + echo "3.0 (native)" > source/format + touch copyright + + # Put in git repository + cd .. + git init . + git add -A + git commit -m "auto-commit: $pkgname dummy package" || true + git tag -f "$pkgver" + + cd "$oldpwd" +} + +# Add dependency to all (sub)packages in debian/control and commit the change. +# $1: path to debian/control file +# $2: name of the package to depend on +osmo_obs_add_debian_dependency() { + # Note: adding the comma at the end should be fine. If there is a Depends: line, it is most likely not empty. It + # should at least have ${misc:Depends} according to lintian. + sed "s/^Depends: /Depends: $2, /g" -i "$1" + + git -C "$(dirname "$1")" commit -m "auto-commit: debian: depend on $2" . +} |