{"push_id":1998299644,"size":3,"distinct_size":3,"ref":"refs/heads/master","head":"524c1d3c9eef1f63d058ca5d4a61af7d5588ebfb","before":"212da30dbf18924cb8878348657a048698856be3","commits":[{"sha":"583e4141022481e21a22aa71a1c4c988a57423e9","author":{"name":"Patrick Steinhardt","email":"dd3653c239993b88599b227c6c68cda1bb01ca42@pks.im"},"message":"tests: deterministically generate test suite definitions\n\nThe script \"generate.py\" is used to parse all test source files for unit\ntests. These are then written into a \"clar.suite\" file, which can be\nincluded by the main test executable to make available all test suites\nand unit tests.\n\nOur current algorithm simply collects all test suites inside of a dict,\niterates through its items and dumps them in a special format into the\nfile. As the order is not guaranteed to be deterministic for Python\ndictionaries, this may result in arbitrarily ordered C structs. This\nobviously defeats the purpose of reproducible builds, where the same\ninput should always result in the exact same output.\n\nFix this issue by sorting the test suites by name previous to dumping\nthem as structs. This enables reproducible builds for the libgit2_clar\nfile.","distinct":true,"url":"https://api.github.com/repos/lunij/libgit2/commits/583e4141022481e21a22aa71a1c4c988a57423e9"},{"sha":"d630887bb6ab91a55e72fddc65db93ee6abcd984","author":{"name":"Patrick Steinhardt","email":"dd3653c239993b88599b227c6c68cda1bb01ca42@pks.im"},"message":"cmake: enable reproducible static linking\n\nBy default, both ar(1) and ranlib(1) will insert additional information\nlike timestamps into generated static archives and indices. As a\nconsequence, generated static archives are not deterministic when\ncreated with default parameters.\n\nBoth programs do support a deterministic mode, which will simply zero\nout undeterministic information with `ar D` and `ranlib -D`.\nUnfortunately, CMake does not provide an easy knob to add these command\nline parameters. Instead, we have to redefine the complete command\ndefinitons stored in the variables CMAKE_C_ARCHIVE_CREATE,\nCMAKE_C_ARCHIVE_APPEND and CMAKE_C_ARCHIVE_FINISH.\n\nIntroduce a new build option `ENABLE_REPRODUCIBLE_BUILDS`. This option\nis available on Unix-like systems with the exception of macOS, which\ndoes not have support for the required flags. If the option is being\nenabled, we add those flags to the invocation of both `ar` and `ranlib`\nto enable deterministically building the static archive.","distinct":true,"url":"https://api.github.com/repos/lunij/libgit2/commits/d630887bb6ab91a55e72fddc65db93ee6abcd984"},{"sha":"524c1d3c9eef1f63d058ca5d4a61af7d5588ebfb","author":{"name":"Edward Thomson","email":"f29eca94f40f9951b20ba47162df375f3575c58c@edwardthomson.com"},"message":"Merge pull request #4334 from pks-t/pks/reproducible-builds\n\nReproducible builds","distinct":true,"url":"https://api.github.com/repos/lunij/libgit2/commits/524c1d3c9eef1f63d058ca5d4a61af7d5588ebfb"}]}
{"actor":{"display_login":"lunij"}}