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

Bug#948338: marked as done ([libapt-pkg-dev] apt-pkg headers pollute preprocessor namespace)



Your message dated Wed, 15 Jan 2020 22:34:36 +0000
with message-id <E1irrFE-000B9N-Tq@fasolo.debian.org>
and subject line Bug#948338: fixed in apt 1.9.6
has caused the Debian Bug report #948338,
regarding [libapt-pkg-dev] apt-pkg headers pollute preprocessor namespace
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
948338: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=948338
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
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()

which is likely to cause errors in any other header that uses the token
"_error", even for internal interfaces. Unfortunately preprocessor macro
are always global, so it is important to have some discipline and avoid
defining macros for tokens that are easily used in other headers.
Please, try to avoid this definition, namespace it (for example renaming
it to "apt_pkg_error") or ensure it is undefined at each exit from the
public-facing headers in apt-pkg.

In the specific case, this library conflicts with Boost.Flyweight from
Boost 1.71 (not yet the default Boost version in Debian, but going to
become). You can see this happening if you install libboost1.71-dev from
unstable together with libapt-pkg-dev and try to compile this little C++
program:

> $ make test
> g++     test.cpp   -o test
> In file included from test.cpp:1:
> /usr/include/boost/parameter/aux_/pack/make_arg_list.hpp:234:15: error: expected nested-name-specifier before ‘_GetErrorObj’
>   234 |         using _error = ::boost::mp11::mp_if<
>       |               ^~~~~~
> /usr/include/boost/parameter/aux_/pack/make_arg_list.hpp:288:13: error: call to non-‘constexpr’ function ‘GlobalError* _GetErrorObj()’
>   288 |           , _error
>       |             ^~~~~~
> In file included from /usr/include/boost/parameter/parameters.hpp:84,
>                  from /usr/include/boost/flyweight/detail/value_tag.hpp:17,
>                  from /usr/include/boost/flyweight/detail/default_value_policy.hpp:19,
>                  from /usr/include/boost/flyweight/flyweight.hpp:21,
>                  from /usr/include/boost/flyweight.hpp:16,
>                  from test.cpp:2:
> /usr/include/boost/parameter/aux_/pack/make_arg_list.hpp:290:9: error: type/value mismatch at argument 7 in template parameter list for ‘template<class List, class DeducedArgs, class TagFn, class IsPositional, class UsedArgs, class ArgumentPack, class Error, class EmitsErrors> struct boost::parameter::aux::make_arg_list_aux’
>   290 |         >::type type;
>       |         ^
> /usr/include/boost/parameter/aux_/pack/make_arg_list.hpp:290:9: note:   expected a type, got ‘_GetErrorObj()’
> make: *** [<incorporato>: test] Error 1

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 definition above is the only example I am aware of, but it might be
that there are others. Please, fix all of them, in the interest of
future compatibility.

Thanks, Giovanni.


--- System information. ---
Architecture: Kernel:       Linux 5.4.0-1-amd64

Debian Release: bullseye/sid
  500 xenial          updates.signal.org   500 unstable-debug
debug.mirrors.debian.org   500 unstable        deb.debian.org   500
testing         deb.debian.org   500 stable          repo.skype.com
500 stable          dl.google.com     1 experimental    deb.debian.org
--- Package information. ---
Depends          (Version) | Installed
==========================-+-===========
libapt-inst      (= 1.8.4) | libapt-pkg       (= 1.8.4) | zlib1g-dev
             |

Package's Recommends field is empty.

Package's Suggests field is empty.
-- 
Giovanni Mascellani <g.mascellani@gmail.com>
Postdoc researcher - Université Libre de Bruxelles

Attachment: signature.asc
Description: OpenPGP digital signature


--- End Message ---
--- Begin Message ---
Source: apt
Source-Version: 1.9.6

We believe that the bug you reported is fixed in the latest version of
apt, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 948338@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Julian Andres Klode <jak@debian.org> (supplier of updated apt package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@ftp-master.debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Wed, 15 Jan 2020 23:06:49 +0100
Source: apt
Architecture: source
Version: 1.9.6
Distribution: experimental
Urgency: medium
Maintainer: APT Development Team <deity@lists.debian.org>
Changed-By: Julian Andres Klode <jak@debian.org>
Closes: 948201 948338
Changes:
 apt (1.9.6) experimental; urgency=medium
 .
   [ Julian Andres Klode ]
   * gitlab-ci: Do not do coverage
   * gitlab-ci: Use ccache
   * satisfy: Fix segmentation fault when called with empty argument
   * Add support for GTest 1.9, do not fail silently if its missing
   * gtests: Fix netrc parser test regression from https-only changes
   * Macro cleanup:
     - Avoid #define _error, use anonymous C++ struct instead (Closes: #948338)
     - Rename _count() macro to APT_ARRAY_SIZE()
     - Remove various unused macros like MAX/MIN/ABS/APT_CONST
     - Only define likely/unlikely if APT_COMPILING_APT set
   * Performance: Avoid extra out-of-cache hash table deduplication for
     package names, this saved about 10-16% on gencaches in memory
   * acquire: Move queue startup after calling log's Start(), fixes abort()
     calls in python-apt
   * hashes: Use Libgcrypt for hashing purposes
     - Raise buffer size for Hashes::AddFD() from 4 KiB to 64 KiB
     - Convert users of {MD5,SHA1,SHA256,SHA512}Summation to use Hashes
     - Deprecate the Summation classes and mark them for removal
     - Remove includes of (md5|sha1|sha2).h headers
   * netrc: Add warning when ignoring entries for unencrypted protocols
   * apt(8): Disable regular expressions and fnmatch
 .
   [ David Kalnischkies ]
   * Drop g++ build-dependency to help crossbuilding (Closes: #948201)
 .
   [ Denis Mosolov ]
   * Fix typo in README.md
Checksums-Sha1:
 abe4ba5cef281ff8ff4cd04740c9308d1a0c03d5 2747 apt_1.9.6.dsc
 e758867f793605387a43b01e703a030106096463 2176544 apt_1.9.6.tar.xz
 9297f2cba74bd506f8f77420b9c555ea9fc57ba4 7243 apt_1.9.6_source.buildinfo
Checksums-Sha256:
 af876d802623d65b42dd9f0fd2a59b5b6a32fddc510f79a73a09f5f085d85e77 2747 apt_1.9.6.dsc
 e24ae4e1b3510d9a3117db28530ea0e87ce51498ba20671083d3d33f9a35411b 2176544 apt_1.9.6.tar.xz
 bb1f6acf3c038effa581df6a5fcbb99a9bd33a2a05bf37861cfe49e80a4950e5 7243 apt_1.9.6_source.buildinfo
Files:
 8f6893e2ac4bbc0101ae207854054c5d 2747 admin important apt_1.9.6.dsc
 d1ffe8ee1951c2d9e14dfc6a74a4fa98 2176544 admin important apt_1.9.6.tar.xz
 1d78104359c2569e267404b6e37d82c3 7243 admin important apt_1.9.6_source.buildinfo

-----BEGIN PGP SIGNATURE-----

iQJDBAEBCgAtFiEET7WIqEwt3nmnTHeHb6RY3R2wP3EFAl4fjZgPHGpha0BkZWJp
YW4ub3JnAAoJEG+kWN0dsD9xdIYP/05lFOCowOO2mM4QALOi+gVH3RsJ9iQ7nUiY
GMEa7HHbo3uY6hty9LO9ztYI/2NxwJyJEbP+56WHKRa7anrbbIcG78o9EAR9y4yt
+dFY1RbgHIbxOl0y9gkIxeShEYtlqvaGT+66a0T5g0GlqEkS8xavTDvfg6gNea6Z
GlO0xulohW12Ll2+6rgzLyUIsXbToDilPkEPIOeP4XCiGYeskec4lNMcsEFD6av9
xhQIZbId3Ztp4eS6wqv4Ckbv8xALdMWn19O3qRIN5vefoKzaY8vLhOp8YQSq2psl
n0YTuv5QJmkJp48O6MpC/M5KCM6A66ROTkXGH62mbw3UncMjSZ7i2UzEqLW2QMsN
w9Q0H/1Dd9aLoickYdiGCC9JQbyWxgo1Cuo87ODTZDrezCIfxcrr6fp+e6POHQGh
fpQKFJPRe0Qb2rJU+sQxEyj33g64cL9t3GB3GqbGU7ZR0qjt89ZtJUrr92Y5zlJE
+lmYEhzkBvshsRxUCudadDwuiaF+VjClZ+iebR75HM53T9UUsFT8s9zNpThw6uFs
UdJ2XP3D1xFQeyRp48YNOnKlBAoIaa3FWToZ02q2BCEzyzSWKWufNmuu0ZkbnyfA
ANI+XrWNCvvy5DiYRmwgdOuHgxJqOPoaqwiqiSwAqg0iOsio3uqIS4RzUMRDwaAk
XZBFGrYL
=gH5w
-----END PGP SIGNATURE-----

--- End Message ---

Reply to: