-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Make png creation reproducible #1270
Conversation
Many package build processes use 'convert' to create png files. For those source files, ctime will often vary (and sometimes mtime, too). This results in png files that differ for every build. When users intend to do a reproducible build, they set SOURCE_DATE_EPOCH so in this case we default to the equivalent of convert +set date:create +set date:modify See https://reproducible-builds.org/ for why this is good. The alternative of patching individual callers is an infinite effort: https://github.com/awesomeWM/awesome/pull/768/files https://github.com/dankelley/gri/pull/10/files https://sourceforge.net/p/testlilyissues/issues/5290/ https://build.opensuse.org/request/show/368622 https://build.opensuse.org/request/show/368637 https://build.opensuse.org/request/show/368625 https://build.opensuse.org/request/show/368574 https://build.opensuse.org/request/show/368631 https://build.opensuse.org/request/show/368646 https://build.opensuse.org/request/show/368700 https://build.opensuse.org/request/show/368709 https://build.opensuse.org/request/show/368718 https://build.opensuse.org/request/show/557607 https://build.opensuse.org/request/show/592370 https://build.opensuse.org/request/show/605520 https://build.opensuse.org/request/show/630019
Thanks for your PR but we already have a define for excluding time/data. Its png:exclude-chunks. See command-line-options for details. |
I'd need something that can be triggered through an environment variable, because the call to |
in order to make builds reproducible. See https://reproducible-builds.org/ for why this is good. Needed, because convert is not reproducible by default: ImageMagick/ImageMagick#1270
in order to make builds reproducible. See https://reproducible-builds.org/ for why this is good. Needed, because convert does not generate reproducible output by default: ImageMagick/ImageMagick#1270
in order to make builds reproducible. See https://reproducible-builds.org/ for why this is good. Needed, because convert does not generate reproducible output by default: ImageMagick/ImageMagick#1270
to not add the build date into the produced .png file to make the package build reproducible. needed because of declined ImageMagick/ImageMagick#1270
to not add the build date into the produced .png file to make the package build reproducible. needed because of declined ImageMagick/ImageMagick#1270
to not embed timestamps in PNG output. See https://reproducible-builds.org/ for why this is good. Needed because of declined ImageMagick/ImageMagick#1270 This PR was done while working on reproducible builds for openSUSE.
Please reconsider this patch. The lack of it is still causing us a lot of work with default-unreproducible .png file output. |
We agree with your patch and will apply it. |
https://build.opensuse.org/request/show/767667 by user pgajdos + dimstar_suse - version update to 7.0.9.19 * Alpha draw primitive no longer returns a parser exception. * Support 32-bit tiled TIFF images. * New -connected-component options (reference https://imagemagick.org/script/connected-components.php). * Make PNG creation reproducible (reference ImageMagick/ImageMagick#1270). * Refactor uninitialize variable patch for -fx "while(,)" expression.
2020-02-07 7.0.9-22 Cristy <quetzlzacatenango@image...> * Release ImageMagick version 7.0.9-22, GIT revision 16855:8733f3e:20200207 2020-02-03 7.0.9-22 Cristy <quetzlzacatenango@image...> * More work on connect components, e.g. keep-colors, remove-colors, keep-topids. * Initialize mutex before locking if its not already initialized. * Support 24-bit TIFF images. 2020-02-01 7.0.9-21 Cristy <quetzlzacatenango@image...> * Release ImageMagick version 7.0.9-21, GIT revision 16823:290cb93:20200201. 2020-01-27 7.0.9-21 Cristy <quetzlzacatenango@image...> * Support additional connected components defines. * Refresh cache morphology when writing MPC images. 2020-01-26 7.0.9-19 Cristy <quetzlzacatenango@image...> * Release ImageMagick version 7.0.9-19, GIT revision 16789:bac6ecc:20200126 2020-01-26 7.0.9-19 Cristy <quetzlzacatenango@image...> * Make PNG creation reproducible (reference ImageMagick/ImageMagick#1270). * Refactor uninitialize variable patch for -fx "while(,)" expression. 2020-01-25 7.0.9-18 Cristy <quetzlzacatenango@image...> * Release ImageMagick version 7.0.9-18, GIT revision 16780:08beae5:20200125 2020-01-19 7.0.9-18 Cristy <quetzlzacatenango@image...> * Alpha draw primitive no longer returns a parser exception. * Support 32-bit tiled TIFF images. * New -connected-component options (reference https://imagemagick.org/script/connected-components.php). https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=37391).
Prerequisites
Description
Many (Linux distribution) package build processes use
convert
to create png files.For those source files, ctime will often vary (and sometimes mtime, too).
This results in png files (and thus packages) that differ for every build.
When users intend to do a reproducible build, they set
SOURCE_DATE_EPOCH
,so in this case we default to the equivalent of
convert +set date:create +set date:modify
in order to make png creation reproducible.
See https://reproducible-builds.org/ for why this is good.
The alternative of patching individual callers is an infinite effort: