wiki:Variants

Version 2 (modified by rhwood@…, 17 years ago) (diff)

Minor syntax fix

Variants are a powerful feature of the MacPorts port system that allow users to install ports in other than the default manner, optionally enabling or disabling a feature or building a port with or without a dependency.

default_variants

In a portfile, you may use the line: default_variants variant1 variant2... to indicate that the port should, by default, build with those variants.

Breaking variants out of the main port into conflicting variants where one variant is the default variant has the benifit of installing the port with the default variant embedded in the version. Consider the following ports:

port Foo

version 1
configure.args --enable-this --enable-that
variant disable_this {
    configure.args_delete --enable-this
    configure.args_append --disable-this
}

port Bar

version 1
configure.args --enable-that
default_variants +enable_this
variant enable_this conflicts disable_this {
    configure.args_append --enable-this
}
variant disable_this conflicts enable_this {
    configure.args_append --disable-this
}

When a user installs port Foo, port Foo installs as version @1_0 while port Bar installs as version @1_0+enable_this. Due to the way port Bar was written, the user knows what variants were applied when the port was installed.