Commit 22d47c01 authored by akwizgran's avatar akwizgran

Merge branch 'shuffle-fs' into 'master'

Make deterministic filesystem non-deterministic

See merge request !2
parents 50cb03c0 2eae1e69
Pipeline #3881 passed with stage
in 6 minutes and 9 seconds
......@@ -30,7 +30,7 @@ test_success:
script:
# Consider adding the cap and the device directly to the CI config
# https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-runners-docker-section
- docker run --cap-add SYS_ADMIN --device /dev/fuse ${TEST_IMAGE} ./reproduce.py release-1.0.12
- docker run --cap-add SYS_ADMIN --device /dev/fuse ${TEST_IMAGE} ./reproduce.py release-1.1.7
except:
- triggers
......
......@@ -3,7 +3,7 @@ FROM debian:stretch
ENV LANG=C.UTF-8
ENV DEBIAN_FRONTEND=noninteractive
ENV ANDROID_HOME=/opt/android-sdk
ENV REPO_URL=https://code.briarproject.org/akwizgran/briar.git
ENV REPO_URL=https://code.briarproject.org/briar/briar.git
WORKDIR /opt/briar-reproducer
......
......@@ -88,6 +88,12 @@ You can find a list of tags in Briar's
[source code repository](https://code.briarproject.org/akwizgran/briar/tags).
The `SYS_ADMIN` capability and the `fuse` device are required,
so the container can build the app inside a `disorderfs`.
We hope to be able to drop this requirement
once this [upstream issue](https://issuetracker.google.com/issues/110237303) is fixed.
\ No newline at end of file
so the container can build the app inside a `disorderfs` which shuffles the filesystem.
## Historical Changes
* Before version `1.1.7`, Briar needed a deterministic files system
to work around an [Android build system bug](https://issuetracker.google.com/issues/110237303)
which broke reproducibility.
An [old version of briar-reproducer](https://code.briarproject.org/briar/briar-reproducer/tags/pre-1.1.7)
can be used to verify these releases.
#!/usr/bin/env python3
import os
from subprocess import call, check_call, check_output
import sys
from subprocess import call, check_call, check_output
REPO_DIR = "briar"
REFERENCE_URL = 'https://briarproject.org/apk/briar-%s.apk'
......@@ -27,10 +27,10 @@ def main():
reference_apk = "briar-%s.apk" % version
check_call(['wget', '--no-verbose', url, '-O', reference_apk])
# use deterministic file system for building the app
# use non-deterministic file system for building the app to detect issues
if not os.path.exists(BUILD_DIR):
os.makedirs(BUILD_DIR)
check_call(['disorderfs', '--sort-dirents=yes', '--reverse-dirents=no', REPO_DIR, BUILD_DIR])
check_call(['disorderfs', '--shuffle-dirents=yes', REPO_DIR, BUILD_DIR])
# build the app
check_call(["./gradlew", "--no-daemon", GRADLE_TASK], cwd=BUILD_DIR)
......@@ -82,4 +82,4 @@ def fail(msg=""):
if __name__ == "__main__":
main()
main()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment