From 018070500f7f001233f5622d656fc29494620d3f Mon Sep 17 00:00:00 2001 From: Thorsten Behrens Date: Thu, 2 Nov 2023 18:17:50 +0100 Subject: reprobuild: don't write timestamps to clucene index files Our embedded clucene by default write a random current-time millisecond value into version fields, in an attempt to randomise. Clearly this is not needed for our static help, and it also prevents builds from being reproducible. Change-Id: I011388b5bc72b5d86bc1900f5439036ede60c020 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158845 Tested-by: Jenkins Reviewed-by: Thorsten Behrens Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160668 --- external/clucene/UnpackedTarball_clucene.mk | 1 + .../clucene/patches/clucene-reprobuild.patch.1 | 61 ++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 external/clucene/patches/clucene-reprobuild.patch.1 (limited to 'external') diff --git a/external/clucene/UnpackedTarball_clucene.mk b/external/clucene/UnpackedTarball_clucene.mk index 7a1eed67d2f7..76fdfe6aca56 100644 --- a/external/clucene/UnpackedTarball_clucene.mk +++ b/external/clucene/UnpackedTarball_clucene.mk @@ -54,6 +54,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,clucene,\ external/clucene/patches/nullstring.patch \ external/clucene/patches/binary_function.patch \ external/clucene/patches/clucene-pure-virtual.patch \ + external/clucene/patches/clucene-reprobuild.patch.1 \ )) ifneq ($(OS),WNT) diff --git a/external/clucene/patches/clucene-reprobuild.patch.1 b/external/clucene/patches/clucene-reprobuild.patch.1 new file mode 100644 index 000000000000..2c5a0b95135f --- /dev/null +++ b/external/clucene/patches/clucene-reprobuild.patch.1 @@ -0,0 +1,61 @@ +diff -ur clucene.org/src/core/CLucene/index/IndexWriter.cpp clucene/src/core/CLucene/index/IndexWriter.cpp +--- clucene.org/src/core/CLucene/index/IndexWriter.cpp 2023-11-02 17:31:00.110168174 +0100 ++++ clucene/src/core/CLucene/index/IndexWriter.cpp 2023-11-02 17:33:22.507665912 +0100 +@@ -366,6 +366,10 @@ + } + } + ++void IndexWriter::setSegmentInfoStartVersion(int64_t startVersion) { ++ this->segmentInfos->setStartVersion(startVersion); ++} ++ + int32_t IndexWriter::getMaxBufferedDocs() { + ensureOpen(); + return docWriter->getMaxBufferedDocs(); +diff -ur clucene.org/src/core/CLucene/index/IndexWriter.h clucene/src/core/CLucene/index/IndexWriter.h +--- clucene.org/src/core/CLucene/index/IndexWriter.h 2023-11-02 17:31:00.113501525 +0100 ++++ clucene/src/core/CLucene/index/IndexWriter.h 2023-11-02 17:33:43.547787510 +0100 +@@ -336,6 +336,12 @@ + int64_t getWriteLockTimeout(); + + /** ++ * Sets the 0th segmentinfo version. Default is current system time ++ * in milliseconds ++ */ ++ void setSegmentInfoStartVersion(int64_t startVersion); ++ ++ /** + * Sets the maximum time to wait for a commit lock (in milliseconds). + */ + void setCommitLockTimeout(int64_t commitLockTimeout); +diff -ur clucene.org/src/core/CLucene/index/SegmentInfos.cpp clucene/src/core/CLucene/index/SegmentInfos.cpp +--- clucene.org/src/core/CLucene/index/SegmentInfos.cpp 2023-11-02 17:31:00.110168174 +0100 ++++ clucene/src/core/CLucene/index/SegmentInfos.cpp 2023-11-02 18:04:43.855243418 +0100 +@@ -662,6 +662,10 @@ + return IndexFileNames::fileNameFromGeneration( IndexFileNames::SEGMENTS, "", nextGeneration ); + } + ++ void SegmentInfos::setStartVersion(int64_t version) { ++ this->version = version; ++ } ++ + void SegmentInfos::clearto(size_t from, size_t end){ + size_t range = end - from; + if ( (infos.size() - from) >= range) { // Make sure we actually need to remove +diff -ur clucene.org/src/core/CLucene/index/_SegmentInfos.h clucene/src/core/CLucene/index/_SegmentInfos.h +--- clucene.org/src/core/CLucene/index/_SegmentInfos.h 2023-11-02 17:31:00.106834824 +0100 ++++ clucene/src/core/CLucene/index/_SegmentInfos.h 2023-11-02 18:04:51.178598463 +0100 +@@ -347,6 +347,13 @@ + */ + std::string getNextSegmentFileName(); + ++ /** ++ * Set version value to start from ++ ++ Defaults to current time in milliseconds ++ */ ++ void setStartVersion(int64_t version); ++ + /* public vector-like operations */ + //delete and clears objects 'from' from to 'to' + void clearto(size_t to, size_t end); -- cgit