compiling coreutils with cygport

Jeff Janes jeff.janes@gmail.com
Fri Jul 13 21:25:00 GMT 2012


If I use setup.exe to download the src for coreutils (just by checking
the "Src?" checkbox in the gui) , and then use cygport to build it, it
fails.  The reason it fails  seems to be that ginstall.exe does not
have the proper manifest file so windows refuses to execute it.  This
is the same error you get if you try to build coreutils downloaded
from upstream gnu sources.

cygport coreutils-8.15-1.cygport prep compile
....
make[2]: Entering directory `/usr/src/coreutils-8.15-1/build/man'
  GEN    chcon.1
  GEN    chgrp.1
  GEN    chmod.1
  GEN    cksum.1
  GEN    chown.1
  GEN    dd.1
  GEN    dir.1
  GEN    dircolors.1
  GEN    install.1
help2man: can't get `--help' info from install.td/install
Makefile:1833: recipe for target `install.1' failed
make[2]: *** [install.1] Error 126
make[2]: *** Waiting for unfinished jobs....
  GEN    ls.1
make[2]: Leaving directory `/usr/src/coreutils-8.15-1/build/man'
Makefile:1594: recipe for target `all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/src/coreutils-8.15-1/build'
Makefile:1549: recipe for target `all' failed
make: *** [all] Error 2
*** ERROR: make failed

This error is present when using the latest cygport, but it has not
new to that version, it has been around for months, and on multiple
different systems.

If I delete the two patch files which setup.exe automatically
downloads into /usr/src (coreutils-8.15-1.src.patch and
coreutils-8.15-1.cygwin.patch), and then run cygport as before, it
compiles fine.  Also, it works if I delete all the files which
setup.exe downloads to /usr/src except for the
"coreutils-8.15-1.cygport" one, and then run:

cygport coreutils-8.15-1.cygport download prep compile

So it looks like the setup.exe is giving me a coreutils tar ball which
has already been patched to work with cygwin, but is also giving me
some patch files which undo that and cause it to be broken again.  I
can work around that by deleting the patch files, but it doesn't seem
like that should be necessary.  Is the problem in cygport, or
setup.exe, or in my understanding of how these things are supposed to
work together?


As an aside, the reason I wanted to build coreutils from source is
that I was trying to figure out why cut.exe is so slow, even under
LANG=C.  It is slow both compared to a functionally equivalent
invocation of cygwin's awk.exe, and compared to running cut on a linux
VM.   What I found was that cut.exe is slow because the "putchar"
function is slow under cygwin.   cut.exe uses "putchar" to generate
its output, while awk.exe does not.   I'm kind of at a dead-end there,
as I can't figure out where putchar itself is implemented.  So I've
just learned to use awk.exe rather than cut.exe when I care about
performance.

Cheers,

Jeff

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list