From a3b893dd0537576a7fb698fcdc9cab9081783e06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= Date: Thu, 7 Mar 2024 04:42:13 +0100 Subject: [PATCH] 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 (cherry picked from commit 8f8ece8a19cdb9b913e205c417cc7805354a8890) --- debian/_base/dependencies/arts/debian/control | 2 +- debian/_base/dependencies/arts/debian/rules | 51 +++++++++++++++++-- dilos/dependencies/arts/debian/control | 2 +- dilos/dependencies/arts/debian/rules | 51 +++++++++++++++++-- ubuntu/_base/dependencies/arts/debian/control | 2 +- ubuntu/_base/dependencies/arts/debian/rules | 51 +++++++++++++++++-- 6 files changed, 147 insertions(+), 12 deletions(-) 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 diff --git a/dilos/dependencies/arts/debian/control b/dilos/dependencies/arts/debian/control index 1b646a960..e850901d6 100644 --- a/dilos/dependencies/arts/debian/control +++ b/dilos/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/dilos/dependencies/arts/debian/rules b/dilos/dependencies/arts/debian/rules index a81635c90..b97d4a1af 100755 --- a/dilos/dependencies/arts/debian/rules +++ b/dilos/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 := \ -DCONFIG_INSTALL_DIR="/etc/trinity" \ -DSYSCONF_INSTALL_DIR="/etc/trinity" \ @@ -37,13 +45,13 @@ DEB_DH_STRIP_ARGS := --dbg-package=arts-trinity-dbg \ -Xlibmcop.so.1.0.0 -Xlibqtmcop.so.1.0.0 -Xartsplay -Xartsd -Xartscat \ -Xartsshell -Xartsrec -Xmcopidl -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)/usr/lib/$(DEB_HOST_MULTIARCH)) -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))')) @@ -54,3 +62,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 diff --git a/ubuntu/_base/dependencies/arts/debian/control b/ubuntu/_base/dependencies/arts/debian/control index 21ac38754..c56f1200d 100644 --- a/ubuntu/_base/dependencies/arts/debian/control +++ b/ubuntu/_base/dependencies/arts/debian/control @@ -18,7 +18,7 @@ Architecture: all Section: sound Replaces: arts-kde3 (<< 4:14.0.0~), arts-trinity (<< 4:14.0.0~) Breaks: arts-kde3 (<< 4:14.0.0~), 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/ubuntu/_base/dependencies/arts/debian/rules b/ubuntu/_base/dependencies/arts/debian/rules index cc4893ca9..a934b8c5a 100755 --- a/ubuntu/_base/dependencies/arts/debian/rules +++ b/ubuntu/_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