2021-05-06 22:13:09 +02:00
|
|
|
#!/bin/sh
|
2021-05-11 16:15:13 +02:00
|
|
|
# This script creates a Debian package. When run by `./mk`, it
|
2021-05-06 22:13:09 +02:00
|
|
|
# is run inside a debian:stable container. It's fine to also
|
|
|
|
# run this script from any debian-like system, as long as the
|
|
|
|
# following ASSUMPTIONS are met:
|
|
|
|
#
|
|
|
|
# 1. the `ooniprobe` we are packaging is available at
|
|
|
|
# this path `./CLI/linux/$GOARCH/ooniprobe`;
|
|
|
|
#
|
|
|
|
# 2. we are running on a debian system that has the same
|
|
|
|
# architecture of the `ooniprobe` we are packaging.
|
|
|
|
|
|
|
|
if [ $# -gt 1 ]; then
|
2021-05-11 16:15:13 +02:00
|
|
|
echo "usage: $0 [run_number]" 1>&2
|
|
|
|
exit 1
|
2021-05-06 22:13:09 +02:00
|
|
|
fi
|
|
|
|
run_number=$1
|
|
|
|
|
|
|
|
# Copy the target binary in the correct location expected
|
|
|
|
# by the debian/ooniprobe-cli.install file.
|
|
|
|
rm -rf ./debian/bin
|
|
|
|
mkdir -p ./debian/bin
|
2021-05-11 16:15:13 +02:00
|
|
|
machine=$(uname -m)
|
2021-05-06 22:13:09 +02:00
|
|
|
goarch=""
|
|
|
|
case $machine in
|
2021-05-11 16:15:13 +02:00
|
|
|
x86_64)
|
|
|
|
cp ./CLI/linux/amd64/ooniprobe ./debian/bin
|
|
|
|
goarch=amd64
|
|
|
|
;;
|
|
|
|
aarch64)
|
|
|
|
cp ./CLI/linux/arm64/ooniprobe ./debian/bin
|
|
|
|
goarch=arm64
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
# TODO(bassosimone): here we probably want to further extend
|
|
|
|
# this script to support at least armv7.
|
|
|
|
echo "FATAL: unsupported machine: $machine" 1>&2
|
|
|
|
exit 1
|
|
|
|
;;
|
2021-05-06 22:13:09 +02:00
|
|
|
esac
|
|
|
|
|
|
|
|
set -ex
|
|
|
|
|
|
|
|
# figure out the version number from the binary itself (which rests
|
2021-05-11 16:15:13 +02:00
|
|
|
# on the assumption that we can run such a binary)
|
|
|
|
version=$(./debian/bin/ooniprobe version)
|
|
|
|
if [ -n "$run_number" ]; then
|
|
|
|
version="${version}~${run_number}"
|
2021-05-06 22:13:09 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
# The OONI_DEB_DRY_RUN is a semi-undocumented feature allowing
|
|
|
|
# us to see the commands that would be run by this script.
|
|
|
|
|
|
|
|
# install the dependencies required by the build process
|
|
|
|
$OONI_DEB_DRY_RUN apt-get update -q
|
|
|
|
$OONI_DEB_DRY_RUN apt-get build-dep -y --no-install-recommends .
|
|
|
|
|
|
|
|
# keep the original changelog file safe
|
|
|
|
$OONI_DEB_DRY_RUN cp ./debian/changelog ./debian/changelog.oocopy
|
|
|
|
|
2021-05-11 16:15:13 +02:00
|
|
|
$OONI_DEB_DRY_RUN dch -v "$version" "New version ${version}"
|
2021-05-06 22:13:09 +02:00
|
|
|
$OONI_DEB_DRY_RUN dpkg-buildpackage -us -uc -b
|
|
|
|
|
|
|
|
# restore the original changelog file
|
|
|
|
$OONI_DEB_DRY_RUN mv ./debian/changelog.oocopy ./debian/changelog
|
|
|
|
|
|
|
|
# move the package so that we don't loose track
|
|
|
|
# of it when using a build container
|
|
|
|
$OONI_DEB_DRY_RUN mv ../*.deb .
|
|
|
|
|
|
|
|
# install the package on the container as a smoke test to
|
|
|
|
# ensure that it is installable.
|
2021-05-11 16:15:13 +02:00
|
|
|
DEBIAN_FRONTEND=noninteractive dpkg -i "ooniprobe-cli_${version}_${goarch}.deb"
|