Subject: RE: 1.5.10: expr + configure failure + testcase (also on 1.5.11-1)
From: "Bogdan Vacaliuc" <[email-masked]>
To: <[email-masked]>
Cc: "'RTEMS Users'" <[email-masked]>
Date: Sun, 12 Sep 2004 21:42:07 -0400

Hello again,

After (finally?!) noticing that a new release of the cygwin.dll was made on Sept. 4 and being encouraged by the line:

"- Fix mysterious configure script premature exit.  (Pierre Humblet)"

I decided to check against the latest public release.  The problem continues to persist, unfortunately.

I created a simplified testcase, by realizing that a simple configure.ac will let autoconf generate a suitable configure script.
This auto-generated configure script exhibits the argument parsing failure as readily as any script taken from a build environment.
It is also attached (as text this time, sorry for all the compressed business I mucked with previously).

Here is the configure.ac file needed for autoconf:

[/jail/cygwin-1.5.11.1-std] cat configure.ac
AC_PREREQ(2.57)
AC_INIT([expr-configure],[1.5.11-1],[cygwin at cygwin dot com])
# for the purpose of this test, getting here is a success
exit 0

To generate the configure script, just run 'autoconf'.  The command for configure that exhibits the failure is:

./configure -n \
    --target=i386-rtems \
    --enable-rtemsbsp=386pc \
    --host=i686-pc-cygwin \
    --build=i686-pc-cygwin \
    build_alias=i686-pc-cygwin \
    host_alias=i686-pc-cygwin \
    target_alias=i386-rtems \
    --cache-file=/dev/null

It doesn't happen all the time, of course.  The *extremely curious* thing is that simply removing the '--enable-rtemsbsp=386pc'
appears to make the configure script work all the time.

I have experimented with reordering the arguments, putting '--cache-file=/dev/null' at the top, etc.  It is easy to make the problem
go away.  This sequence seems to cause the problem most quickly.

While performing the above tests in my chroot jails, I observed a new failure mode:

[/jail/cygwin-1.5.11.1-std] ./test-configure
*** CREATE configure.ac ***
*** GENERATE configure ***
Running using function fail()...
*** TEST 0 ***
*** TEST 1 ***
*** TEST 1 FAILS ***
configure: error: invalid variable name: build_alias

[/jail] chroot /jail/cygwin-1.5.11.1-std /bin/bash -l
$ ./test-configure
Running using function fail()...
*** TEST 0 ***
*** TEST 0 FAILS ***
configure: error: sources are in /, but `cd /' does not work

This does not occur, if I replace /bin/bash in the jail with a locally compiled bash.exe (based on 2.05b, that has the RECYCLES_PIDS
defined):

[/jail] chroot /jail/cygwin-1.5.11.1-bash205b /bin/bash -l
$ ./test-configure
Running using function fail()...
*** TEST 0 ***
*** TEST 1 ***
*** TEST 2 ***
*** TEST 3 ***
*** TEST 4 ***
*** TEST 5 ***
*** TEST 6 ***
*** TEST 7 ***
*** TEST 8 ***
*** TEST 8 FAILS ***
configure: error: invalid variable name: build_alias

Rather, the issue we are pursuing occurs.  What is interesting, is that in the 'std' case above, if one keeps calling the script,
one can get the 'invalid variable name' error *instead* of the 'sources are in...' error.  This suggests that the two are possibly
related and 'RECYCLES_PIDS' has some bearing on the real issue.

Anyway, the attached script (test-configure) will create the above configure.ac, generate configure (via. autoconf), and run the
above line over and over until failure.  I am also attaching cygcheck.out for my environment as it now exists.

Thanks to anyone looking at this; even if simply to say 'yup, it's a problem', or 'no, you are wrong about this...'

Best Regards,

-bogdan

p.s. For a chroot jail, the following programs are required at a minimum:

$ ls /bin
bash.exe        cygintl-2.dll       cygpcreposix.dll  ls.exe     sleep.exe
cat.exe         cygintl-3.dll       cygwin1.dll       mkdir.exe  sort.exe
chmod.exe       cygintl.dll         date.exe          pwd.exe    tail.exe
clear.exe       cygpcre-0.dll       echo.exe          rm.exe     touch.exe
cygiconv-2.dll  cygpcre.dll         expr.exe          sed.exe    wc.exe
cygintl-1.dll   cygpcreposix-0.dll  grep.exe          sh.exe

$ ls /etc
profile

$ cat /etc/profile
PATH=/bin
PS1='$ '

p.p.s. Refer to my original post for any required background:
http://www.cygwin.com/ml/cygwin/2004-09/msg00518.html
--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/