Cygwin Installation Problems on Windows Vista ( and install-info)

Thu Sep 20 05:20:00 GMT 2007


Please point out if I'm wrong or misinformed...

I'm trying to trace down the Vista cygwin setup.exe
/etc/postinstall/ "hang forever at 99%" problem.

The current /etc/postinstall/ contains the line:

/usr/bin/install-info --dir-file=/usr/share/info/dir

>From Googling about, the install-info part seems to be the part of the shell
scripts that is hanging.

The install-info command is supposed to insert the "info" format information
about gnuplot into the indexing file "/usr/share/info/dir".  The "info"
format stuff is basically plain text with ^_'s ('\x1F' characters) as
section markers and ^? (DEL) as field separators in the index at the end of
the "info" file. The file is GZIP'd, to save space.  The
gunzip's fine on my XP machine, so a corrupt distribution file seems

So perhaps the problem is the "install-info.exe" program banging into some
Vista difference.

The "install-info.exe" program seems to be "texinfo" package, as shown by:

which yields:

This seems to imply that the package version is something like "texinfo

Installing the source for the "texinfo 4.8a-1" , we find the file:
See Lines 604-643 at end of this post:

My guess is that the popen is not working right. 
Pipe emulation is often cranky. I can imagine Vista breaking something. 

Or perhaps as all postinstall steps are not finished at that point in
setup.exe, so perhaps gzip is unavailable at that point in the setup.exe's
initial environment. 

Or perhaps the hang is related to the fact that install-info.exe reads the
entire file into memory, xmalloc'ing along the way.

I expect to have a Vista machine available again soon to check this out. 
Any suggestions on best investigative tactics?

Lines 604-643:
  if (!compression_program)
    compression_program = &local_compression_program;

  if (data[0] == '\x1f' && data[1] == '\x8b')
    /* An explicit .exe yields a better diagnostics from popen below
       if they don't have gzip installed.  */
    *compression_program = "gzip.exe";
    *compression_program = "gzip";
  else if(data[0] == 'B' && data[1] == 'Z' && data[2] == 'h')
    *compression_program = "bzip2.exe";
    *compression_program = "bzip2";
  else if(data[0] == 'B' && data[1] == 'Z' && data[2] == '0')
    *compression_program = "bzip.exe";
    *compression_program = "bzip";
    *compression_program = NULL;

  if (*compression_program)
    { /* It's compressed, so fclose the file and then open a pipe.  */
      char *command = concat (*compression_program," -cd <",
      if (fclose (f) < 0)
        pfatal_with_name (*opened_filename);
      f = popen (command, "r");
      if (f)
        *is_pipe = 1;
        pfatal_with_name (command);
    { /* It's a plain file, seek back over the magic bytes.  */
      if (fseek (f, 0, 0) < 0)

View this message in context:
Sent from the Cygwin Users mailing list archive at

Unsubscribe info:
Problem reports:

More information about the Cygwin mailing list