[Git][reproducible-builds/reproducible-website][master] 2 commits: docs: add avoid unreproducible information documentation
Chris Lamb (@lamby)
gitlab at salsa.debian.org
Wed Nov 6 00:31:34 UTC 2024
Chris Lamb pushed to branch master at Reproducible Builds / reproducible-website
Commits:
452f4dd1 by Julia Krüger at 2024-11-06T00:29:43+00:00
docs: add avoid unreproducible information documentation
- - - - -
ab7546d7 by hulkoba at 2024-11-06T00:29:43+00:00
docs(strip unreprod. info): add reproducible-apk-tools
- - - - -
2 changed files:
- _data/docs.yml
- + _docs/stripping_unreproducible_information.md
Changes:
=====================================
_data/docs.yml
=====================================
@@ -14,6 +14,7 @@
- deterministic-build-systems
- volatile-inputs
- stable-inputs
+ - stripping-unreproducible-information
- value-initialization
- version-information
- timestamps
=====================================
_docs/stripping_unreproducible_information.md
=====================================
@@ -0,0 +1,52 @@
+---
+title: Stripping of unreproducible information
+layout: docs
+permalink: /docs/stripping-unreproducible-information/
+---
+
+In addition to [handling timestamps]({{ "/docs/timestamps" | relative_url }}),
+another crucial aspect of achieving reproducible builds is the removal of
+"useless" and unreproducible information from the build artifacts.
+This information often includes metadata, such as file ownership or access times,
+which can vary depending on the build environment or the specific conditions
+under which the build occurs. If left unaddressed, these variations can lead
+to inconsistencies in the final output, making the build non-reproducible.
+
+## Metadata are best avoided
+
+Metadata like file ownership, permissions, or even unimportant data stored by
+some formats can introduce variability.
+
+For instance, many build tools or file formats capture the user ID or group ID
+of the person running the build, which can lead to different outputs even when
+the build process is otherwise identical. Stripping or standardizing this
+metadata is essential to ensure that the build outputs are consistent regardless
+of the environment.
+
+## External tools
+
+To tackle this issue, the
+[strip-nondeterminism]({{ "/tools#strip-nondeterminism" | relative_url }})
+tool was created. It automatically removes or normalizes non-deterministic
+information in various types of files, such as archives, PDFs, and JAR files.
+It can clamp timestamps, strip unnecessary metadata, and perform other
+normalizations that ensure the build outputs remain identical across different
+environments.
+
+This tool is particularly useful when it’s not feasible to modify the build
+process itself to eliminate the source of non-determinism. By incorporating
+[strip-nondeterminism]({{ "/tools#strip-nondeterminism" | relative_url }})
+into your build pipeline, you can address many reproducibility issues at a
+post-processing stage, further ensuring that your builds are truly reproducible.
+
+For Android APKs, the
+[reproducible-apk-tools]({{ "/tools#reproducible-apk-tools" | relative_url }})
+project provides similar functionality, helping to ensure that APK files can be
+reproduced consistently by removing or normalizing non-deterministic data
+specific to APKs.
+
+By diligently stripping away unreproducible information and using tools like
+[strip-nondeterminism]({{ "/tools#strip-nondeterminism" | relative_url }}),
+you can significantly improve the reproducibility of your
+builds, ensuring that the same source code will always produce identical results,
+regardless of where or when it is built.
View it on GitLab: https://salsa.debian.org/reproducible-builds/reproducible-website/-/compare/4aeeeb8e22ec54f5c510fa492822a78be906d451...ab7546d710e474e1baf423a892dbfc0e9ca189c8
--
View it on GitLab: https://salsa.debian.org/reproducible-builds/reproducible-website/-/compare/4aeeeb8e22ec54f5c510fa492822a78be906d451...ab7546d710e474e1baf423a892dbfc0e9ca189c8
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.reproducible-builds.org/pipermail/rb-commits/attachments/20241106/0a57dbc0/attachment.htm>
More information about the rb-commits
mailing list