Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions jjb/freebsd-src.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -546,3 +546,19 @@
timeout-var: 'BUILD_TIMEOUT'
fail: true
type: absolute

- project:
name: FreeBSD-reproducibility
target: amd64
target_arch:
- amd64
branch:
- main
testtype:
- locale
- parallel
- path
- timestamp
- uid
jobs:
- 'FreeBSD-{branch}-{target_arch}-reproducibility-{testtype}'
25 changes: 25 additions & 0 deletions jjb/template.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -916,3 +916,28 @@
timeout-var: 'BUILD_TIMEOUT'
fail: true
type: absolute

- job-template:
name: 'FreeBSD-{branch}-{target_arch}-reproducibility-{testtype}'
defaults: global
node: jailer
scm:
- FreeBSD-src-use_git_commit
parameters:
- USE_GIT_COMMIT
builders:
- add-svn-revision-description
- checkout-scripts
- setup-jail
- execute-in-jail
publishers:
- clean-jail
- git-mail-notify-failure-mailinglist
- git-mail-notify-fixed-admin-only
wrappers:
- timestamps
- timeout:
timeout: 240
timeout-var: 'BUILD_TIMEOUT'
fail: true
type: absolute
19 changes: 19 additions & 0 deletions jobs/FreeBSD-main-amd64-reproducibility-locale/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/sh

set -ex

export TESTTYPE=locale
. ${WORKSPACE}/freebsd-ci/scripts/build/build-reproducible-pre.sh
export TARGET=amd64
export TARGET_ARCH=amd64

echo $SOURCE_DATE_EPOCH
echo $SOURCE_DATE_EPOCH_BASE
cd /usr/src
build_world_kernel
export MAKEOBJDIRPREFIX=${WORKSPACE}/objtest
rm -fr ${MAKEOBJDIRPREFIX}
export LC_ALL=fr_FR.UTF-8
build_world_kernel

. ${WORKSPACE}/freebsd-ci/scripts/build/build-reproducible.sh
4 changes: 4 additions & 0 deletions jobs/FreeBSD-main-amd64-reproducibility-locale/jail.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
TARGET=amd64
TARGET_ARCH=amd64
WITH_32BIT=0
OSRELEASE=14.2-RELEASE
2 changes: 2 additions & 0 deletions jobs/FreeBSD-main-amd64-reproducibility-locale/main.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
NO_CLEAN=yes
NO_ROOT=yes
1 change: 1 addition & 0 deletions jobs/FreeBSD-main-amd64-reproducibility-locale/make.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
NO_CLEAN=yes
1 change: 1 addition & 0 deletions jobs/FreeBSD-main-amd64-reproducibility-locale/pkg-list
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
sysutils/py-diffoscope
1 change: 1 addition & 0 deletions jobs/FreeBSD-main-amd64-reproducibility-locale/src.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
WITH_REPRODUCIBLE_BUILD=yes
19 changes: 19 additions & 0 deletions jobs/FreeBSD-main-amd64-reproducibility-parallel/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/sh

set -ex

export TESTTYPE=parallel
. ${WORKSPACE}/freebsd-ci/scripts/build/build-reproducible-pre.sh
export TARGET=amd64
export TARGET_ARCH=amd64

echo $SOURCE_DATE_EPOCH
echo $SOURCE_DATE_EPOCH_BASE
cd /usr/src
build_world_kernel
export MAKEOBJDIRPREFIX=${WORKSPACE}/objtest
rm -fr ${MAKEOBJDIRPREFIX}
export JFLAG=1
build_world_kernel

. ${WORKSPACE}/freebsd-ci/scripts/build/build-reproducible.sh
4 changes: 4 additions & 0 deletions jobs/FreeBSD-main-amd64-reproducibility-parallel/jail.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
TARGET=amd64
TARGET_ARCH=amd64
WITH_32BIT=0
OSRELEASE=14.2-RELEASE
1 change: 1 addition & 0 deletions jobs/FreeBSD-main-amd64-reproducibility-parallel/make.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
NO_CLEAN=yes
1 change: 1 addition & 0 deletions jobs/FreeBSD-main-amd64-reproducibility-parallel/pkg-list
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
sysutils/py-diffoscope
1 change: 1 addition & 0 deletions jobs/FreeBSD-main-amd64-reproducibility-parallel/src.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
WITH_REPRODUCIBLE_BUILD=yes
21 changes: 21 additions & 0 deletions jobs/FreeBSD-main-amd64-reproducibility-path/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/bin/sh

set -ex

export TESTTYPE=path
. ${WORKSPACE}/freebsd-ci/scripts/build/build-reproducible-pre.sh
export TARGET=amd64
export TARGET_ARCH=amd64

echo $SOURCE_DATE_EPOCH
echo $SOURCE_DATE_EPOCH_BASE
cp -Rp /usr/src ${WORKSPACE}/src1
cp -Rp /usr/src ${WORKSPACE}/src2
cd ${WORKSPACE}/src1
build_world_kernel
export MAKEOBJDIRPREFIX=${WORKSPACE}/objtest
rm -fr ${MAKEOBJDIRPREFIX}
cd ${WORKSPACE}/src2
build_world_kernel

. ${WORKSPACE}/freebsd-ci/scripts/build/build-reproducible.sh
4 changes: 4 additions & 0 deletions jobs/FreeBSD-main-amd64-reproducibility-path/jail.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
TARGET=amd64
TARGET_ARCH=amd64
WITH_32BIT=0
OSRELEASE=14.2-RELEASE
4 changes: 4 additions & 0 deletions jobs/FreeBSD-main-amd64-reproducibility-path/make.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
NO_CLEAN=yes
CFLAGS+="-ffile-prefix-map=$(pwd)=/usr/src"
CXXFLAGS+="-ffile-prefix-map=$(pwd)=/usr/src"
LDFLAGS+="-ffile-prefix-map=$(pwd)=/usr/src"
1 change: 1 addition & 0 deletions jobs/FreeBSD-main-amd64-reproducibility-path/pkg-list
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
sysutils/py-diffoscope
1 change: 1 addition & 0 deletions jobs/FreeBSD-main-amd64-reproducibility-path/src.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
WITH_REPRODUCIBLE_BUILD=yes
21 changes: 21 additions & 0 deletions jobs/FreeBSD-main-amd64-reproducibility-timestamp/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/bin/sh

set -ex

export TESTTYPE=timestamp
. ${WORKSPACE}/freebsd-ci/scripts/build/build-reproducible-pre.sh
export TARGET=amd64
export TARGET_ARCH=amd64

echo $SOURCE_DATE_EPOCH
echo $SOURCE_DATE_EPOCH_BASE
cd /usr/src
build_world_kernel
export MAKEOBJDIRPREFIX=${WORKSPACE}/objtest
rm -fr ${MAKEOBJDIRPREFIX}
# One year from today's date at 00:00:00 UTC
export SOURCE_DATE_EPOCH=$(date -u -j -v+1y -f "%Y-%m-%d %H:%M:%S" "$(date -u +%Y-%m-%d) 00:00:00" +%s)
echo $SOURCE_DATE_EPOCH
build_world_kernel

. ${WORKSPACE}/freebsd-ci/scripts/build/build-reproducible.sh
4 changes: 4 additions & 0 deletions jobs/FreeBSD-main-amd64-reproducibility-timestamp/jail.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
TARGET=amd64
TARGET_ARCH=amd64
WITH_32BIT=0
OSRELEASE=14.2-RELEASE
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
NO_CLEAN=yes
1 change: 1 addition & 0 deletions jobs/FreeBSD-main-amd64-reproducibility-timestamp/pkg-list
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
sysutils/py-diffoscope
1 change: 1 addition & 0 deletions jobs/FreeBSD-main-amd64-reproducibility-timestamp/src.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
WITH_REPRODUCIBLE_BUILD=yes
44 changes: 44 additions & 0 deletions jobs/FreeBSD-main-amd64-reproducibility-uid/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#!/bin/sh

set -ex

export TESTTYPE=uid
. ${WORKSPACE}/freebsd-ci/scripts/build/build-reproducible-pre.sh
export TARGET=amd64
export TARGET_ARCH=amd64

echo $SOURCE_DATE_EPOCH
echo $SOURCE_DATE_EPOCH_BASE
cd /usr/src
sudo -u root -E make -j ${JFLAG} \
buildworld \
TARGET=${TARGET} \
TARGET_ARCH=${TARGET_ARCH} \
${CROSS_TOOLCHAIN_PARAM} \
__MAKE_CONF=${MAKECONF} \
SRCCONF=${SRCCONF}
sudo -u root -E make -j ${JFLAG} -DNO_CLEAN -DNO_ROOT \
buildkernel \
TARGET=${TARGET} \
TARGET_ARCH=${TARGET_ARCH} \
${CROSS_TOOLCHAIN_PARAM} \
__MAKE_CONF=${MAKECONF} \
SRCCONF=${SRCCONF}
export MAKEOBJDIRPREFIX=${WORKSPACE}/objtest
rm -fr ${MAKEOBJDIRPREFIX}
sudo -u nobody -E make -j ${JFLAG} \
buildworld \
TARGET=${TARGET} \
TARGET_ARCH=${TARGET_ARCH} \
${CROSS_TOOLCHAIN_PARAM} \
__MAKE_CONF=${MAKECONF} \
SRCCONF=${SRCCONF}
sudo -u nobody -E make -j ${JFLAG} \
buildkernel \
TARGET=${TARGET} \
TARGET_ARCH=${TARGET_ARCH} \
${CROSS_TOOLCHAIN_PARAM} \
__MAKE_CONF=${MAKECONF} \
SRCCONF=${SRCCONF}

. ${WORKSPACE}/freebsd-ci/scripts/build/build-reproducible.sh
4 changes: 4 additions & 0 deletions jobs/FreeBSD-main-amd64-reproducibility-uid/jail.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
TARGET=amd64
TARGET_ARCH=amd64
WITH_32BIT=0
OSRELEASE=14.2-RELEASE
1 change: 1 addition & 0 deletions jobs/FreeBSD-main-amd64-reproducibility-uid/pkg-list
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
sysutils/py-diffoscope
1 change: 1 addition & 0 deletions jobs/FreeBSD-main-amd64-reproducibility-uid/src.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
WITH_REPRODUCIBLE_BUILD=yes
39 changes: 39 additions & 0 deletions scripts/build/build-reproducible-pre.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
if [ -f "${WORKSPACE}/$(dirname "$0")/src.conf" ]; then
export SRCCONF="${WORKSPACE}/$(dirname "$0")/src.conf"
else
export SRCCONF="/dev/null"
fi
if [ -f "${WORKSPACE}/$(dirname "$0")/make.conf" ]; then
export MAKECONF="${WORKSPACE}/$(dirname "$0")/make.conf"
else
export MAKECONF="/dev/null"
fi
export JFLAG=${BUILDER_JFLAG}
export ARTIFACT=${WORKSPACE}/diff.html
export ARTIFACT_DEST=artifact/reproducibility/${FBSD_BRANCH}/${TARGET}/${TARGET_ARCH}/${GIT_COMMIT}-${TESTTYPE}.html
# Set SOURCE_DATE_EPOCH to today at 00:00:00 UTC
export SOURCE_DATE_EPOCH=$(date -u -j -f "%Y-%m-%d %H:%M:%S" "$(date -u +%Y-%m-%d) 00:00:00" +%s)
export SOURCE_DATE_EPOCH_BASE=${SOURCE_DATE_EPOCH}
if [ -n "${CROSS_TOOLCHAIN}" ]; then
CROSS_TOOLCHAIN_PARAM=CROSS_TOOLCHAIN=${CROSS_TOOLCHAIN}
export CROSS_TOOLCHAIN_PARAM
fi
export MAKEOBJDIRPREFIX=${WORKSPACE}/obj
rm -fr ${MAKEOBJDIRPREFIX}

build_world_kernel() {
make -j ${JFLAG} \
buildworld \
TARGET=${TARGET} \
TARGET_ARCH=${TARGET_ARCH} \
${CROSS_TOOLCHAIN_PARAM} \
__MAKE_CONF=${MAKECONF} \
SRCCONF=${SRCCONF}
make -j ${JFLAG} \
buildkernel \
TARGET=${TARGET} \
TARGET_ARCH=${TARGET_ARCH} \
${CROSS_TOOLCHAIN_PARAM} \
__MAKE_CONF=${MAKECONF} \
SRCCONF=${SRCCONF}
}
8 changes: 8 additions & 0 deletions scripts/build/build-reproducible.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
diffoscope --html ${WORKSPACE}/diff.html ${WORKSPACE}/obj ${WORKSPACE}/objtest
if [ -f "${WORKSPACE}/diff.html" ]; then
sudo mkdir -p ${ARTIFACT_DEST}
mv ${ARTIFACT} ${ARTIFACT_DEST}
exit 1
else
exit 0
fi