Problem with frozen app: compatibility between Unixware and SCO Unix

M

Mike Kent

I need to deploy a Python app on both SCO Unixware and old SCO Unix
boxes. We freeze the app under Unixware, and set the compatibility
flag ('elfmark -t udk') on the resulting executable. We successfully
did this using Python 1.5.2. Recently, we decided to upgrade the app
to use Python 2.3.2.

Unfortunately, we've just discovered a nasty surprise. Under 2.3.2,
os.path.isdir() returns True on Unixware for an existing directory
(/tmp, for example), but returns False under SCO Unix. Ouch.

Note that this has been verified using a test program that is frozen
under Unixware, then run on Unixware and SCO Unix. We don't currently
have a python interpreter on the SCO Unix box.

Because of the way a frozen app is involved, I'm thinking that this is
a binary compatibility problem, and will investigate further. We do
the same 'compile under Unixware, deploy under SCO Unix' thing for
many other apps that are written in C, without encountering this
problem.

Does anyone have any suggestions on how I can best proceed? Have you
heard of this kind of problem before? What additional information
would you like to read?

Thanks
 
J

Jarek Zgoda

Mike Kent said:
What additional information would you like to read?

Why you still work with this piece of shit?

BP, NMSP ("I'm Sorry, I Couldn't Resist")
 
M

Mike Kent

Upon further intense investigation, here's what I now know.

os.stat() is the culprit. A very simple test program frozen under
Unixware 7.1 which does more more than stat '/tmp' will return proper
results under Unixware, but return totally bogus results when that
frozen test program is run on an OpenServer 5 machine. Bogus in the
sense that the tuple of values returned by os.stat() contain values
that are so far off, it is apparent that the structure returned by the
OS's 'stat' system call is not being unpacked properly.

The docs for the Unixware UDK state that the 'stat' system call is
fully compatible across the two platforms. This was verified by
writing a short 'C' language program, compiling it under Unixware, and
running it on both Unixware and OpenServer. In both cases, it
returned proper results.

The problem appears to be something in Python's wrapper around 'stat'
in posixmodule.c

Any ideas on how I can proceed?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top