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
Mroonga plugin build in MariaDB is not reproducible #298
Comments
|
We don't set it explicitly. Is it really set by us? $ readelf -Wn /usr/lib/x86_64-linux-gnu/libc.so.6
Displaying notes found in: .note.gnu.build-id
Owner Data size Description
GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID bitstring) Build ID: 0cdf11eeac6a45568714f5e7af1013f6ba8cc5b6
Displaying notes found in: .note.ABI-tag
Owner Data size Description
GNU 0x00000010 NT_GNU_ABI_TAG (ABI version tag) OS: Linux, ABI: 3.2.0If you want to remove |
|
I will try passing |
|
Could you show the diff of diff -u <(string /.../build1/ha_mroonga.so) <(string /.../build2/ha_mroonga.so)It may show what string is changed. |
|
One of the reproducible build guys suggested that the build path seems to be embedded into the resulting binary, which is useless and the a likely cause for the issue. Tentative fix below: From: https://alioth-lists.debian.net/pipermail/reproducible-builds/Week-of-Mon-20200120/012028.html
|
|
Thanks for sharing the information. Because we don't use So I think that it's unrelated. Could you get #298 (comment) information? |
I don't see any way to download the built binaries at https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/mariadb-10.3.html |
|
I guess you could try building Mroonga in once, then change the name of the build directory, and build again, and then compare the resulting binaries to find out with strings where the path has been stored? |
|
I added this patch to mariadb-10.3 in Debian: https://salsa.debian.org/mariadb-team/mariadb-10.3/commit/a57ed417f7e4be604c3fc2c7affb9ba7d14ee268 Unfortunately it is still unreproducible, and from the diffoscope output I cannot see myself if this patch helped at all or not. Full details at https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/diffoscope-results/mariadb-10.3.html |
|
I tried the following on my Debian GNU/Linux sid: $ mkdir -p /tmp/aaa
$ cd /tmp/aaa
$ apt source -t sid mariadb-server-10.3
$ cd mariadb-10.3-10.3.22
$ sudo apt build-dep mariadb-10.3
$ debuild -us -ucBut the How did you build MariaDB package? Did you disable Cassandra storage engine? What Debian did you use? |
|
This is a standard package and all official ways to build Debian packages should work (and do work as proven that the package is in the archives and passes all CI systems etc). I have not seen the build problem you posted before and I don't know what it is about. Maybe your environment does not have the correct build dependencies? On the other hand Here is what I just tested in a clean Debian Sid Docker image as root with I agree that for upstreams this is a bit tricky to investigate, and I have asked the reproducible-builds.org maintainers to provide better docs for upstreams how they can repeat the builds and more easily ensure their software is reproducible (https://alioth-lists.debian.net/pipermail/reproducible-builds/Week-of-Mon-20200127/012052.html). |
|
OK. diff --git a/debian/rules b/debian/rules
index ba467df5e..5c5f7753e 100755
--- a/debian/rules
+++ b/debian/rules
@@ -103,6 +103,7 @@ endif
-DPLUGIN_AUTH_SOCKET=STATIC \
-DWITH_SSL=bundled \
-DPLUGIN_AWS_KEY_MANAGEMENT=NO \
+ -DPLUGIN_CASSANDRA=NO \
-DWITH_INNODB_SNAPPY=ON \
-DDEB=$(DEB_VENDOR) ..'
Anyway, now I can build MariaDB by
Thanks. |
|
More notes from Chris Lamb: https://alioth-lists.debian.net/pipermail/reproducible-builds/Week-of-Mon-20200203/012095.html
Chris is referencing that the patch https://salsa.debian.org/mariadb-team/mariadb-10.3/commit/a57ed417f7e4be604c3fc2c7affb9ba7d14ee268 was not enough. |
|
Thanks for sharing this. But this is unrelated. Chris Lamb focuses on "groonga" pakcage groonga/groonga#1079 but we focus on "mariadb" package here, right? We can find "prefix-map" in https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/diffoscope-results/groonga.html but can't in https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/diffoscope-results/mariadb-10.3.html .
|
|
This issue still exists and mariadb-10.5 in Debian is not reproducible. Please do not close this issue until we have figured out what it is that pollutes the build. |
|
Filed this downstream as http://bugs.debian.org/976984 to hopefully attract more eyes on this issue. You can at any time review the latest status at https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/diffoscope-results/mariadb-10.5.html |
|
I didn't read the full backlog, but I found an embedded build timestamp in the diffoscope: vs and vs you can ignore the build id, it's going to be equal if everything else is equal too. |
|
It's MariaRocks related not Mroonga related. It's generated by |
|
Do you really think the RocksDB timestamp leaks to ha_mroonga.so? I see it
affects ha_rocksdb.so but I'd bet there is something in Mroonga itself that
causes the Mroonga build id to vary.
|
|
No, I mixed up the tabs after looking through the diffoscope but it seems @kou already figured out the root cause so I'm not sure if I should copy this over to the other rocksdb issue since it seems to be an issue in the MariaDB code. I couldn't figure out the root cause for mroonga from the diffoscope, the only real difference seems to be 6 extra null bytes in the .dynstr section. |
|
I got the RocksDB git id thing fixed. Now Mroonga is the only one that remains from MariaDB Server from being fully reproducible: https://tests.reproducible-builds.org/debian/rb-pkg/experimental/amd64/diffoscope-results/mariadb-10.5.html It would be great if somebody figures out what generates this dynstr thing... |
|
The not reproducible problem isn't reproducible on my local environment... |
|
My guess would be it is related to the build path; while you may be passing -ffile-prefix-map=BUILDPATH=. to the compiler (by way of dpkg-buildflags) which strips out the value of the build path, in some cases the length of the build path (e.g. /build/path/1/2 vs. /build/path/1/2/3) is still embedded in a zeroed out form which would embed a slightly different padded value. If this is the case, we do not have a good solution or workaround at the moment, other than building with a consistent build path. At tests.reproducible-builds.org the build path does not currently vary when running tests on the "testing" or "stable" suites (currently bullseye and buster, respectively), so once the current version of the package migrates to "testing" it might at least be fixed in that environment. I've got a few builds running "locally" to try and confirm my suspicions... |
|
A slightly older version only shows the timestamps in rocksdb (which you've fixed in the version in experimental): So this confirms my suspicions that it is build path related. You could also build with DEB_BUILD_OPTIONS=reproducible=-fixfilepath,+fixdebugpath and then it might actually show the embedded build paths (rather than stripping them out and leaving you with mysterious zero-padded offsets), but that might produce more noise too... |
|
Thanks @vagrantc for responding here to https://alioth-lists.debian.net/pipermail/reproducible-builds/Week-of-Mon-20210719/013106.html ! It seems you nailed it, awsome! |
|
Debugging continued in:
Lamby concludes:
That variable is used in Next step would be to do something about the line |
|
Thanks for sharing this. How about the following patch? diff --git a/storage/mroonga/CMakeLists.txt b/storage/mroonga/CMakeLists.txt
index c048b214658..13323ede927 100644
--- a/storage/mroonga/CMakeLists.txt
+++ b/storage/mroonga/CMakeLists.txt
@@ -219,7 +219,7 @@ set(MYSQL_INCLUDE_DIRS
if(MRN_BUNDLED)
set(MYSQL_PLUGIN_DIR "${INSTALL_PLUGINDIR}")
- set(MYSQL_SERVICES_LIB_DIR "${MYSQL_BUILD_DIR}/libservices")
+ set(MYSQL_SERVICES_LIB_DIR)
set(MYSQL_CFLAGS "${CMAKE_C_FLAGS}")
set(MYSQL_VERSION "${MYSQL_BASE_VERSION}")
else()
@@ -258,16 +258,24 @@ endif()
if(MRN_GROONGA_BUNDLED)
set(GROONGA_INCLUDE_DIRS "${MRN_BUNDLED_GROONGA_DIR}/include")
- set(GROONGA_LIBRARY_DIRS "${MRN_BUNDLED_GROONGA_DIR}/lib")
- set(GROONGA_LIBRARIES "libgroonga")
+ set(GROONGA_LIBRARY_DIR "${MRN_BUNDLED_GROONGA_DIR}/lib")
+ if(CMAKE_IMPORT_LIBRARY_SUFFIX)
+ set(GROONGA_LIBRARY "${GROONGA_LIBRARY_DIR}/${CMAKE_IMPORT_LIBRARY_PREFIX}groonga${CMAKE_IMPORT_LIBRARY_SUFFIX}")
+ else()
+ set(GROONGA_LIBRARY "${GROONGA_LIBRARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}groonga${CMAKE_SHARED_LIBRARY_SUFFIX}")
+ endif()
- set(MRN_LIBRARY_DIRS ${GROONGA_LIBRARY_DIRS})
- set(MRN_LIBRARIES ${GROONGA_LIBRARIES})
+ set(MRN_LIBRARY_DIRS)
+ set(MRN_LIBRARIES ${GROONGA_LIBRARY})
if(MRN_GROONGA_NORMALIZER_MYSQL_EMBED)
- set(MRN_LIBRARY_DIRS
- ${MRN_LIBRARY_DIRS}
- "${MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_DIR}/normalizers")
- set(MRN_LIBRARIES ${MRN_LIBRARIES} mysql_normalizer)
+ if(CMAKE_IMPORT_LIBRARY_SUFFIX)
+ set(GROONGA_NORMALIZER_MYSQL_LIBRARY
+ "${MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_DIR}/normalizers/${CMAKE_IMPORT_LIBRARY_PREFIX}mysql_normalizer${CMAKE_IMPORT_LIBRARY_SUFFIX}")
+ else()
+ set(GROONGA_NORMALIZER_MYSQL_LIBRARY
+ "${MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_DIR}/normalizers/${CMAKE_SHARED_LIBRARY_PREFIX}mysql_normalizer${CMAKE_SHARED_LIBRARY_SUFFIX}")
+ endif()
+ set(MRN_LIBRARIES ${MRN_LIBRARIES} ${GROONGA_NORMALIZER_MYSQL_LIBRARY})
endif()
else()
include(FindPkgConfig) |
|
Sorry for the long delay in following up on this. I tried the above patch by @kou in https://salsa.debian.org/mariadb-team/mariadb-server/-/commit/f5cd9372f691219d9b6409d12cfc6fb9471373d0 but it failed with: Full log at https://salsa.debian.org/mariadb-team/mariadb-server/-/jobs/2424015 |
|
Ah, sorry. We should use binary dir not source dir: diff --git a/storage/mroonga/CMakeLists.txt b/storage/mroonga/CMakeLists.txt
index c048b214658..d79e433dd82 100644
--- a/storage/mroonga/CMakeLists.txt
+++ b/storage/mroonga/CMakeLists.txt
@@ -219,7 +219,7 @@ set(MYSQL_INCLUDE_DIRS
if(MRN_BUNDLED)
set(MYSQL_PLUGIN_DIR "${INSTALL_PLUGINDIR}")
- set(MYSQL_SERVICES_LIB_DIR "${MYSQL_BUILD_DIR}/libservices")
+ set(MYSQL_SERVICES_LIB_DIR)
set(MYSQL_CFLAGS "${CMAKE_C_FLAGS}")
set(MYSQL_VERSION "${MYSQL_BASE_VERSION}")
else()
@@ -258,16 +258,24 @@ endif()
if(MRN_GROONGA_BUNDLED)
set(GROONGA_INCLUDE_DIRS "${MRN_BUNDLED_GROONGA_DIR}/include")
- set(GROONGA_LIBRARY_DIRS "${MRN_BUNDLED_GROONGA_DIR}/lib")
- set(GROONGA_LIBRARIES "libgroonga")
+ set(GROONGA_LIBRARY_DIR "${MRN_BUNDLED_GROONGA_BINARY_DIR}/lib")
+ if(CMAKE_IMPORT_LIBRARY_SUFFIX)
+ set(GROONGA_LIBRARY "${GROONGA_LIBRARY_DIR}/${CMAKE_IMPORT_LIBRARY_PREFIX}groonga${CMAKE_IMPORT_LIBRARY_SUFFIX}")
+ else()
+ set(GROONGA_LIBRARY "${GROONGA_LIBRARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}groonga${CMAKE_SHARED_LIBRARY_SUFFIX}")
+ endif()
- set(MRN_LIBRARY_DIRS ${GROONGA_LIBRARY_DIRS})
- set(MRN_LIBRARIES ${GROONGA_LIBRARIES})
+ set(MRN_LIBRARY_DIRS)
+ set(MRN_LIBRARIES ${GROONGA_LIBRARY})
if(MRN_GROONGA_NORMALIZER_MYSQL_EMBED)
- set(MRN_LIBRARY_DIRS
- ${MRN_LIBRARY_DIRS}
- "${MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_DIR}/normalizers")
- set(MRN_LIBRARIES ${MRN_LIBRARIES} mysql_normalizer)
+ if(CMAKE_IMPORT_LIBRARY_SUFFIX)
+ set(GROONGA_NORMALIZER_MYSQL_LIBRARY
+ "${MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_BINARY_DIR}/normalizers/${CMAKE_IMPORT_LIBRARY_PREFIX}mysql_normalizer${CMAKE_IMPORT_LIBRARY_SUFFIX}")
+ else()
+ set(GROONGA_NORMALIZER_MYSQL_LIBRARY
+ "${MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_BINARY_DIR}/normalizers/${CMAKE_SHARED_LIBRARY_PREFIX}mysql_normalizer${CMAKE_SHARED_LIBRARY_SUFFIX}")
+ endif()
+ set(MRN_LIBRARIES ${MRN_LIBRARIES} ${GROONGA_NORMALIZER_MYSQL_LIBRARY})
endif()
else()
include(FindPkgConfig) |
|
Tested second patch version in https://salsa.debian.org/mariadb-team/mariadb-server/-/commit/c8b9361d1a37a5d1d3ec74cc79edfd0e64d9155f and it failed again, see full log at https://salsa.debian.org/mariadb-team/mariadb-server/-/jobs/2428217 |
|
Oh, sorry. The patch was incomplete: diff --git a/storage/mroonga/CMakeLists.txt b/storage/mroonga/CMakeLists.txt
index c048b214658..9f45f5cbca2 100644
--- a/storage/mroonga/CMakeLists.txt
+++ b/storage/mroonga/CMakeLists.txt
@@ -62,6 +62,8 @@ endif()
set(MRN_BUNDLED_GROONGA_RELATIVE_DIR "vendor/groonga")
set(MRN_BUNDLED_GROONGA_DIR
"${CMAKE_CURRENT_SOURCE_DIR}/${MRN_BUNDLED_GROONGA_RELATIVE_DIR}")
+set(MRN_BUNDLED_GROONGA_BINARY_DIR
+ "${CMAKE_CURRENT_BINARY_DIR}/${MRN_BUNDLED_GROONGA_RELATIVE_DIR}")
if(EXISTS "${MRN_BUNDLED_GROONGA_DIR}")
set(MRN_GROONGA_BUNDLED TRUE)
if(MSVC)
@@ -95,8 +97,12 @@ if(MRN_GROONGA_BUNDLED)
set(GRN_EMBED ON)
endif()
+ set(MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_RELATIVE_DIR
+ "vendor/plugins/groonga-normalizer-mysql")
set(MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_DIR
- "${MRN_BUNDLED_GROONGA_DIR}/vendor/plugins/groonga-normalizer-mysql")
+ "${MRN_BUNDLED_GROONGA_DIR}/${MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_RELATIVE_DIR}")
+ set(MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_BINARY_DIR
+ "${MRN_BUNDLED_GROONGA_BINARY_DIR}/${MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_RELATIVE_DIR}")
option(MRN_GROONGA_NORMALIZER_MYSQL_EMBED
"Embed groonga-normalizer-mysql Groonga plugin"
ON)
@@ -219,7 +225,7 @@ set(MYSQL_INCLUDE_DIRS
if(MRN_BUNDLED)
set(MYSQL_PLUGIN_DIR "${INSTALL_PLUGINDIR}")
- set(MYSQL_SERVICES_LIB_DIR "${MYSQL_BUILD_DIR}/libservices")
+ set(MYSQL_SERVICES_LIB_DIR)
set(MYSQL_CFLAGS "${CMAKE_C_FLAGS}")
set(MYSQL_VERSION "${MYSQL_BASE_VERSION}")
else()
@@ -258,16 +264,24 @@ endif()
if(MRN_GROONGA_BUNDLED)
set(GROONGA_INCLUDE_DIRS "${MRN_BUNDLED_GROONGA_DIR}/include")
- set(GROONGA_LIBRARY_DIRS "${MRN_BUNDLED_GROONGA_DIR}/lib")
- set(GROONGA_LIBRARIES "libgroonga")
+ set(GROONGA_LIBRARY_DIR "${MRN_BUNDLED_GROONGA_BINARY_DIR}/lib")
+ if(CMAKE_IMPORT_LIBRARY_SUFFIX)
+ set(GROONGA_LIBRARY "${GROONGA_LIBRARY_DIR}/${CMAKE_IMPORT_LIBRARY_PREFIX}groonga${CMAKE_IMPORT_LIBRARY_SUFFIX}")
+ else()
+ set(GROONGA_LIBRARY "${GROONGA_LIBRARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}groonga${CMAKE_SHARED_LIBRARY_SUFFIX}")
+ endif()
- set(MRN_LIBRARY_DIRS ${GROONGA_LIBRARY_DIRS})
- set(MRN_LIBRARIES ${GROONGA_LIBRARIES})
+ set(MRN_LIBRARY_DIRS)
+ set(MRN_LIBRARIES ${GROONGA_LIBRARY})
if(MRN_GROONGA_NORMALIZER_MYSQL_EMBED)
- set(MRN_LIBRARY_DIRS
- ${MRN_LIBRARY_DIRS}
- "${MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_DIR}/normalizers")
- set(MRN_LIBRARIES ${MRN_LIBRARIES} mysql_normalizer)
+ if(CMAKE_IMPORT_LIBRARY_SUFFIX)
+ set(GROONGA_NORMALIZER_MYSQL_LIBRARY
+ "${MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_BINARY_DIR}/normalizers/${CMAKE_IMPORT_LIBRARY_PREFIX}mysql_normalizer${CMAKE_IMPORT_LIBRARY_SUFFIX}")
+ else()
+ set(GROONGA_NORMALIZER_MYSQL_LIBRARY
+ "${MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_BINARY_DIR}/normalizers/${CMAKE_SHARED_LIBRARY_PREFIX}mysql_normalizer${CMAKE_SHARED_LIBRARY_SUFFIX}")
+ endif()
+ set(MRN_LIBRARIES ${MRN_LIBRARIES} ${GROONGA_NORMALIZER_MYSQL_LIBRARY})
endif()
else()
include(FindPkgConfig) |
|
Ah, sorry. Bundled Groonga is built as a static library not a shared library: diff --git a/storage/mroonga/CMakeLists.txt b/storage/mroonga/CMakeLists.txt
index c048b214658..3d704e25671 100644
--- a/storage/mroonga/CMakeLists.txt
+++ b/storage/mroonga/CMakeLists.txt
@@ -62,6 +62,8 @@ endif()
set(MRN_BUNDLED_GROONGA_RELATIVE_DIR "vendor/groonga")
set(MRN_BUNDLED_GROONGA_DIR
"${CMAKE_CURRENT_SOURCE_DIR}/${MRN_BUNDLED_GROONGA_RELATIVE_DIR}")
+set(MRN_BUNDLED_GROONGA_BINARY_DIR
+ "${CMAKE_CURRENT_BINARY_DIR}/${MRN_BUNDLED_GROONGA_RELATIVE_DIR}")
if(EXISTS "${MRN_BUNDLED_GROONGA_DIR}")
set(MRN_GROONGA_BUNDLED TRUE)
if(MSVC)
@@ -95,8 +97,12 @@ if(MRN_GROONGA_BUNDLED)
set(GRN_EMBED ON)
endif()
+ set(MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_RELATIVE_DIR
+ "vendor/plugins/groonga-normalizer-mysql")
set(MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_DIR
- "${MRN_BUNDLED_GROONGA_DIR}/vendor/plugins/groonga-normalizer-mysql")
+ "${MRN_BUNDLED_GROONGA_DIR}/${MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_RELATIVE_DIR}")
+ set(MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_BINARY_DIR
+ "${MRN_BUNDLED_GROONGA_BINARY_DIR}/${MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_RELATIVE_DIR}")
option(MRN_GROONGA_NORMALIZER_MYSQL_EMBED
"Embed groonga-normalizer-mysql Groonga plugin"
ON)
@@ -219,7 +225,7 @@ set(MYSQL_INCLUDE_DIRS
if(MRN_BUNDLED)
set(MYSQL_PLUGIN_DIR "${INSTALL_PLUGINDIR}")
- set(MYSQL_SERVICES_LIB_DIR "${MYSQL_BUILD_DIR}/libservices")
+ set(MYSQL_SERVICES_LIB_DIR)
set(MYSQL_CFLAGS "${CMAKE_C_FLAGS}")
set(MYSQL_VERSION "${MYSQL_BASE_VERSION}")
else()
@@ -258,16 +264,15 @@ endif()
if(MRN_GROONGA_BUNDLED)
set(GROONGA_INCLUDE_DIRS "${MRN_BUNDLED_GROONGA_DIR}/include")
- set(GROONGA_LIBRARY_DIRS "${MRN_BUNDLED_GROONGA_DIR}/lib")
- set(GROONGA_LIBRARIES "libgroonga")
+ set(GROONGA_LIBRARY
+ "${MRN_BUNDLED_GROONGA_BINARY_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}groonga${CMAKE_STATIC_LIBRARY_SUFFIX}")
- set(MRN_LIBRARY_DIRS ${GROONGA_LIBRARY_DIRS})
- set(MRN_LIBRARIES ${GROONGA_LIBRARIES})
+ set(MRN_LIBRARY_DIRS)
+ set(MRN_LIBRARIES ${GROONGA_LIBRARY})
if(MRN_GROONGA_NORMALIZER_MYSQL_EMBED)
- set(MRN_LIBRARY_DIRS
- ${MRN_LIBRARY_DIRS}
- "${MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_DIR}/normalizers")
- set(MRN_LIBRARIES ${MRN_LIBRARIES} mysql_normalizer)
+ set(GROONGA_NORMALIZER_MYSQL_LIBRARY
+ "${MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_BINARY_DIR}/normalizers/${CMAKE_STATIC_LIBRARY_PREFIX}mysql_normalizer${CMAKE_STATIC_LIBRARY_SUFFIX}")
+ set(MRN_LIBRARIES ${MRN_LIBRARIES} ${GROONGA_NORMALIZER_MYSQL_LIBRARY})
endif()
else()
include(FindPkgConfig) |
|
Version 4: https://salsa.debian.org/mariadb-team/mariadb-server/-/commit/f304e2d5feded937789f326ce4f1f729acb3a5b6 Previously the reproducibility test on build_path was failing - see reprotest-build_path in CI run https://salsa.debian.org/mariadb-team/mariadb-server/-/pipelines/343518 With this patch it is now passing: https://salsa.debian.org/mariadb-team/mariadb-server/-/pipelines/344538 Some others regressed with errors like But I think that is unrelated to Mroonga and is an issue in the CI itself on how it terminates long running CI tasks as simply restarting the runs fixed some of those failures. |
|
Great! I've pushed the patch to master. We'll update Mroonga bundled in MariaDB in a few months. |
|
@ottok Sorry, could you also try the simplified version? diff --git a/storage/mroonga/CMakeLists.txt b/storage/mroonga/CMakeLists.txt
index c048b214658..04dde62576d 100644
--- a/storage/mroonga/CMakeLists.txt
+++ b/storage/mroonga/CMakeLists.txt
@@ -219,7 +219,7 @@ set(MYSQL_INCLUDE_DIRS
if(MRN_BUNDLED)
set(MYSQL_PLUGIN_DIR "${INSTALL_PLUGINDIR}")
- set(MYSQL_SERVICES_LIB_DIR "${MYSQL_BUILD_DIR}/libservices")
+ set(MYSQL_SERVICES_LIB_DIR)
set(MYSQL_CFLAGS "${CMAKE_C_FLAGS}")
set(MYSQL_VERSION "${MYSQL_BASE_VERSION}")
else()
@@ -258,15 +258,11 @@ endif()
if(MRN_GROONGA_BUNDLED)
set(GROONGA_INCLUDE_DIRS "${MRN_BUNDLED_GROONGA_DIR}/include")
- set(GROONGA_LIBRARY_DIRS "${MRN_BUNDLED_GROONGA_DIR}/lib")
- set(GROONGA_LIBRARIES "libgroonga")
+ set(GROONGA_LIBRARY "libgroonga")
- set(MRN_LIBRARY_DIRS ${GROONGA_LIBRARY_DIRS})
- set(MRN_LIBRARIES ${GROONGA_LIBRARIES})
+ set(MRN_LIBRARY_DIRS)
+ set(MRN_LIBRARIES ${GROONGA_LIBRARY})
if(MRN_GROONGA_NORMALIZER_MYSQL_EMBED)
- set(MRN_LIBRARY_DIRS
- ${MRN_LIBRARY_DIRS}
- "${MRN_BUNDLED_GROONGA_NORMALIZER_MYSQL_DIR}/normalizers")
set(MRN_LIBRARIES ${MRN_LIBRARIES} mysql_normalizer)
endif()
else() |
|
Tested patch v5 in https://salsa.debian.org/mariadb-team/mariadb-server/-/blob/4f00300f7c20cfd418d0309af2c4bf723e601979/debian/patches/mroonga-mrn-lib-dirs-path-reproducible-build.patch and it passed build and reproducibility modified path test at https://salsa.debian.org/mariadb-team/mariadb-server/-/jobs/2441636 |
|
Thanks! We'll use simplified version. |
GitHub: GH-298 We can use target without breaking reproducibility.
|
Latest Mariadb 10.6.7 is now in Debian unstable and indeed the build is now fully reproducible: https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/mariadb-10.6.html Thanks @kou for the patch! |
|
That's good to know. :) |




Reproducible builds are important for software supply chain security. See https://reproducible-builds.org/
All packages in Debian are tested for reproducibility. Currently the latest MariaDB 10.3 build in Debian fails due to the build of the Mroonga, RocksDB and TokuDB plugins. See https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/mariadb-10.3.html
Based on the diffoscope data is seems Mroonga is embedding a random build ID in every build:

Could you please not do that, or alternative provide a build flag to turn it off?
Greetings,
MariaDB maintainer in Debian
The text was updated successfully, but these errors were encountered: