From a3b893dd0537576a7fb698fcdc9cab9081783e06 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= <slavek.banko@axis.cz>
Date: Thu, 7 Mar 2024 04:42:13 +0100
Subject: DEB arts: Change the library package name in case of incompatible ABI
 for 64-bit time_t.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
(cherry picked from commit 8f8ece8a19cdb9b913e205c417cc7805354a8890)
---
 debian/_base/dependencies/arts/debian/control |  2 +-
 debian/_base/dependencies/arts/debian/rules   | 51 +++++++++++++++++++++++++--
 2 files changed, 49 insertions(+), 4 deletions(-)

(limited to 'debian')

diff --git a/debian/_base/dependencies/arts/debian/control b/debian/_base/dependencies/arts/debian/control
index 64380cbe5..7f1841236 100644
--- a/debian/_base/dependencies/arts/debian/control
+++ b/debian/_base/dependencies/arts/debian/control
@@ -18,7 +18,7 @@ Architecture: all
 Section: sound
 Replaces: arts-trinity (<< 4:14.0.0~)
 Breaks: arts-trinity (<< 4:14.0.0~)
-Depends: libartsc0-trinity (>= ${source:Version}), libarts1c2a-trinity (>= ${source:Version})
+Depends: libartsc0-trinity (>= ${source:Version}), libarts1c2a-trinity (>= ${source:Version}) | libarts1t64-trinity (>= ${source:Version})
 Description: sound system from the official TDE release
  TDE (the Trinity Desktop Environment) is a powerful Open Source graphical
  desktop environment for Unix workstations. It combines ease of use,
diff --git a/debian/_base/dependencies/arts/debian/rules b/debian/_base/dependencies/arts/debian/rules
index cc4893ca9..a934b8c5a 100755
--- a/debian/_base/dependencies/arts/debian/rules
+++ b/debian/_base/dependencies/arts/debian/rules
@@ -12,6 +12,14 @@ include /usr/share/cdbs/1/rules/debhelper.mk
 include /usr/share/cdbs/1/class/cmake.mk
 include debian/cdbs/debian-tde.mk
 
+DEB_TIME64_API		= $(shell echo | cc $(dpkg-buildflags --get CPPFLAGS) -dM -E -x c++ - | grep -q "_TIME_BITS 64" && echo true || false)
+ifeq ($(DEB_TIME64_API),true)
+DEB_TIME64_SUFFIX	= t64
+else
+DEB_TIME64_SUFFIX	= c2a
+endif
+
+
 DEB_CMAKE_EXTRA_FLAGS := \
  -DCMAKE_EXPORT_COMPILE_COMMANDS="ON" \
  -DPKGCONFIG_INSTALL_DIR="/usr/lib/pkgconfig" \
@@ -30,13 +38,13 @@ DEB_CMAKE_EXTRA_FLAGS := \
 
 DEB_DH_STRIP_ARGS := --dbg-package=arts-trinity-dbg
 
-PACKAGES_WITH_LIBS := libarts1c2a-trinity libartsc0-trinity
+PACKAGES_WITH_LIBS := libarts1$(DEB_TIME64_SUFFIX)-trinity libartsc0-trinity
 
 DEB_DH_MAKESHLIBS_ARGS_ALL := -V
 DEB_SHLIBDEPS_INCLUDE = $(foreach p,$(PACKAGES_WITH_LIBS),debian/$(p)/opt/trinity/lib)
 
-DEB_DH_MAKESHLIBS_ARGS_libarts1c2a-trinity	:= -V'libarts1c2a-trinity (>= 1.5.9)'
-DEB_DH_MAKESHLIBS_ARGS_libartsc0-trinity	:= -V'libartsc0-trinity (>= 1.5.9)'
+DEB_DH_MAKESHLIBS_ARGS_libarts1$(DEB_TIME64_SUFFIX)-trinity	:= -V'libarts1$(DEB_TIME64_SUFFIX)-trinity (>= 1.5.9)'
+DEB_DH_MAKESHLIBS_ARGS_libartsc0-trinity			:= -V'libartsc0-trinity (>= 1.5.9)'
 
 #shlibs_ver = 1.5.0-1
 #$(foreach p,$(PACKAGES_WITH_LIBS),$(eval DEB_DH_MAKESHLIBS_ARGS_$(p) := -V'$(p) (>= $(shlibs_ver))'))
@@ -47,3 +55,40 @@ binary-predeb/libarts1-trinity-dev::
 ifeq (linux,$(DEB_HOST_ARCH_OS))
 	    echo "libasound2-dev=libasound2-dev" >> debian/libarts1-trinity-dev.substvars
 endif
+
+post-patches::
+	dh_testdir
+ifeq ($(DEB_TIME64_API),true)
+	# update library package name for TIME64 ABI
+	ls -d debian/* | \
+	grep -E "/libarts1c2a" | \
+	grep -v "\.t64$$" | \
+	while read a; do \
+	    [ -d $$a ] || [ -f $$a.t64 ] || \
+	    (cp -a $$a debian/libarts1$(DEB_TIME64_SUFFIX)$${a##*c2a} && mv $$a $$a.t64); \
+	done
+	[ -f debian/control.t64 ] || \
+	sed -i.t64 \
+	    -e "s/^\\(Package: libarts1\\)c2a-trinity$$/\\1$(DEB_TIME64_SUFFIX)-trinity/" \
+	    -e "s/^\\(Replaces\\|Breaks\\):\\(.*\\)\\(libarts1\\)c2a-trinity\\( \|$$\)/\\1:\\2\\3c2a-trinity, \\3$(DEB_TIME64_SUFFIX)-trinity\\4/" \
+	    -e "s/\\(libarts1\\)c2a-trinity (=/\\1$(DEB_TIME64_SUFFIX)-trinity (=/" \
+	    debian/control
+endif
+
+clean::
+	dh_testdir
+	dh_clean
+
+ifeq ($(DEB_TIME64_API),true)
+	# revert library package name for TIME64 ABI
+	ls -d debian/* | \
+	grep -E "\.t64$$" | \
+	while read a; do \
+	    mv $$a $${a%.t64}; \
+	done
+	ls -d debian/* | \
+	grep -E "/libarts1$(DEB_TIME64_SUFFIX)-" | \
+	xargs -r rm
+	[ ! -f debian/control.t64 ] || \
+	mv debian/control.t64 debian/control
+endif
-- 
cgit v1.2.1