Trying to build libidl+universal on 10.5 fails. I’m set up to build it 
universal, with universal_archs as i386 and x86_64. It uses the muniversal 
portgroup, which I don’t know tons about.

It fails because an environment variable doesn’t get set properly during the 
x86_64 build:

checking for access... yes
checking size of long long... 8
checking for format to printf and scanf a guint64... configure: error: in 
`/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_libidl/libidl/work/libIDL-0.8.14-x86_64':
configure: error: cannot run test program while cross compiling


In the Portfile, there is this block:

# Required when cross-compiling.
if { ${os.arch} eq "i386" } {
    if { ${os.major} >= 10 } {
        set merger_configure_env(ppc) libIDL_cv_long_long_format=ll
    }
    set merger_configure_env(ppc64)   libIDL_cv_long_long_format=ll
} else {
    set merger_configure_env(i386)    libIDL_cv_long_long_format=ll
    set merger_configure_env(x86_64)  libIDL_cv_long_long_format=ll
}


I don’t really understand why this block would do what it’s doing. Doesn’t seem 
to make sense to me. However, this same block, or variants thereof, are in many 
Portfiles, so it’s apparently the recommended way….


Anyway, I replaced that block with this, which just seems more like what is 
meant to be done to me, and it works.

# Required when cross-compiling.
foreach arch ${configure.universal_archs} {
    lappend merger_configure_env(${arch})  libIDL_cv_long_long_format=ll
}



Am I missing something? Are all those blocks in all those Portfiles incorrect?

Ken

Reply via email to