Bug#912141: libsdl-sge FTCBFS: multiple reasons

Helmut Grohne helmut at subdivi.de
Sun Oct 28 14:10:05 GMT 2018


Source: libsdl-sge
Version: 030809dfsg-8
Tags: patch
User: helmutg at debian.org
Usertags: rebootstrap

libsdl-sge fails to cross build from source for multiple distinct
reasons.

 * debian/rules does not pass any cross tools to make. Using
   dh_auto_build fixes that.

 * The (modified) upstream Makefile hard codes the build architecture
   pkg-config.

 * The upstream Makefile dependencies are messed up. For instance, the
   config target does not actually create the file "config". Thus it is
   rebuilt every time. This causes a rebuild in dh_auto_install for
   which debhelper does not pass cross tools.

The attached patch fixes all of that and makes libsdl-sge cross
buildable. Please consider applying it.

Helmut
-------------- next part --------------
diff --minimal -Nru libsdl-sge-030809dfsg/debian/changelog libsdl-sge-030809dfsg/debian/changelog
--- libsdl-sge-030809dfsg/debian/changelog	2018-10-19 22:26:15.000000000 +0200
+++ libsdl-sge-030809dfsg/debian/changelog	2018-10-28 14:40:16.000000000 +0100
@@ -1,3 +1,14 @@
+libsdl-sge (030809dfsg-8.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Fix FTCBFS: (Closes: #-1)
+    + Let dh_auto_build pass cross tools to make.
+    + cross.patch: Make pkg-config substitutable.
+    + cross.patch: Fix makefile dependencies to avoid excessive
+      rebuilds during make install.
+
+ -- Helmut Grohne <helmut at subdivi.de>  Sun, 28 Oct 2018 14:40:16 +0100
+
 libsdl-sge (030809dfsg-8) unstable; urgency=medium
 
   * Bump Policy Standars-Version to 4.2.1 (no changes needed)
diff --minimal -Nru libsdl-sge-030809dfsg/debian/patches/cross.patch libsdl-sge-030809dfsg/debian/patches/cross.patch
--- libsdl-sge-030809dfsg/debian/patches/cross.patch	1970-01-01 01:00:00.000000000 +0100
+++ libsdl-sge-030809dfsg/debian/patches/cross.patch	2018-10-28 14:40:16.000000000 +0100
@@ -0,0 +1,66 @@
+--- libsdl-sge-030809dfsg.orig/Makefile.conf
++++ libsdl-sge-030809dfsg/Makefile.conf
+@@ -11,6 +11,7 @@
+ # Compilers (C and C++)
+ CC=gcc
+ CXX=g++
++PKG_CONFIG?=pkg-config
+ 
+ # Make sure sdl-config is available
+ HAVE_SDL =$(shell if (sdl-config --version) < /dev/null > /dev/null 2>&1; then echo "y"; else echo "n"; fi;)
+@@ -36,15 +37,15 @@
+ 
+ 
+ # Is freetype-config available?
+-HAVE_FT =$(shell if (pkg-config --modversion freetype2) < /dev/null > /dev/null 2>&1; then echo "y"; else echo "n"; fi;)
++HAVE_FT =$(shell if ($(PKG_CONFIG) --modversion freetype2) < /dev/null > /dev/null 2>&1; then echo "y"; else echo "n"; fi;)
+ ifeq ($(HAVE_FT),n)
+   USE_FT = n
+ endif
+ 
+ ifneq ($(USE_FT),n)
+   USE_FT = y
+-  SGE_LIBS +=$(shell pkg-config freetype2 --libs)
+-  FT_CFLAGS =$(shell pkg-config freetype2 --cflags)
++  SGE_LIBS +=$(shell $(PKG_CONFIG) freetype2 --libs)
++  FT_CFLAGS =$(shell $(PKG_CONFIG) freetype2 --cflags)
+ endif
+ 
+ 
+--- libsdl-sge-030809dfsg.orig/Makefile
++++ libsdl-sge-030809dfsg/Makefile
+@@ -11,20 +11,21 @@
+ 
+ OBJECTS=sge_surface.o sge_primitives.o sge_tt_text.o sge_bm_text.o sge_misc.o sge_textpp.o sge_blib.o sge_rotation.o sge_collision.o sge_shape.o
+ 
+-all:	config $(OBJECTS) 
++all:	sge_config.h $(OBJECTS) 
+ 	ar rsc libSGE.a $(OBJECTS)
+ 
+ $(OBJECTS):	%.o:%.cpp %.h   #Each object depends on thier .cpp and .h file
+ 	$(CXX) $(CFLAGS) -c $<
+ 
+-shared: all
++shared: libSGE.so
++libSGE.so: sge_config.h $(OBJECTS)
+ 	$(CXX) $(CFLAGS) $(LDFLAGS) -Wl,-soname,libSGE.so.$(API_VER) -fpic -fPIC -shared -o libSGE.so $(OBJECTS) $(LIBS)
+ 
+ shared-strip:	shared
+ 	@strip libSGE.so
+ 
+ # Building a dll... I have no idea how to do this, but it should be something like below.
+-dll:	config $(OBJECTS)
++dll:	sge_config.h $(OBJECTS)
+ 	dlltool --output-def SGE.def $(OBJECTS)
+ 	dllwrap --driver-name $(CXX) -o SGE.dll --def SGE.def --output-lib libSGE.a --dllname SGE.dll $(OBJECTS) $(LIBS)
+ 
+@@ -34,7 +35,8 @@
+ clean:
+ 	rm -f *.o *.so *.so.* *.a *.dll *.def
+ 
+-config:
++config:sge_config.h
++sge_config.h:
+ 	@echo "/* SGE Config header (generated automatically) */" >sge_config.h
+ 	@echo "#define SGE_VER $(SGE_VER)" >>sge_config.h	
+ ifeq ($(C_COMP),y)
diff --minimal -Nru libsdl-sge-030809dfsg/debian/patches/series libsdl-sge-030809dfsg/debian/patches/series
--- libsdl-sge-030809dfsg/debian/patches/series	2018-10-19 22:17:58.000000000 +0200
+++ libsdl-sge-030809dfsg/debian/patches/series	2018-10-28 14:40:16.000000000 +0100
@@ -6,3 +6,4 @@
 010_examples.diff
 015_overflow.diff
 100_font.diff
+cross.patch
diff --minimal -Nru libsdl-sge-030809dfsg/debian/rules libsdl-sge-030809dfsg/debian/rules
--- libsdl-sge-030809dfsg/debian/rules	2017-06-19 23:36:29.000000000 +0200
+++ libsdl-sge-030809dfsg/debian/rules	2018-10-28 14:40:15.000000000 +0100
@@ -21,13 +21,13 @@
 override_dh_auto_build:
         # Build the static library and make a backup
 	rm -f libSGE.a
-	$(MAKE) all CUSTOM_CFLAGS="$(ALL_CUSTOM_CFLAGS)" CUSTOM_LDFLAGS="$(ALL_CUSTOM_LDFLAGS)"
+	dh_auto_build -- all CUSTOM_CFLAGS="$(ALL_CUSTOM_CFLAGS)" CUSTOM_LDFLAGS="$(ALL_CUSTOM_LDFLAGS)"
 	rm -f libSGE.bak
 	mv libSGE.a libSGE.bak
 
         # Build the shared library and restore the static backup
 	$(MAKE) clean
-	$(MAKE) shared CUSTOM_CFLAGS="$(ALL_CUSTOM_CFLAGS)" CUSTOM_LDFLAGS="$(ALL_CUSTOM_LDFLAGS)"
+	dh_auto_build -- shared CUSTOM_CFLAGS="$(ALL_CUSTOM_CFLAGS)" CUSTOM_LDFLAGS="$(ALL_CUSTOM_LDFLAGS)"
 	rm -f libSGE.a
 	mv libSGE.bak libSGE.a
 


More information about the Pkg-sdl-maintainers mailing list