Subject: Re: Bug#620795: emacs23: Makefile generation with cpp mangles multiarch include paths (impending FTBFS)
From: Rob Browning <[email-masked]>
To: [email-masked]
Cc: [email-masked], Steve Langasek <[email-masked]>, [email-masked]
Date: Wed, 13 Apr 2011 22:56:03 -0500
List-Id: <debbugs-submit.debbugs.gnu.org>

(If possible, please preserve the 620795-forwarded address in any replies.)

Debian is likely to migrate to multiarch, and it appears that the
transition will probably break the Emacs build process.

The problem is that Emacs uses cpp to process the Makefiles, and with
multiarch, include paths will include strings like "i386" that cpp will
replace with nonsensical values. i.e.

  -I/usr/lib/i386-linux-gnu/glib-2.0 -> -I/usr/lib/1-linux-gnu/glib-2.0

Steve Langasek <[email-masked]> writes:

> Having begun to convert libraries over to multiarch in Ubuntu, we've found
> emacs23 among the packages which fails to build.  This is because the
> two-stage, autoconf+cpp generation of src/Makefile and lib-src/Makefile
> results in strings like "-I/usr/lib/i386-linux-gnu/glib-2.0" being seen as
> input to cpp... which has "i386" as a macro defined to "1".  So unless these
> macros are undefined, the path that winds up in the Makefile is broken and
> results in a build failure.
>
> The attached patch partially addresses this by undefining any macros that
> happen to exist for the <cpu> portion of the architecture triplet.  Only
> architectures for which Ubuntu currently builds are handled here, however;
> for Debian either a more comprehensive list or a generic fix is needed. 
> It's possible that passing -fdirectives-only to cpp would solve this, but I
> haven't tested.

Please see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=620795 for
additional information.

Thanks
-- 
Rob Browning
rlb @defaultvalue.org and @debian.org
GPG as of 2002-11-03 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4