Bug#795076: gnuplot5: FTBFS: You must build your code with position independent code if Qt was built with -reduce-relocations

Martin Pitt martin.pitt at ubuntu.com
Mon Aug 10 14:34:56 UTC 2015


Control: tag -1 patch

Martin Pitt [2015-08-10 12:57 +0200]:
> | /usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:1052:4: error: #error "You must build your code with position independent code if Qt was built with -reduce-relocations. " "Compile your code with -fPIC (-fPIE is not enough)."
> |  #  error "You must build your code with position independent code if Qt was built with -reduce-relocations. "\
> |     ^

This error message is totally misleading. I tried to set

  export DEB_CXXFLAGS_MAINT_APPEND  = -fPIC

in debian/rules, but this doesn't help. Looking at the actual
implementation of that #error shows

| #if !defined(QT_BOOTSTRAPPED) && defined(QT_REDUCE_RELOCATIONS) && defined(__ELF__) && \
|     (!defined(__PIC__) || (defined(__PIE__) && defined(Q_CC_GNU) && Q_CC_GNU >= 500))
| #  error "You must build your code with position independent code if Qt was built with -reduce-relocations. "\
|          "Compile your code with -fPIC (-fPIE is not enough)."
| #endif

As we now build with gcc 5.2, "Q_CC_GNU >= 500" is true, so it does
insist to be built with -fpic/-fPIC, but it seems it rather
objects to being built with -fPIE.

This seems to coincide with this upstream commit:

 http://code.qt.io/cgit/qt/qtbase.git/commit/?id=3eca75d

(either its description or the code change is wrong).

The attached debdiff massages the packages to build again, but
admittedly this feels like a gross hack in Qt.

Thanks,

Martin

-- 
Martin Pitt                        | http://www.piware.de
Ubuntu Developer (www.ubuntu.com)  | Debian Developer  (www.debian.org)
-------------- next part --------------
diff -Nru gnuplot5-5.0.1+dfsg1/debian/changelog gnuplot5-5.0.1+dfsg1/debian/changelog
--- gnuplot5-5.0.1+dfsg1/debian/changelog	2015-08-10 12:18:41.000000000 +0200
+++ gnuplot5-5.0.1+dfsg1/debian/changelog	2015-08-10 16:27:23.000000000 +0200
@@ -1,3 +1,14 @@
+gnuplot5 (5.0.1+dfsg1-2ubuntu1) wily; urgency=medium
+
+  * Add 13_no_pie.patch: Don't build with -fPIE, Qt barfs on that with
+    gcc >= 5. (http://code.qt.io/cgit/qt/qtbase.git/commit/?id=3eca75d)
+    (Closes: #795076)
+  * debian/rules: Also drop "pie" from hardening flags. Instead, build with
+    -fPIC; it's conceptually wrong, but it's what the above Qt check insists
+    on.
+
+ -- Martin Pitt <martin.pitt at ubuntu.com>  Mon, 10 Aug 2015 16:06:00 +0200
+
 gnuplot5 (5.0.1+dfsg1-2build1) wily; urgency=medium
 
   * No-change rebuild against libwx*-0v5
diff -Nru gnuplot5-5.0.1+dfsg1/debian/patches/13_no_pie.patch gnuplot5-5.0.1+dfsg1/debian/patches/13_no_pie.patch
--- gnuplot5-5.0.1+dfsg1/debian/patches/13_no_pie.patch	1970-01-01 01:00:00.000000000 +0100
+++ gnuplot5-5.0.1+dfsg1/debian/patches/13_no_pie.patch	2015-08-10 16:05:58.000000000 +0200
@@ -0,0 +1,28 @@
+Description: Don't build with -fPIE, Qt barfs on that with gcc >= 5. (http://code.qt.io/cgit/qt/qtbase.git/commit/?id=3eca75d)
+Author: Martin Pitt <martin.pitt at ubuntu.com>
+Bug-Debian: https://bugs.debian.org/795076
+
+Index: gnuplot5-5.0.1+dfsg1/configure
+===================================================================
+--- gnuplot5-5.0.1+dfsg1.orig/configure
++++ gnuplot5-5.0.1+dfsg1/configure
+@@ -14238,7 +14238,6 @@ fi
+         RCC=${QT5LOC}/rcc
+         LRELEASE=${QT5LOC}/lrelease
+       fi
+-      CXXFLAGS="$CXXFLAGS -fPIE"
+     fi
+   fi
+ 
+Index: gnuplot5-5.0.1+dfsg1/configure.in
+===================================================================
+--- gnuplot5-5.0.1+dfsg1.orig/configure.in
++++ gnuplot5-5.0.1+dfsg1/configure.in
+@@ -1208,7 +1208,6 @@ if test "${enable_qt}" = yes ; then
+         RCC=${QT5LOC}/rcc
+         LRELEASE=${QT5LOC}/lrelease
+       fi
+-      CXXFLAGS="$CXXFLAGS -fPIE"
+     fi 
+   fi
+ 
diff -Nru gnuplot5-5.0.1+dfsg1/debian/patches/series gnuplot5-5.0.1+dfsg1/debian/patches/series
--- gnuplot5-5.0.1+dfsg1/debian/patches/series	2015-06-29 09:15:11.000000000 +0200
+++ gnuplot5-5.0.1+dfsg1/debian/patches/series	2015-08-10 16:04:45.000000000 +0200
@@ -6,3 +6,4 @@
 10_removepicins.patch
 11_fix_linkage_wx.patch
 12_info.patch
+13_no_pie.patch
diff -Nru gnuplot5-5.0.1+dfsg1/debian/rules gnuplot5-5.0.1+dfsg1/debian/rules
--- gnuplot5-5.0.1+dfsg1/debian/rules	2015-06-29 09:15:11.000000000 +0200
+++ gnuplot5-5.0.1+dfsg1/debian/rules	2015-08-10 16:26:55.000000000 +0200
@@ -3,7 +3,7 @@
 %:
 	dh $@ --parallel --with autoreconf
 
-export DEB_BUILD_MAINT_OPTIONS := hardening=+all
+export DEB_BUILD_MAINT_OPTIONS := hardening=+all,-pie
 export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
 
 # Tell compiler where should find lua headers
@@ -12,6 +12,9 @@
 # Force the use of qt5
 export QT_SELECT=qt5
 
+# Qt insists on using -fPIC
+export DEB_CXXFLAGS_MAINT_APPEND = -fPIC
+
 BUILDDIR_NOX = $(CURDIR)/debian/build-nox
 BUILDDIR_X11 = $(CURDIR)/debian/build-x11
 BUILDDIR_QT = $(CURDIR)/debian/build-qt
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.alioth.debian.org/pipermail/debian-science-maintainers/attachments/20150810/9874bcbb/attachment.sig>


More information about the debian-science-maintainers mailing list