hpi-swa / RSqueak

A Squeak/Smalltalk VM written in RPython.
BSD 3-Clause "New" or "Revised" License
83 stars 15 forks source link

Fresh clone does not -O2-build under Windows #108

Closed j4yk closed 8 years ago

j4yk commented 8 years ago

Could you please verify or refute?

Error is

[translation:ERROR] FlowingError:
[translation:ERROR]
[translation:ERROR] getattr(<module 'os' from 'C:\\Users\\j4yk\\Documents\\d
ev\\HPI\\rsqueakvm\\.build\\pypy-win32\\lib-python\\2.7\\os.pyc'>, uname) always
 raises <type 'exceptions.AttributeError'>: 'module' object has no attribute 'un
ame'
[translation:ERROR]
[translation:ERROR] In <FunctionGraph of (platform:1166)uname at 0x57069d0>:
[translation:ERROR] Happened at file C:\Users\j4yk\Documents\dev\HPI\rsqueak
vm\.build\pypy-win32\lib-python\2.7\platform.py line 1188
[translation:ERROR]
[translation:ERROR]             system,node,release,version,machine = os.uname()

[translation:ERROR]
[translation:ERROR] Processing block:
[translation:ERROR]  block@3 is a <class 'rpython.flowspace.flowcontext.SpamBloc
k'>
[translation:ERROR]  in (platform:1303)system
[translation:ERROR]  containing the following operations:
[translation:ERROR]        v33 = simple_call((function uname))
[translation:ERROR]        v34 = getitem(v33, (0))
[translation:ERROR]  --end--

This was done in a Git Bash session but it does not work with cmd either: https://gist.github.com/j4yk/1f38525e08a31189678e

Works in the vagrant Linux box (although the Vagrantfile seems to need an update).

However, when compiling with JIT, i. e. leaving out the -O2 flag for the build script, it works. But I want to avoid that for frequent smoke-check builds because it takes so long.

timfel commented 8 years ago

Hm, this seems strange. Maybe this should be replaced with

system,node,release,version,machine =
platform.system(),platform.node(),platform.release(),platform.version(),platform.machine()

On 15 September 2015 at 17:21, j4yk notifications@github.com wrote:

Could you please verify or refute?

Error is

[translation:ERROR] FlowingError: [translation:ERROR] [translation:ERROR] getattr(<module 'os' from 'C:\Users\j4yk\Documents\d ev\HPI\rsqueakvm\.build\pypy-win32\lib-python\2.7\os.pyc'>, uname) always raises <type 'exceptions.AttributeError'>: 'module' object has no attribute 'un ame' [translation:ERROR] [translation:ERROR] In <FunctionGraph of (platform:1166)uname at 0x57069d0>: [translation:ERROR] Happened at file C:\Users\j4yk\Documents\dev\HPI\rsqueak vm.build\pypy-win32\lib-python\2.7\platform.py line 1188 [translation:ERROR] [translation:ERROR] system,node,release,version,machine = os.uname()

[translation:ERROR] [translation:ERROR] Processing block: [translation:ERROR] block@3 is a <class 'rpython.flowspace.flowcontext.SpamBloc k'> [translation:ERROR] in (platform:1303)system [translation:ERROR] containing the following operations: [translation:ERROR] v33 = simple_call((function uname)) [translation:ERROR] v34 = getitem(v33, (0)) [translation:ERROR] --end--

This was done in a Git Bash session but it does not work with cmd either: https://gist.github.com/j4yk/1f38525e08a31189678e

Works in the vagrant Linux box (although the Vagrantfile seems to need an update).

However, when compiling with JIT, i. e. leaving out the -O2 flag for the build script, it works. But I want to avoid that for frequent smoke-check builds because it takes so long.

— Reply to this email directly or view it on GitHub https://github.com/HPI-SWA-Lab/RSqueak/issues/108.

j4yk commented 8 years ago

That code is in the Python standard library. But unfortunately the error message does not seem to tell me what called there.

timfel commented 8 years ago

Oops. That's strange. And shouldn't happen

j4yk commented 8 years ago

It works without the platform lines introduced in 158c6c402394920c7151aa15e89c243f141d6af1.

krono commented 8 years ago

We could calculate that stuff at translation time, right?

On 12.10.2015, at 18:26, Jakob Reschke notifications@github.com wrote:

It works without the platform lines introduced in 158c6c4.

� Reply to this email directly or view it on GitHub.

Tobias Pape Research School on Service-Oriented Systems Engineering Software Architecture Group | http://www.hpi.uni-potsdam.de/swa/

Hasso-Plattner-Institut f�r Softwaresystemtechnik GmbH | Universit�t Potsdam Prof.-Dr.-Helmert-Str. 2-3, D-14482 Potsdam, Germany Amtsgericht Potsdam, HRB 12184 | Gesch�ftsf�hrung: Prof. Dr. Christoph Meinel

j4yk commented 8 years ago

platform.system() probably so, but I think platform.version() or platform.processor() not.

krono commented 8 years ago

Looking at the pypy/lib-python implementation of platform, it seems to be expected, that os.uname sometimes does not work, however, they do not resort to the host platform but implement their own:

https://bitbucket.org/pypy/pypy/src/c9976e50bbb80cab189ff525b2c6d2643d48ee50/lib-python/2.7/platform.py?at=default&fileviewer=file-view-default#platform.py-1166

j4yk commented 8 years ago

That is user-level Python code, right? Maybe copying the uname implementation and changing the try-catch to something that causes the translation to skip uname if it is not available might work... but I do not particularly like that path.

timfel commented 8 years ago

Fixed this!