setting a variable in a variant for later use

Jonathan Stickel jjstickel at gmail.com
Thu Oct 18 09:28:46 PDT 2012


On 10/18/12 09:54 , Joshua Root wrote:
> On 2012-10-19 02:49 , Jonathan Stickel wrote:
>> On 10/18/12 09:35 , Joshua Root wrote:
>>> On 2012-10-19 02:16 , Jeremy Lavergne wrote:
>>>>> I am trying to set a variable in a variant for later use in
>>>>> another variant, but I am getting errors that the variable does
>>>>> not exist. Here are the relevant lines:
>>>>
>>>> Try wrapping your code in "if {[variant_isset ...]} {...}" rather
>>>> than inside a variant block--much like how default_variants is used
>>>> in your code.
>>>
>>> That's probably the best approach, since variants aren't guaranteed
>>> to be evaluated in any particular order.
>>>
>>> - Josh
>>>
>>
>> Thanks for the prompt, although terse, responses. I am not sure I
>> follow. It seems like this would create verbose, nested variants, which
>> I was hoping to avoid. Can you provide a simple example?
>
> variant python26 conflicts python27 description {Configure to use Python
> version 2.6} {}
> variant python27 conflicts python26 description {Configure to use Python
> version 2.7} {}
>
> if { ![variant_isset python26] } {
>      default_variants      +python27
> }
> if {[variant_isset python26]} {
>      set python.version 26
> } elseif {[variant_isset python27]} {
>      set python.version 27
> }
>
> variant tkinter description {use py-tkinter backend} {
>      depends_lib-append  port:py${python.version}-tkinter
> }
> variant pygtk description {use py-gtk backend} {
>      depends_lib-append  port:py${python.version}-gtk
> }
>
> default_variants-append    +pygtk
>

Thanks! This is logical and works fine. I did not know empty variants 
were allowed.

I implemented the above and attached a patch to 
https://trac.macports.org/ticket/35791

Jonathan


More information about the macports-dev mailing list