[Development] New proposal for the tool naming
BRM
bm_witness at yahoo.com
Sat Oct 20 23:41:40 CEST 2012
FWIW, +1 - with one modification - reflect at least the minor version in the install path - so $prefix/libexec/qt5.0, if not $prefix/libexec/qt5.0.0.
I think there is probably a simple rule we could maintain: Keeping the names of developer visible tools the same is, IHMO, a must. Tools that are not developer visible, but called through generated build environments (e.g. Makefiles generated by Qmake) can be changed.
$0.02
Ben
----- Original Message -----
> From: Thiago Macieira <thiago.macieira at intel.com>
> To: development at qt-project.org
> Cc:
> Sent: Friday, October 19, 2012 7:16 PM
> Subject: [Development] New proposal for the tool naming
>
> Starting a new thread with some ideas based on the outcomes of the discussion.
> Many thanks to rittk, Simon, Lars and André who helped come up with this.
>
> Note: this applies to the *tools* only. The library naming and installation
> paths for plugins and QML files has remained uncontested so far, so we appear
> to have a consensus.
>
> The proposal:
>
> 1) we introduce a $libexecdir configuration option to qmake and QLibraryInfo.
> For backwards compatibility, this $libexecdir will receive the legacy names of
> QT_INSTALL_BINS and QLibraryInfo::BinariesPath. It will default to
> $prefix/libexec/qt5, which some distros will change to $prefix/lib/qt5/libexec.
>
> This directory is *not* expected to be in $PATH on any system and therefore
> the documentation cannot assume it is.
>
> In this directory, we'll install the tools not usually run by the user,
> tools
> that are often run by other tools. They will keep their current names. These
> tools are:
> qmake
> moc
> rcc
> uic
> qdbusxml2cpp
> qdbuscpp2xml
> lconvert
> lrelease
> lupdate
> qml*
> qhelpgenerator
> qhelpconverter
> qcollectiongenerator
> qdoc
>
> 2) the $bindir, defaulting to $prefix/bin, will now be found by qmake property
> QT_INSTALL_APPS and QLibraryInfo::ApplicationsPath. It contains end-user
> applications that retain backwards compatibility of purpose as well as output.
> Those applications are:
> qdbus
> qdbusviewer
> designer
> assistant
> linguist
> qglinfo
> pixeltool
> [creator]
>
> I'm open to suggestions on whether some of the tools should be symlinked
> here
> (e.g., qmlscene5 -> $libexecdir/qmlscene).
>
> 3) In addition, we'll create a *new* tool also called qmake that will be
> installed to $bindir. This tool shall have the following behaviours:
>
> a) under most circumstances, it will simply find another qmake and pass
> through all arguments. That is:
> qmake -project
> basically will exec
> $someotherpath/qmake -project
>
> b) additionally, it accepts an extra argument (-select), which causes it to
> select a different Qt version. For example:
> qmake -qt=5 -project
> qmake -qt=4.8.4 CONFIG+=debug
> etc.
> As a shorthand, the option "-qtX" means "-qt=X".
> This argument will be stripped from the command-line before calling the real
> qmake.
> Without this option, it will fall back to a well-known environment variable
> (say, QT_SELECT=5). And if that is also missing, it selects some system-defined
> or user-defined default.
>
> c) it adds one extra option: -print-versions, which will list which Qt
> versions are known to this tool
>
> It is our intention that this new tool replace all pre-existing qmake found
> in $PATH. One tool to rule them all. Creator can query this tool to find all
> known Qt versions and populate its listing.
>
> In turn, the official Qt 5 documentation should always talk about qmake like
> so:
> qmake -qt5 "LIBS+=-L/usr/local/lib -lmysqlclient_r" mysql.pro
>
> This allows the Troll qset function to be implemented like:
> function qset() {
> local prefix=$(qmake -qt=$1 -query QT_INSTALL_PREFIX)
> if [ $? -gt 0 ]; then
> echo >&2 No such Qt version "$1"
> else
> export QT_SELECT=$1
> export QTDIR=$prefix
> local libdir=$(qmake -query QT_INSTALL_LIBS)
> export LD_LIBRARY_PATH=$libdir${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH)
> export PKG_CONFIG_PATH=$libdir/pkgconfig:$PKG_CONFIG_PATH
> # optional:
> #PATH=$(qmake -query QT_INSTALL_BINS):$PATH
> fi
> }
> function qcd() { cd $QTDIR; }
>
> Additionally, this tool may support options like -add-qt and -set-default-qt.
> I'm also open to adding an option -run-tool= (e.g., qmake -qt=5 -run-
> tool=qmlplugindump) if that's of interest to people.
>
> I haven't decided whether this tool should be a shell script, a perl script
> or
> another bootstrapped executable.
>
> Please comment.
>
> --
> Thiago Macieira - thiago.macieira (AT) intel.com
> Software Architect - Intel Open Source Technology Center
>
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development
>
More information about the Development
mailing list