summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Ball <nullspoon@oper.io>2018-02-26 00:01:04 -0700
committerAaron Ball <nullspoon@oper.io>2018-02-26 00:01:04 -0700
commit2467b9d81f42198c475450bc5a4db9501f8b2847 (patch)
treeb8c28b6ae335ca971317c3330f61ab52c9903356
parentf42923bddae7aa98065850f709e4f3bbce870dd2 (diff)
downloadpkgself-2467b9d81f42198c475450bc5a4db9501f8b2847.tar.gz
pkgself-2467b9d81f42198c475450bc5a4db9501f8b2847.tar.xz
Fixed tar timestamping issue.
The tar command always stores last modified timestamps. Because we are streaming the data to tar via stdin, this data is not given to tar, so timestamp is set to the time the package is built. This causes the package checksums to *always* differ, which is horrible for reproducible builds. Since we don't really care that much about source system timestamps since the installer becomes the source of truth, we now set last modified timestamp to 1970-01-01. This ensures that a package built at different times but with no modifications will yield the same checksum.
-rwxr-xr-xpkgself.sh4
1 files changed, 2 insertions, 2 deletions
diff --git a/pkgself.sh b/pkgself.sh
index eea1718..c47a713 100755
--- a/pkgself.sh
+++ b/pkgself.sh
@@ -131,7 +131,7 @@ main() {
printf "Reticulating splines...\n"
# Package up the libinstall libraries
- tar -C "${tmp}" -c libinstall \
+ tar -C "${tmp}" -c --mtime='1970-01-01' libinstall \
| ${COMPRESS} > ${tmp}/libinstall.tar.${COMPRESSEXT}
libinstallsize=$(wc -c < ${tmp}/libinstall.tar.${COMPRESSEXT})
@@ -140,7 +140,7 @@ main() {
runsize="$(wc -c < ${tmp}/run.sh.${COMPRESSEXT})"
# Compress and calculate byte size for payload
- tar -c "$(basename ${PKG})" \
+ tar -c --mtime='1970-01-01' "$(basename ${PKG})" \
| ${COMPRESS} -v > ${PKG}.tar.${COMPRESSEXT}
payloadsize="$(wc -c < ${PKG}.tar.${COMPRESSEXT})"

Generated by cgit