classification
Title: python3.0 interpreter on Cygwin ignores all arguments
Type: behavior Stage:
Components: Interpreter Core Versions: Python 3.0
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: Nosy List: amaury.forgeotdarc, christian.heimes, loewis, pitrou, yselkowitz
Priority: release blocker Keywords: patch

Created on 2008-08-21 04:36 by yselkowitz, last changed 2008-10-30 23:03 by amaury.forgeotdarc. This issue is now closed.

Files
File name Uploaded Description Edit
cygwin-mbstowcs.patch amaury.forgeotdarc, 2008-08-21 09:22
cygwin_badprintf.patch amaury.forgeotdarc, 2008-09-20 21:21
cygwin_badprintf-2.patch amaury.forgeotdarc, 2008-10-17 20:28
Messages (22)
msg71606 - (view) Author: Yaakov (Cygwin Ports) (yselkowitz) Date: 2008-08-21 04:35
Attempting to build 3.0b3, the sharedmods make target results only in a
python command prompt.  In fact, it seems that the interpreter doesn't
accept any arguments:

$ /usr/bin/python --version
Python 2.5.2

$ /usr/bin/python -c 'print "Hello, World!"'
Hello, World!

$ ./python.exe --version
Python 3.0b3 (r30b3:65927, Aug 20 2008, 22:34:44) 
[GCC 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

$ ./python.exe -c 'print "Hello, World!"'
Python 3.0b3 (r30b3:65927, Aug 20 2008, 22:34:44) 
[GCC 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

The same happened with 3.0b2 when I tried to determine if this was a
recent regression.  I have successfully built 2.5 on a number of occasions.
msg71617 - (view) Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) Date: 2008-08-21 09:22
Cygwin seems to have a broken implementation of mbstowcs.
See http://www.google.com/codesearch?q=cygwin+mbstowcs\(NULL

The attached patch corrects the problem.
msg71690 - (view) Author: Yaakov (Cygwin Ports) (yselkowitz) Date: 2008-08-21 21:52
Thank you, that fixes that issue.  But further along the build fails:

Traceback (most recent call last):
  File
"/usr/src/ports/python/python3.0/python3.0-3.0b3-1/src/Python-3.0b3/setup.py",
line 1569, in <module>
    class PyBuildInstallLib(install_lib):
  File
"/usr/src/ports/python/python3.0/python3.0-3.0b3-1/src/Python-3.0b3/setup.py",
line 1575, in PyBuildInstallLib
    so_ext = sysconfig.get_config_var("SO")
  File
"/usr/src/ports/python/python3.0/python3.0-3.0b3-1/src/Python-3.0b3/Lib/distutils/sysconfig.py",
line 552, in get_config_var
    return get_config_vars().get(name)
  File
"/usr/src/ports/python/python3.0/python3.0-3.0b3-1/src/Python-3.0b3/Lib/distutils/sysconfig.py",
line 491, in get_config_vars
    func()
  File
"/usr/src/ports/python/python3.0/python3.0-3.0b3-1/src/Python-3.0b3/Lib/distutils/sysconfig.py",
line 360, in _init_posix
    parse_makefile(filename, g)
  File
"/usr/src/ports/python/python3.0/python3.0-3.0b3-1/src/Python-3.0b3/Lib/distutils/sysconfig.py",
line 272, in parse_makefile
    line = fp.readline()
  File
"/usr/src/ports/python/python3.0/python3.0-3.0b3-1/src/Python-3.0b3/Lib/distutils/text_file.py",
line 173, in readline
    line = self.file.readline()
  File
"/usr/src/ports/python/python3.0/python3.0-3.0b3-1/src/Python-3.0b3/Lib/io.py",
line 1751, in readline
    decoder = self._decoder or self._get_decoder()
  File
"/usr/src/ports/python/python3.0/python3.0-3.0b3-1/src/Python-3.0b3/Lib/io.py",
line 1501, in _get_decoder
    make_decoder = codecs.getincrementaldecoder(self._encoding)
  File
"/usr/src/ports/python/python3.0/python3.0-3.0b3-1/src/Python-3.0b3/Lib/codecs.py",
line 960, in getincrementaldecoder
    decoder = lookup(encoding).incrementaldecoder
LookupError: unknown encoding: U
make: *** [sharedmods] Error 1
msg72020 - (view) Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) Date: 2008-08-27 11:58
See also issue3696, and the patch provided there.

Yaakov, you should remove the _locale.dll from your build directory: for
the compilation phase, better have no locale at all than a broken "U" as
default encoding ("U" is the initial of UTF8)
msg72029 - (view) Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) Date: 2008-08-27 13:30
cygwin has also a nasty bug:
    printf("%ls", wide_string)
fails for strings of length 1. %S has the same problem.

$ ./python.exe ab
./python: can't open file 'ab': [Errno 2] No such file or directory

$ ./python.exe a
./python

The output stops at "./python", probably because stderr has an error
flag set.

Since %ls is only used in Modules/main.c, the best is probably to
replace it with something else. And since cygwin has no function of the
family of wprintf or fputws, PyUnicode is probably the way to go.
msg72042 - (view) Author: Yaakov (Cygwin Ports) (yselkowitz) Date: 2008-08-27 21:33
Thanks for your persistence with this.

Corinna got _wcsrtombs_r fixed in newlib, so I imagine the next Cygwin
1.7 preview will have the fix.  Unfortunately that won't help the
still-stable Cygwin 1.5.  I'm not sure what you mean by PyUnicode being
a workaround; if you could propose a patch, I'll be happy to try it.
msg72044 - (view) Author: Yaakov (Cygwin Ports) (yselkowitz) Date: 2008-08-27 21:39
Another thing: _bsddb does not compile with db4.7:

Modules/_bsddb.c: In function `DBSequence_get_cachesize':
Modules/_bsddb.c:5022: warning: passing arg 2 of pointer to function
from incompatible pointer type
Modules/_bsddb.c: In function `DBEnv_db_home_get':
Modules/_bsddb.c:5331: error: structure has no member named `db_home'
Modules/_bsddb.c:5334: error: structure has no member named `db_home'
Modules/_bsddb.c: In function `PyInit__bsddb':
Modules/_bsddb.c:5948: error: `DB_LOG_AUTOREMOVE' undeclared (first use
in this function)
Modules/_bsddb.c:5948: error: (Each undeclared identifier is reported
only once
Modules/_bsddb.c:5948: error: for each function it appears in.)
Modules/_bsddb.c:5949: error: `DB_DIRECT_LOG' undeclared (first use in
this function)
Modules/_bsddb.c:5957: error: `DB_LOG_INMEMORY' undeclared (first use in
this function)

4.5 and 4.6 both give the first warning, but no errors.
msg72413 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2008-09-03 19:00
The mbstowcs problem should be fixed in r66187. What is the state of the
other problems? Is this issue still a release blocker?
msg72415 - (view) Author: Yaakov (Cygwin Ports) (yselkowitz) Date: 2008-09-03 20:00
Thank you for the patch; that allows the build to finish.  The remaining
issues are now:

msg72029: printf("%ls",...) bug
msg72044: does not build with db4.7

Finally proceeding to the install, now I get another error:

mkdir ./Lib/plat-cygwin
cp ./Lib/plat-generic/regen ./Lib/plat-cygwin/regen
export PATH; PATH="`pwd`:$PATH"; \
	export PYTHONPATH; PYTHONPATH="`pwd`/Lib"; \
	export DYLD_FRAMEWORK_PATH; DYLD_FRAMEWORK_PATH="`pwd`"; \
	export EXE; EXE=".exe"; \
	cd ./Lib/plat-cygwin; ./regen
python$EXE ../../Tools/scripts/h2py.py -i '(u_long)'
/usr/include/netinet/in.h
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: Py_Initialize: can't initialize sys standard streams
ImportError: No module named encodings.utf_8
./regen: line 3:  4164 Segmentation fault      (core dumped) python$EXE
../../Tools/scripts/h2py.py -i '(u_long)' /usr/include/netinet/in.h
make: *** [Lib/plat-cygwin] Error 139
msg73474 - (view) Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) Date: 2008-09-20 21:21
This patches corrects the bad printf, when the given filename is only
1-char long.
msg73475 - (view) Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) Date: 2008-09-20 21:28
Since the bsddb module has been removed from py3k, the previous patch
addresses the last issue for this ticket.
msg73479 - (view) Author: Yaakov (Cygwin Ports) (yselkowitz) Date: 2008-09-21 03:20
3.0rc1 together with the printf patch builds and installs.  Some quick
testing seems ok, but idle isn't working:

$ idle3.0
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python3.0/idlelib/run.py", line 76, in main
    sockthread.set_daemon(True)
AttributeError: 'Thread' object has no attribute 'set_daemon'

IDLE appears briefly with a message:

Subprocess Startup Error
IDLE's subprocess didn't make connection.  Either IDLE can't start a
subprocess or personal firewall software is blocking the connection.
[OK]

Pushing OK causes idle3.0 to quit.  idle 2.5 works fine.
msg73519 - (view) Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) Date: 2008-09-21 19:19
The IDLE problem is already corrected: see issue3628.
msg73520 - (view) Author: Yaakov (Cygwin Ports) (yselkowitz) Date: 2008-09-21 19:27
> The IDLE problem is already corrected: see issue3628.

In that case, then I think this can be closed; if I encounter any
further issues after rc2, I'll open a new bug.

Thank you for all your help.
msg73522 - (view) Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) Date: 2008-09-21 19:33
> I think this can be closed

Well, after the proposed patch "cygwin_badprintf.patch" is reviewed and 
applied...
msg74905 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2008-10-17 12:48
I think cygwin_badprintf.patch needs to consider the case r==PATH_MAX;
this happens when the conversion would need more than PATH_MAX bytes for
the target buffer. In that case, I think it would be good enough to
write "<file name too long>" into cfilename (using cfilename as is will
crash because it's not null-terminated; forcefully null-terminating it
might break the shift state)
msg74937 - (view) Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) Date: 2008-10-17 20:28
Updated patch, which checks the return value of wcstombs.
msg74942 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2008-10-17 22:31
IIUC, another error return value (besides -1) is PATH_MAX, meaning that
the buffer would overrun; correct me if I'm wrong. If I'm not, I propose
that they get handles similarly.

In addition, it might be safer to compare to (size_t)-1 (I keep
forgetting whether this is the default when comparing signed and
unsigned - some compilers warn about comparisong with mixed signs).
msg74960 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2008-10-18 21:03
The patch looks sound to me. Someone should probably test it under
Cygwin.
msg74993 - (view) Author: Yaakov (Cygwin Ports) (yselkowitz) Date: 2008-10-20 10:18
3.0rc1 builds and installs fine with the latest patch.  Thanks!
msg75280 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2008-10-28 12:57
I can't reproduce the problem with my installation of Cygwin on Windows
XP. However the patch doesn't cause problems so you might apply it.
msg75398 - (view) Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) Date: 2008-10-30 23:03
Committed the "%ls" fix with r67064.
History
Date User Action Args
2008-10-30 23:03:58amaury.forgeotdarcsetstatus: open -> closed
resolution: fixed
messages: + msg75398
keywords: - needs review
2008-10-28 12:57:04christian.heimessetnosy: + christian.heimes
messages: + msg75280
2008-10-20 10:18:55yselkowitzsetmessages: + msg74993
2008-10-18 21:03:23pitrousetmessages: + msg74960
2008-10-17 22:31:56loewissetmessages: + msg74942
2008-10-17 20:28:12amaury.forgeotdarcsetfiles: + cygwin_badprintf-2.patch
messages: + msg74937
2008-10-17 12:48:20loewissetnosy: + loewis
messages: + msg74905
2008-10-02 12:54:52barrysetpriority: deferred blocker -> release blocker
2008-09-26 22:19:53barrysetpriority: release blocker -> deferred blocker
2008-09-21 19:33:01amaury.forgeotdarcsetmessages: + msg73522
2008-09-21 19:27:26yselkowitzsetmessages: + msg73520
2008-09-21 19:19:13amaury.forgeotdarcsetmessages: + msg73519
2008-09-21 03:20:19yselkowitzsetmessages: + msg73479
2008-09-20 21:28:20amaury.forgeotdarcsetmessages: + msg73475
2008-09-20 21:21:48amaury.forgeotdarcsetkeywords: + needs review
files: + cygwin_badprintf.patch
messages: + msg73474
2008-09-18 05:42:05barrysetpriority: deferred blocker -> release blocker
2008-09-04 01:19:19benjamin.petersonsetpriority: release blocker -> deferred blocker
2008-09-03 20:00:08yselkowitzsetmessages: + msg72415
2008-09-03 19:00:54pitrousetnosy: + pitrou
messages: + msg72413
2008-08-27 21:39:59yselkowitzsetmessages: + msg72044
2008-08-27 21:33:45yselkowitzsetmessages: + msg72042
2008-08-27 13:30:18amaury.forgeotdarcsetpriority: release blocker
messages: + msg72029
2008-08-27 11:58:51amaury.forgeotdarcsetmessages: + msg72020
2008-08-27 11:56:32amaury.forgeotdarcsetmessages: - msg72013
2008-08-27 07:53:54amaury.forgeotdarcsetmessages: + msg72013
2008-08-21 21:52:45yselkowitzsetmessages: + msg71690
2008-08-21 09:22:30amaury.forgeotdarcsetfiles: + cygwin-mbstowcs.patch
keywords: + patch
messages: + msg71617
nosy: + amaury.forgeotdarc
2008-08-21 04:36:00yselkowitzcreate