Skip to content

Instantly share code, notes, and snippets.

@GjjvdBurg
Last active July 9, 2018 16:52
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save GjjvdBurg/07a105140f7f85511e79420809502250 to your computer and use it in GitHub Desktop.
Save GjjvdBurg/07a105140f7f85511e79420809502250 to your computer and use it in GitHub Desktop.
Patch for Qt5 compilation of AUR nextcloud-client package

This is a patch to fix the nextcloud client compilation instructions with Qt5. This avoids the Unknown CMake command "qt5_use_modules" error. See nextcloud/desktop#376 for details.

To use this patch:

  • Save the patch below as /tmp/client.patch
  • Download the package snapshot from the AUR: https://aur.archlinux.org/packages/nextcloud-client/
  • Unpack the nextcloud-client.tar.gz file and change directory into the nextcloud-client directory
  • Open the PKGBUILD file for editing
  • After line 28 of the PKGBUILD file, as the last line of the prepare() section, add: git apply /tmp/client.patch
  • Continue installation as normal (makepkg -si)
diff --git a/cmake/modules/QtVersionAbstraction.cmake b/cmake/modules/QtVersionAbstraction.cmake
index 5bd853c84..ca864176c 100644
--- a/cmake/modules/QtVersionAbstraction.cmake
+++ b/cmake/modules/QtVersionAbstraction.cmake
@@ -18,6 +18,7 @@ if( Qt5Core_FOUND )
find_package(Qt5Network REQUIRED)
find_package(Qt5Xml REQUIRED)
find_package(Qt5Concurrent REQUIRED)
+ find_package(Qt5Sql REQUIRED)
if(UNIT_TESTING)
find_package(Qt5Test REQUIRED)
endif()
@@ -134,9 +135,6 @@ if(NOT Qt5Core_FOUND)
find_package(Qt4 4.7.0 COMPONENTS ${NEEDED_QT4_COMPONENTS} )
macro_log_feature(QT4_FOUND "Qt" "A cross-platform application and UI framework" "http://www.qt-project.org" TRUE "" "If you see this, although libqt4-devel is installed, check whether the \n qtwebkit-devel package and whatever contains QtUiTools is installed too")
- macro(qt5_use_modules)
- endmacro()
-
macro(qt_wrap_ui)
qt4_wrap_ui(${ARGN})
endmacro()
-Subproject commit e8fffe61e7c94ce88e59b80579754c4a46da65ea
+Subproject commit e8fffe61e7c94ce88e59b80579754c4a46da65ea-dirty
diff --git a/src/cmd/CMakeLists.txt b/src/cmd/CMakeLists.txt
index 4a0d76d71..ae3b007f9 100644
--- a/src/cmd/CMakeLists.txt
+++ b/src/cmd/CMakeLists.txt
@@ -22,7 +22,7 @@ include_directories(${CMAKE_SOURCE_DIR}/src/3rdparty/qtokenizer)
if(NOT BUILD_LIBRARIES_ONLY)
add_executable(${cmd_NAME} ${cmd_SRC})
- qt5_use_modules(${cmd_NAME} Network Sql)
+ target_link_libraries(${cmd_NAME} Qt5::Network Qt5::Sql)
set_target_properties(${cmd_NAME} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${BIN_OUTPUT_DIRECTORY} )
set_target_properties(${cmd_NAME} PROPERTIES
diff --git a/src/crashreporter/CMakeLists.txt b/src/crashreporter/CMakeLists.txt
index b73e38fab..304784295 100644
--- a/src/crashreporter/CMakeLists.txt
+++ b/src/crashreporter/CMakeLists.txt
@@ -32,7 +32,7 @@ if(NOT BUILD_LIBRARIES_ONLY)
${crashreporter_RC_RCC}
)
- qt5_use_modules(${CRASHREPORTER_EXECUTABLE} Widgets Network)
+ target_link_libraries(${CRASHREPORTER_EXECUTABLE} Qt5::Widgets Qt5::Network)
set_target_properties(${CRASHREPORTER_EXECUTABLE} PROPERTIES AUTOMOC ON)
set_target_properties(${CRASHREPORTER_EXECUTABLE} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${BIN_OUTPUT_DIRECTORY} )
diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt
index 8f2967466..300659d66 100644
--- a/src/gui/CMakeLists.txt
+++ b/src/gui/CMakeLists.txt
@@ -237,10 +237,10 @@ list(APPEND final_src ${ownCloud})
set(ownCloud ${ownCloud_old})
if (WITH_DBUS)
- set(ADDITIONAL_APP_MODULES DBus)
+ set(ADDITIONAL_APP_MODULES Qt5::DBus)
endif(WITH_DBUS)
if (NOT NO_SHIBBOLETH)
- list(APPEND ADDITIONAL_APP_MODULES WebKitWidgets)
+ list(APPEND ADDITIONAL_APP_MODULES Qt5::WebKitWidgets)
endif()
if(NOT BUILD_OWNCLOUD_OSX_BUNDLE)
@@ -260,14 +260,14 @@ if(NOT BUILD_OWNCLOUD_OSX_BUNDLE)
# add_executable( ${APPLICATION_EXECUTABLE} main.cpp ${final_src})
add_executable( ${APPLICATION_EXECUTABLE} WIN32 main.cpp ${final_src})
- qt5_use_modules(${APPLICATION_EXECUTABLE} Widgets Network Xml Sql ${ADDITIONAL_APP_MODULES})
+ target_link_libraries(${APPLICATION_EXECUTABLE} Qt5::Widgets Qt5::Network Qt5::Xml Qt5::Sql ${ADDITIONAL_APP_MODULES})
else()
# set(CMAKE_INSTALL_PREFIX ".") # Examples use /Applications. hurmpf.
set(MACOSX_BUNDLE_ICON_FILE "ownCloud.icns")
# we must add MACOSX_BUNDLE only if building a bundle
add_executable( ${APPLICATION_EXECUTABLE} WIN32 MACOSX_BUNDLE main.cpp ${final_src})
- qt5_use_modules(${APPLICATION_EXECUTABLE} Widgets Network Xml Sql ${ADDITIONAL_APP_MODULES})
+ target_link_libraries(${APPLICATION_EXECUTABLE} Qt5::Widgets Qt5::Network Qt5::Xml Qt5::Sql ${ADDITIONAL_APP_MODULES})
set (QM_DIR ${OWNCLOUD_OSX_BUNDLE}/Contents/Resources/Translations)
install(FILES ${client_I18N} DESTINATION ${QM_DIR})
@@ -286,7 +286,8 @@ endif()
add_library(updater STATIC ${updater_SRCS} ${updaterMoc})
target_link_libraries(updater ${synclib_NAME})
-qt5_use_modules(updater Widgets Network Xml)
+find_package(Qt5 REQUIRED COMPONENTS Widgets Network Xml)
+target_link_libraries(updater Qt5::Widgets Qt5::Network Qt5::Xml)
set_target_properties( ${APPLICATION_EXECUTABLE} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${BIN_OUTPUT_DIRECTORY}
diff --git a/src/libsync/CMakeLists.txt b/src/libsync/CMakeLists.txt
index cbece4b41..a8a6dfc00 100644
--- a/src/libsync/CMakeLists.txt
+++ b/src/libsync/CMakeLists.txt
@@ -137,9 +137,9 @@ GENERATE_EXPORT_HEADER( ${synclib_NAME}
)
if(TOKEN_AUTH_ONLY)
- qt5_use_modules(${synclib_NAME} Network Concurrent)
+ target_link_libraries(${synclib_NAME} Qt5::Network Qt5::Concurrent)
else()
- qt5_use_modules(${synclib_NAME} Widgets Network Concurrent)
+ target_link_libraries(${synclib_NAME} Qt5::Widgets Qt5::Network Qt5::Concurrent)
endif()
set_target_properties( ${synclib_NAME} PROPERTIES
diff --git a/test/mockserver/CMakeLists.txt b/test/mockserver/CMakeLists.txt
index fecf3d606..fb1dae2e2 100644
--- a/test/mockserver/CMakeLists.txt
+++ b/test/mockserver/CMakeLists.txt
@@ -16,6 +16,6 @@ set(mockserver_HDRS
# add_executable( ${MOCKSERVER_NAME} main.cpp ${final_src})
add_executable(${MOCKSERVER_NAME} WIN32 ${mockserver_SRCS} ${mockserver_HDRS})
-qt5_use_modules(${MOCKSERVER_NAME} Network Xml)
-target_link_libraries(${MOCKSERVER_NAME} ${QT_LIBRARIES})
+target_link_libraries(${MOCKSERVER_NAME} Qt5::Network Qt5::Xml)
+target_link_libraries(${MOCKSERVER_NAME} ${QT_LIBRARIES})
diff --git a/test/owncloud_add_test.cmake b/test/owncloud_add_test.cmake
index bf15ab890..716000bf2 100644
--- a/test/owncloud_add_test.cmake
+++ b/test/owncloud_add_test.cmake
@@ -11,7 +11,7 @@ macro(owncloud_add_test test_class additional_cpp)
string(TOLOWER "${OWNCLOUD_TEST_CLASS}" OWNCLOUD_TEST_CLASS_LOWERCASE)
add_executable(${OWNCLOUD_TEST_CLASS}Test test${OWNCLOUD_TEST_CLASS_LOWERCASE}.cpp ${additional_cpp})
- qt5_use_modules(${OWNCLOUD_TEST_CLASS}Test Test Sql Xml Network)
+ target_link_libraries(${OWNCLOUD_TEST_CLASS}Test Qt5::Test Qt5::Sql Qt5::Xml Qt5::Network)
set_target_properties(${OWNCLOUD_TEST_CLASS}Test PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${BIN_OUTPUT_DIRECTORY})
target_link_libraries(${OWNCLOUD_TEST_CLASS}Test
@@ -40,7 +40,7 @@ macro(owncloud_add_benchmark test_class additional_cpp)
string(TOLOWER "${OWNCLOUD_TEST_CLASS}" OWNCLOUD_TEST_CLASS_LOWERCASE)
add_executable(${OWNCLOUD_TEST_CLASS}Bench benchmarks/bench${OWNCLOUD_TEST_CLASS_LOWERCASE}.cpp ${additional_cpp})
- qt5_use_modules(${OWNCLOUD_TEST_CLASS}Bench Test Sql Xml Network)
+ target_link_libraries(${OWNCLOUD_TEST_CLASS}Bench Qt5::Test Qt5::Sql Qt5::Xml Qt5::Network)
set_target_properties(${OWNCLOUD_TEST_CLASS}Bench PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${BIN_OUTPUT_DIRECTORY})
target_link_libraries(${OWNCLOUD_TEST_CLASS}Bench
@hughwilliams94
Copy link

hughwilliams94 commented Jun 27, 2018

Have you submitted a PR upstream? Or do these changes conflict with users on earlier Qt versions?

@niklaszantner
Copy link

Thanks a lot @GjjvdBurg!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment