regist- Automatically create Kits on creation

This commit is contained in:
Zoltán Balogh
2015-10-22 13:48:55 +03:00
3 changed files with 87 additions and 7 deletions

View File

@@ -5,9 +5,19 @@ endif()
project(ubuntu-sdk-ide C CXX)
include(ExternalProject)
include(ProcessorCount)
function(ConcatStrings targetVar )
if(NOT DEFINED ${targetVar})
message(SEND_ERROR "Error, the variable ${targetVar} is not defined!")
endif()
set(loc_val ${${targetVar}})
foreach(curr_substr ${ARGN})
set(loc_val "${loc_val}${curr_substr}")
endforeach()
set(${targetVar} ${loc_val} PARENT_SCOPE)
endfunction()
ProcessorCount(JOBS)
if(NOT JOBS EQUAL 0)
set(GENERATED_MAKE_FLAGS -j${JOBS})
@@ -38,8 +48,13 @@ ExternalProject_Add(${QT_VERSION}
)
SET (DBUSMENU_PREFIX "${CMAKE_BINARY_DIR}/libdbusmenu-qt-build")
SET (DBUSMENU_BUILD_SCRIPT
"${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${QT_INSTALL_DIR} -DCMAKE_PREFIX_PATH=${QT_INSTALL_DIR} -DUSE_QT5=true -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_LIBDIR=lib ${DBUSMENU_PREFIX}/libdbusmenu-qt"
ConcatStrings (DBUSMENU_BUILD_SCRIPT
"${CMAKE_COMMAND} "
"-DCMAKE_INSTALL_PREFIX=${QT_INSTALL_DIR} "
"-DCMAKE_PREFIX_PATH=${QT_INSTALL_DIR} "
"-DUSE_QT5=true "
"-DCMAKE_BUILD_TYPE=RelWithDebInfo "
"-DCMAKE_INSTALL_LIBDIR=lib ${DBUSMENU_PREFIX}/libdbusmenu-qt "
)
ExternalProject_Add(libdbusmenu-qt
@@ -68,7 +83,15 @@ ExternalProject_Add(appmenu-qt5
)
SET (QTCREATOR_PREFIX "${CMAKE_BINARY_DIR}/qtcreator-build")
SET (QTC_PATCH_SCRIPT "bzr branch lp:qtcreator-plugin-ubuntu ${QTCREATOR_PREFIX}/qtcreator/src/plugins/ubuntu -Ossl.cert_reqs=none && sed -i 's/\\(welcome\\)/\\1 \\\\ \\n ubuntu/g' ${QTCREATOR_PREFIX}/qtcreator/src/plugins/plugins.pro"
ConcatStrings(QTC_DOWNLOAD_SCRIPT
"dget https://launchpad.net/ubuntu/+archive/primary/+files/qtcreator_3.5.0+dfsg-1ubuntu3.dsc "
"&& rsync -auvr --delete-after qtcreator-3.5.0+dfsg/ ${QTCREATOR_PREFIX}/qtcreator"
)
ConcatStrings(QTC_PATCH_SCRIPT
"cd ${QTCREATOR_PREFIX}/qtcreator "
"&& patch -p1 ${CMAKE_SOURCE_DIR}/patches/qtc.patch "
"&& bzr branch lp:qtcreator-plugin-ubuntu ${QTCREATOR_PREFIX}/qtcreator/src/plugins/ubuntu -Ossl.cert_reqs=none "
"&& sed -i 's/\\(welcome\\)/\\1 \\\\ \\n ubuntu/g' ${QTCREATOR_PREFIX}/qtcreator/src/plugins/plugins.pro"
)
ExternalProject_Add(qtcreator_3.5.0
@@ -77,7 +100,7 @@ ExternalProject_Add(qtcreator_3.5.0
SOURCE_DIR "${QTCREATOR_PREFIX}/qtcreator"
BINARY_DIR "${QTCREATOR_PREFIX}/build"
INSTALL_DIR "${CMAKE_BINARY_DIR}/ubuntu-sdk-ide"
DOWNLOAD_COMMAND sh -c "dget https://launchpad.net/ubuntu/+archive/primary/+files/qtcreator_3.5.0+dfsg-1ubuntu3.dsc && rsync -auvr --delete-after qtcreator-3.5.0+dfsg/ ${QTCREATOR_PREFIX}/qtcreator"
DOWNLOAD_COMMAND sh -c "${QTC_DOWNLOAD_SCRIPT}"
PATCH_COMMAND sh -c "${QTC_PATCH_SCRIPT}"
CONFIGURE_COMMAND sh -c "${QT_INSTALL_DIR}/bin/qmake -r USE_SYSTEM_BOTAN=1 ${QTCREATOR_PREFIX}/qtcreator"
BUILD_COMMAND sh -c "QT_PRIVATE_HEADERS=${QT_INSTALL_DIR} LD_LIBRARY_PATH=${QT_INSTALL_DIR}/lib make ${GENERATED_MAKE_FLAGS}"
@@ -123,7 +146,7 @@ ExternalProject_Add(${QT_VERSION}-api
INSTALL_DIR "${QT_KIT_PREFIX}/qt"
DOWNLOAD_COMMAND sh -c "cd ${QT_KIT_SOURCE_DIR} && ${CMAKE_SOURCE_DIR}/get_qt_sources.py"
UPDATE_COMMAND sh -c "exit 0" #nothing to update
PATCH_COMMAND sh -c "cp ${CMAKE_SOURCE_DIR}/desktop_kit_qt.pro ${QT_KIT_SOURCE_DIR}/qt.pro && cp ${CMAKE_SOURCE_DIR}/desktop_kit_configure ${QT_KIT_SOURCE_DIR}/configure"
PATCH_COMMAND sh -c "cp ${CMAKE_SOURCE_DIR}/desktop_kit_qt.pro ${QT_KIT_SOURCE_DIR}/qt.pro && cp ${CMAKE_SOURCE_DIR}/desktop_kit_configure ${QT_KIT_SOURCE_DIR}/configure"
CONFIGURE_COMMAND sh -c "${QT_KIT_SOURCE_DIR}/configure -prefix /usr/ubuntu-sdk-dev `cat ${CMAKE_SOURCE_DIR}/kit_config`"
BUILD_COMMAND sh -c "make ${GENERATED_MAKE_FLAGS}"
INSTALL_COMMAND sh -c "make INSTALL_ROOT=${QT_KIT_PREFIX}/qt install"
@@ -139,5 +162,5 @@ ExternalProject_Add(${QT_VERSION}-extras
UPDATE_COMMAND sh -c "exit 0" #nothing to update
CONFIGURE_COMMAND sh -c "exit 0"
BUILD_COMMAND sh -c "cp ${EXTRAS_PREFIX}/ubuntu-sdk-qmake-extras/*.prf ${QT_KIT_PREFIX}/qt/usr/ubuntu-sdk-dev/mkspecs/features"
INSTALL_COMMAND sh -c "exit 0"
INSTALL_COMMAND sh -c "cd ${CMAKE_BINARY_DIR} && ${CMAKE_SOURCE_DIR}/create_sdk.sh"
)

46
create_sdk.sh Executable file
View File

@@ -0,0 +1,46 @@
#!/bin/bash
GCC_UID=""
QT_UID="UbuntuSDK-API-Qt"
case "$(dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null)" in
x86_64-linux-gnu)
GCC_UID="ProjectExplorer.ToolChain.Gcc:UbuntuSDKGCC-x86_64-linux-gnu"
./ubuntu-sdk-ide/bin/sdktool addTC \
--id "${GCC_UID}" \
--name "GCC (x86 64bit in /usr/bin/g++)" \
--path /usr/bin/g++ \
--abi x86-linux-generic-elf-64bit \
--supportedAbis x86-linux-generic-elf-64bit,x86-linux-generic-elf-32bit
;;
i386-linux-gnu)
GCC_UID="ProjectExplorer.ToolChain.Gcc:UbuntuSDKGCC-x86-linux-generic-elf-32bit"
./ubuntu-sdk-ide/bin/sdktool addTC \
--id "${GCC_UID}" \
--name "GCC (x86 32bit in /usr/bin/g++)" \
--path /usr/bin/g++ \
--abi x86-linux-generic-elf-32bit \
--supportedAbis x86-linux-generic-elf-32bit
;;
*)
echo "Unknown architecture"
exit 1
;;
esac
./ubuntu-sdk-ide/bin/sdktool addQt \
--id "${QT_UID}" \
--name "Ubuntu SDK Desktop Qt" \
--qmake /usr/ubuntu-sdk-dev/bin/qmake \
--type Qt4ProjectManager.QtVersion.Desktop
./ubuntu-sdk-ide/bin/sdktool addKit \
--id "UbuntuSDK-API-Desktop-Kit" \
--name "Ubuntu SDK Desktop Kit" \
--debuggerengine 1 \
--debugger /usr/bin/gdb \
--devicetype Desktop \
--toolchain "${GCC_UID}" \
--qt "${QT_UID}"

11
patches/qtc.patch Normal file
View File

@@ -0,0 +1,11 @@
--- qtcreator/src/plugins/qtsupport/qtversionmanager.cpp 2015-10-21 17:53:48.000000000 +0200
+++ qtcreator/src/plugins/qtsupport/qtversionmanager.cpp 2015-10-22 11:50:21.323455563 +0200
@@ -458,7 +458,7 @@
QMap<QString, int> currentAutoVersions;
for (QMap<int, BaseQtVersion *>::const_iterator i = m_versions.begin(); i != m_versions.end(); ++i) {
- if (i.value()->isAutodetected()) {
+ if (i.value()->isAutodetected() && !i.value()->autodetectionSource().startsWith(QLatin1String("SDK."))) {
currentAutoVersions.insert(i.value()->qmakeCommand().toString(), i.key());
}
}