[MacPorts] #14147: port lint should warn on illegal variant names

Rainer Müller raimue at macports.org
Sat Feb 2 15:30:18 PST 2008


MacPorts wrote:
> #14147: port lint should warn on illegal variant names
> -------------------------------------+--------------------------------------
>  Reporter:  ryandesign at macports.org  |       Owner:  macports-tickets at lists.macosforge.org
>      Type:  enhancement              |      Status:  new                                  
>  Priority:  Normal                   |   Milestone:  MacPorts base enhancements           
> Component:  ports                    |     Version:  1.7.0                                
>  Keywords:                           |  
> -------------------------------------+--------------------------------------
>  `port lint` should warn when it encounters variants whose names are not
>  composed entirely of legal characters. I'm not sure if the list of legal
>  characters for variant names has ever been defined anywhere before, but
>  looking through all variant names of all ports right now, I see that they
>  are all composed of letters A-Z and a-z, numbers 0-9, underscore and
>  hyphen/dash, and the hyphen/dash is the only one of those that causes
>  problems. (A variant with a hyphen/dash in the name cannot be selected.)
>  So `port lint` should warn if a variant name does not match the regular
>  expression `^[A-Za-z0-9_]+$`
> 
>  Related: the guide should say something about valid variant names; see
>  #14141.

In ''proc variant'' itself are no checks at all, the first argument 
("provides") is taken as the variant name (see port1.0/portutil.tcl, 
proc variant {args}).

But in other places there are checks for validity.

port1.0/portutil.tcl, handle_default_variants:
  if {[regexp {([-+])([-A-Za-z0-9_]+)} $v whole val variant]} {

port/port.tcl, split_variants:
  set l [regexp -all -inline -- {([-+])([[:alpha:]_]+[\w\.]*)} $variants]


If there should be no hyphens/dashes in variant names, the regex in the 
ticket is correct and the one in handle_default_variants is wrong. I am 
unsure if I understand the regex in split_variants correctly... Maybe 
they should be unified to a single regex for variant names which can be 
used in multiple places.

Rainer


More information about the macports-dev mailing list