Skip to content

Explore adding a reproducibility test to rust test infrastructure. #8

Explore adding a reproducibility test to rust test infrastructure.

Explore adding a reproducibility test to rust test infrastructure. #8

Workflow file for this run

name: Build and Diff Projects
on:
push:
branches:
- master
- reproducible
pull_request:
branches:
- master
- reproducible
jobs:
build_and_compare:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.x' # Adjust to the version you need
- name: Copy source files to two separate folders
run: |
# Copy source files into two separate folders
mkdir ../buildA ../buildA_extended
# Copy the repo contents into both
cp -r "$(pwd)" ../buildA
cp -r "$(pwd)" ../buildA_extended
echo "Present Directory : `pwd`"
echo "work contents : `ls ..`"
- name: Build and store binaries from source 1
run: |
echo "Repo storage available: `df -h .`"
cd ../buildA
SOURCE_DIR=$(dirname $(find . -maxdepth 2 -name x.py))
$SOURCE_DIR/configure --set rust.channel=nightly
$SOURCE_DIR/x.py build --stage 1 -j$(($(nproc)*2/3))
rm -rf $SOURCE_DIR
STAGE1_DIR=`find build -name stage1`
cp -r "$STAGE1_DIR" .
echo "Contents stage 1 dir : `ls stage1`"
rm -rf build
- name: Build and store binaries from source 2
run: |
cd ../buildA_extended
echo "Repo storage available: `df -h .`"
SOURCE_DIR=$(dirname $(find . -maxdepth 2 -name x.py))
$SOURCE_DIR/configure --set rust.channel=nightly
$SOURCE_DIR/x.py build --stage 1 -j$(($(nproc)*2/3))
rm -rf $SOURCE_DIR
STAGE1_DIR=`find build -name stage1`
cp -r "$STAGE1_DIR" .
echo "Contents stage 1 dir : `ls stage1`"
rm -rf build
cd ..
- name: Install diffoscope
run: |
sudo apt-get update
sudo apt-get install -y diffoscope
- name: Compare builds using git diff
run: |
# Go back to the root directory
cd ..
# Ensure the directories exist
if [[ ! -d "buildA" || ! -d "buildA_extended" ]]; then
echo "Error: Build directories not found!"
exit 1
fi
# Perform a diff between the two builds
diffoscope buildA/stage1 buildA_extended/stage1 > diffoscope_output.txt || echo "Differences found!"
- name: Upload diffoscope output
uses: actions/upload-artifact@v4
with:
name: diffoscope-report
path: diffoscope_output.txt
- name: Archive buildA and buildA_extended
run: |
tar -czf buildA.tar.gz buildA
tar -czf buildA_extended.tar.gz buildA_extended
- name: Upload buildA artifact
uses: actions/upload-artifact@v4
with:
name: buildA
path: buildA.tar.gz
- name: Upload buildA_extended artifact
uses: actions/upload-artifact@v4
with:
name: buildA_extended
path: buildA_extended.tar.gz