Default +universal variant for configure-based ports
Blair Zajac
blair at orcaware.com
Sun Feb 25 23:34:29 PST 2007
That's a pretty important port, it's at the very bottom of any
dependency trees, so I think we should.
This kinda raises the point for me, that maybe we should consider having
a build farm of 10.3 and 10.4 PPC and i386 that check submissions, ala a
smoke test, and after each Subversion commit, the new Ports are built on
all platforms. If it breaks, the author of the commit gets an email.
I imagine that not everybody has 10.3 around, but I do consider it an
important OS X release, as many corporations still haven't upgraded
everything to 10.4 yet.
Thanks,
Blair
Elias Pipping wrote:
> Well, i could comment it out for now - until 1.4.0 is out. Should I?
> that option is indeed needed for +universal to work, though.
>
>
> Regards,
>
> Elias Pipping
>
>
> On Feb 26, 2007, at 8:23 AM, Blair Zajac wrote:
>
>> And do we have to wait for MacPorts 1.4.0 before using these new
>> commands.
>>
>> For example, right now libiconv is broken. If you try to build
>> something that depends upon it:
>>
>> $ port -v build libxml2
>> Error: Unable to execute port: invalid command name
>> "configure.universal_ldflags-append"
>>
>> I'm presuming this is from this line in
>> dports/textproc/libiconv/Portfile:
>>
>> +configure.universal_ldflags-append \
>> + -isysroot /Developer/SDKs/MacOSX10.4u.sdk
>>
>> Regards,
>> Blair
>>
>> Blair Zajac wrote:
>>> Hi Paul,
>>> I looked through the diff for r22313 and didn't see anything that
>>> checks for OS X versions 10.3 or older, so will this break on older
>>> OSes? If it will break things, can you update the code to add this
>>> check?
>>> I support a binary install of MacPorts on a portable firewire drive
>>> that runs Apache, MySQL etc and we need to support 10.3 clients.
>>> Regards,
>>> Blair
>>> Elias Pipping wrote:
>>>> That is a lovely addition and I embrace it wholeheartedly.
>>>>
>>>> Now more than ever it brings up the need for a database that
>>>> contains information on which port builds on what platform and if
>>>> its variant +universal works, though.
>>>>
>>>> So a port would have these entries e.g.:
>>>>
>>>> db44 ppc i386 universal
>>>>
>>>> Panther ? ? ?
>>>> Tiger X ? X
>>>> Leopard ? ? ?
>>>>
>>>> or something like that. maybe i'm the only one to see it that way
>>>> but i find it problematic to just assume away every port builds on
>>>> every platform and is perfectly stable. also, is it really a good
>>>> idea to keep adding -devel ports instead of allowing a port to be
>>>> available as multiple "branches"? like bash 3.1.17 and 3.2.9 as a
>>>> 3.1 and a 3.2 branch (yes, i'm thinking of gentoo - stable, testing,
>>>> etc)?
>>>>
>>>>
>>>> Regards,
>>>>
>>>> Elias Pipping
>>>>
>>>>
>>>> On Feb 26, 2007, at 5:45 AM, Paul Guyot wrote:
>>>>
>>>>> Dear all,
>>>>>
>>>>> I've just implemented and committed a default +universal variant
>>>>> for configure-based ports. There's been some heat about +universal
>>>>> recently and I did not want every port to define the same code over
>>>>> and over.
>>>>>
>>>>> This variant is more or less equivalent to:
>>>>> variant universal {
>>>>> configure.args-append "--disable-dependency-tracking"
>>>>> configure.env-append CFLAGS="-isysroot
>>>>> /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
>>>>> LDFLAGS="-arch i386 -arch ppc"
>>>>> }
>>>>>
>>>>> However, there is some additional magic:
>>>>> * selecting the variant will fail if the port doesn't invoke
>>>>> configure (because user may think they can build the port universal
>>>>> while it would be effectless)
>>>>> * selecting the variant will print a warning message if the port
>>>>> already overrides LDFLAGS or CFLAGS in the environment for the
>>>>> configure command
>>>>> * you can add -O -g if the port requires it with just:
>>>>> configure.universal_cflags-append -O -g
>>>>> * you can simply redefine the variant to override the default code
>>>>> and provide port-specific handler for the universal variant.
>>>>>
>>>>> etc.
>>>>>
>>>>> The variant is documented in portfile(7). I tested it with several
>>>>> ports and it seems to just work®™.
>>>>>
>>>>> I'm considering some future enhancements, but let's see what it
>>>>> gives if we start building ports with +universal. Of course, the
>>>>> build will probably fail if dependencies were not built universal.
>>>>>
>>>>> Enjoy!
>>>>>
>>>>> Paul
More information about the macports-dev
mailing list