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