Bugs item #1675511, was opened at 2007-03-07 15:54
Message generated for change (Comment added) made by jlick
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1675511&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Build
Group: Python 2.5
Status: Closed
Resolution: Accepted
Priority: 5
Private: No
Submitted By: Carson Gaspar (cgaspar)
Assigned to: Nobody/Anonymous (nobody)
Summary: Python still uses broken -xcode option on Solaris/x86

Initial Comment:
Bug 1561333 was submitted against Python 2.4 with no action, so I'm submitting 
a new bug against 2.5 in the hopes that someone will read it... text updated 
with minor corrections.

Python 2.5, Solaris x86 10 Update 3, Sun Studio 11

xcode=pic32 option is not supported on Solaris x86 Sun C  . Python's 
./configure script on Solaris systems sets the
compiler flag -xcode=pic32 when any compiler other than gcc is used. 
Unfortunately, the -xcode flag is only available in the sparc version of Sun C. 
The x86 version of Sun C does not support the -xcode option at all and 
generates an error that an illegal option was used. The portable flag supported 
on both platforms to use independent 32-bit addressing is -KPIC.

----------------------------------------------------------------------

Comment By: James Lick (jlick)
Date: 2007-03-13 13:55

Message:
Logged In: YES 
user_id=673069
Originator: NO

Sorry, not sure where the duplicate comment came from.  That was just an
FYI anyways.  I'm fine with the fix only coming out in the 2.5 branch.

----------------------------------------------------------------------

Comment By: Martin v. Löwis (loewis)
Date: 2007-03-13 13:34

Message:
Logged In: YES 
user_id=21627
Originator: NO

I won't apply the patch to the 2.4 branch, as that branch is not actively
maintained anymore.

----------------------------------------------------------------------

Comment By: James Lick (jlick)
Date: 2007-03-13 11:32

Message:
Logged In: YES 
user_id=673069
Originator: NO

The patch I posted in the last comment also will apply (with warning) to
Python 2.4.4 and builds OK.


----------------------------------------------------------------------

Comment By: Martin v. Löwis (loewis)
Date: 2007-03-12 18:52

Message:
Logged In: YES 
user_id=21627
Originator: NO

Thanks for the patch. Committed as r54283 and r54284.

----------------------------------------------------------------------

Comment By: James Lick (jlick)
Date: 2007-03-12 17:52

Message:
Logged In: YES 
user_id=673069
Originator: NO

The patch I posted in the last comment also will apply (with warning) to
Python 2.4.4 and builds OK.


----------------------------------------------------------------------

Comment By: James Lick (jlick)
Date: 2007-03-12 15:37

Message:
Logged In: YES 
user_id=673069
Originator: NO

I've made a patch for configure.in to fix this bug.  There are two notes
to explain why it was written the way it is:

The first problem is to determine which processor type we are using. 
'uname -p' was chosen because it returns the most generic response on both
SPARC (sparc) and x86/x64 (i386) systems.  There is some controversy about
why it returns 'i386' even on Pentium or AMD64 systems, but Sun points to
the isainfo, isalist, or psrinfo commands to get more specific processor
information, so it appears they don't intend to change the behavior.

The second choice is how to handle the default case if the result of the
above is neither sparc or i386.  I chose to use '-xcode=pic32' for sparc
only, and '-Kpic' for all other responses.  My reasoning is that since
-Kpic existed before -xcode=pic32 was implemented that it is the more
generic option, even though it and -KPIC are deprecated on sparc.  I am
therefore making the assumption that any possible new platforms supported
by Studio 11 would in some fashion support -Kpic.

This patch is a diff against Python 2.5's configure.in file.  I've tested
it against a Solaris 10 32-bit x86 system and a Solaris 10 64-bit sparc
system both with Studio 11 installed.  I don't have a 64-bit x86 system to
test against.  The build is mostly successful on both though there is a
problem with the _ctypes module which causes test_ctypes to fail.  This is
a known problem covered by other bug reports which I believe is unrelated
to this patch.

I couldn't find the option to upload a file, so here is the patch inline:

---snip---
*** configure.in.old    2007-03-11 23:01:16.879612000 -0700
--- configure.in        2007-03-11 23:31:48.098734000 -0700
***************
*** 1543,1551 ****
  then
        case $ac_sys_system/$ac_sys_release in
        SunOS*) if test "$GCC" = yes;
!               then CCSHARED="-fPIC";
!               else CCSHARED="-xcode=pic32";
!               fi;;
        hp*|HP*) if test "$GCC" = yes;
                 then CCSHARED="-fPIC";
                 else CCSHARED="+z";
--- 1543,1553 ----
  then
        case $ac_sys_system/$ac_sys_release in
        SunOS*) if test "$GCC" = yes;
!               then CCSHARED="-fPIC";
!               elif test `uname -p` = sparc;
!               then CCSHARED="-xcode=pic32";
!               else CCSHARED="-Kpic";
!               fi;;
        hp*|HP*) if test "$GCC" = yes;
                 then CCSHARED="-fPIC";
                 else CCSHARED="+z";
---snip---

----------------------------------------------------------------------

Comment By: Martin v. Löwis (loewis)
Date: 2007-03-11 03:06

Message:
Logged In: YES 
user_id=21627
Originator: NO

The manual claims (in "Supported Platforms") that "x86" refers to both
32-bit and 64-bit systems, and promises to use "32-bit x86" for 32-bit
specific information, so I guess -Kpic works on AMD64 as well.

----------------------------------------------------------------------

Comment By: James Lick (jlick)
Date: 2007-03-11 02:35

Message:
Logged In: YES 
user_id=673069
Originator: NO

According the the Studio 11 man page for cc '-KPIC' is an alias for
'-Kpic' on x86, though it doesn't explicitly say whether this applies to
x86 meaning 32 bit only or x86 meaning both 32 and 64 bit.  In any case,
since -KPIC is definitely equivalent to -Kpic on 32 bit x86, and -KPIC is
known to work on x64, should we just use -KPIC for both?

----------------------------------------------------------------------

Comment By: Martin v. Löwis (loewis)
Date: 2007-03-11 01:07

Message:
Logged In: YES 
user_id=21627
Originator: NO

Looks fine, although you might want to consider AMD64 as well. I think it
should be -KPIC (although I'm uncertain whether Python works on that system
at all). See

http://blogs.sun.com/x86be/category/Sun

----------------------------------------------------------------------

Comment By: James Lick (jlick)
Date: 2007-03-11 00:14

Message:
Logged In: YES 
user_id=673069
Originator: NO

I'm willing to take a stab at a patch.  I've reviewed the Sun Studio 11
documentation and it appears that the preferred options are:

Sun cc Sparc: -xcode=pic32
Sun cc X86: -Kpic

Does that match the way you read it, loewis?

----------------------------------------------------------------------

Comment By: Martin v. Löwis (loewis)
Date: 2007-03-09 16:56

Message:
Logged In: YES 
user_id=21627
Originator: NO

I don't want to make a change now, just to have to deal with a bug report
two years from now which then will sit again in this tracker for years
again. I'm fine with documenting that older SunPRO compilers are not
supported; -xcode has been supported atleast since Sun Forte 6 (released in
2000); earlier products had reached their end-of-life long ago. So either
this gets fixed properly now, or not at all.


----------------------------------------------------------------------

Comment By: Carson Gaspar (cgaspar)
Date: 2007-03-09 16:06

Message:
Logged In: YES 
user_id=664506
Originator: YES

While the doc labels the -KPIC option as "obsolete" for SPARC, it works
fine. Perhaps Studio 12 will break it, but all current compilers understand
it fine.

If you want to be pedantically correct and use -xcode=pic32, you don't
need an architecture test, you need to actually _try_ the option, as older
SPARC compilers won't accept it either.


----------------------------------------------------------------------

Comment By: Martin v. Löwis (loewis)
Date: 2007-03-09 15:08

Message:
Logged In: YES 
user_id=21627
Originator: NO

One problem is that the proposed change is incorrect. According to the C
User's Guide of Sun Studio 11 (document 819-3688-10), -KPIC is an obsolete
option on SPARC, and should be replaced with -xcode=pic32 (section
A.1.15).

So I think a patch should be architecture-specific. Can somebody come up
with a patch that does that?



----------------------------------------------------------------------

Comment By: James Lick (jlick)
Date: 2007-03-07 16:34

Message:
Logged In: YES 
user_id=673069
Originator: NO

Perhaps I was unclear in bug #1561333 that this resulted in only a
warning.  Actually the build will fail because of the incorrect flag.

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1675511&group_id=5470
_______________________________________________
Python-bugs-list mailing list 
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to