Proposal: variants naming conventions

Randall Wood rhwood at mac.com
Sun Feb 11 19:31:08 PST 2007


On 11 Feb 2007, at 13:12, Yves de Champlain wrote:

>
> Le 07-02-11 à 10:25, Randall Wood a écrit :
>
>> I have noticed that most variants add or delete a configure flag  
>> in the form of --enable-*/--disable-*/--with-*/--without-* and  
>> maybe add or delete a related dependency.
>>
>> Therefore, I propose that all variants should fit the following  
>> forms:
>>
>> {en|dis}able_package: If a ported software package has optional  
>> compile-time features, the user can give configure command line  
>> options to specify whether to compile them. The options have one  
>> of these forms:
>> --enable-feature
>> --disable-feature

These should be +enable_feature and +disable_feature

>> (Note that this is slightly different then how configure scripts  
>> work[1]).
>>
>> with[out]_package: When a port requires, or can optionally use,  
>> other ports that can be or already are installed. The user can  
>> give configure command line options to specify which such external  
>> software to use. A port can be written with options have one of  
>> these forms:
>> +with_package
>> +without_package
>> (Note that this is slightly different then how configure scripts  
>> work[2]).
>>
>> (Most configure scripts allow these options to passed with further  
>> information in the form of --option=arg where a reasonable default  
>> is set if =arg is not specified. port can't handle that, so =arg  
>> is not allowed in variant names and this proposal does not  
>> contemplate changing that)
>>
>> Changing this variant structure has, I believe, the following  
>> benefits:
>>
>> 1) Adding the verb enable/disable/use/with/without makes the  
>> variant more meaningful to users. I know there have been comments  
>> on the mailing list about the inability to comment on variants  
>> such that 'port info' is capable of explaining what each variant  
>> does. The verb will help address those complaints.
>>
>> 2) There are currently variants no-*, no_*, and no* These are  
>> inconsistent and do not tell me (the user) if I am disabling a  
>> feature (that some other port may depend on) or simply building  
>> the port without using some other package.
>>
>> 3) Negative variants are confusing. with_*/without_* or enable_*/ 
>> disable_* is more readable than +*/-* as an indicator of  what is  
>> going on.
>
> I agree on both the usefulness of this undertaking and the logic of  
> this proposal.
>
> However, two points are less clear for me :
>
> 1- You seem to propose "use" and "add" keywords, but I don't see  
> their usefulness.  [en|dis]able and with[out] look plain perfect to  
> me, unless there is somme case I miss.

The "use" keyword was left over from a similar proposal from May  
2006. Sorry about that. It should not have been in there.

"add" keyword? I have not proposed any such thing; I merely hope my  
grammar it not that bad.

> 2- My experience is that variant names should not include "-"  
> because of the way arguments are parsed.  I always use underscore  
> "_" because of that, but if I am wrong, I would be glad to know !

I know. I would like it if that could change, although I don't see it  
changing as long as negative variants are allowed.

> Finally, shouldn't ports build most of the functionnalities by  
> default ?  Maybe it is a good time to say it again.

I think that the richest port possible should be the default port,  
however, I also am aware that say, when a port needs a database and  
that the database requirement can be solved using 1 of 9 different  
ports, that the use of variants will be almost certainly required.

There have been situations, at least in the GNOME ports, where I have  
had to turn off functionality for compatibility or reliability when  
shipping a port, and have left it optional for those who wanted it.

>
> yves
>


Randall Wood
rhwood at mac.com

"The rules are simple: The ball is round. The game lasts 90 minutes.  
All the
rest is just philosophy."





More information about the macports-dev mailing list