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

Bug#709627: libffi: Patch to bootstrap without multilib or texinfo



Source: libffi
Version: 3.0.13-4
Severity: wishlist
Tags: patch

As the subject says: the attached patch provides an option to bootstrap libffi 
without the multilib builds.  And there's also a bit in there to allow 
skipping the use of the texinfo build dependency.

(Context: the aim of my pbuildd project is to bootstrap the Debian archive 
from source packages, starting from a minimal debootstrap chroot.  libffi comes 
into the process early because of:
debhelper Depends on man-db
man-db Depends on bsdmainutils
bsdmainutils Build-Depends on libncurses5-dev [and even though libncurses5 is 
part of that initial chroot, libncurses5-dev is not]
ncurses Build-Depends on pkg-config
pkg-config Build-Depends on libglib2.0-dev
glib2.0 Build-Depends on libffi-dev

Of course glib2.0 has more issues, so I don't even pretend to have a 
functional bootstrap this early.  But I can build a static version for the 
bootstrapped pkg-config to link against -- which still requires libffi.

And hopefully the chain above also explains why texinfo isn't available to be 
bootstrapped yet at this point.)
-- 
Daniel Schepler
diff -urN libffi-3.0.13.old/debian/rules libffi-3.0.13/debian/rules
--- libffi-3.0.13.old/debian/rules	2013-05-08 08:58:51.000000000 -0700
+++ libffi-3.0.13/debian/rules	2013-05-23 16:25:14.984021770 -0700
@@ -31,6 +31,13 @@
   with_check = yes
 endif
 
+ifeq ($(DEB_BUILD_PROFILE),stage1)
+
+bootstrap_dh_flags = -Nlib32ffi-dev -Nlib64ffi-dev -Nlibn32ffi-dev \
+	-Nlib32ffi$(major) -Nlib64ffi$(major) -Nlibn32ffi$(major)
+
+else
+
 ifneq (,$(filter $(DEB_HOST_ARCH), i386 mips mipsel powerpc s390 sparc))
   multiarch += biarch64
   m64 = -m64
@@ -49,6 +56,8 @@
   abi64 = -gnuabi64
 endif
 
+endif
+
 ifeq (,$(filter $(distrelease),lenny etch squeeze wheezy sid dapper hardy jaunty karmic lucid))
   biarch_map := i686=x86_64 powerpc=powerpc64 sparc=sparc64 s390=s390x \
                 x86_64=i686 powerpc64=powerpc mips=mips64 mipsel=mips64el
@@ -130,8 +139,13 @@
     $(if $(filter yes, $(with_check)), stamp-check $(foreach a, $(multiarch), stamp-check-$(a)))
 stamp-build: stamp-configure
 	dh_testdir
+ifeq ($(DEB_BUILD_PROFILE),stage1)
+	touch doc/libffi.info
+endif
 	$(MAKE) -C build
+ifneq ($(DEB_BUILD_PROFILE),stage1)
 	$(MAKE) -C build html
+endif
 	touch $@
 
 stamp-build-biarch32: stamp-configure-biarch32
@@ -197,14 +211,16 @@
 	dh_testdir
 	dh_testroot
 	dh_clean -k
-	dh_installdirs -s
+	dh_installdirs -s $(bootstrap_dh_flags)
 	$(MAKE) -C build DESTDIR=$(CURDIR)/debian/tmp install
 	mkdir -p debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)
 	-mv debian/tmp/usr/lib/* debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/.
 	cp -p build/.libs/libffi_convenience.a \
 		debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libffi_pic.a
 	mkdir -p debian/libffi-dev/usr/share/doc/$(p)
+ifneq ($(DEB_BUILD_PROFILE),stage1)
 	cp -a build/doc/libffi.html debian/libffi-dev/usr/share/doc/$(p)/html
+endif
 ifneq (,$(filter biarch32, $(multiarch)))
 	$(MAKE) -C build32 DESTDIR=$(CURDIR)/debian/tmp install
 	cp -p build32/.libs/libffi_convenience.a \
@@ -220,7 +236,7 @@
 	cp -p buildn32/.libs/libffi_convenience.a \
 		debian/tmp/usr/lib32/libffi_pic.a
 endif
-	dh_install -s --sourcedir=debian/tmp
+	dh_install -s --sourcedir=debian/tmp $(bootstrap_dh_flags)
 
 	mkdir -p debian/libffi-dev/usr/include/$(DEB_HOST_MULTIARCH)
 	mv debian/libffi-dev/usr/include/*.h \
@@ -250,8 +266,8 @@
 binary-arch: build install
 	dh_testdir
 	dh_testroot
-	dh_installchangelogs -s
-	dh_installdocs -s
+	dh_installchangelogs -s $(bootstrap_dh_flags)
+	dh_installdocs -s $(bootstrap_dh_flags)
 	dh_installinfo -plibffi-dev doc/libffi.info
 	rm -f debian/libffi-dev/usr/share/info/dir*
 	cp -p ChangeLog debian/libffi-dev/usr/share/doc/libffi$(major)/changelog
@@ -284,17 +300,17 @@
 	cat buildn32/check.log >> debian/libffi-dev/usr/share/doc/libffi$(major)/test_results_bi32n_$(DEB_HOST_MULTIARCH).txt
   endif
 endif
-	dh_strip -s --dbg-package=libffi$(major)-dbg
+	dh_strip -s --dbg-package=libffi$(major)-dbg $(bootstrap_dh_flags)
 	rm -f debian/libffi6-dbg/usr/lib/debug/usr/lib{,32,n32,64}/libffi.so.*
-	dh_compress -s
-	dh_fixperms -s
+	dh_compress -s $(bootstrap_dh_flags)
+	dh_fixperms -s $(bootstrap_dh_flags)
 	dh_makeshlibs -plibffi$(major) --add-udeb=libffi$(major)-udeb
-	dh_makeshlibs -s -Nlibffi$(major)
-	dh_installdeb -s
-	dh_shlibdeps -s
-	dh_gencontrol -s
-	dh_md5sums -s
-	dh_builddeb -s
+	dh_makeshlibs -s -Nlibffi$(major) $(bootstrap_dh_flags)
+	dh_installdeb -s $(bootstrap_dh_flags)
+	dh_shlibdeps -s $(bootstrap_dh_flags)
+	dh_gencontrol -s $(bootstrap_dh_flags)
+	dh_md5sums -s $(bootstrap_dh_flags)
+	dh_builddeb -s $(bootstrap_dh_flags)
 
 binary: binary-indep binary-arch
 .PHONY: build clean binary-indep binary-arch binary install 

Reply to: