On Fri, Feb 07, 2014 at 08:42:11PM +0100, Sven Joachim wrote:
> Yes, use <!profile.stage1> in anything you don't need for a stage1 build.
> See https://blog.mister-muffin.de/2014/02/06/botch-updates/ and
> deb-src-control(5).

I worked out a patch that uses the build profile specification. With the
software in sid (dpkg, apt, ...) this actually works. I renamed the
profile from "stage1" to "nobiarch", because it is actually possible to
bootstrap a multilib cross compiler (albeit non-trivial). On the other
hand it might also be useful to do native builds without multilib
packages.

As is, the patch is rejected by the archive due to #744246.

> It certainly won't be allowed in the archive before jessie is stable.
> Also apt, sbuild and pbuilder don't currently understand this syntax.

This is not so certain anymore. apt and sbuild do understand this
syntax. pbuilder has a patch. We are working with ftp masters to update
their copy of python-apt such that dak no longer rejects such uploads.

You have two options if you wish to go forward with this patch:

a) Wait for #744246 to be fixed and upload. In that case, please send

   block 737946 by 744246

   to the bug tracking system.

b) Remove the hunk changing Build-Depends and upload as is. Apart from
   warnings about unknown "Build-Profiles" fields, the package will
   continue to work on older systems and current dpkg is able to build
   the package with profiles enabled. All you loose is the ability to do

   apt-get build-dep -Pnobiarch ncurses

   or

   dpkg-checkbuilddeps -Pnobiarch

Note that this patch is actively being tested at
https://jenkins.debian.net/view/rebootstrap/.

Thanks for considering

Helmut
diff -Nru ncurses-5.9+20140118/debian/changelog 
ncurses-5.9+20140118/debian/changelog
--- ncurses-5.9+20140118/debian/changelog       2014-01-20 18:31:56.000000000 
+0100
+++ ncurses-5.9+20140118/debian/changelog       2014-04-26 06:34:12.000000000 
+0200
@@ -1,3 +1,10 @@
+ncurses (5.9+20140118-1.1) UNRELEASED; urgency=low
+
+  * Non-maintainer upload.
+  * Support the nobiarch build profile for avoiding multilib. (Closes: #737946)
+
+ -- Helmut Grohne <[email protected]>  Sat, 26 Apr 2014 06:33:24 +0200
+
 ncurses (5.9+20140118-1) unstable; urgency=low
 
   * New upstream patchlevel.
diff -Nru ncurses-5.9+20140118/debian/control 
ncurses-5.9+20140118/debian/control
--- ncurses-5.9+20140118/debian/control 2014-01-19 21:31:31.000000000 +0100
+++ ncurses-5.9+20140118/debian/control 2014-04-26 06:40:07.000000000 +0200
@@ -5,7 +5,7 @@
 Uploaders: Sven Joachim <[email protected]>
 Build-Depends: debhelper (>= 8.1.3),
                dpkg-dev (>= 1.15.7),
-               g++-multilib [amd64 i386 powerpc ppc64 s390 sparc],
+               g++-multilib [amd64 i386 powerpc ppc64 s390 sparc] 
<!profile.nobiarch>,
                libgpm-dev [linux-any],
                pkg-config,
 Standards-Version: 3.9.5
@@ -158,6 +158,7 @@
 Depends: lib64tinfo5 (= ${binary:Version}),
          ${shlibs:Depends}, ${misc:Depends}
 Replaces: amd64-libs (<= 1.2)
+Build-Profiles: !nobiarch
 Description: shared libraries for terminal handling (64-bit)
  The ncurses library routines are a terminal-independent method of
  updating character screens with reasonable optimization.
@@ -177,6 +178,7 @@
          libncurses5-dev (= ${binary:Version}), lib64c-dev, ${misc:Depends}
 Suggests: ncurses-doc
 Replaces: amd64-libs-dev (<= 1.2), lib64tinfo5-dev
+Build-Profiles: !nobiarch
 Description: developer's libraries for ncurses (64-bit)
  The ncurses library routines are a terminal-independent method of
  updating character screens with reasonable optimization.
@@ -193,6 +195,7 @@
 Depends: lib32tinfo5 (= ${binary:Version}),
          ${shlibs:Depends}, ${misc:Depends}
 Replaces: ia32-libs (<< 1.10)
+Build-Profiles: !nobiarch
 Description: shared libraries for terminal handling (32-bit)
  The ncurses library routines are a terminal-independent method of
  updating character screens with reasonable optimization.
@@ -211,6 +214,7 @@
          lib32tinfo-dev (= ${binary:Version}),
          libncurses5-dev (= ${binary:Version}), lib32c-dev, ${misc:Depends}
 Suggests: ncurses-doc
+Build-Profiles: !nobiarch
 Description: developer's libraries for ncurses (32-bit)
  The ncurses library routines are a terminal-independent method of
  updating character screens with reasonable optimization.
@@ -226,6 +230,7 @@
 Priority: optional
 Depends: lib32tinfo5 (= ${binary:Version}),
          ${shlibs:Depends}, ${misc:Depends}
+Build-Profiles: !nobiarch
 Description: shared libraries for terminal handling (wide character support) 
(32-bit)
  The ncurses library routines are a terminal-independent method of
  updating character screens with reasonable optimization.
@@ -244,6 +249,7 @@
          lib32tinfo-dev (= ${binary:Version}),
          libncursesw5-dev (= ${binary:Version}), lib32c-dev, ${misc:Depends}
 Suggests: ncurses-doc
+Build-Profiles: !nobiarch
 Description: developer's libraries for ncursesw (32-bit)
  The ncurses library routines are a terminal-independent method of
  updating character screens with reasonable optimization.
@@ -261,6 +267,7 @@
 Depends: ${shlibs:Depends}, ${misc:Depends}
 Replaces: lib64ncurses5 (<< 5.9-3)
 Breaks: lib64ncurses5 (<< 5.9-3)
+Build-Profiles: !nobiarch
 Description: shared low-level terminfo library for terminal handling (64-bit)
  The ncurses library routines are a terminal-independent method of
  updating character screens with reasonable optimization.
@@ -275,6 +282,7 @@
 Depends: ${shlibs:Depends}, ${misc:Depends}
 Replaces: lib32ncurses5 (<< 5.9-3)
 Breaks: lib32ncurses5 (<< 5.9-3)
+Build-Profiles: !nobiarch
 Description: shared low-level terminfo library for terminal handling (32-bit)
  The ncurses library routines are a terminal-independent method of
  updating character screens with reasonable optimization.
@@ -291,6 +299,7 @@
          lib32c-dev, ${misc:Depends}
 Replaces: lib32ncurses5-dev (<< 5.9-3), lib32tinfo5-dev
 Breaks: lib32ncurses5-dev (<< 5.9-3)
+Build-Profiles: !nobiarch
 Description: developer's library for the low-level terminfo library (32-bit)
  The ncurses library routines are a terminal-independent method of
  updating character screens with reasonable optimization.
diff -Nru ncurses-5.9+20140118/debian/rules ncurses-5.9+20140118/debian/rules
--- ncurses-5.9+20140118/debian/rules   2014-01-19 21:31:31.000000000 +0100
+++ ncurses-5.9+20140118/debian/rules   2014-04-26 06:39:32.000000000 +0200
@@ -97,6 +97,11 @@
 usr_lib32 = /usr/lib32
 endif
 
+ifneq (,$(filter nobiarch,$(DEB_BUILD_PROFILES)))
+override build_32=
+override build_64=
+endif
+
 ifneq ($(findstring linux,$(DEB_HOST_GNU_SYSTEM)),)
 with_gpm = --with-gpm
 endif

Reply via email to