Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TODO: test reproducibility of packages #119

Open
kit-ty-kate opened this issue Jul 29, 2021 · 3 comments
Open

TODO: test reproducibility of packages #119

kit-ty-kate opened this issue Jul 29, 2021 · 3 comments
Labels
enhancement New feature or request good first issue Good for newcomers

Comments

@kit-ty-kate
Copy link
Contributor

We could install a package once, save what was installed, reinstall it and then check if there are any differences between the two.

@kit-ty-kate
Copy link
Contributor Author

Would https://github.com/roburio/orb be easy enough to integrate in a containerized step? @hannesm @reynir
Would i just need to install orb and call orb <pkg>? Are there requirements?

@hannesm
Copy link
Contributor

hannesm commented Sep 15, 2021

Hmm, it is a bit more intricate I suspect. There are two questions: which variance of reproducible builds would you like to check (see https://tests.reproducible-builds.org/debian/index_variations.html -- e.g. user id, lang setting, ...), and how much work you'd like to do in the CI.

Orb, as linked to above, does minimize the environment variables that are defined for each build and this way achieves reproducibility (similar to guix/nix) - e.g. even the build path is the same. Earlier versions (rjbou/orb) were slightly different. In addition, orb creates a separate opam switch (thus compilation time will be rather huge).

I guess for the opam repo CI some middle-path would be sensible (or use images that have the same compiler already installed in different switches). An earlier version of orb also supported to use an existing switch (the current version we're using does always create a fresh opam switch).

Options for orb (useful in a CI setting):
--twice (to build it twice)
--diffoscope (to execute diffoscope if there is a difference)

The SOURCE_DATE_EPOCH is set either to the date passed via --date or using Unix.time () by default (the very same SOURCE_DATE_EPOCH is used for both builds if --twice is provided).

@kit-ty-kate
Copy link
Contributor Author

Somewhat related to #212

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request good first issue Good for newcomers
Projects
None yet
Development

No branches or pull requests

3 participants