Subject: bug#13912: Feedback on coreutils 8.13

From: "Alan Curry" <[email-masked]>
Date: Sat, 9 Mar 2013 17:38:07 -0500 (GMT+5)

Ellis N. Thomas writes:
> 
>          Notes on installation of coreutils 8.13

Thanks for writing up your experience. Even though it's mostly a series of
bad choices, they were choices that only an outsider would make, so they do
reveal things that the insiders haven't thought of.

> 
> System Version:	Mac OS X 10.5.8 (9L30)
> Kernel Version:	Darwin 9.8.0
>  >uname -mpv
> Darwin Kernel Version 9.8.0: Wed Jul 15 16:55:01 PDT 2009; 
> root:xnu-1228.15.4~1/RELEASE_I386 i386 i386
> 
> 	The download of gcc-4.7.2 made in Feb-2013 included a file MD5SUMS to
> verify the correct transfer of the files.  However, the suggested usage of
> md5sum failed as this command was not available!  Investigation on the Gnu

I found this surprising. I would have expected md5sum to be installed with
the OS. So I googled "md5sum macos" and the first result is a page with
installation instructions for a standalone package called "md5sha1sum". That
would probably be easier to install than coreutils, since it's much smaller.
I wonder how you managed to skip over it.

Not important though; compiling coreutils shouldn't be hard.

> website showed that this is available in coreutils, but there seemed to be
> no way of downloading this alone, so downloaded version 8.21 from the ftp
> area (ftp://ftp.gnu.org/gnu/coreutils/).  However, these are xz versions
> and there seems to be no support for that format on this machine.  The

This sounds very familiar to me. At one point I already had all these
compressor/decompressors installed:
  7zr
  bzip2
  compress
  gzip
  lzop
  p7zip
  zip
and coreutils decided to make YET ANOTHER ONE (xz) mandatory. "Compression
format of the week" is a frustrating game! So I completely understand your
decision that...

> latest gz was 8.13 from Sep 2011, so also downloaded version 8.13, and
> proceeded trying to install this.

...the only way to win is not to play. (If you did choose to play, googling
"macos xz" looks promising.)

Moving on:

> 
> **** From INSTALL ****
> The `README' should mention any `--enable-' and `--with-' options that the
> package recognizes.
> **** End from INSTALL ****
> 
> 	However, the README does NOT clarify this.

This is clearly a bug. INSTALL lies about the contents of README. I think
this should be fixed by modifying README to fulfill the promise. It's
possible to find the --with options in the output of configure --help but
having them in the README, with more verbose explanations, would be nice.

> 
> 	From the configure --help, it was established that there is also
> a --without-PACKAGE option.

The thing about configure --help is that it's too short. It's too short
because it's trying not to be too long (and somehow failing at that too).
Here's the section of configure --help from coreutils 8.13 (it's practically
identical to 8.21):

:Optional Packages:
:  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
:  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
:  --with-gnu-ld           assume the C compiler uses GNU ld default=no
:  --with-libiconv-prefix[=DIR]  search for libiconv in DIR/include and DIR/lib
:  --without-libiconv-prefix     don't search for libiconv in includedir and libdir
:  --with-libpth-prefix[=DIR]  search for libpth in DIR/include and DIR/lib
:  --without-libpth-prefix     don't search for libpth in includedir and libdir
:  --without-included-regex
:                          don't compile regex; this is the default on systems
:                          with recent-enough versions of the GNU C Library
:                          (use with caution on other systems).
:  --without-selinux       do not use SELinux, even on systems with SELinux
:  --with-packager         String identifying the packager of this software
:  --with-packager-version Packager-specific version information
:  --with-packager-bug-reports
:                          Packager info for bug reports (URL/e-mail/...)
:  --with-tty-group[=NAME]
:                          group used by system for TTYs, "tty" when not
:                          specified (default: do not rely on any group used
:                          for TTYs)
:  --without-gmp           do not use the GNU MP library for arbitrary
:                          precision calculation (default: use it if available)
:  --with-libintl-prefix[=DIR]  search for libintl in DIR/include and DIR/lib
:  --without-libintl-prefix     don't search for libintl in includedir and libdir

You've understood that the documentation of "--without-PACKAGE" is using the
all-caps PACKAGE as a metasyntactic variable, which you're supposed to
replace with the name of the package you want to do without. This wasn't
really explained but you figured it out anyway; congratulations on getting
that far.

The other unexplained thing, which you didn't figure out, is that the stuff
below the generic --with-PACKAGE and --without-PACKAGE lines, from
"--with-gnu-ld" to "--without-libintl-prefix", is the complete list of valid
PACKAGEs.

I don't know why the generic --with-PACKAGE and --without-PACKAGE lines are
included in the help output. Their presence seems to imply that the list of
valid values for PACKAGE is open-ended, but then you immediately get a
complete list. I think the help would be more helpful if those top 2 lines
were deleted.

The same goes for the enable/disable section. (I also think the distinction
between with/without and enable/disable is something that isn't helpful to
anyone but the people maintaining the autoconf scripts. If there was an upper
layer that made --enable an alias for --with and --disable an alias for
--without, the users would probably be grateful for it.)

So, the specific things you tried were wrong because:

> 
> 	Initially tried ./configure --enable-md5sum but this gave
> 
> configure: WARNING: unrecognized options: --enable-md5sum

md5sum isn't a feature you can enable/disable (--enable-FEATURE). The help
output lists them all.

> 
> and proceeded anyway.
> 
> 	When `make' was run, many errors were reported, concerning expr.c (see
> next section).  Since these concern the expr command which was not 
> really
> needed, tried repeating ./configure using  --without-PACKAGE
> ./configure --without-expr

expr isn't a package you can with/without (--without-PACKAGE). The help
output lists them all.

It's great that after all this trouble you've held on to your optimistic
belief that there must be some way of configuring just the program you want,
if only you can just find the right syntax. Sadly, it just isn't so.

Ideally, "make src/md5sum" or "make -C src md5sum" would work, but the
Makefiles in coreutils aren't quite good enough for it to work out of the
box. Some dependencies are missing. But if your first attempt got far enough
to blow up on expr.c, "make -C src md5sum" might actually work afterward.

> 3. Some problems with configure
> 
> 	Retried make, redirecting the output to a log file.  The errors in expr
> were more extensive than realised before.  The first error is
> expr.c:54:18: error: gmp.h: No such file or directory
> 
> 	It seems that configure has made an incorrect decision about the
> availability of gmp, which is not available (but is placed ready to be 
> installed along with the gcc sources. It had previously been established
> that it was a Prerequisite).
> 
> 	Noted that config.status has
> D["HAVE_GMP"]=" 1"

It sounds like configure found your not-yet-installed gmp and tried to use
it, with disastrous results. This is the part of the bug report where you
should include your config.log, so we can see exactly how that HAVE_GMP
became 1. And I won't be surprised if it turns out to be a bug that's already
fixed in 8.21.

> and the expr.c source tests this.  It seems that configure has
> incorrectly decided that gmp is available, and expr.c fails to find 
> the header,
> and all other errors arise from this.
> 
> 	Since the expr.c source allowed for the test failing, it seemed 
> possible
> to proceed without gmp.  So config.status was modified so that
> D["HAVE_GMP"]=" 0"

Editing a config.status by hand? That sure shows bravery and determination.

I'm quitting here. The rest of the story needs to be read by someone who
actually knows MacOS.

-- 
Alan Curry