All of that can be handled by a little Bash script.
<<: *test-job
stage: pkg
script:
- # create venv only if it's installed
- - if python3 -m venv venv; then . venv/bin/activate; fi
- - pip3 install apkg
- - apkg build -a bird-$(cat VERSION)*.tar.gz
+ - if [ "$CI_PIPELINE_SOURCE" == "merge_request_event" ]; then export BRANCH=mergerequest-$CI_MERGE_REQUEST_IID; else export BRANCH=$CI_COMMIT_BRANCH; fi
+ - tools/make-debian -BS
artifacts:
paths:
- pkg/pkgs/*
<<: *test-job
stage: pkg
script:
- # create venv only if it's installed
- - if python3 -m venv venv; then . venv/bin/activate; fi
- # install older version of bs4 that does not use python version >= 3.6
- # apkg depends on bs4, and unless we want to backport python 3.6
- # to ancient distros, we need to do this workaround
- - pip3 install beautifulsoup4==4.11.2
- - pip3 install markupsafe==2.0.1
- - pip3 install apkg
- - apkg build -a bird-$(cat VERSION)*.tar.gz
+ - if [ "$CI_PIPELINE_SOURCE" == "merge_request_event" ]; then export BRANCH=mergerequest-$CI_MERGE_REQUEST_IID; else export BRANCH=$CI_COMMIT_BRANCH; fi
+ - tools/make-debian -BS
artifacts:
paths:
- pkg/pkgs/*
* upstream package
- -- Jakub Ružička <jakub.ruzicka@nic.cz> {{ now }}
+ -- Maria Matějka <maria.matejka@nic.cz> {{ now }}
linuxdoc-tools-latex,
opensp,
texlive-latex-extra,
-Maintainer: Jakub Ružička <jakub.ruzicka@nic.cz>
+Maintainer: Maria Matejka <maria.matejka@nic.cz>
Standards-Version: 4.7.0
Vcs-Browser: https://salsa.debian.org/debian/bird3
Vcs-Git: https://salsa.debian.org/debian/bird3.git
version=4
-https://bird.network.cz/download/bird-(2\.[\d.]+).tar.gz
+https://bird.nic.cz/get-bird/ /download/bird-(2.17.\d+).tar.gz
git \
dpkg-dev \
debhelper \
+ lsb-release \
quilt \
python3 \
python3-pip \
git \
dpkg-dev \
debhelper \
+ lsb-release \
apt-utils \
quilt \
python3 \
git \
dpkg-dev \
debhelper \
+ lsb-release \
apt-utils \
quilt \
python3 \
git \
dpkg-dev \
debhelper \
+ lsb-release \
apt-utils \
quilt \
python3 \
git \
dpkg-dev \
debhelper \
+ lsb-release \
apt-utils \
quilt \
python3 \
git \
dpkg-dev \
debhelper \
+ lsb-release \
apt-utils \
quilt \
python3 \
git \
dpkg-dev \
debhelper \
+ lsb-release \
apt-utils \
quilt \
python3 \
git \
dpkg-dev \
debhelper \
+ lsb-release \
apt-utils \
quilt \
python3 \
git \
dpkg-dev \
debhelper \
+ lsb-release \
apt-utils \
quilt \
python3 \
git \
dpkg-dev \
debhelper \
+ lsb-release \
apt-utils \
quilt \
python3 \
# bump this to recreate the image: 2
-FROM debian:bookworm-slim
+FROM debian:trixie-slim
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get -y update
RUN apt-get -y upgrade
pandoc \
ncurses-dev \
libreadline-dev \
- libssh-gcrypt-dev \
+ libssh-dev \
linuxdoc-tools-latex \
texlive-latex-extra \
groff \
RUN apt-get -y --no-install-recommends install \
dpkg-dev \
debhelper \
+ distro-info-data \
apt-utils \
quilt \
python3 \
git \
dpkg-dev \
debhelper \
+ lsb-release \
apt-utils \
quilt \
python3 \
git \
dpkg-dev \
debhelper \
+ lsb-release \
apt-utils \
quilt \
python3 \
git \
dpkg-dev \
debhelper \
+ lsb-release \
apt-utils \
quilt \
python3 \
git \
dpkg-dev \
debhelper \
+ lsb-release \
apt-utils \
quilt \
python3 \
<<: *test-job
stage: pkg
script:
- # create venv only if it's installed
- - if python3 -m venv venv; then . venv/bin/activate; fi
- - pip3 install apkg
- - apkg build -a bird-$(cat VERSION)*.tar.gz
+ - if [ "$CI_PIPELINE_SOURCE" == "merge_request_event" ]; then export BRANCH=mergerequest-$CI_MERGE_REQUEST_IID; else export BRANCH=$CI_COMMIT_BRANCH; fi
+ - tools/make-debian -BS
artifacts:
paths:
- pkg/pkgs/*
<<: *test-job
stage: pkg
script:
- # create venv only if it's installed
- - if python3 -m venv venv; then . venv/bin/activate; fi
- # install older version of bs4 that does not use python version >= 3.6
- # apkg depends on bs4, and unless we want to backport python 3.6
- # to ancient distros, we need to do this workaround
- - pip3 install beautifulsoup4==4.11.2
- - pip3 install markupsafe==2.0.1
- - pip3 install apkg
- - apkg build -a bird-$(cat VERSION)*.tar.gz
+ - if [ "$CI_PIPELINE_SOURCE" == "merge_request_event" ]; then export BRANCH=mergerequest-$CI_MERGE_REQUEST_IID; else export BRANCH=$CI_COMMIT_BRANCH; fi
+ - tools/make-debian -BS
artifacts:
paths:
- pkg/pkgs/*
--- /dev/null
+#!/bin/bash
+
+# Run this script after tools/make-archive
+
+set -e
+
+BUILD=false
+SOURCE=false
+
+for OPT in $(getopt -o BS -n "$0" -- "$@"); do
+ case "$OPT" in
+ '-B')
+ BUILD=true
+ continue
+ ;;
+ '-S')
+ SOURCE=true
+ continue
+ ;;
+ '--')
+ continue
+ ;;
+ -*)
+ echo "Unknown option $OPT"
+ exit 2
+ ;;
+ *)
+ echo "Invalid argument $OPT"
+ exit 2
+ ;;
+ esac
+done
+
+PKGVERSION=$(tools/version)
+TMPDIR=$(mktemp -dp .)
+DEBPKGSTEM=bird${PKGVERSION:0:1}_$PKGVERSION
+DEBIAN_RELEASE=$(lsb_release -cs)
+ORIG=$(pwd)
+DIRTARGET=$(lsb_release -is)-$(lsb_release -rs | tr '/' '-')
+DIRTARGET=${DIRTARGET,,}
+SRCTARGET=${ORIG}/pkg/srcpkgs/$DIRTARGET/$DEBPKGSTEM-cznic.1/
+BINTARGET=${ORIG}/pkg/pkgs/$DIRTARGET/$DEBPKGSTEM-cznic.1/
+
+echo "Packaging BIRD $PKGVERSION for $(lsb_release -is) $(lsb_release -rs) $(lsb_release -cs) in $TMPDIR"
+
+lsb_release -a
+
+mkdir -p $SRCTARGET $BINTARGET
+
+pushd $TMPDIR
+ ln ${ORIG}/bird-$PKGVERSION.tar.gz $DEBPKGSTEM.orig.tar.gz
+ tar xf $DEBPKGSTEM.orig.tar.gz
+ pushd bird-$PKGVERSION
+ # Local-fix version
+ cp -r ${ORIG}/distro/pkg/deb debian
+ sed -i "s#{{ version }}#$PKGVERSION#;s#{{ release }}#1~$DEBIAN_RELEASE#;s#{{ now }}#$(date -R)#;" debian/changelog
+
+ # Prepare files for dput
+ if $SOURCE; then
+ dpkg-buildpackage -S -sa -d -us -uc
+ mv ../bird?_*-cznic* ${SRCTARGET}/
+ ln ../bird?_*.orig.tar.gz ${SRCTARGET}/
+ fi
+
+ # Build locally
+ if $BUILD; then
+ dpkg-buildpackage -B -sa -d -us -uc
+ mv ../bird?{,-dbgsym}_*-cznic* ${BINTARGET}/
+ ln ../bird?_*.orig.tar.gz ${BINTARGET}/
+ fi
+ popd
+popd
+
+rm -rf $TMPDIR