Part of https://github.com/ooni/probe/issues/1466. We're building both `arm64` and `amd64`. We are still not publishing `arm64` packages, which is what is asked in the original issue, but we're really close to doing that.
		
			
				
	
	
		
			74 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| # This script creates a Debian package. When run by `./make`, it
 | |
| # 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
 | |
|     echo "usage: $0 [run_number]" 1>&2
 | |
|     exit 1
 | |
| 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
 | |
| machine=`uname -m`
 | |
| goarch=""
 | |
| case $machine in
 | |
|     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
 | |
|     ;;
 | |
| esac
 | |
| 
 | |
| set -ex
 | |
| 
 | |
| # figure out the version number from the binary itself (which rests
 | |
| # on the assumption that `uname -m` can run such a binary)
 | |
| version=`./debian/bin/ooniprobe version`
 | |
| if [ ! -z $run_number ]; then
 | |
|     version="${version}~${run_number}"
 | |
| 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
 | |
| 
 | |
| $OONI_DEB_DRY_RUN dch -v $version "New version ${version}"
 | |
| $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.
 | |
| DEBIAN_FRONTEND=noninteractive dpkg -i ooniprobe-cli_${version}_${goarch}.deb
 |