#47904: cmake @3.2.2_0: variants are a confusing mess -----------------------+------------------------- Reporter: larryv@… | Owner: michaelld@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.3.3 Resolution: | Keywords: Port: cmake | -----------------------+------------------------- Description changed by larryv@…: Old description:
I won’t mince words: `cmake`’s variants make no sense. Half of them only exist if one of the other half are selected. This is not discoverable at all, and I suspect most users only realize that they had a choice after they install `cmake`.
----
Say I want to install CMake. {{{ % port variants cmake cmake has the variants: docs: Build documentation: HTML and manpages gui: Build Qt-based cmake-gui universal: Build for multiple architectures }}}
Looks like I have three choices. Cool. I decide to build cmake-gui and the documentation. {{{ % sudo port install cmake +docs +gui ---> Computing dependencies for cmake The following dependencies will be installed: dbus lcms libmng py27-alabaster py27-babel py27-docutils py27-jinja2 py27-pygments py27-roman py27-six py27-snowballstemmer py27-sphinx py27-sphinx_rtd_theme py27-tz python27 qt4-mac sphinx_select Continue? [Y/n]: }}}
Eh. Maybe I already have Python 3.4 installed, and I’d rather not install Python 2.7, but it doesn’t look like I have a choice, so I’ll just go with it. But the `+gui` variant seems to require `qt4-mac`. What if I have `qt5-mac` installed? Those conflict, so I guess I’ll just go without the GUI.
Except that that wasn’t necessary at all. Turns out I do have choices, but they’re utterly undiscoverable. I’d have to check the list variants //after already selecting a variant//, which is something I never think to do. {{{ % port variants cmake +docs +gui cmake has the variants: +docs: Build documentation: HTML and manpages +gui: Build Qt-based cmake-gui [+]python27: Build documentation using Sphinx from Python 2.7 * conflicts with python34 python34: Build documentation using Sphinx from Python 3.4 * conflicts with python27 [+]qt4: Build Qt GUI using Qt4 * conflicts with qt5 qt5: Build Qt GUI using Qt5 * conflicts with qt4 universal: Build for multiple architectures }}}
`cmake` should eliminate this weird two-level thing and instead present all its variants up front. Something like this. {{{ % port variants cmake cmake has the variants: docs_py27: Build HTML docs and manpages using Sphinx from Python 2.7 * conflicts with docs_py34 docs_py34: Build HTML docs and manpages using Sphinx from Python 3.4 * conflicts with docs_py27 gui_qt4: Build cmake-gui with Qt4 * conflicts with gui_qt5 gui_qt5: Build cmake-gui with Qt5 * conflicts with gui_qt4 universal: Build for multiple architectures }}}
----
No patch to offer, I’m afraid. Sorry for the anticlimax. Feel free to let this lie fallow until I whip up something.
New description: I won’t mince words: `cmake`’s variants make no sense. Half of them only exist if one of the other half are selected. This is not discoverable at all, and I suspect most users only realize that they had a choice after they install `cmake`. ---- Say I want to install CMake. {{{ % port variants cmake cmake has the variants: docs: Build documentation: HTML and manpages gui: Build Qt-based cmake-gui universal: Build for multiple architectures }}} Looks like I have three choices. Cool. I decide to build cmake-gui and the documentation. {{{ % sudo port install cmake +docs +gui ---> Computing dependencies for cmake The following dependencies will be installed: dbus lcms libmng py27-alabaster py27-babel py27-docutils py27-jinja2 py27-pygments py27-roman py27-six py27-snowballstemmer py27-sphinx py27-sphinx_rtd_theme py27-tz python27 qt4-mac sphinx_select Continue? [Y/n]: }}} Eh. Maybe I already have Python 3.4 installed, and I’d rather not install Python 2.7, but it doesn’t look like I have a choice, so I’ll just go with it. But the `+gui` variant seems to require `qt4-mac`. What if I have `qt5-mac` installed? Those conflict, so I guess I’ll just go without the GUI. Except that that wasn’t necessary at all. Turns out I do have choices, but they’re utterly undiscoverable. I’d have to check the list of variants //after already selecting a variant//, which is something I never think to do. {{{ % port variants cmake +docs +gui cmake has the variants: +docs: Build documentation: HTML and manpages +gui: Build Qt-based cmake-gui [+]python27: Build documentation using Sphinx from Python 2.7 * conflicts with python34 python34: Build documentation using Sphinx from Python 3.4 * conflicts with python27 [+]qt4: Build Qt GUI using Qt4 * conflicts with qt5 qt5: Build Qt GUI using Qt5 * conflicts with qt4 universal: Build for multiple architectures }}} `cmake` should eliminate this weird two-level thing and instead present all its variants up front. Something like this. {{{ % port variants cmake cmake has the variants: docs_py27: Build HTML docs and manpages using Sphinx from Python 2.7 * conflicts with docs_py34 docs_py34: Build HTML docs and manpages using Sphinx from Python 3.4 * conflicts with docs_py27 gui_qt4: Build cmake-gui with Qt4 * conflicts with gui_qt5 gui_qt5: Build cmake-gui with Qt5 * conflicts with gui_qt4 universal: Build for multiple architectures }}} ---- No patch to offer, I’m afraid. Sorry for the anticlimax. Feel free to let this lie fallow until I whip up something. -- -- Ticket URL: <https://trac.macports.org/ticket/47904#comment:1> MacPorts <https://www.macports.org/> Ports system for OS X