[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Likely fix for #483076



package: dpkg-cross
tags: 483076 + patch
quit

Fix for a build failure in the gtk+ udeb which cannot find the
libcairo-directfb headers because dpkg-cross shortens 

-I/usr/arm-linux-gnu/lib/libcairo-directfb/include/cairo
to:
-I/usr/arm-linux-gnu/include/cairo

$ grep "^prefix=" /usr/lib/pkgconfig/*.pc | grep -v "prefix=/usr$"
/usr/lib/pkgconfig/autoopts.pc:prefix="/usr"
/usr/lib/pkgconfig/cairo-directfb.pc:prefix=/usr/lib/libcairo-directfb

I've tested with both these specific cases and with one typical case.

Index: dpkg-cross
===================================================================
RCS file: /cvsroot/dpkg-cross/dpkg-cross/dpkg-cross,v
retrieving revision 1.50
diff -p -u -b -B -r1.50 dpkg-cross
--- dpkg-cross	26 Jun 2008 15:22:13 -0000	1.50
+++ dpkg-cross	10 Jul 2008 16:21:12 -0000
@@ -509,8 +509,9 @@ sub sub_build {
 			return 0;
 		}
 		while (<FROM>) {
-			if (/^prefix=/) {
-				print TO "prefix=$crossdir\n";
+			# fix for #483076
+			if ((m:^prefix="/usr(.*)"$:) or (m:^prefix=/usr(.*)$:)) {
+				print TO "prefix=${crossdir}${1}\n";
 			} elsif (/^exec_prefix=/) {
 				print TO "exec_prefix=\${prefix}\n";
 			} elsif (/^libdir=/) {

The resulting .pc file for cairo-direct-fb would be:

prefix=/usr/arm-linux-gnu/lib/libcairo-directfb
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: cairo-directfb
Description: Multi-platform 2D graphics library
Version: 1.6.4

Requires.private: freetype2 >= 9.7.3 fontconfig directfb libpng12
pixman-1 >= 0.10.0 
Libs: -L${libdir} -lcairo -Wl,-rpath,${libdir}
Libs.private: -lz -lz -lm
Cflags: -I${includedir}/cairo

The autogen pkg-config data would be:
# pkg-config information for AutoOpts 31.1.6
#
prefix=/usr/arm-linux-gnu
datarootdir="/usr/share"
datadir="/usr/share"
package="autogen"
includedir="/usr/include"
exec_prefix=${prefix}
bindir="/usr/bin"
libdir=${exec_prefix}/lib
ldopts="-Wl,-R"
exeext=""
version="31:1:6"
dotver="31.1.6"
pkgdatadir="/usr/share/autogen"
autogen="/usr/bin/autogen"
libs="-L/usr/lib -lopts"
libsrc="/usr/share/autogen/libopts-31.1.6.tar.gz"
static_libs="/usr/lib/libopts.a"

Name:           AutoOpts
Description:    A semi-automated generated/library option parser
URL:            http://www.gnu.org/software/autogen
Version:        31.1.6
Libs:           -Wl,-R/usr/lib -L/usr/lib -lopts
Cflags:         

A typical package is unaffected:

prefix=/usr/arm-linux-gnu
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
xmldir=/usr/share/xml/qof/qsf
gda_libs=-lgdasql-3.0
qof_sql_libs=

Name: QOF
Description: QOF Query Object Framework Library.
Version: 0.7.5
Requires: glib-2.0
Libs: -L${libdir} -lqof ${qof_sql_libs}
Libs.private: -lm ${gda_libs}
Cflags: -I${includedir}/qof

The modified cairo-directfb pc file gives:
$ PKG_CONFIG_PATH=/usr/arm-linux-gnu/lib/pkgconfig/ pkg-config
--cflags ./test.pc
-D_REENTRANT -I/usr/arm-linux-gnu/lib/libcairo-directfb/include/cairo
-I/usr/arm-linux-gnu/include/freetype2 -I/usr/arm-linux-gnu/include
-I/usr/arm-linux-gnu/include/directfb
-I/usr/arm-linux-gnu/include/libpng12
-I/usr/arm-linux-gnu/include/pixman-1  

Compared to (broken):
$ PKG_CONFIG_PATH=/usr/arm-linux-gnu/lib/pkgconfig/ pkg-config --cflags
cairo-directfb
-D_REENTRANT -I/usr/arm-linux-gnu/include/cairo
-I/usr/arm-linux-gnu/include/freetype2 -I/usr/arm-linux-gnu/include
-I/usr/arm-linux-gnu/include/directfb
-I/usr/arm-linux-gnu/include/libpng12
-I/usr/arm-linux-gnu/include/pixman-1  

and (native)
$ pkg-config --cflags cairo-directfb
-D_REENTRANT -I/usr/lib/libcairo-directfb/include/cairo
-I/usr/include/freetype2 -I/usr/include/directfb -I/usr/include/libpng12
-I/usr/include/pixman-1

-- 


Neil Williams
=============
http://www.data-freedom.org/
http://www.nosoftwarepatents.com/
http://www.linux.codehelp.co.uk/


Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: