Message ID | 5648F6EC.9060207@panix.com |
---|---|
State | Superseded |
Headers |
Received: (qmail 116610 invoked by alias); 15 Nov 2015 21:19:46 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: <libc-alpha.sourceware.org> List-Unsubscribe: <mailto:libc-alpha-unsubscribe-##L=##H@sourceware.org> List-Subscribe: <mailto:libc-alpha-subscribe@sourceware.org> List-Archive: <http://sourceware.org/ml/libc-alpha/> List-Post: <mailto:libc-alpha@sourceware.org> List-Help: <mailto:libc-alpha-help@sourceware.org>, <http://sourceware.org/ml/#faqs> Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 116594 invoked by uid 89); 15 Nov 2015 21:19:45 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=BAYES_00, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-yk0-f175.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=to:cc:from:subject:message-id:date:user-agent:mime-version :content-type; bh=wevgJIZx1EsSPOqUrscRbOtRjhJdSxunHidqOt7s5iY=; b=bllZmDgximEgdC3zjl3Dgg7BJtL1buJyuMIIMh4aYHPPUhN5Po5XdYP7ZYdaANa/+U WArvm7LuRXSsk+Arsb66XM0NQqYLZDUtHOWpFVyTl37JB7EvVaMvGCdD6K/zcoxRbsfY nSPb0HEdRtbwt/Vh+vZ6zgaJOQijabiWqC7ecKTV8lYZ6dZsnF2ne9XVrQm3mVsdjbyH QGnWqvKtdFjK6E76yADtVVGduM1X/9+TUXp39Bpr4I9QivIpCqPjLyyohSlsNVA2r6nt fltZ4dzAdVB/M4OhpEQ9B9+Qw7c6uCa5+vv1ZFOcoh34KVokgtc1hB9zyW4Y0oq3PnmI EqXw== X-Received: by 10.13.249.4 with SMTP id j4mr31071360ywf.129.1447622381884; Sun, 15 Nov 2015 13:19:41 -0800 (PST) To: debian-qa@lists.debian.org Cc: GNU C Library <libc-alpha@sourceware.org> From: Zack Weinberg <zackw@panix.com> Subject: Archive rebuild to test potential stdlib.h / sys/types.h changes in glibc 2.23 X-Enigmail-Draft-Status: N1110 Message-ID: <5648F6EC.9060207@panix.com> Date: Sun, 15 Nov 2015 16:19:40 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Icedove/38.3.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------040407080205040606090207" |
Commit Message
Zack Weinberg
Nov. 15, 2015, 9:19 p.m. UTC
glibc upstream would like to fix a long-standing problem involving <stdlib.h> polluting the user namespace with macros named 'major' and 'minor'. This is not technically an ISO nor POSIX conformance violation since it only happens in extended compilation modes, but extensions are on by default (and worse, g++ unconditionally defines _GNU_SOURCE regardless of conformance mode - which is agreed to be a bug, but very difficult to fix due to libstdc++ headers needing some of those extensions) so it's likely to trip people up. For more detail see https://sourceware.org/bugzilla/show_bug.cgi?id=19239 and the libc-alpha discussion starting at https://sourceware.org/ml/libc-alpha/2015-11/msg00253.html . We have identified two potential changes which could fix this problem; unfortunately both of them have fairly high risk of breaking software which expects stdlib.h to include sys/types.h, sys/types.h to include sys/sysmacros.h, or both. (Neither of those is guaranteed by any standard, but I think we all know how little that means.) We would therefore like to ask for an archive-rebuild test using the modified glibc. This would involve updating the glibc packages to 2.23-dev first, and then applying one or both of the attached patches. (Ideally there would be four tests - 2.23-dev baseline, patch 1 only, patch 2 only, and both patches. But we realize that this is an expensive proposition.) How can we arrange for this to happen? Thanks, zw
Comments
On Mon, Nov 16, 2015 at 5:19 AM, Zack Weinberg wrote:
> How can we arrange for this to happen?
I'm not involved in the archive rebuilds stuff but the documentation
for it is here:
https://wiki.debian.org/qa.debian.org/ArchiveTesting
Zack Weinberg <zackw@panix.com> writes: > We have identified two potential changes which could fix this problem; > unfortunately both of them have fairly high risk of breaking software > which expects stdlib.h to include sys/types.h, sys/types.h to include > sys/sysmacros.h, or both. (Neither of those is guaranteed by any > standard, but I think we all know how little that means.) We would > therefore like to ask for an archive-rebuild test using the modified > glibc. I can rebuild any set of packages in my OBS project https://build.opensuse.org/project/show/home:Andreas_Schwab:glibc that I use for testing. Andreas.
Here are the first fallouts from the first patch: https://build.opensuse.org/package/live_build_log/home:Andreas_Schwab:glibc/gpm/rebuild/x86_64 prog/display-buttons.c:69:4: error: unknown type name 'fd_set' https://build.opensuse.org/package/live_build_log/home:Andreas_Schwab:glibc/sysvinit/rebuild/x86_64 /home/abuild/rpmbuild/BUILD/sysvinit-2.88+dsf/src/mountpoint.c:125: undefined reference to `minor' Andreas.
On Mon, Nov 16, 2015 at 9:37 AM, Andreas Schwab <schwab@suse.de> wrote: > Here are the first fallouts from the first patch: Which do you mean by "the first patch"? This ... > https://build.opensuse.org/package/live_build_log/home:Andreas_Schwab:glibc/gpm/rebuild/x86_64 > prog/display-buttons.c:69:4: error: unknown type name 'fd_set' ... should only be possible as a consequence of the patch numbered 0002-. > https://build.opensuse.org/package/live_build_log/home:Andreas_Schwab:glibc/sysvinit/rebuild/x86_64 > /home/abuild/rpmbuild/BUILD/sysvinit-2.88+dsf/src/mountpoint.c:125: undefined reference to `minor' Unfortunately, this code is going to break with either patch! It includes neither sys/types.h nor sys/sysmacros.h and it expects the sys/sysmacros.h definition of 'major' and 'minor'. (Neither of these programs appears to have been written with C library portability in mind, which is understandable considering they're both quite Linux-specific in other ways.) zw
On Sun, Nov 15, 2015 at 9:26 PM, Paul Wise <pabs@debian.org> wrote: > > I'm not involved in the archive rebuilds stuff but the documentation > for it is here: > > https://wiki.debian.org/qa.debian.org/ArchiveTesting Thanks, but unfortunately it doesn't help me much, because I'm not a DD, and because it doesn't explain how to do "custom rebuilds" (i.e. with the patched glibc). zw
Zack Weinberg <zackw@panix.com> writes: > On Mon, Nov 16, 2015 at 9:37 AM, Andreas Schwab <schwab@suse.de> wrote: >> Here are the first fallouts from the first patch: > > Which do you mean by "the first patch"? This ... > >> https://build.opensuse.org/package/live_build_log/home:Andreas_Schwab:glibc/gpm/rebuild/x86_64 >> prog/display-buttons.c:69:4: error: unknown type name 'fd_set' > > ... should only be possible as a consequence of the patch numbered 0002-. Which is the first patch. Here are more: https://build.opensuse.org/package/live_build_log/home:Andreas_Schwab:glibc/systemd-mini/rebuild/x86_64 ./src/basic/strbuf.h:52:1: error: unknown type name 'ssize_t' https://build.opensuse.org/package/live_build_log/home:Andreas_Schwab:glibc/libhugetlbfs/rebuild/x86_64 hugetests.h:50:1: error: unknown type name 'ino_t' https://build.opensuse.org/package/live_build_log/home:Andreas_Schwab:glibc/dosfstools/rebuild/x86_64 src/fsck.fat.h:138:5: error: unknown type name 'loff_t' Andreas.
On Mon, Nov 16, 2015 at 10:34 AM, Andreas Schwab <schwab@suse.de> wrote: > Zack Weinberg <zackw@panix.com> writes: >> >> ... should only be possible as a consequence of the patch numbered 0002-. > > Which is the first patch. It's not terribly important, but what ordering are you using to define it as the "first patch"? > ./src/basic/strbuf.h:52:1: error: unknown type name 'ssize_t' > hugetests.h:50:1: error: unknown type name 'ino_t' > src/fsck.fat.h:138:5: error: unknown type name 'loff_t' It's starting to sound like lots of programs assume stdlib.h pulls in sys/types.h... zw
Zack Weinberg <zackw@panix.com> writes: > It's not terribly important, but what ordering are you using to define > it as the "first patch"? The order you sent the patches. Andreas.
[PATCH 1/2] Don't include sys/sysmacros.h from sys/types.h. BZ #19239 * posix/sys/types.h [__USE_MISC]: Don't include sys/sysmacros.h. --- posix/sys/types.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/posix/sys/types.h b/posix/sys/types.h index bf30873..8fa8b08 100644 --- a/posix/sys/types.h +++ b/posix/sys/types.h @@ -217,9 +217,6 @@ typedef int register_t __attribute__ ((__mode__ (__word__))); /* It also defines `fd_set' and the FD_* macros for `select'. */ # include <sys/select.h> - -/* BSD defines these symbols, so we follow. */ -# include <sys/sysmacros.h> #endif /* Use misc. */ -- 2.6.2