[libmediaart] Add patches to avoid unnecessary linkage

Yanko Kaneti yaneti at fedoraproject.org
Mon Feb 10 13:44:23 UTC 2014


commit aa3998c7725452b2700f1f7e031d442a2bf58b43
Author: Yanko Kaneti <yaneti at declera.com>
Date:   Mon Feb 10 15:44:49 2014 +0200

    Add patches to avoid unnecessary linkage

 ...on-t-link-to-both-Qt-and-gdk-pixbuf-if-bo.patch |   59 ++++++++++++++++++++
 ...ld-Remove-leftover-explicit-lm-lz-linkage.patch |   39 +++++++++++++
 ...e-automake-C-linkage-when-building-C-only.patch |   41 ++++++++++++++
 libmediaart.spec                                   |   24 +++++++-
 4 files changed, 159 insertions(+), 4 deletions(-)
---
diff --git a/0001-configure-Don-t-link-to-both-Qt-and-gdk-pixbuf-if-bo.patch b/0001-configure-Don-t-link-to-both-Qt-and-gdk-pixbuf-if-bo.patch
new file mode 100644
index 0000000..7d5b5cf
--- /dev/null
+++ b/0001-configure-Don-t-link-to-both-Qt-and-gdk-pixbuf-if-bo.patch
@@ -0,0 +1,59 @@
+From 53381ada025b8fd0eabf1630cb00162496492e74 Mon Sep 17 00:00:00 2001
+From: Yanko Kaneti <yaneti at declera.com>
+Date: Fri, 7 Feb 2014 22:27:14 +0200
+Subject: [PATCH 1/3] configure: Don't link to both Qt and gdk-pixbuf if both
+ are autodetected
+
+---
+ configure.ac | 14 ++++++++------
+ 1 file changed, 8 insertions(+), 6 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 4d589a1..ddba936 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -228,8 +228,8 @@ if test "x$enable_qt" != "xno" && test "x$enable_gdkpixbuf" != "xyes"; then
+                      [have_qt4=no])
+ 
+    if test "x$have_qt5" = "xyes"; then
+-      LIBMEDIAART_CFLAGS="$LIBMEDIAART_CFLAGS $QT5_CFLAGS -fPIC"
+-      LIBMEDIAART_LIBS="$LIBMEDIAART_LIBS $QT5_LIBS"
++      BACKEND_CFLAGS="$QT5_CFLAGS -fPIC"
++      BACKEND_LIBS="$QT5_LIBS"
+ 
+       AC_DEFINE(HAVE_QT5, [], [Define if we have Qt5])
+       AC_DEFINE(HAVE_QT, [], [Define if we have Qt])
+@@ -238,8 +238,8 @@ if test "x$enable_qt" != "xno" && test "x$enable_gdkpixbuf" != "xyes"; then
+       selected_for_media_art="yes (qt5)"
+    else
+       if test "x$have_qt4" = "xyes"; then
+-         LIBMEDIAART_CFLAGS="$LIBMEDIAART_CFLAGS $QT4_CFLAGS -fPIC"
+-         LIBMEDIAART_LIBS="$LIBMEDIAART_LIBS $QT4_LIBS"
++         BACKEND_CFLAGS="$QT4_CFLAGS -fPIC"
++         BACKEND_LIBS="$QT4_LIBS"
+ 
+          AC_DEFINE(HAVE_QT4, [], [Define if we have Qt4])
+          AC_DEFINE(HAVE_QT, [], [Define if we have Qt])
+@@ -270,8 +270,8 @@ if test "x$enable_gdkpixbuf" != "xno" && test "x$enable_qt" != "xyes"; then
+                      [have_gdkpixbuf=yes],
+                      [have_gdkpixbuf=no])
+ 
+-   LIBMEDIAART_CFLAGS="$LIBMEDIAART_CFLAGS $GDKPIXBUF_CFLAGS"
+-   LIBMEDIAART_LIBS="$LIBMEDIAART_LIBS $GDKPIXBUF_LIBS"
++   BACKEND_CFLAGS="$GDKPIXBUF_CFLAGS"
++   BACKEND_LIBS="$GDKPIXBUF_LIBS"
+ 
+    if test "x$have_gdkpixbuf" = "xyes"; then
+       AC_DEFINE(HAVE_GDKPIXBUF, [], [Define if we have GdkPixbuf])
+@@ -290,6 +290,8 @@ fi
+ 
+ AM_CONDITIONAL(HAVE_GDKPIXBUF, test "x$have_gdkpixbuf" = "xyes")
+ 
++LIBMEDIAART_CFLAGS="$LIBMEDIAART_CFLAGS $BACKEND_CFLAGS"
++LIBMEDIAART_LIBS="$LIBMEDIAART_LIBS $BACKEND_LIBS"
+ AC_SUBST(LIBMEDIAART_BACKEND)
+ 
+ #################################################################
+-- 
+1.8.5.3
+
diff --git a/0002-build-Remove-leftover-explicit-lm-lz-linkage.patch b/0002-build-Remove-leftover-explicit-lm-lz-linkage.patch
new file mode 100644
index 0000000..d752448
--- /dev/null
+++ b/0002-build-Remove-leftover-explicit-lm-lz-linkage.patch
@@ -0,0 +1,39 @@
+From 4f07de740e3d2ec3a4b6c063c48b21b405aff207 Mon Sep 17 00:00:00 2001
+From: Yanko Kaneti <yaneti at declera.com>
+Date: Mon, 10 Feb 2014 11:45:15 +0200
+Subject: [PATCH 2/3] build: Remove leftover explicit -lm -lz linkage
+
+https://bugzilla.gnome.org/show_bug.cgi?id=723877
+---
+ configure.ac            | 2 --
+ libmediaart/Makefile.am | 1 -
+ 2 files changed, 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index ddba936..792cfd3 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -151,8 +151,6 @@ PKG_CHECK_MODULES(LIBMEDIAART, [$LIBMEDIAART_REQUIRED])
+ GLIB_GENMARSHAL=`$PKG_CONFIG glib-2.0 --variable=glib_genmarshal`
+ AC_SUBST(GLIB_GENMARSHAL)
+ 
+-LIBMEDIAART_LIBS="$LIBMEDIAART_LIBS -lz -lm"
+-
+ ####################################################################
+ # General CFLAGS/LIBS
+ ####################################################################
+diff --git a/libmediaart/Makefile.am b/libmediaart/Makefile.am
+index 6d370f2..a7879e3 100644
+--- a/libmediaart/Makefile.am
++++ b/libmediaart/Makefile.am
+@@ -46,7 +46,6 @@ libmediaart_ at LIBMEDIAART_API_VERSION@_la_LDFLAGS = \
+ 	-version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
+ 
+ libmediaart_ at LIBMEDIAART_API_VERSION@_la_LIBADD = \
+-	-lm \
+ 	$(BUILD_LIBS) \
+ 	$(LIBMEDIAART_LIBS)
+ 
+-- 
+1.8.5.3
+
diff --git a/0003-build-Force-automake-C-linkage-when-building-C-only.patch b/0003-build-Force-automake-C-linkage-when-building-C-only.patch
new file mode 100644
index 0000000..440572b
--- /dev/null
+++ b/0003-build-Force-automake-C-linkage-when-building-C-only.patch
@@ -0,0 +1,41 @@
+From 4ae83f6699474f590927d2c4770806779703d75d Mon Sep 17 00:00:00 2001
+From: Yanko Kaneti <yaneti at declera.com>
+Date: Mon, 10 Feb 2014 11:49:22 +0200
+Subject: [PATCH 3/3] build: Force automake C linkage when building C only
+
+Automake chooses the linker to use by examining the _SOURCES.
+Unfortunately this includes all potential sources, even the ones excluded by
+CONDITIONALS, so it picks CXXLINK because of extractqt.cpp.
+
+Linking the library with CXXLINK brings with it a soname linkage with
+libstdc++.
+override _LINK for the library target to force automake
+to use the specific linker, C(LINK) or C++(CXXLINK)
+
+https://bugzilla.gnome.org/show_bug.cgi?id=723877
+---
+ libmediaart/Makefile.am | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/libmediaart/Makefile.am b/libmediaart/Makefile.am
+index a7879e3..8403d23 100644
+--- a/libmediaart/Makefile.am
++++ b/libmediaart/Makefile.am
+@@ -34,11 +34,14 @@ libmediaart_ at LIBMEDIAART_API_VERSION@_la_SOURCES = \
+ 
+ if HAVE_GDKPIXBUF
+ libmediaart_ at LIBMEDIAART_API_VERSION@_la_SOURCES += extractpixbuf.c
++libmediaart_ at LIBMEDIAART_API_VERSION@_la_LINK = $(LINK) $(libmediaart_ at LIBMEDIAART_API_VERSION@_la_LDFLAGS)
+ else
+ if HAVE_QT
+ libmediaart_ at LIBMEDIAART_API_VERSION@_la_SOURCES += extractqt.cpp
++libmediaart_ at LIBMEDIAART_API_VERSION@_la_LINK = $(CXXLINK) $(libmediaart_ at LIBMEDIAART_API_VERSION@_la_LDFLAGS)
+ else
+ libmediaart_ at LIBMEDIAART_API_VERSION@_la_SOURCES += extractdummy.c
++libmediaart_ at LIBMEDIAART_API_VERSION@_la_LINK = $(LINK) $(libmediaart_ at LIBMEDIAART_API_VERSION@_la_LDFLAGS)
+ endif
+ endif
+ 
+-- 
+1.8.5.3
+
diff --git a/libmediaart.spec b/libmediaart.spec
index b1a3140..3ea8d4f 100644
--- a/libmediaart.spec
+++ b/libmediaart.spec
@@ -1,15 +1,24 @@
 Name:           libmediaart
 Version:        0.2.0
-Release:        3%{?dist}
+Release:        4%{?dist}
 Summary:        Library for managing media art caches
 
 License:        LGPLv2+
 URL:            https://github.com/curlybeast/libmediaart
 Source0:        https://download.gnome.org/sources/%{name}/0.2/%{name}-%{version}.tar.xz
 
+# upstreamd patches to avoid unncesarry linkage
+# https://bugzilla.gnome.org/show_bug.cgi?id=723877
+Patch1:         0001-configure-Don-t-link-to-both-Qt-and-gdk-pixbuf-if-bo.patch
+Patch2:         0002-build-Remove-leftover-explicit-lm-lz-linkage.patch
+Patch3:         0003-build-Force-automake-C-linkage-when-building-C-only.patch
+
 BuildRequires:  pkgconfig(glib-2.0) pkgconfig(gio-2.0) pkgconfig(gio-unix-2.0)
 BuildRequires:  pkgconfig(gdk-pixbuf-2.0)
 BuildRequires:  vala-tools vala-devel
+#for the autoreconf
+BuildRequires:  automake autoconf libtool
+
 
 %description
 Library tasked with managing, extracting and handling media art caches.
@@ -26,18 +35,22 @@ developing applications that use %{name}.
 
 %prep
 %setup -q
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+autoreconf -fi
 
 
 %build
 %configure --disable-static \
-	--enable-gdkpixbuf \
-	--disable-qt
+  --enable-gdkpixbuf \
+  --disable-qt
 make %{?_smp_mflags}
 
 
 %install
 %make_install
-find $RPM_BUILD_ROOT -name '*.la' -delete
+find $RPM_BUILD_ROOT -name '*.la' -delete -print
 
 #check
 # requires X
@@ -63,6 +76,9 @@ find $RPM_BUILD_ROOT -name '*.la' -delete
 
 
 %changelog
+* Sat Feb  8 2014 Yanko Kaneti <yaneti at declera.com> - 0.2.0-4
+- Add patches to avoid unnecessary linkage
+
 * Sat Feb  8 2014 Yanko Kaneti <yaneti at declera.com> - 0.2.0-3
 - Incorporate most changes suggested in the review (#1062686)
 


More information about the scm-commits mailing list