Source: evolution-ews
Severity: normal
Tags: patch
User: reproducible-bui...@lists.alioth.debian.org
Usertags: buildpath
X-Debbugs-Cc: reproducible-b...@lists.alioth.debian.org

Builds in a different source directory trigger reproducibility issues
with libecalbackendews.so and the RPATH of various other binaries also
have different BuildId:

  
https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/diffoscope-results/evolution-ews.html

  /usr/lib/evolution-data-server/calendar-backends/libecalbackendews.so

  /build/1st/evolution-ews-3.42.3/src/EWS/calendar
  vs.
  /build/2/evolution-ews-3.42.3/2nd/src/EWS/calendar

The first patch fixes this by removing the source directory from the
CMakeLists.txt that is used to build libecalbackendews.so.

I have not tested that this is a correct fix, per se, but it seems
unlikely that a transient build directory for an installed .deb package
would be present on any end-user system in any useful way.

The second patch fixes this by passing arguments to configure to use a
relative RPATH instead of embedding the full path.


With these patches applied, evolution-ews should build reproducibly on
tests.reproducible-builds.org!


Thanks for maintaining evolution-ews!


live well,
  vagrant
From 7c50659c1eaa7eab31b887d47f82030ad7dbdba4 Mon Sep 17 00:00:00 2001
From: Vagrant Cascadian <vagr...@reproducible-builds.org>
Date: Thu, 20 Jan 2022 00:50:56 +0000
Subject: [PATCH 1/2] src/EWS/calendar/CMakeLists.txt: Blank out
 EXCHANGE_EWS_SRCDIR.

The full path to the source gets embedded in libecalbackendews.so,
which could not usefully be used on the end-user's installed system
when installed from a .deb package.
---
 src/EWS/calendar/CMakeLists.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/EWS/calendar/CMakeLists.txt b/src/EWS/calendar/CMakeLists.txt
index 3a6ce02..3530504 100644
--- a/src/EWS/calendar/CMakeLists.txt
+++ b/src/EWS/calendar/CMakeLists.txt
@@ -26,7 +26,7 @@ target_compile_definitions(ecalbackendews PRIVATE
 	-DG_LOG_DOMAIN=\"ecalbackendews\"
 	-DEXCHANGE_EWS_DATADIR=\"${ewsdatadir}\"
 	-DEXCHANGE_EWS_LOCALEDIR=\"${LOCALE_INSTALL_DIR}\"
-	-DEXCHANGE_EWS_SRCDIR=\"${CMAKE_CURRENT_SOURCE_DIR}\"
+	-DEXCHANGE_EWS_SRCDIR=\"\"
 )
 
 target_compile_options(ecalbackendews PUBLIC
-- 
2.34.1

From 94874050b068f6c156f989622e4ec065a384cded Mon Sep 17 00:00:00 2001
From: Vagrant Cascadian <vagr...@reproducible-builds.org>
Date: Thu, 20 Jan 2022 00:50:11 +0000
Subject: [PATCH 2/2] debian/rules: Pass -DCMAKE_BUILD_RPATH_USE_ORIGIN=ON via
 dh_auto_configure override.

This avoids embedding the full path in RPATH, which triggers BuildId
differences.

https://tests.reproducible-builds.org/debian/issues/unstable/cmake_rpath_contains_build_path_issue.html
---
 debian/rules | 1 +
 1 file changed, 1 insertion(+)

diff --git a/debian/rules b/debian/rules
index db3a81a..741f2dc 100755
--- a/debian/rules
+++ b/debian/rules
@@ -16,6 +16,7 @@ EVO_NEXTVERSION = $(shell pkg-config --modversion evolution-shell-3.0  | awk -F'
 
 override_dh_auto_configure:
 	dh_auto_configure -- \
+		-DCMAKE_BUILD_RPATH_USE_ORIGIN=ON \
 		-DSYSCONF_INSTALL_DIR=/etc
 
 override_dh_makeshlibs:
-- 
2.34.1

Attachment: signature.asc
Description: PGP signature

Reply via email to