Re: cmake build with qt6 (macos) does not include "plugins"
Am Thu, 21 Mar 2024 23:21:18 +0100 schrieb pdv : > On 20/03/2024 11:26, Pavel Sanda wrote: > > On Tue, Mar 19, 2024 at 04:02:34PM +0100, pdv wrote: > >> These steps have been added to my previous patch (new patch included) and I > >> also derived the QT_PLUGINS_DIR and QT_LIBRARY_DIRS variables from the > >> existing Qt6_DIR/Qt5_DIR variable, so they must not longer be supplied. > > > > I see there is some very old bug related to osx budles, pehaps it should be > > closed? > > https://www.lyx.org/trac/ticket/9018 > > > >> I only tested this with Qt6. > > > > Unf we are staying out of Qt6 for mac because of serious issues we were not > > able to > > solve (see bug https://www.lyx.org/trac/ticket/12641 ). > > > > Pavel > > That will not be so easy (with cmake). > The signing issue also holds for Qt5. > > I've done my homework again. > I realized that my previous solution (although it worked for me) was not > ideal. I can't remember why anymore but for Qt6 I copied just all the > plugins, which of course worked but was ineffective. > > It's clear now that (for installing a bundle on macos with cmake) there > is no difference between Qt5 (supposed the version is GTE 5.10) and Qt6. > > This makes things much simpler. > > But at least with the latest macos tools (Sonoma and XCode15) a bundle > refuses to run if it 's not signed properly. > > Both issues are solved with the patch included and have now been tested > with Qt5.15 and Qt6.7. > > For completeness: I've checked the font-emph shortcut issue and, as > reported in the ticket mentioned, ^CmdE works with Qt5.15 but not with > Qt6.7. However the sequence ^C E does work. I don't know whether this is > intended as a workaround for this issue or was already implemented. > > pdv Committed at 4d02fb7a on master and 00d59c17 on 2.4.1-devel Kornel pgpwXEIkI6neQ.pgp Description: Digitale Signatur von OpenPGP -- lyx-devel mailing list lyx-devel@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-devel
Re: cmake build with qt6 (macos) does not include "plugins"
Am Thu, 21 Mar 2024 23:21:18 +0100 schrieb pdv : > On 20/03/2024 11:26, Pavel Sanda wrote: > > On Tue, Mar 19, 2024 at 04:02:34PM +0100, pdv wrote: > >> These steps have been added to my previous patch (new patch included) and I > >> also derived the QT_PLUGINS_DIR and QT_LIBRARY_DIRS variables from the > >> existing Qt6_DIR/Qt5_DIR variable, so they must not longer be supplied. > > > > I see there is some very old bug related to osx budles, pehaps it should be > > closed? > > https://www.lyx.org/trac/ticket/9018 > > > >> I only tested this with Qt6. > > > > Unf we are staying out of Qt6 for mac because of serious issues we were not > > able to > > solve (see bug https://www.lyx.org/trac/ticket/12641 ). > > > > Pavel > > That will not be so easy (with cmake). > The signing issue also holds for Qt5. > > I've done my homework again. > I realized that my previous solution (although it worked for me) was not > ideal. I can't remember why anymore but for Qt6 I copied just all the > plugins, which of course worked but was ineffective. > > It's clear now that (for installing a bundle on macos with cmake) there > is no difference between Qt5 (supposed the version is GTE 5.10) and Qt6. > > This makes things much simpler. > > But at least with the latest macos tools (Sonoma and XCode15) a bundle > refuses to run if it 's not signed properly. > > Both issues are solved with the patch included and have now been tested > with Qt5.15 and Qt6.7. > > For completeness: I've checked the font-emph shortcut issue and, as > reported in the ticket mentioned, ^CmdE works with Qt5.15 but not with > Qt6.7. However the sequence ^C E does work. I don't know whether this is > intended as a workaround for this issue or was already implemented. > > pdv Committed at 58aca890. Since 1.) It is tested on mac 2.) Uses cmake variable LYX_BUNDLE=ON (which is only used on mac so far as I can see) I do not expect problems with other OP's. Kornel pgpTxXvldb6VC.pgp Description: Digitale Signatur von OpenPGP -- lyx-devel mailing list lyx-devel@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-devel
Re: cmake build with qt6 (macos) does not include "plugins"
On 20/03/2024 11:26, Pavel Sanda wrote: On Tue, Mar 19, 2024 at 04:02:34PM +0100, pdv wrote: These steps have been added to my previous patch (new patch included) and I also derived the QT_PLUGINS_DIR and QT_LIBRARY_DIRS variables from the existing Qt6_DIR/Qt5_DIR variable, so they must not longer be supplied. I see there is some very old bug related to osx budles, pehaps it should be closed? https://www.lyx.org/trac/ticket/9018 I only tested this with Qt6. Unf we are staying out of Qt6 for mac because of serious issues we were not able to solve (see bug https://www.lyx.org/trac/ticket/12641 ). Pavel That will not be so easy (with cmake). The signing issue also holds for Qt5. I've done my homework again. I realized that my previous solution (although it worked for me) was not ideal. I can't remember why anymore but for Qt6 I copied just all the plugins, which of course worked but was ineffective. It's clear now that (for installing a bundle on macos with cmake) there is no difference between Qt5 (supposed the version is GTE 5.10) and Qt6. This makes things much simpler. But at least with the latest macos tools (Sonoma and XCode15) a bundle refuses to run if it 's not signed properly. Both issues are solved with the patch included and have now been tested with Qt5.15 and Qt6.7. For completeness: I've checked the font-emph shortcut issue and, as reported in the ticket mentioned, ^CmdE works with Qt5.15 but not with Qt6.7. However the sequence ^C E does work. I don't know whether this is intended as a workaround for this issue or was already implemented. pdvdiff --git a/development/cmake/post_install/CMakeLists.txt b/development/cmake/post_install/CMakeLists.txt index 52a2f782af..b2346cac44 100644 --- a/development/cmake/post_install/CMakeLists.txt +++ b/development/cmake/post_install/CMakeLists.txt @@ -26,18 +26,28 @@ if(LYX_BUNDLE) set(qtplugin_dest_dir "${LYX_BUNDLE_NAME}.app/Contents") set(qt_conf_path "${LYX_BUNDLE_NAME}.app/Contents/Resources/qt.conf") endif() - -if(Qt5Core_FOUND) - file(GLOB QT_PLUGIN_DIRECTORIES "${QT_PLUGINS_DIR}/imageformats") - install(DIRECTORY ${QT_PLUGIN_DIRECTORIES} DESTINATION "${qtplugin_dest_dir}/plugins/" COMPONENT Runtime REGEX "\\_debug\\.dylib$" EXCLUDE) - if(APPLE) - if(Qt5Core_VERSION VERSION_GREATER_EQUAL 5.10.0) - install_qt_plugin("Qt5::QMacStylePlugin") - endif() -install_qt_plugin("Qt5::QCocoaIntegrationPlugin") + +if(${LYX_USE_QT} STREQUAL "QT5") + set(QtScope "Qt5") +elseif(${LYX_USE_QT} STREQUAL "QT6") + set(QtScope "Qt6") +endif() + +get_target_property( MyLoc "${QtScope}::QSvgPlugin" LOCATION) +get_filename_component(MyDir ${MyLoc} PATH) +set(QT_PLUGINS_DIR ${MyDir}/..) +set(QT_LIBRARY_DIRS ${QT_PLUGINS_DIR}/../lib) + +file(GLOB QT_PLUGIN_DIRECTORIES "${QT_PLUGINS_DIR}/imageformats") +install(DIRECTORY ${QT_PLUGIN_DIRECTORIES} DESTINATION "${qtplugin_dest_dir}/plugins/" COMPONENT Runtime REGEX "\\_debug\\.dylib$" EXCLUDE) + +if(APPLE) + if(Qt6Core_FOUND OR (Qt5Core_FOUND AND (Qt5Core_VERSION VERSION_GREATER_EQUAL 5.10.0))) + install_qt_plugin("${QtScope}::QMacStylePlugin") endif() + install_qt_plugin("${QtScope}::QCocoaIntegrationPlugin") endif() - + # Install code does the following: # - Creates the qt.conf file # - install the platform specific plugins (with Qt5) @@ -50,7 +60,13 @@ if(LYX_BUNDLE) fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/${installed_lyx_path}\" \"\${QTPLUGINS}\" \"${QT_LIBRARY_DIRS}\")" COMPONENT Runtime ) - + +if(APPLE) + # fixup_bundle invalidates the codesign, so the app must be signed again. + add_custom_target(sign_install WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX} + COMMAND /usr/bin/codesign --deep --force --sign "${CPACK_BUNDLE_APPLE_CERT_APP}" "LyX2.4.app" VERBATIM) +endif() + if (APPLE AND LYX_DMG) # Setup the disk image layout install(CODE " -- lyx-devel mailing list lyx-devel@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-devel
Re: cmake build with qt6 (macos) does not include "plugins"
Am Sat, 4 Nov 2023 18:05:42 +0100 schrieb pdv : > On 04/11/2023 17:55, pdv wrote: > > On 21/03/2023 19:27, Kornel Benko wrote: > >> Am Tue, 21 Mar 2023 15:27:41 +0100 > >> schrieb pdv : > >> > >>> On 21/03/2023 11:00, Kornel Benko wrote: > Am Mon, 20 Mar 2023 20:05:32 +0100 > schrieb pdv : > > It's within the first if() else(), that's thus for qt6(see below). I > > suppose this should work for all platforms, but I checked it on macos > > only. Your patch is limited to APPLE and also works for me; If this > > problem doesn't occur for other platforms, it's ok for me of course. > > Probably no one else is using the bundle option (-DLYX_BUNDLE=ON). > > If you could try to use cmake without this option, I'd be interested > if it works for > you too. > >>> > >>> Apparently no problem. -DLYX_BUNDLE=OFF works too for me. > >>> > In this case we could get rid of it (probably). > > Kornel > > >>> > >>> > >> > >> Good, so I will disable this option for lyx2.5 then. > >> > >> Kornel > >> > >> > > I have build the latest lyx-master and I still need my (previous) patch > > to build a LyX.app which includes all required Qt6 frameworks (I want a > > stand-alone app). > > > > I'm using a recent version of CMake and apparently versions older than > > 3.5 will not longer be supported. To get rid of the annoying warnings > > I've upped the minimum version from 3.1 to 3.5 (new patch included). > > > > pdv > > > Sorry, forgot to include the patch. I have similar patch ( for all CMakeLists.txt) ready and only waiting for 2.4 to be out. Kornel pgpmn8MSMhSUx.pgp Description: Digitale Signatur von OpenPGP -- lyx-devel mailing list lyx-devel@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-devel
Re: cmake build with qt6 (macos) does not include "plugins"
On Tue, Mar 19, 2024 at 04:02:34PM +0100, pdv wrote: > These steps have been added to my previous patch (new patch included) and I > also derived the QT_PLUGINS_DIR and QT_LIBRARY_DIRS variables from the > existing Qt6_DIR/Qt5_DIR variable, so they must not longer be supplied. I see there is some very old bug related to osx budles, pehaps it should be closed? https://www.lyx.org/trac/ticket/9018 > I only tested this with Qt6. Unf we are staying out of Qt6 for mac because of serious issues we were not able to solve (see bug https://www.lyx.org/trac/ticket/12641 ). Pavel -- lyx-devel mailing list lyx-devel@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-devel
Re: cmake build with qt6 (macos) does not include "plugins"
On 07/11/2023 17:42, pdv wrote: On 06/11/2023 19:17, pdv wrote: On 04/11/2023 20:35, Kornel Benko wrote: Am Sat, 4 Nov 2023 18:05:42 +0100 schrieb pdv : On 04/11/2023 17:55, pdv wrote: On 21/03/2023 19:27, Kornel Benko wrote: Am Tue, 21 Mar 2023 15:27:41 +0100 schrieb pdv : On 21/03/2023 11:00, Kornel Benko wrote: Am Mon, 20 Mar 2023 20:05:32 +0100 schrieb pdv : It's within the first if() else(), that's thus for qt6(see below). I suppose this should work for all platforms, but I checked it on macos only. Your patch is limited to APPLE and also works for me; If this problem doesn't occur for other platforms, it's ok for me of course. Probably no one else is using the bundle option (-DLYX_BUNDLE=ON). If you could try to use cmake without this option, I'd be interested if it works for you too. Apparently no problem. -DLYX_BUNDLE=OFF works too for me. In this case we could get rid of it (probably). Kornel Good, so I will disable this option for lyx2.5 then. Kornel I have build the latest lyx-master and I still need my (previous) patch to build a LyX.app which includes all required Qt6 frameworks (I want a stand-alone app). I'm using a recent version of CMake and apparently versions older than 3.5 will not longer be supported. To get rid of the annoying warnings I've upped the minimum version from 3.1 to 3.5 (new patch included). pdv Sorry, forgot to include the patch. Will be done for 2.4.x versions. Also for other CMakeLists.txt's in the lyx-sources. Kornel OK, thanks. Regarding the original issue, I'm still largely in the dark. I've build qt-6.2 (-debug-and-release option), installed cmake3.26 and I'm using macos 10.14 and xcode. lyx has been updated to a very recent master-version. Building a complete (qt frameworks included) debuggable LyX2.4.app with cmake does not work for me; the plug-ins are not copied into the bundle and cmake's fixup_bundle step subsequently fails. When I apply my patch (see first message) the plugins are copied but the fixup_bundle step still fails. Only the QtCore, ... frameworks have been copied to the bundle (probably by the install command in my patch), but not the QtCore_debug, ... versions, although no error is reported by fixup_bundle at copy time. That's because they are copied to a folder named /@rpath/ in my build-folder instead of into the bundle. Apparently the @rpath used in the qt libraries is not handled properly by the cmake scripts. Can anyone confirm that a stand-alone LyX2.4.app can be build with cmake on macos or have any other suggestion? pdv The problem with the _debug libraries is obvious. As for qt5 no _debug libraries should be copied for qt6 either. I adapted my patch (included) accordingly. I once more tested a number of configurations and this is my conclusion. I can build a bundle with LYX_DMG=off and LYX_BUNDLE=on, the latter sets also LYX_CPACK=on. These are my resulting settings after cmake configure: LYX_ENABLE_BUILD_TYPE:STRING = AUTO : Allows to tweak the compiled code (AUTO release prerelease development gprof) LYX_CPACK:BOOL = ON : Use the CPack management (Implies LYX_INSTALL option) LYX_LOCALVERSIONING:BOOL = ON : Add version info to created package name (only used if LYX_CPACK option set) LYX_INSTALL:BOOL = OFF : Build install projects/rules (implies a bunch of other options) LYX_NLS:BOOL = ON : Enable Native Language Support (NLS) LYX_REQUIRE_SPELLCHECK:BOOL = OFF : Abort if no spellchecker available LYX_ASPELL:BOOL = ON : Require aspell LYX_ENCHANT:BOOL = OFF : Require Enchant LYX_HUNSPELL:BOOL = ON : Require Hunspell LYX_RELEASE:BOOL = ON : Build release version, build debug when disabled LYX_DEBUG:BOOL = OFF : Enforce debug build LYX_NO_OPTIMIZE:BOOL = OFF : Don't use any optimization/debug flags LYX_ENABLE_ASSERTIONS:BOOL = ON : Run sanity checks in the program LYX_PACKAGE_SUFFIX:BOOL = ON : Use version suffix for packaging LYX_SUFFIX_VALUE:STRING = : Use this string as suffix LYX_PCH:BOOL = OFF : Use precompiled headers LYX_MERGE_FILES:BOOL = OFF : Merge source files into one compilation unit LYX_MERGE_REBUILD:BOOL = OFF : Rebuild generated files from merged files build LYX_QUIET:BOOL = ON : Don't generate verbose makefiles LYX_INSTALL_PREFIX:BOOL = OFF : Install path for LyX LYX_BUNDLE:BOOL = ON : Build bundle (experimental) LYX_ENABLE_URLTESTS:BOOL = OFF : Enable for URL tests
Re: cmake build with qt6 (macos) does not include "plugins"
On Sat, Nov 11, 2023 at 06:07:14PM +0100, Kornel Benko wrote: > Am Sat, 11 Nov 2023 11:14:51 -0500 > schrieb Scott Kostyshak : > > > > diff --git a/development/cmake/post_install/CMakeLists.txt > > > b/development/cmake/post_install/CMakeLists.txt index > > > 52a2f782af..f83cdaad0b 100644 > > > --- a/development/cmake/post_install/CMakeLists.txt > > > +++ b/development/cmake/post_install/CMakeLists.txt > > > @@ -28,14 +28,18 @@ if(LYX_BUNDLE) > > > endif() > > > > > > if(Qt5Core_FOUND) > > > - file(GLOB QT_PLUGIN_DIRECTORIES "${QT_PLUGINS_DIR}/imageformats") > > > - install(DIRECTORY ${QT_PLUGIN_DIRECTORIES} DESTINATION > > > "${qtplugin_dest_dir}/plugins/" COMPONENT Runtime REGEX > > > "\\_debug\\.dylib$" EXCLUDE) > > > + file(GLOB QT_PLUGIN_DIRECTORIES "${QT_PLUGINS_DIR}/imageformats") > > > + install(DIRECTORY ${QT_PLUGIN_DIRECTORIES} DESTINATION > > > "${qtplugin_dest_dir}/plugins/" COMPONENT Runtime REGEX > > > "\\_debug\\.dylib$" EXCLUDE) > > > if(APPLE) if(Qt5Core_VERSION VERSION_GREATER_EQUAL 5.10.0) > > > install_qt_plugin("Qt5::QMacStylePlugin") > > > endif() > > > install_qt_plugin("Qt5::QCocoaIntegrationPlugin") > > > endif() > > > +else() > > > +# With QT6, just copy all the plugins > > > +file(GLOB QT_PLUGIN_DIRECTORIES "${QT_PLUGINS_DIR}/*") > > > +install(DIRECTORY ${QT_PLUGIN_DIRECTORIES} DESTINATION > > > "${qtplugin_dest_dir}/plugins/" COMPONENT Runtime REGEX > > > "\\_debug\\.dylib$" EXCLUDE) > > > endif() > > > # Install code does the following: > > > > @Kornel seems like we might want this one in master? > > > > Scott > > Yes, I am only waiting for 2.4 be out. Nobody outside of MAC seems to use > BUNDLE though. Sounds good, Scott signature.asc Description: PGP signature -- lyx-devel mailing list lyx-devel@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-devel
Re: cmake build with qt6 (macos) does not include "plugins"
Am Sat, 11 Nov 2023 11:14:51 -0500 schrieb Scott Kostyshak : > > diff --git a/development/cmake/post_install/CMakeLists.txt > > b/development/cmake/post_install/CMakeLists.txt index > > 52a2f782af..f83cdaad0b 100644 > > --- a/development/cmake/post_install/CMakeLists.txt > > +++ b/development/cmake/post_install/CMakeLists.txt > > @@ -28,14 +28,18 @@ if(LYX_BUNDLE) > > endif() > > > > if(Qt5Core_FOUND) > > - file(GLOB QT_PLUGIN_DIRECTORIES "${QT_PLUGINS_DIR}/imageformats") > > - install(DIRECTORY ${QT_PLUGIN_DIRECTORIES} DESTINATION > > "${qtplugin_dest_dir}/plugins/" COMPONENT Runtime REGEX "\\_debug\\.dylib$" > > EXCLUDE) > > + file(GLOB QT_PLUGIN_DIRECTORIES "${QT_PLUGINS_DIR}/imageformats") > > + install(DIRECTORY ${QT_PLUGIN_DIRECTORIES} DESTINATION > > "${qtplugin_dest_dir}/plugins/" COMPONENT Runtime REGEX "\\_debug\\.dylib$" > > EXCLUDE) > > if(APPLE) if(Qt5Core_VERSION VERSION_GREATER_EQUAL 5.10.0) > > install_qt_plugin("Qt5::QMacStylePlugin") > > endif() > > install_qt_plugin("Qt5::QCocoaIntegrationPlugin") > > endif() > > +else() > > +# With QT6, just copy all the plugins > > +file(GLOB QT_PLUGIN_DIRECTORIES "${QT_PLUGINS_DIR}/*") > > +install(DIRECTORY ${QT_PLUGIN_DIRECTORIES} DESTINATION > > "${qtplugin_dest_dir}/plugins/" COMPONENT Runtime REGEX "\\_debug\\.dylib$" > > EXCLUDE) > > endif() > > # Install code does the following: > > @Kornel seems like we might want this one in master? > > Scott Yes, I am only waiting for 2.4 be out. Nobody outside of MAC seems to use BUNDLE though. Kornel pgpRGXK9Zg_AU.pgp Description: Digitale Signatur von OpenPGP -- lyx-devel mailing list lyx-devel@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-devel
Re: cmake build with qt6 (macos) does not include "plugins"
On Tue, Nov 07, 2023 at 05:42:27PM +0100, pdv wrote: > On 06/11/2023 19:17, pdv wrote: > > On 04/11/2023 20:35, Kornel Benko wrote: > > > Am Sat, 4 Nov 2023 18:05:42 +0100 > > > schrieb pdv : > > > > > > > On 04/11/2023 17:55, pdv wrote: > > > > > On 21/03/2023 19:27, Kornel Benko wrote: > > > > > > Am Tue, 21 Mar 2023 15:27:41 +0100 > > > > > > schrieb pdv : > > > > > > > > > > > > > On 21/03/2023 11:00, Kornel Benko wrote: > > > > > > > > Am Mon, 20 Mar 2023 20:05:32 +0100 > > > > > > > > schrieb pdv : > > > > > > > > > It's within the first if() else(), that's > > > > > > > > > thus for qt6(see below). I > > > > > > > > > suppose this should work for all platforms, > > > > > > > > > but I checked it on macos > > > > > > > > > only. Your patch is limited to APPLE and also works for me; > > > > > > > > > If this > > > > > > > > > problem doesn't occur for other platforms, > > > > > > > > > it's ok for me of course. > > > > > > > > > > > > > > > > Probably no one else is using the bundle option > > > > > > > > (-DLYX_BUNDLE=ON). > > > > > > > > > > > > > > > > If you could try to use cmake without this option, I'd be > > > > > > > > interested > > > > > > > > if it works for > > > > > > > > you too. > > > > > > > > > > > > > > Apparently no problem. -DLYX_BUNDLE=OFF works too for me. > > > > > > > > > > > > > > > In this case we could get rid of it (probably). > > > > > > > > > > > > > > > > Kornel > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Good, so I will disable this option for lyx2.5 then. > > > > > > > > > > > > Kornel > > > > > > > > > > > > > > > > > I have build the latest lyx-master and I still need my (previous) > > > > > patch > > > > > to build a LyX.app which includes all required Qt6 frameworks (I want > > > > > a > > > > > stand-alone app). > > > > > > > > > > I'm using a recent version of CMake and apparently versions older than > > > > > 3.5 will not longer be supported. To get rid of the annoying warnings > > > > > I've upped the minimum version from 3.1 to 3.5 (new patch included). > > > > > > > > > > pdv > > > > > > > > > Sorry, forgot to include the patch. > > > > > > Will be done for 2.4.x versions. Also for other CMakeLists.txt's in > > > the lyx-sources. > > > > > > Kornel > > > > > > > > OK, thanks. > > > > Regarding the original issue, I'm still largely in the dark. > > > > I've build qt-6.2 (-debug-and-release option), installed cmake3.26 and > > I'm using macos 10.14 and xcode. lyx has been updated to a very recent > > master-version. > > > > Building a complete (qt frameworks included) debuggable LyX2.4.app with > > cmake does not work for me; the plug-ins are not copied into the bundle > > and cmake's fixup_bundle step subsequently fails. > > > > When I apply my patch (see first message) the plugins are copied but the > > fixup_bundle step still fails. > > > > Only the QtCore, ... frameworks have been copied to the bundle (probably > > by the install command in my patch), but not the QtCore_debug, ... > > versions, although no error is reported by fixup_bundle at copy time. > > > > That's because they are copied to a folder named /@rpath/ in my > > build-folder instead of into the bundle. > > Apparently the @rpath used in the qt libraries is not handled properly > > by the cmake scripts. > > > > Can anyone confirm that a stand-alone LyX2.4.app can be build with cmake > > on macos or have any other suggestion? > > > > pdv > > > > > > > The problem with the _debug libraries is obvious. As for qt5 no _debug > libraries should be copied for qt6 either. I adapted my patch (included) > accordingly. > > I once more tested a number of configurations and this is my conclusion. > I can build a bundle with LYX_DMG=off and LYX_BUNDLE=on, the latter sets > also LYX_CPACK=on. > > These are my resulting settings after cmake configure: > > LYX_ENABLE_BUILD_TYPE:STRING = AUTO : Allows to tweak the compiled > code (AUTO release prerelease development gprof) > LYX_CPACK:BOOL = ON : Use the CPack management > (Implies LYX_INSTALL option) > LYX_LOCALVERSIONING:BOOL = ON : Add version info to > created package name (only used if LYX_CPACK option set) > LYX_INSTALL:BOOL = OFF: Build install > projects/rules (implies a bunch of other options) > LYX_NLS:BOOL = ON : Enable Native Language > Support (NLS) > LYX_REQUIRE_SPELLCHECK:BOOL= OFF: Abort if no spellchecker > available > LYX_ASPELL:BOOL= ON : Require aspell > LYX_ENCHANT:BOOL = OFF: Require Enchant > LYX_HUNSPELL:BOOL = ON : Require Hunspell > LYX_RELEASE:BOOL = ON : Build release version, > build debug when disabled > LYX_DEBUG:BOOL = OFF: Enforce debug build > LYX_NO_OPTIMIZE:BOOL = OFF
Re: cmake build with qt6 (macos) does not include "plugins"
On 06/11/2023 19:17, pdv wrote: On 04/11/2023 20:35, Kornel Benko wrote: Am Sat, 4 Nov 2023 18:05:42 +0100 schrieb pdv : On 04/11/2023 17:55, pdv wrote: On 21/03/2023 19:27, Kornel Benko wrote: Am Tue, 21 Mar 2023 15:27:41 +0100 schrieb pdv : On 21/03/2023 11:00, Kornel Benko wrote: Am Mon, 20 Mar 2023 20:05:32 +0100 schrieb pdv : It's within the first if() else(), that's thus for qt6(see below). I suppose this should work for all platforms, but I checked it on macos only. Your patch is limited to APPLE and also works for me; If this problem doesn't occur for other platforms, it's ok for me of course. Probably no one else is using the bundle option (-DLYX_BUNDLE=ON). If you could try to use cmake without this option, I'd be interested if it works for you too. Apparently no problem. -DLYX_BUNDLE=OFF works too for me. In this case we could get rid of it (probably). Kornel Good, so I will disable this option for lyx2.5 then. Kornel I have build the latest lyx-master and I still need my (previous) patch to build a LyX.app which includes all required Qt6 frameworks (I want a stand-alone app). I'm using a recent version of CMake and apparently versions older than 3.5 will not longer be supported. To get rid of the annoying warnings I've upped the minimum version from 3.1 to 3.5 (new patch included). pdv Sorry, forgot to include the patch. Will be done for 2.4.x versions. Also for other CMakeLists.txt's in the lyx-sources. Kornel OK, thanks. Regarding the original issue, I'm still largely in the dark. I've build qt-6.2 (-debug-and-release option), installed cmake3.26 and I'm using macos 10.14 and xcode. lyx has been updated to a very recent master-version. Building a complete (qt frameworks included) debuggable LyX2.4.app with cmake does not work for me; the plug-ins are not copied into the bundle and cmake's fixup_bundle step subsequently fails. When I apply my patch (see first message) the plugins are copied but the fixup_bundle step still fails. Only the QtCore, ... frameworks have been copied to the bundle (probably by the install command in my patch), but not the QtCore_debug, ... versions, although no error is reported by fixup_bundle at copy time. That's because they are copied to a folder named /@rpath/ in my build-folder instead of into the bundle. Apparently the @rpath used in the qt libraries is not handled properly by the cmake scripts. Can anyone confirm that a stand-alone LyX2.4.app can be build with cmake on macos or have any other suggestion? pdv The problem with the _debug libraries is obvious. As for qt5 no _debug libraries should be copied for qt6 either. I adapted my patch (included) accordingly. I once more tested a number of configurations and this is my conclusion. I can build a bundle with LYX_DMG=off and LYX_BUNDLE=on, the latter sets also LYX_CPACK=on. These are my resulting settings after cmake configure: LYX_ENABLE_BUILD_TYPE:STRING = AUTO : Allows to tweak the compiled code (AUTO release prerelease development gprof) LYX_CPACK:BOOL = ON : Use the CPack management (Implies LYX_INSTALL option) LYX_LOCALVERSIONING:BOOL = ON : Add version info to created package name (only used if LYX_CPACK option set) LYX_INSTALL:BOOL = OFF: Build install projects/rules (implies a bunch of other options) LYX_NLS:BOOL = ON : Enable Native Language Support (NLS) LYX_REQUIRE_SPELLCHECK:BOOL= OFF: Abort if no spellchecker available LYX_ASPELL:BOOL= ON : Require aspell LYX_ENCHANT:BOOL = OFF: Require Enchant LYX_HUNSPELL:BOOL = ON : Require Hunspell LYX_RELEASE:BOOL = ON : Build release version, build debug when disabled LYX_DEBUG:BOOL = OFF: Enforce debug build LYX_NO_OPTIMIZE:BOOL = OFF: Don't use any optimization/debug flags LYX_ENABLE_ASSERTIONS:BOOL = ON : Run sanity checks in the program LYX_PACKAGE_SUFFIX:BOOL= ON : Use version suffix for packaging LYX_SUFFIX_VALUE:STRING=: Use this string as suffix LYX_PCH:BOOL = OFF: Use precompiled headers LYX_MERGE_FILES:BOOL = OFF: Merge source files into one compilation unit LYX_MERGE_REBUILD:BOOL = OFF: Rebuild generated files from merged files build LYX_QUIET:BOOL = ON : Don't generate verbose makefiles LYX_INSTALL_PREFIX:BOOL= OFF: Install path for LyX LYX_BUNDLE:BOOL= ON : Build bundle (experimental) LYX_ENABLE_URLTESTS:BOOL = OFF: Enable for URL tests LYX_ENABLE_EXPORT_TESTS:BOOL = OFF: Enable for export tests
Re: cmake build with qt6 (macos) does not include "plugins"
On 04/11/2023 20:35, Kornel Benko wrote: Am Sat, 4 Nov 2023 18:05:42 +0100 schrieb pdv : On 04/11/2023 17:55, pdv wrote: On 21/03/2023 19:27, Kornel Benko wrote: Am Tue, 21 Mar 2023 15:27:41 +0100 schrieb pdv : On 21/03/2023 11:00, Kornel Benko wrote: Am Mon, 20 Mar 2023 20:05:32 +0100 schrieb pdv : It's within the first if() else(), that's thus for qt6(see below). I suppose this should work for all platforms, but I checked it on macos only. Your patch is limited to APPLE and also works for me; If this problem doesn't occur for other platforms, it's ok for me of course. Probably no one else is using the bundle option (-DLYX_BUNDLE=ON). If you could try to use cmake without this option, I'd be interested if it works for you too. Apparently no problem. -DLYX_BUNDLE=OFF works too for me. In this case we could get rid of it (probably). Kornel Good, so I will disable this option for lyx2.5 then. Kornel I have build the latest lyx-master and I still need my (previous) patch to build a LyX.app which includes all required Qt6 frameworks (I want a stand-alone app). I'm using a recent version of CMake and apparently versions older than 3.5 will not longer be supported. To get rid of the annoying warnings I've upped the minimum version from 3.1 to 3.5 (new patch included). pdv Sorry, forgot to include the patch. Will be done for 2.4.x versions. Also for other CMakeLists.txt's in the lyx-sources. Kornel OK, thanks. Regarding the original issue, I'm still largely in the dark. I've build qt-6.2 (-debug-and-release option), installed cmake3.26 and I'm using macos 10.14 and xcode. lyx has been updated to a very recent master-version. Building a complete (qt frameworks included) debuggable LyX2.4.app with cmake does not work for me; the plug-ins are not copied into the bundle and cmake's fixup_bundle step subsequently fails. When I apply my patch (see first message) the plugins are copied but the fixup_bundle step still fails. Only the QtCore, ... frameworks have been copied to the bundle (probably by the install command in my patch), but not the QtCore_debug, ... versions, although no error is reported by fixup_bundle at copy time. That's because they are copied to a folder named /@rpath/ in my build-folder instead of into the bundle. Apparently the @rpath used in the qt libraries is not handled properly by the cmake scripts. Can anyone confirm that a stand-alone LyX2.4.app can be build with cmake on macos or have any other suggestion? pdv -- lyx-devel mailing list lyx-devel@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-devel
Re: cmake build with qt6 (macos) does not include "plugins"
Am Sat, 4 Nov 2023 18:05:42 +0100 schrieb pdv : > On 04/11/2023 17:55, pdv wrote: > > On 21/03/2023 19:27, Kornel Benko wrote: > >> Am Tue, 21 Mar 2023 15:27:41 +0100 > >> schrieb pdv : > >> > >>> On 21/03/2023 11:00, Kornel Benko wrote: > Am Mon, 20 Mar 2023 20:05:32 +0100 > schrieb pdv : > > It's within the first if() else(), that's thus for qt6(see below). I > > suppose this should work for all platforms, but I checked it on macos > > only. Your patch is limited to APPLE and also works for me; If this > > problem doesn't occur for other platforms, it's ok for me of course. > > Probably no one else is using the bundle option (-DLYX_BUNDLE=ON). > > If you could try to use cmake without this option, I'd be interested > if it works for > you too. > >>> > >>> Apparently no problem. -DLYX_BUNDLE=OFF works too for me. > >>> > In this case we could get rid of it (probably). > > Kornel > > >>> > >>> > >> > >> Good, so I will disable this option for lyx2.5 then. > >> > >> Kornel > >> > >> > > I have build the latest lyx-master and I still need my (previous) patch > > to build a LyX.app which includes all required Qt6 frameworks (I want a > > stand-alone app). > > > > I'm using a recent version of CMake and apparently versions older than > > 3.5 will not longer be supported. To get rid of the annoying warnings > > I've upped the minimum version from 3.1 to 3.5 (new patch included). > > > > pdv > > > Sorry, forgot to include the patch. Will be done for 2.4.x versions. Also for other CMakeLists.txt's in the lyx-sources. Kornel pgpqLBFtd8Hso.pgp Description: Digitale Signatur von OpenPGP -- lyx-devel mailing list lyx-devel@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-devel
Re: cmake build with qt6 (macos) does not include "plugins"
On 04/11/2023 17:55, pdv wrote: On 21/03/2023 19:27, Kornel Benko wrote: Am Tue, 21 Mar 2023 15:27:41 +0100 schrieb pdv : On 21/03/2023 11:00, Kornel Benko wrote: Am Mon, 20 Mar 2023 20:05:32 +0100 schrieb pdv : It's within the first if() else(), that's thus for qt6(see below). I suppose this should work for all platforms, but I checked it on macos only. Your patch is limited to APPLE and also works for me; If this problem doesn't occur for other platforms, it's ok for me of course. Probably no one else is using the bundle option (-DLYX_BUNDLE=ON). If you could try to use cmake without this option, I'd be interested if it works for you too. Apparently no problem. -DLYX_BUNDLE=OFF works too for me. In this case we could get rid of it (probably). Kornel Good, so I will disable this option for lyx2.5 then. Kornel I have build the latest lyx-master and I still need my (previous) patch to build a LyX.app which includes all required Qt6 frameworks (I want a stand-alone app). I'm using a recent version of CMake and apparently versions older than 3.5 will not longer be supported. To get rid of the annoying warnings I've upped the minimum version from 3.1 to 3.5 (new patch included). pdv Sorry, forgot to include the patch.diff --git a/3rdparty/dtl/CMakeLists.txt b/3rdparty/dtl/CMakeLists.txt index f757b26b17..9b78cf4c0f 100644 --- a/3rdparty/dtl/CMakeLists.txt +++ b/3rdparty/dtl/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.5) set(LYX_IPO_SUPPORTED FALSE) if (POLICY CMP0069) diff --git a/3rdparty/mythes/CMakeLists.txt b/3rdparty/mythes/CMakeLists.txt index 869bee7c93..d2175d4167 100644 --- a/3rdparty/mythes/CMakeLists.txt +++ b/3rdparty/mythes/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.5) set(LYX_IPO_SUPPORTED FALSE) if (POLICY CMP0069) diff --git a/CMakeLists.txt b/CMakeLists.txt index 38e11b8a0b..c4c19ed17c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ # Copyright (c) 2006-2011 Peter Kümmel, # Copyright (c) 2008-2020 Kornel Benko, -cmake_minimum_required(VERSION 3.1.0) +cmake_minimum_required(VERSION 3.5.0) set(LYX_PROJECT LyX) # Instruct cmake to not use gnu extensions, -- lyx-devel mailing list lyx-devel@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-devel
Re: cmake build with qt6 (macos) does not include "plugins"
On 21/03/2023 19:27, Kornel Benko wrote: Am Tue, 21 Mar 2023 15:27:41 +0100 schrieb pdv : On 21/03/2023 11:00, Kornel Benko wrote: Am Mon, 20 Mar 2023 20:05:32 +0100 schrieb pdv : It's within the first if() else(), that's thus for qt6(see below). I suppose this should work for all platforms, but I checked it on macos only. Your patch is limited to APPLE and also works for me; If this problem doesn't occur for other platforms, it's ok for me of course. Probably no one else is using the bundle option (-DLYX_BUNDLE=ON). If you could try to use cmake without this option, I'd be interested if it works for you too. Apparently no problem. -DLYX_BUNDLE=OFF works too for me. In this case we could get rid of it (probably). Kornel Good, so I will disable this option for lyx2.5 then. Kornel I have build the latest lyx-master and I still need my (previous) patch to build a LyX.app which includes all required Qt6 frameworks (I want a stand-alone app). I'm using a recent version of CMake and apparently versions older than 3.5 will not longer be supported. To get rid of the annoying warnings I've upped the minimum version from 3.1 to 3.5 (new patch included). pdv -- lyx-devel mailing list lyx-devel@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-devel
Re: cmake build with qt6 (macos) does not include "plugins"
Am Tue, 21 Mar 2023 15:27:41 +0100 schrieb pdv : > On 21/03/2023 11:00, Kornel Benko wrote: > > Am Mon, 20 Mar 2023 20:05:32 +0100 > > schrieb pdv : > > > >> It's within the first if() else(), that's thus for qt6(see below). I > >> suppose this should work for all platforms, but I checked it on macos > >> only. Your patch is limited to APPLE and also works for me; If this > >> problem doesn't occur for other platforms, it's ok for me of course. > > > > Probably no one else is using the bundle option (-DLYX_BUNDLE=ON). > > > > If you could try to use cmake without this option, I'd be interested if it > > works for > > you too. > > Apparently no problem. -DLYX_BUNDLE=OFF works too for me. > > > In this case we could get rid of it (probably). > > > > Kornel > > > > > > Good, so I will disable this option for lyx2.5 then. Kornel pgpKYDUkEdbCr.pgp Description: Digitale Signatur von OpenPGP -- lyx-devel mailing list lyx-devel@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-devel
Re: cmake build with qt6 (macos) does not include "plugins"
On 21/03/2023 11:00, Kornel Benko wrote: Am Mon, 20 Mar 2023 20:05:32 +0100 schrieb pdv : It's within the first if() else(), that's thus for qt6(see below). I suppose this should work for all platforms, but I checked it on macos only. Your patch is limited to APPLE and also works for me; If this problem doesn't occur for other platforms, it's ok for me of course. Probably no one else is using the bundle option (-DLYX_BUNDLE=ON). If you could try to use cmake without this option, I'd be interested if it works for you too. Apparently no problem. -DLYX_BUNDLE=OFF works too for me. In this case we could get rid of it (probably). Kornel -- lyx-devel mailing list lyx-devel@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-devel
Re: cmake build with qt6 (macos) does not include "plugins"
Am Mon, 20 Mar 2023 20:05:32 +0100 schrieb pdv : > It's within the first if() else(), that's thus for qt6(see below). I > suppose this should work for all platforms, but I checked it on macos > only. Your patch is limited to APPLE and also works for me; If this > problem doesn't occur for other platforms, it's ok for me of course. Probably no one else is using the bundle option (-DLYX_BUNDLE=ON). If you could try to use cmake without this option, I'd be interested if it works for you too. In this case we could get rid of it (probably). Kornel pgp81l5__3k3j.pgp Description: Digitale Signatur von OpenPGP -- lyx-devel mailing list lyx-devel@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-devel
Re: cmake build with qt6 (macos) does not include "plugins"
On 20/03/2023 10:50, Kornel Benko wrote: Am Sun, 19 Mar 2023 20:45:55 +0100 schrieb pdv : The merge branch killqt4 (commit 9376... on nov 28) broke the cmake install build on macos. The "development/cmake/post_install/CMakeLists.txt' SCRIPT checks for qt5 and copies all plugins if different. This did work for qt4 but also for qt6. The killqt4 branch removed this else part for qt4 but also for qt6. The included patch restores this else clause and only the comment has been adapted (qt6 instead of qt4). Since I don't know which plugins are actually needed I copied them all. Regards, P. De Visschere But your patch is inside of if(LYX_BUNDLE) if(Qt5Core_FOUND and outside of if(APPLE) so I wonder, why is it working for QT6? Maybe the attached is what you want? Kornel It's within the first if() else(), that's thus for qt6(see below). I suppose this should work for all platforms, but I checked it on macos only. Your patch is limited to APPLE and also works for me; If this problem doesn't occur for other platforms, it's ok for me of course. if(Qt5Core_FOUND) file(GLOB QT_PLUGIN_DIRECTORIES "${QT_PLUGINS_DIR}/imageformats") install(DIRECTORY ${QT_PLUGIN_DIRECTORIES} DESTINATION "${qtplugin_dest_dir}/plugins/" COMPONENT Runtime REGEX "\\_debug\\.dylib$" EXCLUDE) if(APPLE) if(Qt5Core_VERSION VERSION_GREATER_EQUAL 5.10.0) install_qt_plugin("Qt5::QMacStylePlugin") endif() install_qt_plugin("Qt5::QCocoaIntegrationPlugin") endif() else() # With QT6, just copy all the plugins file(GLOB QT_PLUGIN_DIRECTORIES "${QT_PLUGINS_DIR}/*") install(DIRECTORY ${QT_PLUGIN_DIRECTORIES} DESTINATION "${qtplugin_dest_dir}/plugins/" COMPONENT Runtime) endif() -- lyx-devel mailing list lyx-devel@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-devel
Re: cmake build with qt6 (macos) does not include "plugins"
Am Sun, 19 Mar 2023 20:45:55 +0100 schrieb pdv : > The merge branch killqt4 (commit 9376... on nov 28) broke the cmake > install build on macos. > > The "development/cmake/post_install/CMakeLists.txt' SCRIPT checks for > qt5 and copies all plugins if different. This did work for qt4 but also > for qt6. > > The killqt4 branch removed this else part for qt4 but also for qt6. > > The included patch restores this else clause and only the comment has > been adapted (qt6 instead of qt4). > > Since I don't know which plugins are actually needed I copied them all. > > Regards, > > P. De Visschere But your patch is inside of if(LYX_BUNDLE) if(Qt5Core_FOUND and outside of if(APPLE) so I wonder, why is it working for QT6? Maybe the attached is what you want? Kornel diff --git a/development/cmake/post_install/CMakeLists.txt b/development/cmake/post_install/CMakeLists.txt index 52a2f782af..574ac8afb4 100644 --- a/development/cmake/post_install/CMakeLists.txt +++ b/development/cmake/post_install/CMakeLists.txt @@ -36,10 +36,15 @@ if(LYX_BUNDLE) endif() install_qt_plugin("Qt5::QCocoaIntegrationPlugin") endif() endif() +if (APPLE AND LYX_USE_QT MATCHES "QT6") + # With QT6, just copy all the plugins + file(GLOB QT_PLUGIN_DIRECTORIES "${QT_PLUGINS_DIR}/*") + install(DIRECTORY ${QT_PLUGIN_DIRECTORIES} DESTINATION "${qtplugin_dest_dir}/plugins/" COMPONENT Runtime) +endif() # Install code does the following: # - Creates the qt.conf file # - install the platform specific plugins (with Qt5) # - Fixup the bundle install(CODE "include(BundleUtilities) pgpjZt5pzqqJf.pgp Description: Digitale Signatur von OpenPGP -- lyx-devel mailing list lyx-devel@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-devel
cmake build with qt6 (macos) does not include "plugins"
The merge branch killqt4 (commit 9376... on nov 28) broke the cmake install build on macos. The "development/cmake/post_install/CMakeLists.txt' SCRIPT checks for qt5 and copies all plugins if different. This did work for qt4 but also for qt6. The killqt4 branch removed this else part for qt4 but also for qt6. The included patch restores this else clause and only the comment has been adapted (qt6 instead of qt4). Since I don't know which plugins are actually needed I copied them all. Regards, P. De Visscherediff --git a/development/cmake/post_install/CMakeLists.txt b/development/cmake/post_install/CMakeLists.txt index 52a2f782af..dbd210d412 100644 --- a/development/cmake/post_install/CMakeLists.txt +++ b/development/cmake/post_install/CMakeLists.txt @@ -36,6 +36,10 @@ if(LYX_BUNDLE) endif() install_qt_plugin("Qt5::QCocoaIntegrationPlugin") endif() +else() +# With QT6, just copy all the plugins +file(GLOB QT_PLUGIN_DIRECTORIES "${QT_PLUGINS_DIR}/*") +install(DIRECTORY ${QT_PLUGIN_DIRECTORIES} DESTINATION "${qtplugin_dest_dir}/plugins/" COMPONENT Runtime) endif() # Install code does the following: -- lyx-devel mailing list lyx-devel@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-devel