[MacPorts] #52742: buildbot: add support for building variants
MacPorts
noreply at macports.org
Sat Oct 29 10:42:21 CEST 2016
#52742: buildbot: add support for building variants
-----------------------------+---------------------
Reporter: mojca | Owner: admin@…
Type: enhancement | Status: new
Priority: Normal | Milestone:
Component: server/hosting | Version:
Resolution: | Keywords:
Port: buildbot |
-----------------------------+---------------------
Comment (by mojca):
The patches are pretty outdated, but they should give the first
impression. I wanted to fix the second one, but I should probably write
some code to parse options between `install-port` and `<portname>` first.
Some hints by Clemens about how to proceed:
> `tools/dependencies.tcl` just opens all ports
> without any specified variants. See `tools/dependencies.tcl` line 66;
the
> last parameter to `mportopen`, which is currently `{}`, is the list of
> variants. The format is easy to create:
>
> {{{
> array set variations {}
> set variations(quartz) "+"
> set variations(x11) "-"
> mportopen ... [array get variations]
> }}}
>
> gives you an mport reference as if the port was installed with
> `+quartz-x11`. You should be able to find some suitable parsing code for
> variants given on the command line in `src/port/port.tcl`, line 1695 and
> following.
>
>> Looking at that file I have an impression that we forgot to
>> consider global settings (`[array get global_variations]`):
>>
>> {{{
>> if {!$index_only} {
>> # Add any global_variations to the variations
>> # specified for the port (so we get e.g. dependencies right)
>> array unset merged_variations
>> array set merged_variations [array get variations]
>> foreach { variation value } [array get global_variations] {
>> if { ![info exists merged_variations($variation)] } {
>> set merged_variations($variation) $value
>> }
>> }
>> }}}
>>
>> This means that even if someone would (theoretically) set up a buildbot
>> with `+quartz -x11` in configuration file, those setting would probably
>> be ignored. Or do I misunderstand the concept?
>
> Yes, I think the file doesn't handle global variants. I think it's also
> bad design that `port/port.tcl` has to do the merging of variant specs
> without at least some library support from `macports1.0`, but that's a
> story for a different refactoring.
An additional warning:
> However, this output will only list positive variants, it will not list
> default variants that have been explicitly disabled. This might be a
> problem, because specifying `-x11 +quartz` will just give you a list of
> all dependencies with `+quartz`, but not without `+x11`, so if a port is
> written in a way that it does not automatically disable `x11` if
`+quartz`
> is given (for example if both are supported simultaneously and `x11` is
> the default), this might lead to unexpected results. I haven't tested
> any of this, but we probably should.
--
Ticket URL: <https://trac.macports.org/ticket/52742#comment:1>
MacPorts <https://www.macports.org/>
Ports system for OS X
More information about the macports-tickets
mailing list