Blacklisting compiler versions or build numbers

Craig Treleaven ctreleaven at cogeco.ca
Sun Nov 25 12:10:03 PST 2012


At 11:48 AM -0500 11/25/12, Jeremy Huddleston Sequoia wrote:
>On Nov 25, 2012, at 8:54 AM, Bradley Giesbrecht <pixilla at macports.org> wrote:
>
>>  On Nov 24, 2012, at 8:10 PM, Ryan Schmidt wrote:
>>
>>>  One idea that occurs to me is modifying the compiler.blacklist 
>>>syntax. For example:
>>>
>>>  "compiler.blacklist clang" would blacklist all versions of clang, 
>>>as it does now.
>>>
>>>  "compiler.blacklist clang<318.0.61" would blacklist clang builds 
>>>less than 318.0.61 (cairo might use this).
>>>
>>>  "compiler.blacklist clang>=421.11.66" would blacklist clang 
>>>builds greater than or equal to 421.11.66 (mpich might use this).
>>>
>>>  "compiler.blacklist 421.11.66<=clang<444" would blacklist clang 
>>>builds greater than or equal to 421.11.66 and less than 444 (mpich 
>>>might use this, if whatever clang bug it hit is fixed in some 
>>>hypothetical future clang build 444).
>>
>>
>>  Would the last example be easier to write, read, debug and 
>>document as key/value pairs over two line?
>>  compiler.blacklist clang<444
>>  compiler.blacklist clang>=421.11.66
>
>Unfortunately that won't work as the first would be overwritten by 
>the second ... even with the use of -append, the default logic of 
>the blacklist is "or" for each element.  I'd suggest that if the 
>element is a list, then it is examined for versions.  If it is a 
>literal, then the entire family is blacklisted.  I like something 
>like this:
>
># All clang versions blacklisted
>compiler.blacklist-append clang
>
># clang < 308 blacklisted:
>compiler.blacklist-append {clang < 308}
>
># clang >= 421.11.66 and < 444 blacklisted
>compiler.blacklist-append {clang >= 421.11.16 < 444}

Not sure how the parsing works for the last example.  For 
mythtv-core.25, I tested a bunch of compilers to find a few that 
worked.  Eg:

# See https://trac.macports.org/ticket/35934
compiler.blacklist  llvm-gcc-4.2 macports-llvm-gcc-4.2 macports-clang-3.1 \
                     dragonegg-3.0 dragonegg-3.1 apple-gcc-4.2
compiler.fallback-append macports-clang-3.0

# Run time failures with XCode 4.4.x and 4.5.0
if {[vercmp $xcodeversion 4.4] >= 0} {
     compiler.blacklist-append clang
}

# TODO: This should be done by base
# https://trac.macports.org/ticket/32542
if {${configure.compiler} == "macports-clang-3.0"} {
     depends_build-append port:clang-3.0
     depends_skip_archcheck-append clang-3.0
}

Assuming that some future version of Apple clang starts working (say 
the "444", above), how would this be expressed?

Craig


More information about the macports-dev mailing list