Source: libmstoolkit
Version: 82-7.2
Tags: patch
User: [email protected]
Usertags: ftcbfs

libmstoolkit fails to cross build from source, because it does not pass 
cross tools to make. Wrapping the make invocation in dh_auto_build can 
be used to fix that, but it also enables concurrency and thereby turns 
#1105536 fatal unless passing --no-parallel. Then, the upstream Makefile 
uses non-standard variables (CC for the C++ compiler rather than CXX) 
and this goes wrong when dh_auto_build overrides the toolchain. I 
propose patching upstream to use standard variable names. With all of 
these changes to be found in the attached patch, libmstoolkit cross 
builds.

Helmut
diff -Nru libmstoolkit-82/debian/changelog libmstoolkit-82/debian/changelog
--- libmstoolkit-82/debian/changelog    2024-03-17 20:14:33.000000000 +0100
+++ libmstoolkit-82/debian/changelog    2025-09-03 10:31:20.000000000 +0200
@@ -1,3 +1,12 @@
+libmstoolkit (82-7.3) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Fix FTCBFS: (Closes: #-1)
+    + Let dh_auto_build pass cross tools to make.
+    + cross.patch: Use standard variable names for the toolchain
+
+ -- Helmut Grohne <[email protected]>  Wed, 03 Sep 2025 10:31:20 +0200
+
 libmstoolkit (82-7.2) unstable; urgency=medium
 
   * Non-maintainer upload.
diff -Nru libmstoolkit-82/debian/patches/cross.patch 
libmstoolkit-82/debian/patches/cross.patch
--- libmstoolkit-82/debian/patches/cross.patch  1970-01-01 01:00:00.000000000 
+0100
+++ libmstoolkit-82/debian/patches/cross.patch  2025-09-03 10:31:20.000000000 
+0200
@@ -0,0 +1,84 @@
+--- libmstoolkit-82.orig/Makefile
++++ libmstoolkit-82/Makefile
+@@ -12,8 +12,8 @@
+ READER = MSReader.o
+ READERLITE = MSReaderLite.o
+ 
+-CC = g++
+-GCC = gcc
++CC = gcc
++CXX = g++
+ NOSQLITE = -D_NOSQLITE
+ 
+ SOVER = 82
+@@ -38,24 +38,24 @@
+       
+       ar rcs libmstoolkitlite.a $(MZPARSERLITE) $(MSTOOLKIT) $(READERLITE)
+       ar rcs libmstoolkit.a $(MZPARSER) $(MSTOOLKIT) $(READER)
+-#     $(CC) $(CFLAGS) MSTDemo.cpp -L. -lmstoolkitlite -o MSTDemo
+-#     $(CC) $(CFLAGS) -I./include MSSingleScan/MSSingleScan.cpp -L. 
-lmstoolkitlite -o msSingleScan.static
+-#     $(CC) $(CFLAGS) MSConvertFile.cpp -L. -lmstoolkitlite -o MSConvertFile
++#     $(CXX) $(CFLAGS) MSTDemo.cpp -L. -lmstoolkitlite -o MSTDemo
++#     $(CXX) $(CFLAGS) -I./include MSSingleScan/MSSingleScan.cpp -L. 
-lmstoolkitlite -o msSingleScan.static
++#     $(CXX) $(CFLAGS) MSConvertFile.cpp -L. -lmstoolkitlite -o MSConvertFile
+ 
+ 
+ solib: CFLAGS = $(SO_CFLAGS)
+ solib: clean_objects objects 
+       
+-      $(CC) $(CFLAGS) -o libmstoolkitlite.so.$(RELVER) -Wl,-z,relro 
-Wl,-soname,libmstoolkitlite.so.$(SOVER) $(MZPARSERLITE) $(MSTOOLKIT) 
$(READERLITE) $(LIBS)
++      $(CXX) $(CFLAGS) -o libmstoolkitlite.so.$(RELVER) -Wl,-z,relro 
-Wl,-soname,libmstoolkitlite.so.$(SOVER) $(MZPARSERLITE) $(MSTOOLKIT) 
$(READERLITE) $(LIBS)
+       ln -sf libmstoolkitlite.so.$(RELVER) libmstoolkitlite.so.$(SOVER)
+       ln -sf libmstoolkitlite.so.$(SOVER) libmstoolkitlite.so
+       
+-      $(CC) $(CFLAGS) -o libmstoolkit.so.$(RELVER) -Wl,-z,relro 
-Wl,-soname,libmstoolkit.so.$(SOVER) $(MZPARSER) $(MSTOOLKIT) $(READER) $(LIBS)
++      $(CXX) $(CFLAGS) -o libmstoolkit.so.$(RELVER) -Wl,-z,relro 
-Wl,-soname,libmstoolkit.so.$(SOVER) $(MZPARSER) $(MSTOOLKIT) $(READER) $(LIBS)
+       ln -sf libmstoolkit.so.$(RELVER) libmstoolkit.so.$(SOVER)
+       ln -sf libmstoolkit.so.$(SOVER) libmstoolkit.so
+       
+       # Be careful not to include in the linker command line below the 
compilation -shared -fPIC flags!
+-      $(CC) -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DGCC 
-DHAVE_EXPAT_CONFIG_H -I./include -L. MSSingleScan/MSSingleScan.cpp -o 
msSingleScan $(LIBS) -lmstoolkitlite 
++      $(CXX) -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DGCC 
-DHAVE_EXPAT_CONFIG_H -I./include -L. MSSingleScan/MSSingleScan.cpp -o 
msSingleScan $(LIBS) -lmstoolkitlite 
+ 
+ 
+ clean_objects: 
+@@ -69,31 +69,31 @@
+ 
+ #mzParser objects
+ mzp.%.o : $(MZPARSER_PATH)/%.cpp
+-      $(CC) $(CFLAGS) $(MZ5) $< -c -o $@
++      $(CXX) $(CFLAGS) $(MZ5) $< -c -o $@
+ 
+ #mzParserLite objects
+ mzp.%_lite.o : $(MZPARSER_PATH)/%.cpp
+-      $(CC) $(CFLAGS) $< -c -o $@
++      $(CXX) $(CFLAGS) $< -c -o $@
+ 
+ 
+ #MSToolkit objects
+ 
+ Spectrum.o : $(MST_PATH)/Spectrum.cpp
+-      $(CC) $(CFLAGS) $(MST_PATH)/Spectrum.cpp -c
++      $(CXX) $(CFLAGS) $(MST_PATH)/Spectrum.cpp -c
+ 
+ MSReader.o : $(MST_PATH)/MSReader.cpp
+-      $(CC) $(CFLAGS) $(MZ5) $(MST_PATH)/MSReader.cpp -c
++      $(CXX) $(CFLAGS) $(MZ5) $(MST_PATH)/MSReader.cpp -c
+ 
+ MSReaderLite.o : $(MST_PATH)/MSReader.cpp
+-      $(CC) $(CFLAGS) $(NOSQLITE) $(MST_PATH)/MSReader.cpp -c -o 
MSReaderLite.o
++      $(CXX) $(CFLAGS) $(NOSQLITE) $(MST_PATH)/MSReader.cpp -c -o 
MSReaderLite.o
+ 
+ MSObject.o : $(MST_PATH)/MSObject.cpp
+-      $(CC) $(CFLAGS) $(MST_PATH)/MSObject.cpp -c
++      $(CXX) $(CFLAGS) $(MST_PATH)/MSObject.cpp -c
+ 
+ mzMLWriter.o : $(MST_PATH)/mzMLWriter.cpp
+-      $(CC) $(CFLAGS) $(MST_PATH)/mzMLWriter.cpp -c
++      $(CXX) $(CFLAGS) $(MST_PATH)/mzMLWriter.cpp -c
+       
+ pepXMLWriter.o : $(MST_PATH)/pepXMLWriter.cpp
+-      $(CC) $(CFLAGS) $(MST_PATH)/pepXMLWriter.cpp -c
++      $(CXX) $(CFLAGS) $(MST_PATH)/pepXMLWriter.cpp -c
+ 
+ 
diff -Nru libmstoolkit-82/debian/patches/series 
libmstoolkit-82/debian/patches/series
--- libmstoolkit-82/debian/patches/series       2018-02-26 22:40:08.000000000 
+0100
+++ libmstoolkit-82/debian/patches/series       2025-09-03 10:31:20.000000000 
+0200
@@ -1,3 +1,3 @@
 makefile.patch
 missing-license-stanzas-added.patch
-
+cross.patch
diff -Nru libmstoolkit-82/debian/rules libmstoolkit-82/debian/rules
--- libmstoolkit-82/debian/rules        2024-03-17 20:14:18.000000000 +0100
+++ libmstoolkit-82/debian/rules        2025-09-03 10:31:20.000000000 +0200
@@ -30,7 +30,8 @@
        docbook-to-man debian/libmstoolkit.sgml > debian/libmstoolkit.3
 
 override_dh_auto_build: manpage
-       make all
+       # Work around #1105536 via --no-parallel
+       dh_auto_build --no-parallel -- all AR='$(AR)'
 
 override_dh_makeshlibs:
        mkdir -p $(DEBIAN_DIR)/$(LIB_PACKAGE)/DEBIAN

Reply via email to