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

Bug#948338: [libapt-pkg-dev] apt-pkg headers pollute preprocessor namespace



Control: tag -1 - wontfix

On Tue, Jan 07, 2020 at 03:56:08PM +0100, Julian Andres Klode wrote:
> Control: clone -1 -2
> Control: reassign -2 aptitude
> Control: tag -1 wontfix
> 
> On Tue, Jan 07, 2020 at 03:16:18PM +0100, Giovanni Mascellani wrote:
> > Package: libapt-pkg-dev
> > Version: 1.8.4
> > Severity: normal
> > 
> > Hi,
> > 
> > apt-pkg headers pollute the preprocessor namespace, causing breakage in
> > unrelated libraries; for example, /usr/include/apt-pkg/error.h contains
> > the following line:
> > 
> > #define _error _GetErrorObj()
> 
> There's nothing we can do about that, sorry. _error is a vital part of
> the API.

I spoke too soon, we can turn the define into

static struct {
	inline GlobalError* operator ->() { return _GetErrorObj(); }
} _error APT_UNUSED;

I guess. Adding this to the next 1.9 upload for experimental.

I mean, we could also make _error a GlobalError directly and add
the operator->() to that with the next ABI break. OK, I guess we'd
make it an GlobalError:instance then and add a using
_error = GlobalError:instance or something to avoid using
_error as a symbol name.

> 
> > This will cause aptitude to FTBFS as soon as boost1.71 is made the
> > default Boost version, so please fix this as soon as possible.
> 
> This is going to need a change in aptitude then.

Assuming this works well, the fixed version will hit unstable around
March. Obviously aptitude can still fix it themselves, by including
the apt headers last.

-- 
debian developer - deb.li/jak | jak-linux.org - free software dev
ubuntu core developer                              i speak de, en

Attachment: signature.asc
Description: PGP signature


Reply to: