aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/obs
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/obs')
-rwxr-xr-xscripts/obs/build_binpkg.py5
-rw-r--r--scripts/obs/data/build_binpkg.Dockerfile19
-rw-r--r--scripts/obs/lib/docker.py13
3 files changed, 26 insertions, 11 deletions
diff --git a/scripts/obs/build_binpkg.py b/scripts/obs/build_binpkg.py
index cda0193..37dc6be 100755
--- a/scripts/obs/build_binpkg.py
+++ b/scripts/obs/build_binpkg.py
@@ -35,6 +35,11 @@ def main():
help="build the package in docker for a specific"
f" distro (default: {distro_default}, other:"
f" almalinux:8, debian:10, ubuntu:22.04 etc.)")
+ parser.add_argument("-f", "--feed", dest="docker_feed", default="master",
+ choices=["master", "nightly", "latest"],
+ help="the OBS feed to configure inside docker, against"
+ " which the package will get built (use nightly"
+ " if master doesn't get built for DISTRO)")
parser.add_argument("-j", "--jobs", type=int, default=jobs_default,
help=f"parallel running jobs (default: {jobs_default})")
parser.add_argument("-r", "--run-shell-on-error", action="store_true",
diff --git a/scripts/obs/data/build_binpkg.Dockerfile b/scripts/obs/data/build_binpkg.Dockerfile
index c3c1b1e..49cdc96 100644
--- a/scripts/obs/data/build_binpkg.Dockerfile
+++ b/scripts/obs/data/build_binpkg.Dockerfile
@@ -1,6 +1,7 @@
ARG DISTRO_FROM
FROM ${DISTRO_FROM}
ARG DISTRO
+ARG FEED
ARG UID
COPY Release.key /tmp/Release.key
@@ -58,24 +59,24 @@ RUN set -x; \
debian:*) \
apt-key add /tmp/Release.key && \
rm /tmp/Release.key && \
- echo "deb https://downloads.osmocom.org/packages/osmocom:/master/Debian_$VERSION/ ./" \
- > /etc/apt/sources.list.d/osmocom-master.list \
+ echo "deb https://downloads.osmocom.org/packages/osmocom:/$FEED/Debian_$VERSION/ ./" \
+ > /etc/apt/sources.list.d/osmocom-$FEED.list \
;; \
ubuntu:*) \
apt-key add /tmp/Release.key && \
rm /tmp/Release.key && \
- echo "deb https://downloads.osmocom.org/packages/osmocom:/master/xUbuntu_$VERSION/ ./" \
- > /etc/apt/sources.list.d/osmocom-master.list \
+ echo "deb https://downloads.osmocom.org/packages/osmocom:/$FEED/xUbuntu_$VERSION/ ./" \
+ > /etc/apt/sources.list.d/osmocom-$FEED.list \
;; \
almalinux:*) \
- { echo "[network_osmocom_master]"; \
- echo "name=osmocom:master"; \
+ { echo "[network_osmocom_$FEED]"; \
+ echo "name=osmocom:$FEED"; \
echo "type=rpm-md"; \
- echo "baseurl=https://downloads.osmocom.org/packages/osmocom:/master/CentOS_$VERSION/"; \
+ echo "baseurl=https://downloads.osmocom.org/packages/osmocom:/$FEED/CentOS_$VERSION/"; \
echo "gpgcheck=1"; \
- echo "gpgkey=https://downloads.osmocom.org/packages/osmocom:/master/CentOS_$VERSION/repodata/repomd.xml.key"; \
+ echo "gpgkey=https://downloads.osmocom.org/packages/osmocom:/$FEED/CentOS_$VERSION/repodata/repomd.xml.key"; \
echo "enabled=1"; \
- } > /etc/yum.repos.d/network:osmocom:master.repo \
+ } > /etc/yum.repos.d/network:osmocom:$FEED.repo \
;; \
*) \
echo "can't install repo for $DISTRO" && \
diff --git a/scripts/obs/lib/docker.py b/scripts/obs/lib/docker.py
index 6bcf024..4f9f981 100644
--- a/scripts/obs/lib/docker.py
+++ b/scripts/obs/lib/docker.py
@@ -28,11 +28,20 @@ def build_image(distro, image_type):
print(f"docker: building image {image_name}")
+ # Set the feed of packages to be configured inside the docker container
+ # (master, nightly, latest). This can be set with build_binpkg.py --feed,
+ # to reproduce a build error that happens with a distro that is only in
+ # nightly but not in the master feed (all ubuntu versions as of writing).
+ build_arg_feed = []
+ if getattr(lib.args, "docker_feed", None):
+ build_arg_feed = ["--build-arg", f"FEED={lib.args.docker_feed}"]
+
lib.run_cmd(["docker", "build",
"--build-arg", f"DISTRO={distro}",
"--build-arg", f"DISTRO_FROM={distro_from}",
- "--build-arg", f"UID={os.getuid()}",
- "-t", image_name,
+ "--build-arg", f"UID={os.getuid()}"] +
+ build_arg_feed +
+ ["-t", image_name,
"-f", f"{lib.config.path_top}/data/{image_type}.Dockerfile",
f"{lib.config.path_top}/data"])