[csw-maintainers] 64-bit python (was evince-2.24.2 in experimental)

Dagobert Michelsen dam at opencsw.org
Mon Apr 5 21:11:11 CEST 2010


Hi Roger,

Am 02.04.2010 um 11:30 schrieb Roger Håkansson:
> On 2010-03-11 10:07, Maciej (Matchek) Blizinski wrote:
>> On Thu, Mar 11, 2010 at 9:00 AM, Roger Håkansson<hson at opencsw.org>  wrote:
>>> On 2010-03-11 09:46, Maciej (Matchek) Blizinski wrote:
>>>> but lcms depends on Python, which is not, and
>>>> will not, in the nearest future, be available in 64-bit.
>>> 
>>> Why not?
>> 
>> I've looked at it once.  Python headers do checks on certain 64-bit
>> related constants, which AFAIK are set by the compiler; the assertions
>> in the Python code are failing.
>> 
>> "/opt/csw/include/python2.6/pyport.h", line 680: Error: #error
>> "LONG_BIT definition appears wrong for platform (bad gcc/glibc
>> config?).".
> 
> The problem is that you need to "merge" pyconfig.h from both 32-bit and 64-bit and add some ifdefs to switch between them.
> How/if this can be done using GAR I have no idea.

There is currently no built-in in GAR to do this as I have only encountered
this (headers different between 32/64 bit) once: for curl.
The solution is to make a wrapper for the header which branches for 32/64 bit
and then pull in the renamed "real" includes like this:
  <http://sourceforge.net/apps/trac/gar/browser/csw/mgar/pkg/curl/trunk/files/curlbuild.h>

> /* Allow 32 and 64 bit headers to coexist */
> #if defined __amd64 || defined __x86_64 || defined __sparcv9
> #include "curlbuild-64.h"
> #else
> #include "curlbuild-32.h"
> #endif


The renaming in GAR is done during merge like this:

> EXTRA_PAX_ARGS_32 = -s ",^\.$(includedir)/curl/curlbuild.h$$,.$(includedir)/curl/curlbuild-32.h,p"
> EXTRA_PAX_ARGS_64 = -s ",^\.$(includedir)/curl/curlbuild.h$$,.$(includedir)/curl/curlbuild-64.h,p"
> EXTRA_PAX_ARGS = $(EXTRA_PAX_ARGS_$(MEMORYMODEL))

Best regards

  -- Dago




More information about the maintainers mailing list