W dniu 29.08.2012 18:39, Wookey pisze:

> If binutils is cross-built, using 
> DEB_BUILD_OPTIONS=nocheck dpkg-buildpackage -aarmhf -uc -us 
> 
> This results in install failing because 'install' is run with 
> --strip-program="arm-linux-gnueabihf-strip  --remove-section=.comment 
> --remove-section=.note"
> which of course results in 'file not found', because --strip-program is 
> expecting an
> actual binary name.

> This works on the native build because 
> install_binary = install -m 755 -s 
> i.e. does not include the --strip-program setting.
> 
> There is no --strip-options setting in install so far as I can see, so if 
> this behvaiour
> is important then I think it can only be done with a wrapper script.

Attached patch fixes strip problem and also changes debian/control
handling to make sure that proper file is generated for cross builds.
diff -Naur /usr/src/binutils/debian/rules debian/rules
--- /usr/src/binutils/debian/rules	2012-08-22 16:16:16.000000000 +0200
+++ debian/rules	2012-08-31 14:18:33.770224213 +0200
@@ -105,7 +105,8 @@
   CROSS := $(DEB_HOST_GNU_TYPE)-
   CC   = $(CROSS)gcc
   CXX  = $(CROSS)g++
-  STRIP= $(CROSS)strip --remove-section=.comment --remove-section=.note
+  STRIP= $(CURDIR)/debian/strip.cross
+  #$(CROSS)strip --remove-section=.comment --remove-section=.note
   install_binary = install -m 755 -s --strip-program="$(STRIP)"
 endif
 
@@ -311,9 +312,12 @@
 	-rm -rf debian/patched debian/tmp debian/files* debian/substvars
 	-rm -f debian/*.orig debian/*.rej
 	-rm -rf $(d_cross) debian/files debian/substvars 
-	-rm -rf builddir-$(TARGET) {configure,build,install}-cross-stamp
+	-rm -rf builddir-$(TARGET) {configure,build,install}-cross-stamp ontrol-stamp
+	-rm -rf debian/strip.cross
+	cp debian/control.in debian/control
 	for i in debian/*.in; do \
 	    case "$$i" in debian/control*.in) continue; esac; \
+	    case "$$i" in debian/strip.cross.in) continue; esac; \
 	    rm -f $${i%*.in}; \
 	done
 
@@ -321,7 +325,7 @@
 
 ################################################################################
 
-debian/control: debian/control.in $(if $(TARGET),debian/control.cross.in)
+control-stamp: debian/control.in $(if $(TARGET),debian/control.cross.in)
 ifneq (,$(TARGET))
 	sed "/^$$/ q" < debian/control.in > debian/control
 	sed -e "s/__TARGET__/$$(echo -n $(TARGET) | sed s/_/-/g)/" \
@@ -329,6 +333,12 @@
 else
 	cp debian/control.in debian/control
 endif
+ifneq (,$(CROSS))
+	sed -e "s/__TARGET__/$$(echo -n $(CROSS) | sed s/_/-/g)/" \
+                 < debian/strip.cross.in >> debian/strip.cross
+	chmod 755 debian/strip.cross
+endif
+	touch $@
 
 #######################
 # single-arch targets #
@@ -339,7 +349,7 @@
 	SINGLE_CONFARGS += --enable-ld=default --enable-gold
 endif
 
-configure-single-stamp: patch-stamp debian/control
+configure-single-stamp: patch-stamp control-stamp
 	$(checkdir)
 
 ifeq ($(with_check),yes)
@@ -919,7 +929,6 @@
 	dpkg --build $(d_cross) ..
 
 else
-	cp debian/control.in debian/control
 	: # generate some control & helper files
 	nver=$$(echo $(DEB_UPSTREAM) | awk -F. '{ OFS="."; $$NF=$$NF+1; print }'); \
 	for i in debian/*.in; do \
@@ -1191,7 +1200,7 @@
   CONFARGS += --enable-ld=default --enable-gold
 endif
 
-configure-cross-stamp: patch-stamp debian/control
+configure-cross-stamp: patch-stamp control-stamp
 	$(checkdir)
 	test "" != "$(TARGET)"
 	rm -rf configure-cross-stamp builddir-$(TARGET)
diff -Naur /usr/src/binutils/debian/strip.cross.in debian/strip.cross.in
--- /usr/src/binutils/debian/strip.cross.in	1970-01-01 01:00:00.000000000 +0100
+++ debian/strip.cross.in	2012-08-31 13:27:28.766166672 +0200
@@ -0,0 +1 @@
+__TARGET__strip --remove-section=.commend --remove-section=.note $*

Reply via email to