A PortGroup for building more 32/64-bit universal packages

Ryan Schmidt ryandesign at macports.org
Thu Jan 22 04:31:58 PST 2009


On Jan 22, 2009, at 06:10, Ryan Schmidt wrote:

> On Jan 12, 2009, at 15:19, Marcus Calhoun-Lopez wrote:
>
>> I have a need of more 32/64-bit universal packages.
>> To facilitate this, I would like to propose a PortGroup with a  
>> different
>> universal build mechanism than the default.
>> See http://trac.macports.org/ticket/17972.
>>
>> It is intended to be an improvement of the merge function.
>>
>> Any feedback would be greatly appreciated.
>> The only time I write in Tcl is on MacPorts related projects.
>
> As I mentioned before, I wanted to start switching my ports to this  
> mechanism because I'm tired of bit-size issues and to a lesser  
> extent endian issues with the old all-at-once mechanism which one  
> never knows about until one tries to use some part of the software  
> and it doesn't work right.
>
> I decided to start with pkgconfig because it has no dependencies  
> and has issues building 64-bit with the old way.
>
> It doesn't build 64-bit with the new way either. Turns out its  
> included copy of glib 1.2.10 wants to run a compiled program during  
> the configure phase. I'm on a 64-bit Intel Mac, so once it gets to  
> the ppc64 architecture, it can't run that program, because Rosetta  
> can't run 64-bit PowerPC code. Presumably if I were on a G5 Mac it  
> would be able to get through the ppc and ppc64 architectures, but  
> not the i386 or x86_64 architectures. If I were on a G4 Mac it  
> would probably only manage the ppc architecture.

[snip]

I tried zlib too, and it doesn't work with merge-universal either.  
Its configure script is not made by autoconf and it does not  
understand the --host option merge-universal adds so I get:

DEBUG: Assembled command: 'cd "/mp/var/macports/build/ 
_Users_rschmidt_macports_dports_archivers_zlib/work/ppc64" && ./ 
configure --prefix=/mp --shared --host=powerpc64-apple-darwin'
usage:
   configure [--shared] [--prefix=PREFIX]  [--exec_prefix=EXPREFIX]
      [--libdir=LIBDIR] [--includedir=INCLUDEDIR]

zlib uses a post-configure phase to insert the $ 
{configure.universal_cflags} into the Makefile in the right place.  
With merge-universal, the universal CFLAGS change for each arch. Does  
merge-universal call the post-configure procedure once for each arch  
with the correct value of ${configure.universal_cflags} and $ 
{worksrcpath} for that arch? I don't think it does, but I imagine  
that "weird" ports that don't have usual autoconf-based configure  
scripts are especially in need of help with universal builds, so I  
think we need to give the port the freedom to do things in post- 
configure or other pre- and post- phases, per arch.




More information about the macports-dev mailing list