svn commit: r542599 - in head/misc/qtchooser: . files
Adriaan de Groot
adridg at FreeBSD.org
Sun Jul 19 21:37:57 UTC 2020
Author: adridg
Date: Sun Jul 19 21:37:56 2020
New Revision: 542599
URL: https://svnweb.freebsd.org/changeset/ports/542599
Log:
Massage misc/qtchooser
- expand documentation of the tool used to manage the links; while we
have only Qt5 in the tree the whole thing is rather moot, it's good
to tidy up before Qt6 shows up on the horizon.
- update the documentation in the Makefile to reflect the current
state of Uses/qt.mk
I've bumped PORTREVISION because the package contents will change
with the updated script, but there's no functional change at all.
SVN hooks have forced me to remove svn:executable from the
script file, but this doesn't change the resulting permissions
on the installed executable and script.
PR: 242905
Modified:
head/misc/qtchooser/Makefile
head/misc/qtchooser/files/update-qtchooser-wrapper.in (contents, props changed)
Modified: head/misc/qtchooser/Makefile
==============================================================================
--- head/misc/qtchooser/Makefile Sun Jul 19 21:10:59 2020 (r542598)
+++ head/misc/qtchooser/Makefile Sun Jul 19 21:37:56 2020 (r542599)
@@ -2,7 +2,7 @@
PORTNAME= qtchooser
PORTVERSION= 66
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= misc
MASTER_SITES= QT/official_releases/${PORTNAME}
DIST_SUBDIR= KDE/Qt/qtchooser
@@ -18,11 +18,12 @@ DESTDIRNAME= INSTALL_ROOT
MAKE_ARGS= prefix=${PREFIX}
SUB_FILES= update-qtchooser-wrapper
-# Keep this synchronized with qt.mk
+# Keep this synchronized with Uses/qt.mk
SUB_LIST= QT_SUPPORTED="5"
-# bin/linguist
-CONFLICTS_INSTALL= rubygem-github-linguist rubygem-github-linguist47 rubygem-gitlab-linguist
+# bin/linguist -- the second bunch no longer exists in the ports tree
+CONFLICTS_INSTALL= rubygem-github-linguist
+CONFLICTS_INSTALL+= rubygem-github-linguist47 rubygem-gitlab-linguist
QT_QTCHOOSERDIR=${PREFIX}/etc/xdg/qtchooser
@@ -32,14 +33,20 @@ post-patch:
post-install:
# Install qtchooser config file. Note this is not optimal.
-# -> we could install the qtchooser config files via devel/qmake[45].
+# -> we could install the qtchooser config files via devel/qt5-qmake.
# Unfortunately they will be missing for ports that only use say "rcc"
# without qmake.
# So it is easier to install the config files in qtchooser.
-# -> As we cannot include bsd.qt.mk at the moment without specifying
+# -> As we cannot include Uses/qt.mk at the moment without specifying
# a version, we also do not have the variables needed to sub the variables
-# properly (this will probably change with qt.mk).
-# Always make sure the following is in sync with bsd.qt.mk for now.
+# properly (we could use USES=qt:5 just to get _QT_SUPPORTED, but that
+# is a lot of overkill).
+#
+# Always make sure the following is in sync with Uses/qt.mk .
+# At the very least all the _QT_SUPPORTED versions should be
+# in the .for loop, although we still keep Qt4 around over a year
+# after it was removed from the ports tree.
+#
${MKDIR} ${STAGEDIR}${QT_QTCHOOSERDIR}
.for qt_version in 4 5
${ECHO} ${PREFIX}/lib/qt${qt_version}/bin > ${STAGEDIR}${QT_QTCHOOSERDIR}/qt${qt_version}.conf
Modified: head/misc/qtchooser/files/update-qtchooser-wrapper.in
==============================================================================
--- head/misc/qtchooser/files/update-qtchooser-wrapper.in Sun Jul 19 21:10:59 2020 (r542598)
+++ head/misc/qtchooser/files/update-qtchooser-wrapper.in Sun Jul 19 21:37:56 2020 (r542599)
@@ -2,18 +2,24 @@
# $FreeBSD$
-# If a port installs Qt version-specific binaries (e.g. "designer" which existed as a Qt4 application
-# and exists as a Qt5 application and will probably be a Qt6 application) which should have a
-# qtchooser-based wrapper, the port should set `QT_BINARIES=yes`.
+# If a port installs Qt version-specific binaries (e.g. "designer" which
+# existed as a Qt4 application and exists as a Qt5 application and will
+# probably be a Qt6 application) which should have a qtchooser-based
+# wrapper, the port should set `QT_BINARIES=yes`.
#
-# When QT_BINARIES is set to yes, compatibility symlinks (designer -> qtchooser, so that
-# qtchooser can run designer-qt5 or whatever is the selected Qt version) are installed by the port.
+# When QT_BINARIES is set to yes, compatibility symlinks (in bin/,
+# designer -> qtchooser, so that qtchooser can run designer-qt5 or
+# whatever is the selected Qt version) are installed by the port.
+#
+# Versioned binaries in ports are conventionally installed in <ver>/bin/,
+# so qt5/bin/designer is the versioned form of "designer".
PREFIX=%%PREFIX%%
BINDIR=${PREFIX}/bin
QTCHOOSER=${BINDIR}/qtchooser
VERSIONS=%%QT_SUPPORTED%%
+# Sanity-checking. Distinguish weird failure cases by exit code.
if [ ! -d ${BINDIR} ] ; then
echo "Binary directory '${BINDIR}' missing." >&2
exit 1
@@ -24,17 +30,31 @@ if [ ! -x ${QTCHOOSER} ] ; then
exit 2
fi
+# Remove links-to-qtchooser that are no longer needed.
+#
+# We check in ${BINDIR} -- only **directly** in bindir, hence the
+# `-maxdepth 1` -- for symlinks to qtchooser. Those are unversioned
+# names (e.g. designer -> qtchooser) for the case where qtchooser
+# should pick the right one.
+#
+# If there aren't any versioned names for the same, remove the link
+# (e.g. when designer is removed from the versioned bin/ directory
+# under qt5/bin/, then designer -> qtchooser can go as well).
+#
remove_links() {
for file in $(find -L ${BINDIR} -maxdepth 1 -samefile ${QTCHOOSER}) ; do
+ # Only symlinks count, since qtchooser lives here too
if [ ! -L ${file} ] ; then
continue
fi
- # If at least one versioned executable is found for this name, keep the
- # qtchooser compatibility symlink for this name; otherwise, remove it.
+ # If at least one versioned executable is found for this name,
+ # keep the qtchooser compatibility symlink for this name;
+ # otherwise, remove it.
local found=0
for version in ${VERSIONS} ; do
version_bin_dir=${PREFIX}/lib/qt${version}/bin
target=${version_bin_dir}/$(basename ${file})
+ # Only need to find **one** to keep the link.
if [ -x ${target} ] ; then
found=1
break
@@ -46,11 +66,22 @@ remove_links() {
done
}
+# Create links-to-qtchooser when a versioned application is installed.
+#
+# We check directly under the versioned bin/ directories, not in subdirectories
+# of bin/ -- so we need `-maxdepth 1` -- for names which can be hooked up to
+# qtchooser. Each of the names in the versioned bin/ dir is connected to
+# qtchooser if there isn't already a link of that name.
+#
create_links() {
for version in ${VERSIONS} ; do
version_bin_dir=${PREFIX}/lib/qt${version}/bin
if [ -d ${version_bin_dir} ] ; then
for file in $(find ${version_bin_dir} -type f -maxdepth 1) ; do
+ # target is the **unversioned** one (e.g.
+ # designer, living in bin/) which needs to
+ # be pointed at qtchooser because there is a
+ # **versioned** designer in e.g. qt5/bin/.
target=${BINDIR}/$(basename ${file})
if [ ! -L ${target} -a ! -f ${target} ] ; then
ln -s ${QTCHOOSER} ${target}
More information about the svn-ports-all
mailing list