Source: praat Version: 6.0.46-3 Tags: patch User: [email protected] Usertags: rebootstrap
praat fails to cross build from source for a fair number of reasons. The most obvious is debian/rules hard coding the build architecture pkg-config. It also uses make's default of CC which happens to be wrong for cross compilation. dpkg's buildtools.mk fixes both. Then, the upstream Makefiles stuff flags into CC and CXX. Since dh_auto_build substitutes these variables, the relevant flags get lost. We need to move them to CFLAGS and CXXFLAGS respectively. The upstream Makefiles also hard code the build architecture pkg-config. The attached patch works through all these failures and ultimately makes praat cross buildable. Please consider applying it. Helmut
diff --minimal -Nru praat-6.0.46/debian/changelog praat-6.0.46/debian/changelog --- praat-6.0.46/debian/changelog 2019-01-07 14:06:18.000000000 +0100 +++ praat-6.0.46/debian/changelog 2019-01-16 16:43:08.000000000 +0100 @@ -1,3 +1,14 @@ +praat (6.0.46-3.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Fix FTCBFS: (Closes: #-1) + + debian/rules: seed build tools from dpkg's buildtools.mk + + cross.patch: Allow substituting pkg-config. + + cross.patch: Don't stuff flags into $(CC) or $(CXX). + + cross.patch: Default LINK to $(CXX). + + -- Helmut Grohne <[email protected]> Wed, 16 Jan 2019 16:43:08 +0100 + praat (6.0.46-3) unstable; urgency=medium * d/p/show-fc-discrimant-test.patch: Drop patch diff --minimal -Nru praat-6.0.46/debian/mk-vars-hardening praat-6.0.46/debian/mk-vars-hardening --- praat-6.0.46/debian/mk-vars-hardening 2017-11-30 06:08:10.000000000 +0100 +++ praat-6.0.46/debian/mk-vars-hardening 2019-01-16 16:43:08.000000000 +0100 @@ -1,2 +1,2 @@ CFLAGS += $(shell dpkg-buildflags --get CFLAGS) $(shell dpkg-buildflags --get CPPFLAGS) -CXXFLAGS = $(CFLAGS) -Wshadow $(shell dpkg-buildflags --get CXXFLAGS) +CXXFLAGS += $(shell dpkg-buildflags --get CXXFLAGS) diff --minimal -Nru praat-6.0.46/debian/patches/cross.patch praat-6.0.46/debian/patches/cross.patch --- praat-6.0.46/debian/patches/cross.patch 1970-01-01 01:00:00.000000000 +0100 +++ praat-6.0.46/debian/patches/cross.patch 2019-01-16 16:43:08.000000000 +0100 @@ -0,0 +1,185 @@ +--- praat-6.0.46.orig/makefiles/makefile.defs.linux.alsa ++++ praat-6.0.46/makefiles/makefile.defs.linux.alsa +@@ -3,19 +3,23 @@ + # System: Linux + # Paul Boersma, 3 August 2018 + +-CC = gcc -std=gnu99 ++CC = gcc + +-CXX = g++ -std=c++17 ++CXX = g++ + +-CFLAGS = -DUNIX -Dlinux -DALSA -D_FILE_OFFSET_BITS=64 `pkg-config --cflags gtk+-2.0` -Werror=missing-prototypes -Werror=implicit -Wreturn-type -Wunused -Wunused-parameter -Wuninitialized -O1 -g1 -pthread ++PKG_CONFIG ?= pkg-config + +-CXXFLAGS = $(CFLAGS) -Wshadow ++COMMON_CFLAGS = -DUNIX -Dlinux -DALSA -D_FILE_OFFSET_BITS=64 `$(PKG_CONFIG) --cflags gtk+-2.0` -Werror=missing-prototypes -Werror=implicit -Wreturn-type -Wunused -Wunused-parameter -Wuninitialized -O1 -g1 -pthread + +-LINK = g++ ++CFLAGS = -std=gnu99 $(COMMON_CFLAGS) ++ ++CXXFLAGS = -std=c++17 $(COMMON_CFLAGS) -Wshadow ++ ++LINK = $(CXX) + + EXECUTABLE = praat + +-LIBS = `pkg-config --libs gtk+-2.0` -lm -lasound -lpthread ++LIBS = `$(PKG_CONFIG) --libs gtk+-2.0` -lm -lasound -lpthread + + AR = ar + RANLIB = ls +--- praat-6.0.46.orig/makefiles/makefile.defs.linux.jack ++++ praat-6.0.46/makefiles/makefile.defs.linux.jack +@@ -3,19 +3,23 @@ + # System: Linux + # Paul Boersma, 21 October 2018 + +-CC = gcc -std=gnu99 ++CC = gcc + +-CXX = g++ -std=c++17 ++CXX = g++ + +-CFLAGS = -DUNIX -Dlinux -DJACK -D_FILE_OFFSET_BITS=64 `pkg-config --cflags gtk+-2.0` -Werror=missing-prototypes -Werror=implicit -Wreturn-type -Wunused -Wunused-parameter -Wuninitialized -O1 -g1 -pthread ++PKG_CONFIG ?= pkg-config + +-CXXFLAGS = $(CFLAGS) -Wshadow ++COMMON_CFLAGS = -DUNIX -Dlinux -DJACK -D_FILE_OFFSET_BITS=64 `$(PKG_CONFIG) --cflags gtk+-2.0` -Werror=missing-prototypes -Werror=implicit -Wreturn-type -Wunused -Wunused-parameter -Wuninitialized -O1 -g1 -pthread + +-LINK = g++ ++CFLAGS = -std=gnu99 $(COMMON_CFLAGS) ++ ++CXXFLAGS = -std=c++17 $(COMMON_CFLAGS) -Wshadow ++ ++LINK = $(CXX) + + EXECUTABLE = praat + +-LIBS = `pkg-config --libs gtk+-2.0` -lm -ljack -lpthread ++LIBS = `$(PKG_CONFIG) --libs gtk+-2.0` -lm -ljack -lpthread + + AR = ar + RANLIB = ls +--- praat-6.0.46.orig/makefiles/makefile.defs.linux.nogui ++++ praat-6.0.46/makefiles/makefile.defs.linux.nogui +@@ -3,19 +3,23 @@ + # System: Linux without GUI, network, and sound + # Paul Boersma, 3 August 2018 + +-CC = gcc -std=gnu99 ++CC = gcc + +-CXX = g++ -std=c++17 ++CXX = g++ + +-CFLAGS = -DNO_GUI -DNO_NETWORK -D_FILE_OFFSET_BITS=64 `pkg-config --cflags pangocairo` -DUNIX -Dlinux -Werror=missing-prototypes -Werror=implicit -Wreturn-type -Wunused -Wunused-parameter -Wuninitialized -O3 -g1 -pthread ++PKG_CONFIG ?= pkg-config + +-CXXFLAGS = $(CFLAGS) -Wshadow ++COMMON_CFLAGS = -DNO_GUI -DNO_NETWORK -D_FILE_OFFSET_BITS=64 `$(PKG_CONFIG) --cflags pangocairo` -DUNIX -Dlinux -Werror=missing-prototypes -Werror=implicit -Wreturn-type -Wunused -Wunused-parameter -Wuninitialized -O3 -g1 -pthread + +-LINK = g++ ++CFLAGS = -std=gnu99 $(COMMON_CFLAGS) ++ ++CXXFLAGS = -std=c++17 $(COMMON_CFLAGS) -Wshadow ++ ++LINK = $(CXX) + + EXECUTABLE = praat_nogui + +-LIBS = `pkg-config --libs pangocairo` -lm -lpthread ++LIBS = `$(PKG_CONFIG) --libs pangocairo` -lm -lpthread + + AR = ar + RANLIB = ls +--- praat-6.0.46.orig/makefiles/makefile.defs.linux.pulse ++++ praat-6.0.46/makefiles/makefile.defs.linux.pulse +@@ -3,19 +3,23 @@ + # System: Linux + # David Weenink and Paul Boersma, 23 September 2018 + +-CC = gcc -std=gnu99 ++CC = gcc + +-CXX = g++ -std=c++17 ++CXX = g++ + +-CFLAGS = -DUNIX -Dlinux -DALSA -DHAVE_PULSEAUDIO -D_FILE_OFFSET_BITS=64 `pkg-config --cflags gtk+-2.0` -Werror=missing-prototypes -Werror=implicit -Wreturn-type -Wunused -Wunused-parameter -Wuninitialized -O3 -g1 -pthread ++PKG_CONFIG ?= pkg-config + +-CXXFLAGS = $(CFLAGS) -Wshadow ++COMMON_CFLAGS = -DUNIX -Dlinux -DALSA -DHAVE_PULSEAUDIO -D_FILE_OFFSET_BITS=64 `$(PKG_CONFIG) --cflags gtk+-2.0` -Werror=missing-prototypes -Werror=implicit -Wreturn-type -Wunused -Wunused-parameter -Wuninitialized -O3 -g1 -pthread + +-LINK = g++ ++CFLAGS = -std=gnu99 $(COMMON_CFLAGS) ++ ++CXXFLAGS = -std=c++17 $(COMMON_CFLAGS) -Wshadow ++ ++LINK = $(CXX) + + EXECUTABLE = praat + +-LIBS = `pkg-config --libs gtk+-2.0` -lm -lpulse -lasound -lpthread ++LIBS = `$(PKG_CONFIG) --libs gtk+-2.0` -lm -lpulse -lasound -lpthread + + AR = ar + RANLIB = ls +--- praat-6.0.46.orig/makefiles/makefile.defs.linux.silent ++++ praat-6.0.46/makefiles/makefile.defs.linux.silent +@@ -3,19 +3,23 @@ + # System: Linux without sound + # Paul Boersma, 3 August 2018 + +-CC = gcc -std=gnu99 ++CC = gcc + +-CXX = g++ -std=c++17 ++CXX = g++ + +-CFLAGS = -D_FILE_OFFSET_BITS=64 -DUNIX -Dlinux `pkg-config --cflags gtk+-2.0` -Werror=missing-prototypes -Werror=implicit -Wreturn-type -Wunused -Wunused-parameter -Wuninitialized -O1 -g1 -pthread ++PKG_CONFIG ?= pkg-config + +-CXXFLAGS = $(CFLAGS) -Wshadow ++COMMON_CFLAGS = -D_FILE_OFFSET_BITS=64 -DUNIX -Dlinux `$(PKG_CONFIG) --cflags gtk+-2.0` -Werror=missing-prototypes -Werror=implicit -Wreturn-type -Wunused -Wunused-parameter -Wuninitialized -O1 -g1 -pthread + +-LINK = g++ ++CFLAGS = -std=gnu99 $(COMMON_CFLAGS) ++ ++CXXFLAGS = -std=c++17 $(COMMON_CFLAGS) -Wshadow ++ ++LINK = $(CXX) + + EXECUTABLE = praat + +-LIBS = `pkg-config --libs gtk+-2.0` -lm -lpthread -static-libgcc -static-libstdc++ ++LIBS = `$(PKG_CONFIG) --libs gtk+-2.0` -lm -lpthread -static-libgcc -static-libstdc++ + + AR = ar + RANLIB = ls +--- praat-6.0.46.orig/makefiles/makefile.defs.linux.barren ++++ praat-6.0.46/makefiles/makefile.defs.linux.barren +@@ -3,15 +3,17 @@ + # System: Linux without GUI, network, graphics, and sound + # Paul Boersma, 3 August 2018 + +-CC = gcc -std=gnu99 ++CC = gcc + +-CXX = g++ -std=c++17 ++CXX = g++ + +-CFLAGS = -DNO_GRAPHICS -DNO_NETWORK -D_FILE_OFFSET_BITS=64 -DUNIX -Dlinux -Werror=missing-prototypes -Werror=implicit -Wreturn-type -Wunused -Wunused-parameter -Wuninitialized -O3 -g1 -pthread ++COMMON_CFLAGS = -DNO_GRAPHICS -DNO_NETWORK -D_FILE_OFFSET_BITS=64 -DUNIX -Dlinux -Werror=missing-prototypes -Werror=implicit -Wreturn-type -Wunused -Wunused-parameter -Wuninitialized -O3 -g1 -pthread + +-CXXFLAGS = $(CFLAGS) -Wshadow ++CFLAGS = -std=gnu99 $(COMMON_CFLAGS) + +-LINK = g++ ++CXXFLAGS = -std=c++17 $(COMMON_CFLAGS) -Wshadow ++ ++LINK = $(CXX) + + EXECUTABLE = praat_barren + diff --minimal -Nru praat-6.0.46/debian/patches/series praat-6.0.46/debian/patches/series --- praat-6.0.46/debian/patches/series 2019-01-07 14:05:12.000000000 +0100 +++ praat-6.0.46/debian/patches/series 2019-01-16 16:43:08.000000000 +0100 @@ -1,3 +1,4 @@ use-ldflags.patch remove-time-date-macros.patch fix-procrustes-unit-test.patch +cross.patch diff --minimal -Nru praat-6.0.46/debian/rules praat-6.0.46/debian/rules --- praat-6.0.46/debian/rules 2018-09-12 08:28:50.000000000 +0200 +++ praat-6.0.46/debian/rules 2019-01-16 16:38:49.000000000 +0100 @@ -15,7 +15,9 @@ export DEB_BUILD_MAINT_OPTIONS = hardening=+all -DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) +include /usr/share/dpkg/architecture.mk +-include /usr/share/dpkg/buildtools.mk +PKG_CONFIG ?= pkg-config ifneq (,$(filter $(DEB_HOST_ARCH), i386)) export DEB_CXXFLAGS_MAINT_APPEND=-ffloat-store @@ -64,7 +66,7 @@ $(shell dpkg-buildflags --get LDFLAGS) \ -Wl,--as-needed -std=gnu99 -DSTAND_ALONE -DUNIX \ -o sendpraat sys/sendpraat.c \ - $(shell pkg-config --cflags --libs gtk+-2.0) + $(shell $(PKG_CONFIG) --cflags --libs gtk+-2.0) override_dh_auto_build: sendpraat praat.1 praat_nogui.1 sendpraat.1 praat-open-files.1 dh_auto_build

