20 дек. 2014 г. 1:37 пользователь "Vadim Zhukov" <[email protected]>
написал:
>
> 1. When Qt4 came in, there were almost no qmake4 users.
>    Now there are many:
>
> cad/fritzing/Makefile:          ${LOCALBASE}/bin/qmake4 -o Makefile
phoenix.pro
> cad/openscad/Makefile:      ${SETENV} ${QMAKE_ENV} qmake4 ${QMAKE_FLAGS}
openscad.pro
> devel/beediff/Makefile: cd ${WRKSRC} && ${LOCALBASE}/bin/qmake4
beediff.pro
> devel/qt-creator/Makefile:      cd ${WRKBUILD} && QTDIR=${WRKDIR}/bin
qmake4 ${WRKSRC}/qtcreator.pro #CONFIG+=debug
> devel/qt-creator/Makefile:      qmake4 ${QTCDH_SRC_DIR}/gdbmacros.pro; \
> devel/qt4-eventsview/Makefile:  cd ${WRKDIST} && env -i ${CONFIGURE_ENV}
qmake4
> devel/qt4-qtsolutions-singleinstance/Makefile:  cd ${WRKSRC} &&
${LOCALBASE}/bin/qmake4
> editors/focuswriter/Makefile:   cd ${WRKSRC} && ${SETENV} ${MAKE_ENV}
${CONFIGURE_ENV} ${LOCALBASE}/bin/qmake4
> editors/qscintilla/Makefile:    cd ${WRKSRC} && ${SETENV}
${CONFIGURE_ENV} ${LOCALBASE}/bin/qmake4 \
> editors/teaqt/Makefile: cd ${WRKSRC} && qmake4
> editors/texmaker/Makefile:      qmake4  -spec
${MODQT_LIBDIR}/mkspecs/openbsd-g++ \
> editors/tiled/Makefile:         qmake4 -makefile tiled.pro -config release
> games/jag/Makefile:     cd ${WRKSRC} && ${LOCALBASE}/bin/qmake4 Game.pro
> games/pokerth/Makefile:         env -i ${CONFIGURE_ENV} qmake4
${MAKE_FLAGS} \
> geo/gpsbabel/Makefile:  cd ${WRKSRC}/gui && ${SETENV} ${CONFIGURE_ENV}
qmake4 \
> geo/merkaartor/Makefile:        cd ${WRKSRC} && env ${CONFIGURE_ENV}
qmake4 PROJ=1 NODEBUG=1 RELEASE=1 \
> graphics/opencsg/Makefile:      cd ${WRKSRC} && qmake4 src.pro
> multimedia/mlt/Makefile:        cd ${WRKSRC}/src/tests; ${SETENV}
${ALL_TEST_ENV} qmake4 tests.pro
> net/qsynergy/Makefile:  @cd ${WRKSRC} && ${LOCALBASE}/bin/qmake4
> net/retroshare/Makefile:        cd ${WRKSRC} && ${LOCALBASE}/bin/qmake4
RetroShare.pro
> productivity/entomologist/Makefile:             ${LOCALBASE}/bin/qmake4
${CONFIGURE_ARGS}
> productivity/fet/Makefile:      cd ${WRKSRC} && ${LOCALBASE}/bin/qmake4
fet.pro
> productivity/vym/Makefile:              ${LOCALBASE}/bin/qmake4
DOCDIR="${PREFIX}/share/doc/vym" vym.pro
> security/fwbuilder/Makefile:                    --with-qmake=qmake4 \
> security/kqoauth/Makefile:      cd ${WRKDIST} && ${LOCALBASE}/bin/qmake4 \
> security/qca-gnupg/Makefile:QMAKE =
 ${LOCALBASE}/bin/qmake4
> security/qoauth/Makefile:       cd ${WRKDIST} && ${LOCALBASE}/bin/qmake4 \
> security/yubikey-personalization-gui/Makefile:  cd ${WRKSRC};
CXXFLAGS="${CXXFLAGS}" qmake4
> sysutils/bacula/Makefile:
 QMAKE=${LOCALBASE}/bin/qmake4
> www/arora/Makefile:     @cd ${WRKSRC} && ${LOCALBASE}/bin/qmake4 -r
> www/minitube/Makefile:          ${LOCALBASE}/bin/qmake4 PREFIX=${PREFIX}
> x11/lumina/Makefile:    cd ${WRKSRC} && ${LOCALBASE}/bin/qmake4
> x11/py-qt4/Makefile:            --qmake="${LOCALBASE}/bin/qmake4" \
> x11/qrfcview/Makefile:          ${LOCALBASE}/bin/qmake4 rfcview.pro
> x11/qwt/files/Makefile.examples:            qmake4 $$I.pro && env
LOCALBASE=${LOCALBASE} gmake; \
> x11/qwt/Makefile:       @cd ${WRKSRC} && qmake4 -d -d -d
>
> 2. Now that Qt5 is coming in, and given that some ports already (and
>    many more will) support both Qt4 and Qt5, it may result in
>    maintaince burden, to tweak each such port in the way:
>
> .if ${FLAVOR:Mqt5}
> ...
> .else
> ...
> .endif
>
>
> I think everything above is job for port modules instead. So I
> propose to create x11/qt/qt.port.mk, that will call the right qmake.
> I left out all other logic duplicated between qt4.port.mk and
> qt5.port.mk, to allow print/poppler build (Qt5 support is on its
> way there already).
>
> The only real change is that MODQT*_WANTLIB becomes a trick itself:
> you can set up both MODQT4_WANLTIB and MODQT5_WANTLIB in a port,
> and use MODQT_WANTLIB in actual WANTLIB. This way you'll get the
> WANTLIB you want depending on Qt version you're using.
>
> The obvious downside is that we'll have a lot of "-qt5" FLAVORed
> ports...
>
> An alternative approach could be switching all Qt4 users to Qt5,
> or, at least, making sure that Qt4 won't mix in otherwise Qt5-ready
> software. Please remember that Qt4 will come out-of-support after
> 2015 ends, so we have to move quickly, and get everything clean
> at the 5.8 release lock.
>
> I don't insist on getting this in right now, but asking for ideas
> and comments for now. Thank you for your time.

So it looks like the consensus is that FLAVOR part shouldn't go in.

What about "qmake" CONFIGURE_STYLE then? Or just use "qt4" and "qt5"
instead?

> Index: qt/qt.port.mk
> ===================================================================
> RCS file: qt/qt.port.mk
> diff -N qt/qt.port.mk
> --- /dev/null   1 Jan 1970 00:00:00 -0000
> +++ qt/qt.port.mk       19 Dec 2014 22:22:51 -0000
> @@ -0,0 +1,30 @@
> +# $OpenBSD$
> +# This module is designed for ports that could use both Qt4 and Qt5.
> +# Almost all MODQT_* logic lives in x11/qt? modules.
> +# This allows simple transition between them and x11/qt port modules.
> +
> +MODQT_MANAGE_FLAVORS ?=        Yes
> +.if ${MODQT_MANAGE_FLAVORS:L} == "yes"
> +FLAVORS +=             qt5
> +.endif
> +
> +FLAVOR ?=
> +.if ${FLAVOR:Mqt5}
> +MODQT_FLAVOR ?=                qt5
> +.else
> +MODQT_FLAVOR ?=                qt4
> +.endif
> +
> +_MODQT_FLAVORS =       qt4 qt5
> +.if !${_MODQT_FLAVORS:M${MODQT_FLAVOR}}
> +ERRORS +=              "Fatal: Unsupported
MODQT_FLAVOR=${MODQT_FLAVOR}.\n"
> +.endif
> +
> +.if empty(CONFIGURE_STYLE)
> +CONFIGURE_STYLE +=     qmake
> +.endif
> +.if ${CONFIGURE_STYLE:Mqmake}
> +CONFIGURE_STYLE +=     ${MODQT_FLAVOR}
> +.endif
> +
> +MODULES +=     x11/${MODQT_FLAVOR}
> Index: qt4/qt4.port.mk
> ===================================================================
> RCS file: /cvs/ports/x11/qt4/qt4.port.mk,v
> retrieving revision 1.7
> diff -u -p -r1.7 qt4.port.mk
> --- qt4/qt4.port.mk     22 Nov 2010 08:37:04 -0000      1.7
> +++ qt4/qt4.port.mk     19 Dec 2014 22:22:51 -0000
> @@ -1,7 +1,7 @@
>  # $OpenBSD: qt4.port.mk,v 1.7 2010/11/22 08:37:04 espie Exp $
>
>  # This fragment defines MODQT_* variables to make it easier to substitute
> -# qt1/qt2/qt3 in a port.
> +# Qt3/Qt4/Qt5 in a port.
>  MODQT_OVERRIDE_UIC ?= Yes
>  MODQT4_OVERRIDE_UIC ?= ${MODQT_OVERRIDE_UIC}
>
> @@ -10,9 +10,6 @@ MODQT_LIBDIR ?= ${MODQT4_LIBDIR}
>  MODQT4_INCDIR =        ${LOCALBASE}/include/X11/qt4
>  MODQT_INCDIR ?= ${MODQT4_INCDIR}
>  MODQT_PKG_CONFIG_PATH ?= ${LOCALBASE}/lib/qt4/pkgconfig
> -MODQT4_CONFIGURE_ARGS =        --with-qt-includes=${MODQT4_INCDIR} \
> -                       --with-qt-libraries=${MODQT4_LIBDIR}
> -MODQT_CONFIGURE_ARGS ?= ${MODQT4_CONFIGURE_ARGS}
>  _MODQT4_SETUP =        MOC=${MODQT4_MOC} \
>                 MODQT_INCDIR=${MODQT4_INCDIR} \
>                 MODQT_LIBDIR=${MODQT4_LIBDIR} \
> @@ -26,6 +23,8 @@ MODQT4_MOC =  ${LOCALBASE}/bin/moc4
>  MODQT_MOC ?=   ${MODQT4_MOC}
>  MODQT4_UIC =   ${LOCALBASE}/bin/uic4
>  MODQT_UIC ?=   ${MODQT4_UIC}
> +MODQT4_QMAKE = ${MODQT4_LIBDIR}/bin/qmake
> +MODQT_QMAKE ?= ${MODQT4_QMAKE}
>  MODQT4_QTDIR = ${LOCALBASE}/lib/qt4
>  MODQT_QTDIR ?= ${MODQT4_QTDIR}
>
> @@ -33,10 +32,58 @@ MODQT4_LIB_DEPENDS =        x11/qt4
>  MODQT_LIB_DEPENDS ?=   ${MODQT4_LIB_DEPENDS}
>  LIB_DEPENDS +=                 ${MODQT4_LIB_DEPENDS}
>
> -MODQT4_WANTLIB =       lib/qt4/QtCore
> +MODQT4_WANTLIB +=      lib/qt4/QtCore
>  MODQT_WANTLIB ?=       ${MODQT4_WANTLIB}
>  WANTLIB +=             ${MODQT4_WANTLIB}
>
>  CONFIGURE_ENV +=${_MODQT4_SETUP}
>  MAKE_ENV +=    ${_MODQT4_SETUP}
>  MAKE_FLAGS +=  ${_MODQT4_SETUP}
> +
> +MODQT_QMAKE_ARGS ?=    ${CONFIGURE_ARGS}
> +MODQT4_QMAKE_ARGS ?=   ${MODQT_QMAKE_ARGS}
> +
> +MODQT_PROJECTS ?=
> +MODQT4_PROJECTS ?=             ${MODQT_PROJECTS}
> +.if ${CONFIGURE_STYLE:Mqt4}
> +  ALL_TARGET ?=
> +  MODQT4_ALL_TARGET ?=         ${ALL_TARGET}
> +  SEPARATE_BUILD ?=            No
> +. if ${SEPARATE_BUILD:L} == "flavored"
> +    ERRORS +=  "Fatal: flavored builds are not supported by qmake.\n"
> +. elif ${SEPARATE_BUILD:L} != "no"
> +    WRKBUILD ?=        ${WRKSRC}/build
> +. endif
> +
> +. if !empty(MODQT4_PROJECTS)
> +MODQT4_configure =     cd ${WRKSRC}/$$d;
> +MODQT4_BUILD_TARGET =
> +.   for _p in ${MODQT4_PROJECTS}
> +MODQT4_configure += \
> +       d=${_p%/*}; \
> +       mkdir -p ${WRKBUILD}/$$d; \
> +       env ${CONFIGURE_ENV} ${MODQT4_QMAKE} ${MODQT4_QMAKE_ARGS} \
> +           -o ${WRKBUILD}/$$d/${MAKE_FILE} ${_p};
> +MODQT4_BUILD_TARGET += \
> +       d=${_p%/*}; \
> +       cd ${WRKBUILD}/$$d; \
> +       ${_SYSTRACE_CMD} ${SETENV} ${MAKE_ENV} \
> +           ${MAKE_PROGRAM} ${MAKE_FLAGS} -f ${MAKE_FILE}
${MODQT4_ALL_TARGET};
> +.   endfor
> +. else
> +# assume there is only one QMake project, as recommended by Qt guideline
> +MODQT4_configure = \
> +       cd ${WRKSRC}; \
> +       ${SETENV} ${CONFIGURE_ENV} ${MODQT4_QMAKE} ${MODQT4_QMAKE_ARGS} \
> +           -o ${WRKBUILD}/${MAKE_FILE} *.pro;
> +MODQT4_BUILD_TARGET += \
> +       cd ${WRKBUILD}; \
> +       ${_SYSTRACE_CMD} ${SETENV} ${MAKE_ENV} \
> +           ${MAKE_PROGRAM} ${MAKE_FLAGS} -f ${MAKE_FILE}
${MODQT4_ALL_TARGET};
> +. endif
> +
> +. if !target(do-build)
> +do-build:
> +       @${MODQT4_BUILD_TARGET}
> +. endif
> +.endif
> Index: qt5/qt5.port.mk
> ===================================================================
> RCS file: /cvs/ports/x11/qt5/qt5.port.mk,v
> retrieving revision 1.6
> diff -u -p -r1.6 qt5.port.mk
> --- qt5/qt5.port.mk     11 Dec 2014 17:45:04 -0000      1.6
> +++ qt5/qt5.port.mk     19 Dec 2014 22:22:51 -0000
> @@ -1,7 +1,7 @@
>  # $OpenBSD: qt5.port.mk,v 1.6 2014/12/11 17:45:04 zhuk Exp $
>
>  # This fragment defines MODQT_* variables to make it easier to substitute
> -# qt4/qt5 in a port.
> +# Qt3/Qt4/Qt5 in a port.
>  MODQT_OVERRIDE_UIC ?=  Yes
>  MODQT5_OVERRIDE_UIC ?= ${MODQT_OVERRIDE_UIC}
>
> @@ -10,10 +10,6 @@ MODQT_LIBDIR ?= ${MODQT5_LIBDIR}
>  MODQT5_INCDIR =        ${LOCALBASE}/include/X11/qt5
>  MODQT_INCDIR ?= ${MODQT5_INCDIR}
>
> -MODQT5_CONFIGURE_ARGS =        --with-qt-includes=${MODQT5_INCDIR} \
> -                       --with-qt-libraries=${MODQT5_LIBDIR}
> -MODQT_CONFIGURE_ARGS ?=        ${MODQT5_CONFIGURE_ARGS}
> -
>  _MODQT5_SETUP =        MOC=${MODQT5_MOC} \
>                 MODQT_INCDIR=${MODQT5_INCDIR} \
>                 MODQT_LIBDIR=${MODQT5_LIBDIR}
> @@ -27,6 +23,8 @@ MODQT5_MOC =  ${LOCALBASE}/bin/moc-qt5
>  MODQT_MOC ?=   ${MODQT5_MOC}
>  MODQT5_UIC =   ${LOCALBASE}/bin/uic-qt5
>  MODQT_UIC ?=   ${MODQT5_UIC}
> +MODQT5_QMAKE = ${LOCALBASE}/bin/qmake-qt5
> +MODQT_QMAKE ?= ${MODQT5_QMAKE}
>  MODQT5_QTDIR = ${LOCALBASE}/lib/qt5
>  MODQT_QTDIR ?= ${MODQT5_QTDIR}
>
> @@ -77,6 +75,10 @@ MODQT5_LIB_DEPENDS =         x11/qt5
>  MODQT_LIB_DEPENDS ?=   ${MODQT5_LIB_DEPENDS}
>  LIB_DEPENDS +=                 ${MODQT5_LIB_DEPENDS}
>
> +MODQT5_WANTLIB +=      Qt5Core ${MODGCC4_CPPWANTLIB}
> +MODQT_WANTLIB ?=       ${MODQT5_WANTLIB}
> +WANTLIB +=             ${MODQT5_WANTLIB}
> +
>  CONFIGURE_ENV +=${_MODQT5_SETUP}
>  MAKE_ENV +=    ${_MODQT5_SETUP}
>  MAKE_FLAGS +=  ${_MODQT5_SETUP}
> @@ -86,4 +88,52 @@ MODQT5_USE_GCC4_MODULE ?=    Yes
>    MODULES +=           gcc4
>    MODGCC4_LANGS +=     c++
>    MODGCC4_ARCHS ?=     *
> +.endif
> +
> +MODQT_QMAKE_ARGS ?=    ${CONFIGURE_ARGS}
> +MODQT5_QMAKE_ARGS ?=   ${MODQT_QMAKE_ARGS}
> +
> +MODQT_PROJECTS ?=
> +MODQT5_PROJECTS ?=             ${MODQT_PROJECTS}
> +.if ${CONFIGURE_STYLE:Mqt5}
> +  ALL_TARGET ?=
> +  MODQT5_ALL_TARGET ?=         ${ALL_TARGET}
> +  SEPARATE_BUILD ?=            No
> +. if ${SEPARATE_BUILD:L} == "flavored"
> +    ERRORS +=  "Fatal: flavored builds are not supported by qmake.\n"
> +. elif ${SEPARATE_BUILD:L} != "no"
> +    WRKBUILD ?=        ${WRKSRC}/build
> +. endif
> +
> +. if !empty(MODQT5_PROJECTS)
> +MODQT5_configure =     cd ${WRKSRC}/$$d;
> +MODQT5_BUILD_TARGET =
> +.   for _p in ${MODQT5_PROJECTS}
> +MODQT5_configure += \
> +       d=${_p%/*}; \
> +       mkdir -p ${WRKBUILD}/$$d; \
> +       env ${CONFIGURE_ENV} ${MODQT5_QMAKE} ${MODQT5_QMAKE_ARGS} \
> +           -o ${WRKBUILD}/$$d/${MAKE_FILE} ${_p};
> +MODQT5_BUILD_TARGET += \
> +       d=${_p%/*}; \
> +       cd ${WRKBUILD}/$$d; \
> +       ${_SYSTRACE_CMD} ${SETENV} ${MAKE_ENV} \
> +           ${MAKE_PROGRAM} ${MAKE_FLAGS} -f ${MAKE_FILE}
${MODQT5_ALL_TARGET};
> +.   endfor
> +. else
> +# assume there is only one QMake project, as recommended by Qt guideline
> +MODQT5_configure = \
> +       cd ${WRKSRC}; \
> +       ${SETENV} ${CONFIGURE_ENV} ${MODQT5_QMAKE} ${MODQT5_QMAKE_ARGS} \
> +           -o ${WRKBUILD}/${MAKE_FILE} *.pro;
> +MODQT5_BUILD_TARGET += \
> +       cd ${WRKBUILD}; \
> +       ${_SYSTRACE_CMD} ${SETENV} ${MAKE_ENV} \
> +           ${MAKE_PROGRAM} ${MAKE_FLAGS} -f ${MAKE_FILE}
${MODQT5_ALL_TARGET};
> +. endif
> +
> +. if !target(do-build)
> +do-build:
> +       @${MODQT5_BUILD_TARGET}
> +. endif
>  .endif

--
Vadim Zhukov

Reply via email to