reproducible Debian: add arm64 to tested architectures, thanks to...

reproducible Debian: add arm64 to tested architectures, thanks to codethink.co.uk providing us with 8 moonshot arm64 sleds
Signed-off-by: Holger Levsen's avatarHolger Levsen <holger@layer-acht.org>
parent 67699e0c
......@@ -107,6 +107,8 @@ else
export MIRROR=http://ftp.de.debian.org/debian ;;
bbx15|bpi0|cb3*|cbxi4*|hb0|wbq0|odxu4*|odu3*|wbd0|rpi2*|ff2*|ff4*|opi2*|jtk1*)
export MIRROR=http://ftp.us.debian.org/debian ;;
codethink*)
export MIRROR=http://ftp.uk.debian.org/debian ;;
spectrum)
export MIRROR=none ;;
*)
......@@ -115,7 +117,7 @@ else
fi
if [ -z "$http_proxy" ]; then
case $HOSTNAME in
jenkins|jenkins-test-vm|profitbricks-build*)
jenkins|jenkins-test-vm|profitbricks-build*|codethink*)
export http_proxy="http://localhost:3128" ;;
bbx15|bpi0|cb3*|cbxi4*|hb0|wbq0|odxu4*|odu3*|wbd0|rpi2*|ff2*|ff4*|opi2*|jtk1*)
export http_proxy="http://10.0.0.15:8000/" ;;
......
......@@ -40,7 +40,15 @@ ff4a-armhf-rb.debian.net
jtk1a-armhf-rb.debian.net
opi2a-armhf-rb.debian.net
opi2b-armhf-rb.debian.net
opi2c-armhf-rb.debian.net"
opi2c-armhf-rb.debian.net
codethink-sled9-arm64.debian.net
codethink-sled10-arm64.debian.net
codethink-sled11-arm64.debian.net
codethink-sled12-arm64.debian.net
codethink-sled13-arm64.debian.net
codethink-sled14-arm64.debian.net
codethink-sled15-arm64.debian.net
codethink-sled16-arm64.debian.net"
# return the ports sshd is listening on
get_node_ssh_port() {
......@@ -114,6 +122,29 @@ get_node_ssh_port() {
;;
profitbricks-build*)
PORT=22
codethink-sled9*)
PORT=10109
;;
codethink-sled10*)
PORT=10110
;;
codethink-sled11*)
PORT=10111
;;
codethink-sled12*)
PORT=10112
;;
codethink-sled13*)
PORT=10113
;;
codethink-sled14*)
PORT=10114
;;
codethink-sled15*)
PORT=10115
;;
codethink-sled16*)
PORT=10116
;;
*)
echo >&2 "Unknown node $NODE_NAME."
......
......@@ -588,7 +588,7 @@ check_suitability() {
break
fi
# special case arm…
if [ "$ARCH" = "armhf" ] && [ "$arch" = "any-arm" ] ; then
if ( [ "$ARCH" = "armhf" ] || "$ARCH" = "arm64" ] ) && [ "$arch" = "any-arm" ] ; then
SUITABLE=true
break
fi
......@@ -657,6 +657,9 @@ second_build() {
armhf) locale=it_CH
language=it
;;
arm64) locale=nl_BE
language=nl
;;
i386) locale=de_CH
language=de
;;
......
......@@ -41,7 +41,7 @@ if os.uname()[1] == 'jenkins-test-vm':
# tested suites
SUITES = ['testing', 'unstable', 'experimental']
# tested architectures
ARCHS = ['amd64', 'i386', 'armhf']
ARCHS = ['amd64', 'i386', 'arm64', 'armhf']
# defaults
defaultsuite = 'unstable'
defaultarch = 'amd64'
......
......@@ -34,7 +34,7 @@ TEMPLATE_PATH=/srv/jenkins/mustache-templates/reproducible
# Debian suites being tested
SUITES="testing unstable experimental"
# Debian architectures being tested
ARCHS="amd64 i386 armhf"
ARCHS="amd64 i386 arm64 armhf"
# define Debian build nodes in use
. /srv/jenkins/bin/jenkins_node_definitions.sh
......
......@@ -432,7 +432,7 @@ create_suite_arch_stats_page() {
fi
set_icon not_for_us
write_icon
if [ "$ARCH" = "armhf" ] ; then
if [ "$ARCH" = "armhf" ] || [ "$ARCH" = "arm64" ]; then
ARMSPECIALARCH=" 'any-arm',"
fi
write_page "$COUNT_NOTFORUS ($PERCENT_NOTFORUS%) packages which are neither Architecture: 'any', 'all', '$ARCH', 'linux-any', 'linux-$ARCH'$ARMSPECIALARCH nor 'any-$ARCH' will not be build here"
......
......@@ -63,6 +63,14 @@ rpi2b-armhf-rb.debian.net
rpi2c-armhf-rb.debian.net
wbd0-armhf-rb.debian.net
wbq0-armhf-rb.debian.net
codethink-sled9-arm64.debian.net
codethink-sled10-arm64.debian.net
codethink-sled11-arm64.debian.net
codethink-sled12-arm64.debian.net
codethink-sled13-arm64.debian.net
codethink-sled14-arm64.debian.net
codethink-sled15-arm64.debian.net
codethink-sled16-arm64.debian.net
root@jenkins.debian.net"
ALL_HOSTS=$HOSTS
......@@ -127,7 +135,15 @@ elif [ "$1" = "" ] || [ "$1" = "jenkins" ] ; then
10|pb10) HOSTS="$HOSTS profitbricks-build10-amd64.debian.net" ;;
11|pb11) HOSTS="$HOSTS profitbricks-build11-amd64.debian.net" ;;
15|pb15) HOSTS="$HOSTS profitbricks-build15-amd64.debian.net" ;;
armhf|amd64|i386) HOSTS="$HOSTS $(echo $ALL_HOSTS | sed 's# #\n#g' | grep $i)" ;;
c9) HOSTS="$HOSTS codethink-sled9-arm64.debian.net" ;;
c10) HOSTS="$HOSTS codethink-sled10-arm64.debian.net" ;;
c11) HOSTS="$HOSTS codethink-sled11-arm64.debian.net" ;;
c12) HOSTS="$HOSTS codethink-sled12-arm64.debian.net" ;;
c13) HOSTS="$HOSTS codethink-sled13-arm64.debian.net" ;;
c14) HOSTS="$HOSTS codethink-sled14-arm64.debian.net" ;;
c15) HOSTS="$HOSTS codethink-sled15-arm64.debian.net" ;;
c16) HOSTS="$HOSTS codethink-sled16-arm64.debian.net" ;;
armhf|amd64|i386|arm64) HOSTS="$HOSTS $(echo $ALL_HOSTS | sed 's# #\n#g' | grep $i)" ;;
*) ;;
esac
done
......
......@@ -9,9 +9,10 @@
case $HOSTNAME in
jenkins|jenkins-test-vm|profitbricks-build*) MIRRORSITE=http://ftp.de.debian.org/debian ;;
bbx15|bpi0|cbxi4*|cb3*|hb0|wbq0|odxu4*|odu3*|wbd0|rpi2*|ff2*|ff4*|opi2*|jtk1*) MIRRORSITE=http://ftp.us.debian.org/debian ;;
codethink*) MIRRORSITE=http://ftp.uk.debian.org/debian ;;
*) echo "unsupported host, exiting." ; exit 1 ;;
esac
# only use eatmydata on armhf+i386 - on amd64 we build in tmpfs anyway
# only use eatmydata on armhf+i386 - on amd64 we build in tmpfs anyway - FIXME: decide about codethink hosts
case $HOSTNAME in
profitbricks-build*i386)
EATMYDATA=yes ;;
......
......@@ -9,9 +9,10 @@
case $HOSTNAME in
jenkins|jenkins-test-vm|profitbricks-build*) MIRRORSITE=http://ftp.de.debian.org/debian ;;
bbx15|bpi0|cbxi4*|cb3*|hb0|wbq0|odxu4*|odu3*|wbd0|rpi2*|ff2*|ff4*|opi2*|jtk1*) MIRRORSITE=http://ftp.us.debian.org/debian ;;
codethink*) MIRRORSITE=http://ftp.uk.debian.org/debian ;;
*) echo "unsupported host, exiting." ; exit 1 ;;
esac
# only use eatmydata on armhf+i386 - on amd64 we build in tmpfs anyway
# only use eatmydata on armhf+i386 - on amd64 we build in tmpfs anyway - FIXME: decide about codethink hosts
case $HOSTNAME in
profitbricks-build*i386)
EATMYDATA=yes ;;
......
......@@ -9,9 +9,10 @@
case $HOSTNAME in
jenkins|jenkins-test-vm|profitbricks-build*) MIRRORSITE=http://ftp.de.debian.org/debian ;;
bbx15|bpi0|cbxi4*|cb3*|hb0|wbq0|odxu4*|odu3*|wbd0|rpi2*|ff2*|ff4*|opi2*|jtk1*) MIRRORSITE=http://ftp.us.debian.org/debian ;;
codethink*) MIRRORSITE=http://ftp.uk.debian.org/debian ;;
*) echo "unsupported host, exiting." ; exit 1 ;;
esac
# only use eatmydata on armhf+i386 - on amd64 we build in tmpfs anyway
# only use eatmydata on armhf+i386 - on amd64 we build in tmpfs anyway - FIXME: decide about codethink hosts
case $HOSTNAME in
profitbricks-build*i386)
EATMYDATA=yes ;;
......
......@@ -9,9 +9,10 @@
case $HOSTNAME in
jenkins|jenkins-test-vm|profitbricks-build*) MIRRORSITE=http://ftp.de.debian.org/debian ;;
bbx15|bpi0|cbxi4*|cb3*|hb0|wbq0|odxu4*|odu3*|wbd0|rpi2*|ff2*|ff4*|opi2*|jtk1*) MIRRORSITE=http://ftp.us.debian.org/debian ;;
codethink*) MIRRORSITE=http://ftp.uk.debian.org/debian ;;
*) echo "unsupported host, exiting." ; exit 1 ;;
esac
# only use eatmydata on armhf+i386 - on amd64 we build in tmpfs anyway
# only use eatmydata on armhf+i386 - on amd64 we build in tmpfs anyway - FIXME: decide about codethink hosts
case $HOSTNAME in
profitbricks-build*i386)
EATMYDATA=yes ;;
......
......@@ -9,9 +9,10 @@
case $HOSTNAME in
jenkins|jenkins-test-vm|profitbricks-build*) MIRRORSITE=http://ftp.de.debian.org/debian ;;
bbx15|bpi0|cbxi4*|cb3*|hb0|wbq0|odxu4*|odu3*|wbd0|rpi2*|ff2*|ff4*|opi2*|jtk1*) MIRRORSITE=http://ftp.us.debian.org/debian ;;
codethink*) MIRRORSITE=http://ftp.uk.debian.org/debian ;;
*) echo "unsupported host, exiting." ; exit 1 ;;
esac
# only use eatmydata on armhf+i386 - on amd64 we build in tmpfs anyway
# only use eatmydata on armhf+i386 - on amd64 we build in tmpfs anyway - FIXME: decide about codethink hosts
case $HOSTNAME in
profitbricks-build*i386)
EATMYDATA=yes ;;
......
......@@ -9,9 +9,10 @@
case $HOSTNAME in
jenkins|jenkins-test-vm|profitbricks-build*) MIRRORSITE=http://ftp.de.debian.org/debian ;;
bbx15|bpi0|cbxi4*|cb3*|hb0|wbq0|odxu4*|odu3*|wbd0|rpi2*|ff2*|ff4*|opi2*|jtk1*) MIRRORSITE=http://ftp.us.debian.org/debian ;;
codethink*) MIRRORSITE=http://ftp.uk.debian.org/debian ;;
*) echo "unsupported host, exiting." ; exit 1 ;;
esac
# only use eatmydata on armhf+i386 - on amd64 we build in tmpfs anyway
# only use eatmydata on armhf+i386 - on amd64 we build in tmpfs anyway - FIXME: decide about codethink hosts
case $HOSTNAME in
profitbricks-build*i386)
EATMYDATA=yes ;;
......
# See man 5 aliases for format
postmaster: root
root: holger@layer-acht.org, helmutg@debian.org, mattia@mapreri.org
Acquire::http::Proxy "http://127.0.0.1:3128/";
[apt]
frontend=mail
email_address=root
confirm=0
save_seen=/var/lib/apt/listchanges.db
which=both
deb http://ftp.de.debian.org/debian/ jessie main contrib non-free
#deb-src http://ftp.de.debian.org/debian/ jessie main contrib non-free
deb http://ftp.de.debian.org/debian/ jessie-updates main contrib non-free
#deb-src http://ftp.de.debian.org/debian/ jessie-updates main contrib non-free
deb http://security.debian.org/ jessie/updates main contrib non-free
#deb-src http://security.debian.org/ jessie/updates main contrib non-free
deb http://ftp.de.debian.org/debian/ jessie-backports main contrib non-free
#deb-src http://ftp.de.debian.org/debian/ jessie-backports main contrib non-free
# m h dom mon dow (0|7=sun,1=mon) command
#
# cron-jobs for jenkins.debian.net and nodes
#
MAILTO=root
0 1,13 * * * nobody /usr/bin/chronic /usr/local/bin/dsa-check-running-kernel
2 1,13 * * * nobody /usr/bin/chronic /usr/local/bin/dsa-check-packages
#
# Example config-file for munin-node
#
log_level 4
log_file /var/log/munin/munin-node.log
pid_file /var/run/munin/munin-node.pid
background 1
setsid 1
user root
group root
# This is the timeout for the whole transaction.
# Units are in sec. Default is 15 min
#
# global_timeout 900
# This is the timeout for each plugin.
# Units are in sec. Default is 1 min
#
# timeout 60
# Regexps for files to ignore
ignore_file [\#~]$
ignore_file DEADJOE$
ignore_file \.bak$
ignore_file %$
ignore_file \.dpkg-(tmp|new|old|dist)$
ignore_file \.rpm(save|new)$
ignore_file \.pod$
# Set this if the client doesn't report the correct hostname when
# telnetting to localhost, port 4949
#
#host_name localhost.localdomain
# A list of addresses that are allowed to connect. This must be a
# regular expression, since Net::Server does not understand CIDR-style
# network notation unless the perl module Net::CIDR is installed. You
# may repeat the allow line as many times as you'd like
allow ^127\.0\.0\.1$
allow ^::1$
# If you have installed the Net::CIDR perl module, you can use one or more
# cidr_allow and cidr_deny address/mask patterns. A connecting client must
# match any cidr_allow, and not match any cidr_deny. Note that a netmask
# *must* be provided, even if it's /32
#
# Example:
#
# cidr_allow 127.0.0.1/32
# cidr_allow 192.0.2.0/24
# cidr_deny 192.0.2.42/32
# Which address to bind to;
host *
# host 127.0.0.1
# And which port
port 4949
allow ^78\.137\.96\.196
[df*]
env.exclude none unknown iso9660 squashfs udf romfs ramfs debugfs devtmpfs sysfs
env.exclude_re /srv/workspace/pbuilder /run /dev/disk/by /var/lib/schroot/mount /srv/workspace/varlibschroot /dev/shm /sys/fs/cgroup
env.warning 92
env.critical 98
[diskstats]
env.trim_labels yes
env.include_only /dev/vda,/dev/vdb
# This file is used to configure how the plugins are invoked.
# Place in /etc/munin/plugin-conf.d/ or corresponding directory.
#
# PLEASE NOTE: Changes in the plugin-conf.d directory are only
# read at munin-node startup, so restart at any changes.
#
# user <user> # Set the user to run the plugin as.
# group <group> # Set the group to run the plugin as.
# command <command> # Run <command> instead of the plugin. %c expands to
# what would normally be run.
# env.<variable> <value> # Sets <variable> in the plugin's environment, see the
# individual plugins to find out which variables they
# care about.
[amavis]
group adm
env.MUNIN_MKTEMP /bin/mktemp -p /tmp/ $1
env.amavislog /var/log/mail.info
[apt]
user root
[courier_mta_mailqueue]
group daemon
[courier_mta_mailstats]
group adm
[courier_mta_mailvolume]
group adm
[cps*]
user root
[exim_mailqueue]
group adm, (Debian-exim)
[exim_mailstats]
group adm, (Debian-exim)
env.logdir /var/log/exim4/
env.logname mainlog
[fw_conntrack]
user root
[fw_forwarded_local]
user root
[hddtemp_smartctl]
user root
[hddtemp2]
user root
[if_*]
user root
[if_err_*]
user nobody
[ip_*]
user root
[ipmi_*]
user root
[mysql*]
user root
env.mysqlopts --defaults-file=/etc/mysql/debian.cnf
env.mysqluser debian-sys-maint
env.mysqlconnection DBI:mysql:mysql;mysql_read_default_file=/etc/mysql/debian.cnf
[postfix_mailqueue]
user postfix
[postfix_mailstats]
group adm
[postfix_mailvolume]
group adm
env.logfile mail.log
[smart_*]
user root
[vlan*]
user root
[ejabberd*]
user ejabberd
env.statuses available away chat xa
env.days 1 7 30
[dhcpd3]
user root
env.leasefile /var/lib/dhcp3/dhcpd.leases
env.configfile /etc/dhcp3/dhcpd.conf
[jmx_*]
env.ip 127.0.0.1
env.port 5400
[samba]
user root
[munin_stats]
user munin
group munin
[postgres_*]
user postgres
env.PGUSER postgres
env.PGPORT 5432
[fail2ban]
user root
#!/bin/sh
# -*- sh -*-
: << =cut
=head1 NAME
jenkins_reproducible_builds - Plugin to measure number of reproducible builds running
=head1 AUTHOR
Contributed by Holger Levsen
=head1 LICENSE
GPLv2
=head1 MAGIC MARKERS
#%# family=auto
#%# capabilities=autoconf
=cut
. $MUNIN_LIBDIR/plugins/plugin.sh
if [ "$1" = "autoconf" ]; then
echo yes
exit 0
fi
JOB_PREFIXES="first second"
if [ "$1" = "config" ]; then
echo 'graph_title Concurrent reproducible builds running'
echo 'graph_args --base 1000 -l 0 '
echo 'graph_scale no'
echo 'graph_total total'
echo 'graph_vlabel Concurrent reproducible builds running'
echo 'graph_category jenkins'
draw=AREA
for PREFIX in $JOB_PREFIXES ; do
echo "jenkins_reproducible_${PREFIX}_build.label $PREFIX build"
echo "jenkins_reproducible_${PREFIX}_build.draw $draw"
if [ "$draw" = "AREA" ] ; then draw=STACK ; fi
done
exit 0
fi
for PREFIX in $JOB_PREFIXES ; do
if [ "$PREFIX" = "first" ] ; then
NR=$(pgrep -fc "bin/bash /srv/jenkins/bin/reproducible_build.sh 1")
else
NR=$(pgrep -fc "bin/bash /srv/jenkins/bin/reproducible_build.sh 2")
fi
echo "jenkins_reproducible_${PREFIX}_build.value $NR"
done
#!/bin/bash
set -e
# exit if we are in the same UTS namespace as init ( != 2nd build )
[ "$(readlink /proc/1/ns/uts)" = "$(readlink /proc/self/ns/uts)" ] && exit 0
cd $BUILDDIR
if [ "$PWD" == "/build" ]; then
# build path variation disabled, so do nothing
exit 0
fi
# There should be only one file, the source directory.
src_dir=$(ls | head -n 1)
mv $src_dir 2nd
#!/bin/sh
set -e
BUILDDIR="${BUILDDIR:-/tmp/buildd}"
# exit if we are in the same UTS namespace as init ( != 2nd build )
[ "$(readlink /proc/1/ns/uts)" = "$(readlink /proc/self/ns/uts)" ] && exit 0
# cease using disorderfs
if [ -d /tmp/disorderfs ] ; then
echo -n "Unmounting /tmp/disorderfs…"
fusermount -z -u "$BUILDDIR"
rmdir "$BUILDDIR"
mv /tmp/disorderfs "$BUILDDIR"
echo " done."
fi
#!/bin/sh
set -e
BUILDDIR="${BUILDDIR:-/tmp/buildd}"
echo "debug output: disk usage on $(hostname) at $(date -u)"
df -h
echo
# exit if we are in the same UTS namespace as init ( != 2nd build )
[ "$(readlink /proc/1/ns/uts)" = "$(readlink /proc/self/ns/uts)" ] && exit 0
# cease using disorderfs
if [ -d /tmp/disorderfs ] ; then
echo -n "Unmounting /tmp/disorderfs…"
fusermount -z -u "$BUILDDIR"
rmdir "$BUILDDIR"
mv /tmp/disorderfs "$BUILDDIR"
echo " done."
fi
#!/bin/sh
set -e
BUILDDIR="${BUILDDIR:-/tmp/buildd}"
# exit if we are in the same UTS namespace as init ( != 2nd build )
[ "$(readlink /proc/1/ns/uts)" = "$(readlink /proc/self/ns/uts)" ] && exit 0
#
# doing variations for the 2nd builds:
#
REAL_HOSTNAME=$(hostname)
echo "disorder-fs debug: Running on $REAL_HOSTNAME."
echo "I: Changing host+domainname to test build reproducibility" >&2
sed -e '/^127.0.0.1/s/$/ i-capture-the-hostname i-capture-the-hostname.i-capture-the-domain/' -i /etc/hosts
hostname i-capture-the-hostname
domainname i-capture-the-domain
echo "I: Adding a custom variable just for the fun of it..." >&2
export CAPTURE_ENVIRONMENT="I capture the environment"
echo "I: Changing /bin/sh to bash" >&2
echo "dash dash/sh boolean false" | debconf-set-selections
DEBIAN_FRONTEND=noninteractive dpkg-reconfigure dash
if [ -n "$BUILDUSERNAME" ] ; then
echo "I: Setting $BUILDUSERNAME's login shell to /bin/bash" >&2
usermod -s /bin/bash $BUILDUSERNAME
if [ -n "$BUILDUSERGECOS" ] ; then
echo "I: Setting $BUILDUSERNAME's GECOS to $BUILDUSERGECOS" >&2
usermod -c "$BUILDUSERGECOS" $BUILDUSERNAME
fi
fi