Re: libc6 posix version/breakage
Michael Stone wrote: I don't know that there's a full list of *packages* that might be affected. Start with config.guess files from ~2001. Also ltmain.sh from the same time period. [EMAIL PROTECTED]:~package~/grepunposix `locate config.guess` |wc -l 12 [EMAIL PROTECTED]:~package~/grepunposix `locate ltmain.sh` |wc -l 8 Add in fair percentage of maintainer scripts. (Including libc6.postinst.) [EMAIL PROTECTED]:~package~/grepunposix /var/lib/dpkg/info/*.p*|wc -l 5 And take it from there. Maybe one per 5 packages or so in my grepping this morning. -- see shy jo pgp0.pgp Description: PGP signature
Re: libc6 posix version/breakage
This simpler workaround will give you some time to fix the rest of Debian. Debian developers like yourself should set _POSIX2_VERSION=200112 in their environments, and let the bugs get found and squashed. Perhaps someone (Paul?) could write a summary of deprecated features (e.g. tail -1) which we could post to devel-devel-announce. I think many people are not aware of the whole situation at all. -- Martin Michlmayr [EMAIL PROTECTED] -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: libc6 posix version/breakage
GOTO Masanori [EMAIL PROTECTED] writes: At Mon, 11 Aug 2003 10:15:22 -0700, Zack Weinberg wrote: Portable shell scripts CANNOT use these POSIX.2001-mandated command line syntaxes; there are still operating systems in wide use that do not implement them. Thus, for instance, config.sub/config.guess will continue to use the old syntax for the foreseeable future, as will gcc's Makefiles. POSIX.2001's removal of the obsolete syntaxes is brain damaged and coreutils MUST NOT follow suit. I would encourage y'all to address this, not by backing down glibc's _POSIX2_VERSION number, but by patching coreutils to support the old syntaxes again - unconditionally and without warnings. And then beat the upstream maintainers of coreutils upside the head until they take said patch. Do the same for any other shell utility that has been infected with this brain damage. Seconded. Keeping old behavior is good rathan than dropping down _POSIX2_VERSION value. Some program want to know API compatibility using _POSIX2_VERSION. Dropping chmod user.grp behavior makes us advocate users to use new behavior. BTW, I think it's good idea to transit newer behavior of standard utilities during debian sid. I am not sure I understand what you are saying in the second paragraph. But, as an upstream author trying my damndest to write portable shell scripts, I would ask that the old command line syntaxes of these tools be preserved - accept, don't complain - for at least another five years. Ten would be better. One hopes that that is longer than two Debian releases ;-) zw -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: libc6 posix version/breakage
Portable shell scripts CANNOT use these POSIX.2001-mandated command line syntaxes; there are still operating systems in wide use that do not implement them. Thus, for instance, config.sub/config.guess will continue to use the old syntax for the foreseeable future, as will gcc's Makefiles. POSIX.2001's removal of the obsolete syntaxes is brain damaged and coreutils MUST NOT follow suit. aol What Zack said. /aol For that matter, some of the syntax removals are going to throw users pretty severely as well. tail -20 doesn't work? diff -c3 doesn't work? This is an example of 'standards' rushing ahead of standard usage. :-P I would encourage y'all to address this, not by backing down glibc's _POSIX2_VERSION number, but by patching coreutils to support the old syntaxes again - unconditionally and without warnings. And then beat the upstream maintainers of coreutils upside the head until they take said patch. Do the same for any other shell utility that has been infected with this brain damage. zw aol Yeah! /aol Go ahead and back down the _POSIX2_VERSION number as well, though. :-P No reason for Debian to claim to support a version of POSIX which removes standard usages, and I suppose it's more honest to not claim to be compliant when you not only aren't, but don't want to be. :-P -- Nathanael Nerode neroden at gcc.gnu.org http://home.twcny.rr.com/nerode/neroden/fdl.html -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: libc6 posix version/breakage
- Forwarded message from Paul Eggert [EMAIL PROTECTED] - How about this much-simpler workaround instead: patch glibc so that _POSIX2_VERSION has its old value. That is more honest, since you probably still have some programs that don't conform to POSIX 1003.1-2001 yet. _POSIX2_VERSION is supposed to say what standard your utilities conform to; glibc doesn't really know what the proper value for that is, so you can fix its guess with a light heart. This simpler workaround will give you some time to fix the rest of Debian. Debian developers like yourself should set _POSIX2_VERSION=200112 in their environments, and let the bugs get found and squashed. You can remove the glibc patch in a few months (or years), after the dust has settled somewhat. Seems like good advice if we want to release again anytime in the next few years. sigh Here's the script that I use to find potential problems. I call this command 'grep-nonposix'. Note that this misses a fair amount of stuff, notably chown user.group, and of course it will fail on lots of out-of-the-way perl and strange shell code. -- see shy jo pgp0.pgp Description: PGP signature
Re: libc6 posix version/breakage
Michael Stone [EMAIL PROTECTED] writes: I don't know that there's a full list of *packages* that might be affected. diffutils is also affected. In POSIX 1003.1-2001, command invocations like diff -c2 and diff -c -2 are no longer allowed; you are supposed to use diff -C 2 instead. Similarly, diff -u2 and diff -u -2 are no longer supported with GNU diff; you are supposed to use diff -U 2 instead. I don't know of any other packages that are affected directly. (Of course many packages invoke coreutils and diffutils with the old syntax and thus will be affected indirectly.) Here's a script that you can use to look for affected source files. (Maybe this should be stuck into Debian somewhere?) #! /bin/sh LC_ALL=C export LC_ALL IFS=' ' # Calculate an ERE from a list of commands and # single-letter options for those commands. for command_options in \ 'expand i' \ 'head qv' \ 'fold bsw' \ 'diff BDHNPTabdeilnpqrstwy' \ 'nice ' \ 'split n' \ 'tail fqv' \ 'uniq cdDiu' \ 'unexpand a' do command=$(expr $command_options : '\([^[:space:]]*\)') options=$(expr $command_options : '[^[:space:]]*[[:space:]]*\(.*\)') case $options in ?*) options=[$options]*;; esac pattern=$pattern$command\\.*[[:space:]]-$options[\$0-9]| done pattern=$pattern'(sort|tail|uniq)\.*[[:space:]]\+[$0-9]|sort\.*[[:space:]]-o' case $1 in --help) exec echo $0: usage: $0 [OPTION]... [FILE]... Grep for instances of possible POSIX-conformance problems in the FILEs. Options: -s Check strictly, even for things that aren't likely to be real problems. The FILEs can be directories, in which case the greps are recursive, though ChangeLogs, backup files, and version-control histories are bypassed. The default FILE is '-', which stands for the standard input.;; -s) pattern=$pattern'|[ef]grep\|(\[|test\).*[[:space:]]-[ao]\' shift;; esac pattern='\('$pattern')' case $# in 0) exec grep -E -n $pattern;; *) exec grep -E -n $pattern \ $(find [EMAIL PROTECTED] -type f \ ! -name '*~' ! -name 'ChangeLog*' ! -name '*,v' \ -print \ | sort);; esac -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: libc6 posix version/breakage
On Sun, Aug 10, 2003 at 10:11:03PM +1000, Martin Michlmayr wrote: Perhaps someone (Paul?) could write a summary of deprecated features (e.g. tail -1) which we could post to devel-devel-announce. I think many people are not aware of the whole situation at all. For coreutils: (this stuff *will* use the new behavior the minute someone recompiles coreutils against libc6 2.3.2-2) - chown: `.' is no longer recognized as a separator in the OWNER:GROUP specifier on POSIX 1003.1-2001 systems. If chown *was not* compiled on such a system, then it still accepts `.', by default. If chown was compiled on a POSIX 1003.1-2001 system, then you may enable the old behavior by setting _POSIX2_VERSION=199209 in your environment. * The obsolete usage `touch [-acm] MMDDhhmm[YY] FILE...' is no longer supported on systems conforming to POSIX 1003.1-2001. Use touch -t instead. * The following changes apply on systems conforming to POSIX 1003.1-2001, and are required by the new POSIX standard: - `date -I' is no longer supported. Instead, use `date --iso-8601'. - `nice -NUM' is no longer supported. Instead, use `nice -n NUM'. * The following obsolete usages are no longer supported when conforming to POSIX 1003.1-2001, which prohibits most digit-string options: expand -N (instead, use expand -t N) head -N (instead, use head -c N or head -n N) fold -N (instead, use fold -w N) split -N(instead, use split -l N) tail -N (instead, use tail -c N or tail -n N) unexpand -N (instead, use unexpand --first-only -t N) uniq -N (instead, use uniq -f N) The following obsolete usages (options without arguments) are no longer supported when conforming to POSIX 1003.1-2001, which prohibits most options with optional arguments: od -s (instead, use od --strings) od -w (instead, use od --width) pr -S (instead, use pr --sep-string) * The following obsolete usages are no longer supported when conforming to POSIX 1003.1-2001, which prohibits most options with leading +: sort +POS1 -POS2(instead, use sort -k) tail +N (instead, use tail -c +N or tail -n +N) uniq +N (instead, use uniq -s N) I don't know that there's a full list of *packages* that might be affected. Mike Stone -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]