Re: libc6 posix version/breakage

2003-08-14 Thread Joey Hess
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

2003-08-14 Thread Martin Michlmayr
 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

2003-08-14 Thread Zack Weinberg
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

2003-08-14 Thread Nathanael Nerode
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

2003-08-14 Thread Joey Hess
 - 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

2003-08-14 Thread Paul Eggert
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

2003-08-14 Thread Michael Stone
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]