diff options
author | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2023-02-19 11:52:11 -0500 |
---|---|---|
committer | Mark H Weaver <mhw@netris.org> | 2023-02-19 16:56:43 -0500 |
commit | f23f8b609ef4afcc7d8ac5fa795093f1c403f8da (patch) | |
tree | cf541e09002f22c411dbfe222c1adf8544aeea42 /data | |
parent | 03d9e3db5affe21db077c410ec08c313d6aa280e (diff) |
patches: Add a patch that makes building language packs reproducible.
* data/patches/reproducible-langpacks.patch: New file.
Diffstat (limited to 'data')
-rw-r--r-- | data/patches/reproducible-langpacks.patch | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/data/patches/reproducible-langpacks.patch b/data/patches/reproducible-langpacks.patch new file mode 100644 index 0000000..b36a770 --- /dev/null +++ b/data/patches/reproducible-langpacks.patch @@ -0,0 +1,45 @@ +Prevent the extension manifests from embedding the current date. + +This is inspired by the Debian +"Use-build-id-as-langpack-version-for-reproducibility.patch" maintained for +their Firefox package as well as reproducible-builds.org guidelines from +https://reproducible-builds.org/docs/source-date-epoch/. + +Upstream status: https://phabricator.services.mozilla.com/D169979 + +--- ./python/mozbuild/mozbuild/action/langpack_manifest.py.old 2023-02-13 11:01:21.051537347 -0500 ++++ ./python/mozbuild/mozbuild/action/langpack_manifest.py 2023-02-13 11:04:33.141817330 -0500 +@@ -36,6 +36,15 @@ + pushlog_api_url = "{0}/json-rev/{1}" + + ++import os ++import time ++import datetime ++ ++def get_build_date(): ++ """Honor SOURCE_DATE_EPOCH for reproducibility.""" ++ return datetime.datetime.utcfromtimestamp( ++ int(os.environ.get('SOURCE_DATE_EPOCH', time.time()))) ++ + ### + # Retrievers a UTC datetime of the push for the current commit + # from a mercurial clone directory. +@@ -54,7 +63,7 @@ + with mozversioncontrol.get_repository_object(path=path) as repo: + phase = repo._run("log", "-r", ".", "-T" "{phase}") + if phase.strip() != "public": +- return datetime.datetime.utcnow() ++ return get_build_date() + repo_url = repo._run("paths", "default") + repo_url = repo_url.strip().replace("ssh://", "https://") + repo_url = repo_url.replace("hg://", "https://") +@@ -105,7 +114,7 @@ + dt = get_dt_from_hg(path) + + if dt is None: +- dt = datetime.datetime.utcnow() ++ dt = get_build_date() + + dt = dt.replace(microsecond=0) + return dt.strftime("%Y%m%d%H%M%S") |