Package: libmimedir Version: 0.4-4 Severity: normal Tags: patch User: [EMAIL PROTECTED] Usertags: crossbuilt
In line with the other cross-building support bugs: http://lists.debian.org/debian-devel/2007/11/msg00116.html These patches are necessary to allow libmimedir to cross-build in Debian. The effect is to replace AC_PROG_RANLIB with AC_PROG_LIBTOOL in configure.in and ensure that --tag=CC is called as part of the libtool support. These changes are made to upstream files so I've implemented the patches using dpatch. Feel free to use whatever method you choose - as long as configure.in uses AC_PROG_LIBTOOL and Makefile.in uses ./libtool --tag=CC --mode=.... when cross compiling (the current ./libtool script gets confused when --mode is arm-linux-gnu-gcc instead of the native gcc). Other changes in debian/rules and debian/control flow from the upstream changes - using libtoolize to update libtool (supported by the change to configure.in) and autoconf to transfer the changes in configure.in into ./configure itself. (aclocal required by libtoolize). Finally, debian/rules is also updated to support --build and --host following the recommendations in the autotools-dev README. FYI the original failure is that libmimedir uses gcc even when cross compiling so that the built package contains binaries for the wrong architecture. Fixing that results in the original ./libtool failing due to the lack of the --tag=CC option. Fixing that reveals an error in ./libtool itself that tries to link the cross-built binaries using the native ld because the outdated libtool script is not updated in response to the --build and --host options given to ./configure. Fixing that means generating libtool in ./configure which is where 'libtoolize --force --copy' comes in. (--copy is used because the ltmain.sh script from upstream needs to be updated too and the default action of replacing it with a symlink causes dpkg to complain). Finally, in order to get libtoolize support into ./configure, configure.in needs the patch and autoconf needs to transfer the modified configure.in macros into ./configure. -- System Information: Debian Release: lenny/sid APT prefers unstable APT policy: (500, 'unstable') Architecture: amd64 (x86_64) Kernel: Linux 2.6.22-2-amd64 (SMP w/1 CPU core) Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash
--- libmimedir-0.4.debian/debian/control +++ libmimedir-0.4.emdebian/debian/control @@ -2,7 +2,8 @@ Section: libs Priority: optional Maintainer: Volker Christian <[EMAIL PROTECTED]> -Build-Depends: debhelper (>> 4.0.0), bison, flex +Build-Depends: debhelper (>> 4.0.0), bison, flex, dpatch + libtool, autoconf Standards-Version: 3.6.2 Package: libmimedir0
--- libmimedir-0.4.debian/debian/rules
+++ libmimedir-0.4.emdebian/debian/rules
@@ -5,12 +5,18 @@
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
+include /usr/share/dpatch/dpatch.make
# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
-
+ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
+CROSS= --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE)
+CROSS_CC=CC=$(DEB_HOST_GNU_TYPE)-gcc
+else
+CROSS= --build $(DEB_BUILD_GNU_TYPE)
+endif
CFLAGS = -Wall -g
@@ -24,24 +30,26 @@
config.status: configure
dh_testdir
# Add here commands to configure the package.
- chmod 755 ./libtool
+ libtoolize --force --copy
+ aclocal
+ autoconf
chmod 755 ./install-sh
- ./configure --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info
+ ./configure $(CROSS) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info
build: build-stamp
-build-stamp: config.status
+build-stamp: patch-stamp config.status
dh_testdir
# Add here commands to compile the package.
- $(MAKE)
+ $(MAKE) $(CROSS_CC)
touch build-stamp
-clean:
+clean: unpatch
dh_testdir
dh_testroot
- rm -f build-stamp
+ rm -f build-stamp config.sub config.guess
# Add here commands to clean up after the build process.
-$(MAKE) distclean
010-libtool-tag 020-libtool-configure
#! /bin/sh /usr/share/dpatch/dpatch-run ## 010_libtool-tag.dpatch by Neil Williams <[EMAIL PROTECTED]> ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: Adds --tag=CC to libtool invocation for crossbuilding @DPATCH@ --- libmimedir-0.4/Makefile.in 2008-02-10 21:59:52.000000000 +0000 +++ libmimedir.old/Makefile.in 2008-02-10 21:58:48.000000000 +0000 @@ -18,7 +18,7 @@ MKDIR= mkdir LN= ln LIBS= -L. -lmimedir -LIBTOOL= ./libtool +LIBTOOL= ./libtool --tag=CC OBJS= dirlex.o dirsynt.o parse.o get.o dup.o free.o memmem.o add.o count.o del.o SOBJS= dirlex.lo dirsynt.lo parse.lo get.lo dup.lo free.lo memmem.lo add.lo count.lo del.lo
#! /bin/sh /usr/share/dpatch/dpatch-run ## 020_libtool-configure.dpatch by Neil Williams <[EMAIL PROTECTED]> ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: Adds AC_PROG_LIBTOOL to configure.in for crossbuilding @DPATCH@ --- libmimedir-0.4/configure.in 2008-02-10 22:25:01.000000000 +0000 +++ libmimedir.old/configure.in 2008-02-10 22:24:39.000000000 +0000 @@ -8,7 +8,7 @@ AC_PROG_MAKE_SET AC_PROG_YACC AC_PROG_LEX -AC_PROG_RANLIB +AC_PROG_LIBTOOL dnl Checks for programs.
signature.asc
Description: Digital signature

