On Feb 27, 2013, at 01:53, Vincent Habchi wrote:
> On 27 févr. 2013, at 06:25, Ryan Schmidt wrote:
>
>> The build machine is not necessarily the same as the machine that will end
>> up running the code, especially since we have buildbots that make binary
>> packages.
>
> True, but there is no PPC buildbot AFAIK,
Correct.
> and that’s the only case of mono-processor Apple machines; even the first x86
> machines were CoreDuo based, if I’m not mistaken.
I think there was a Core Solo Mac mini (?), but definitely not a large portion
of the user base today.
> We already have debated about Atlas – personally, I think the best solution
> would be to disable binary download altogether, since the code is so closely
> tied to the underlying hardware. It doesn’t make sense to use code built for
> another CPU because it can be under- or over-optimized.
Feel free to do that if you feel that's the best solution. Just add this line:
archive_sites
>> This should be selectable by variant. There should be two
>> mutually-conflicting variants, and which one is default should be selected
>> based on your check above. The buildbots are multiprocessor so they will
>> build the multiprocessor version; if a user has a single CPU then they'll
>> build that on their own machine.
>
> The threaded version of Atlas won’t build on mono-processor machines because
> OpenMP denies the creating of threads and Atlas raises an assertion. So the
> choice if somehow forced. Besides, on multicore machines, both serial and
> threaded version are built…
OK.
Then the remaining objections I have are:
>>> +pre-fetch {
>>> + # If we run on a mono-processor machine (PPC), then disable threading
>>> +
>>> + if {![catch {sysctl hw.logicalcpu} result] && $result == 1} {
>>> + configure.args-append -t 0
>>> + ui_msg "Building sequential only version of atlas."
>>> + }
>>> +}
The ui_msg should be deleted, and appending to configure.args should either
happen in the global part of the portfile (not in a phase), or should happen in
the pre-configure phase; any other time (including pre-fetch) is not reliable
as the user might run the phases separately.
It also might be nice to set a global variable to indicate single- or
multi-processor, instead of running sysctl multiple times.
_______________________________________________
macports-dev mailing list
[email protected]
https://lists.macosforge.org/mailman/listinfo/macports-dev