diff options
author | Samuli Piippo <samuli.piippo@qt.io> | 2016-11-10 10:06:11 +0200 |
---|---|---|
committer | Samuli Piippo <samuli.piippo@qt.io> | 2016-11-21 08:39:46 +0000 |
commit | 1a9ad4899efb2f3054ec0d676e41a85e01d8f806 (patch) | |
tree | 0db9018d6d7e3c6caa71fe4710e94e25021e041d /classes | |
parent | 3ee5d97e4de4356d416dad28239324ab757ec27a (diff) | |
download | meta-boot2qt-1a9ad4899efb2f3054ec0d676e41a85e01d8f806.tar.gz |
Add support for creating QBSP package
QBSP is a Qt specific Board Support Package that can be installed with
the Qt SDK or MaintenanceTool and contains a system image and a toolchain.
The toolchain is automatically registered to the QtCreator.
The recipes used for creating the system image and the toolchain can be
configured with QBSP_IMAGE_TASK and QBSP_SDK_TASK. The files wanted for
the system image can be further configured with QBSP_IMAGE_CONTENT,
with a list of files located in DEPLOY_DIR_IMAGE folder. By default,
.img and .conf files are used from the selected image recipe.
QBSP_INSTALLER_COMPONENT defines the location in the Qt installer tree
where the QBSP is shown and QBSP_VERSION defines the version for the
components. The QBSP is installed to path defined by QBSP_INSTALL_PATH.
The regular SDK creation can now reuse the same image package .7z, so
update upload script to use it instead of creating new package.
Task-number: QTBUG-57018
Change-Id: Id1e7cc4ab3998a7d450f23ed603b8e676b314d63
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
Reviewed-by: Teemu Holappa <teemu.holappa@qt.io>
Diffstat (limited to 'classes')
-rw-r--r-- | classes/qbsp-image.bbclass | 53 | ||||
-rw-r--r-- | classes/qbsp.bbclass | 151 |
2 files changed, 204 insertions, 0 deletions
diff --git a/classes/qbsp-image.bbclass b/classes/qbsp-image.bbclass new file mode 100644 index 0000000..c80aa23 --- /dev/null +++ b/classes/qbsp-image.bbclass | |||
@@ -0,0 +1,53 @@ | |||
1 | ############################################################################ | ||
2 | ## | ||
3 | ## Copyright (C) 2016 The Qt Company Ltd. | ||
4 | ## Contact: https://www.qt.io/licensing/ | ||
5 | ## | ||
6 | ## This file is part of the Boot to Qt meta layer. | ||
7 | ## | ||
8 | ## $QT_BEGIN_LICENSE:GPL$ | ||
9 | ## Commercial License Usage | ||
10 | ## Licensees holding valid commercial Qt licenses may use this file in | ||
11 | ## accordance with the commercial license agreement provided with the | ||
12 | ## Software or, alternatively, in accordance with the terms contained in | ||
13 | ## a written agreement between you and The Qt Company. For licensing terms | ||
14 | ## and conditions see https://www.qt.io/terms-conditions. For further | ||
15 | ## information use the contact form at https://www.qt.io/contact-us. | ||
16 | ## | ||
17 | ## GNU General Public License Usage | ||
18 | ## Alternatively, this file may be used under the terms of the GNU | ||
19 | ## General Public License version 3 or (at your option) any later version | ||
20 | ## approved by the KDE Free Qt Foundation. The licenses are as published by | ||
21 | ## the Free Software Foundation and appearing in the file LICENSE.GPL3 | ||
22 | ## included in the packaging of this file. Please review the following | ||
23 | ## information to ensure the GNU General Public License requirements will | ||
24 | ## be met: https://www.gnu.org/licenses/gpl-3.0.html. | ||
25 | ## | ||
26 | ## $QT_END_LICENSE$ | ||
27 | ## | ||
28 | ############################################################################ | ||
29 | |||
30 | QBSP_IMAGE_CONTENT ??= "" | ||
31 | |||
32 | fakeroot do_qbsp_image () { | ||
33 | if [ -z "${QBSP_IMAGE_CONTENT}" ]; then | ||
34 | exit 0 | ||
35 | fi | ||
36 | |||
37 | mkdir -p ${S}/qbsp | ||
38 | |||
39 | for item in ${QBSP_IMAGE_CONTENT}; do | ||
40 | src=`echo $item | awk -F':' '{ print $1 }'` | ||
41 | dst=`echo $item | awk -F':' '{ print $2 }'` | ||
42 | |||
43 | install -D -m 0755 ${DEPLOY_DIR_IMAGE}/$src ${S}/qbsp/$dst | ||
44 | done | ||
45 | |||
46 | cd ${S}/qbsp | ||
47 | 7z a ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.7z . | ||
48 | |||
49 | rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.7z | ||
50 | ln -s ${IMAGE_NAME}.7z ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.7z | ||
51 | } | ||
52 | |||
53 | IMAGE_POSTPROCESS_COMMAND += "do_qbsp_image;" | ||
diff --git a/classes/qbsp.bbclass b/classes/qbsp.bbclass new file mode 100644 index 0000000..6707ce3 --- /dev/null +++ b/classes/qbsp.bbclass | |||
@@ -0,0 +1,151 @@ | |||
1 | ############################################################################ | ||
2 | ## | ||
3 | ## Copyright (C) 2016 The Qt Company Ltd. | ||
4 | ## Contact: https://www.qt.io/licensing/ | ||
5 | ## | ||
6 | ## This file is part of the Boot to Qt meta layer. | ||
7 | ## | ||
8 | ## $QT_BEGIN_LICENSE:GPL$ | ||
9 | ## Commercial License Usage | ||
10 | ## Licensees holding valid commercial Qt licenses may use this file in | ||
11 | ## accordance with the commercial license agreement provided with the | ||
12 | ## Software or, alternatively, in accordance with the terms contained in | ||
13 | ## a written agreement between you and The Qt Company. For licensing terms | ||
14 | ## and conditions see https://www.qt.io/terms-conditions. For further | ||
15 | ## information use the contact form at https://www.qt.io/contact-us. | ||
16 | ## | ||
17 | ## GNU General Public License Usage | ||
18 | ## Alternatively, this file may be used under the terms of the GNU | ||
19 | ## General Public License version 3 or (at your option) any later version | ||
20 | ## approved by the KDE Free Qt Foundation. The licenses are as published by | ||
21 | ## the Free Software Foundation and appearing in the file LICENSE.GPL3 | ||
22 | ## included in the packaging of this file. Please review the following | ||
23 | ## information to ensure the GNU General Public License requirements will | ||
24 | ## be met: https://www.gnu.org/licenses/gpl-3.0.html. | ||
25 | ## | ||
26 | ## $QT_END_LICENSE$ | ||
27 | ## | ||
28 | ############################################################################ | ||
29 | |||
30 | inherit meta nopackages abi-arch | ||
31 | |||
32 | FILESEXTRAPATHS_prepend := "${B2QTBASE}/files/qbsp:" | ||
33 | |||
34 | SRC_URI = "\ | ||
35 | file://base_package.xml \ | ||
36 | file://image_package.xml \ | ||
37 | file://toolchain_package.xml \ | ||
38 | file://toolchain_installscript.qs \ | ||
39 | " | ||
40 | |||
41 | INHIBIT_DEFAULT_DEPS = "1" | ||
42 | do_qbsp[depends] += "\ | ||
43 | installer-framework:do_populate_sysroot \ | ||
44 | ${QBSP_SDK_TASK}:do_populate_sdk \ | ||
45 | ${QBSP_IMAGE_TASK}:do_image_complete \ | ||
46 | " | ||
47 | |||
48 | QBSP_VERSION ?= "${PV}${VERSION_AUTO_INCREMENT}" | ||
49 | QBSP_INSTALLER_COMPONENT ?= "${MACHINE}" | ||
50 | QBSP_INSTALL_PATH ?= "/Extras/${MACHINE}" | ||
51 | |||
52 | QBSP_LICENSE_DEPENDENCY ?= "" | ||
53 | QBSP_LICENSE_DEPENDENCY_imx = "qt.embedded.b2qt.freescalelicense" | ||
54 | |||
55 | VERSION_AUTO_INCREMENT = "-0-${DATETIME}" | ||
56 | VERSION_AUTO_INCREMENT[vardepsexclude] = "DATETIME" | ||
57 | |||
58 | DEPLOY_CONF_NAME ?= "${MACHINE}" | ||
59 | RELEASEDATE = "${@time.strftime('%Y-%m-%d',time.gmtime())}" | ||
60 | |||
61 | IMAGE_PACKAGE = "${QBSP_IMAGE_TASK}-${MACHINE}.7z" | ||
62 | SDK_NAME = "${DISTRO}-${SDK_MACHINE}-${QBSP_SDK_TASK}-${MACHINE}.${SDK_POSTFIX}" | ||
63 | SDK_POSTFIX = "sh" | ||
64 | SDK_POSTFIX_sdkmingw32 = "7z" | ||
65 | REAL_MULTIMACH_TARGET_SYS = "${TUNE_PKGARCH}${TARGET_VENDOR}-${TARGET_OS}" | ||
66 | SDK_MACHINE = "${@d.getVar('SDKMACHINE', True) or '${SDK_ARCH}'}" | ||
67 | |||
68 | B = "${WORKDIR}/build" | ||
69 | |||
70 | patch_installer_files() { | ||
71 | sed -e 's#@NAME@#${DEPLOY_CONF_NAME}#' \ | ||
72 | -e 's#@VERSION@#${QBSP_VERSION}#' \ | ||
73 | -e 's#@RELEASEDATE@#${RELEASEDATE}#' \ | ||
74 | -e 's#@MACHINE@#${MACHINE}#' \ | ||
75 | -e 's#@SYSROOT@#${REAL_MULTIMACH_TARGET_SYS}#' \ | ||
76 | -e 's#@TARGET@#${TARGET_SYS}#' \ | ||
77 | -e 's#@ABI@#${ABI}#' \ | ||
78 | -e 's#@INSTALLPATH@#${QBSP_INSTALL_PATH}#' \ | ||
79 | -e 's#@SDKPATH@#${SDKPATH}#' \ | ||
80 | -e 's#@SDKFILE@#${SDK_NAME}#' \ | ||
81 | -e 's#@LICENSEDEPENDENCY@#${QBSP_LICENSE_DEPENDENCY}#' \ | ||
82 | -i ${1}/* | ||
83 | } | ||
84 | |||
85 | prepare_qbsp() { | ||
86 | # Toolchain component | ||
87 | TOOLCHAIN_PATH="${B}/pkg/${QBSP_INSTALLER_COMPONENT}.toolchain" | ||
88 | mkdir -p ${TOOLCHAIN_PATH}/meta | ||
89 | mkdir -p ${TOOLCHAIN_PATH}/data | ||
90 | |||
91 | cp ${WORKDIR}/toolchain_package.xml ${TOOLCHAIN_PATH}/meta/package.xml | ||
92 | cp ${WORKDIR}/toolchain_installscript.qs ${TOOLCHAIN_PATH}/meta/installscript.qs | ||
93 | patch_installer_files ${TOOLCHAIN_PATH}/meta | ||
94 | |||
95 | mkdir -p ${B}/toolchain/${QBSP_INSTALL_PATH}/toolchain | ||
96 | if [ "${SDK_POSTFIX}" == "7z" ]; then | ||
97 | 7z x ${DEPLOY_DIR}/sdk/${SDK_NAME} -o${B}/toolchain/${QBSP_INSTALL_PATH}/toolchain/ | ||
98 | else | ||
99 | cp ${DEPLOY_DIR}/sdk/${SDK_NAME} ${B}/toolchain/${QBSP_INSTALL_PATH}/toolchain/ | ||
100 | fi | ||
101 | |||
102 | cd ${B}/toolchain | ||
103 | archivegen ${TOOLCHAIN_PATH}/data/toolchain.7z * | ||
104 | |||
105 | # Image component | ||
106 | IMAGE_PATH="${B}/pkg/${QBSP_INSTALLER_COMPONENT}.system" | ||
107 | mkdir -p ${IMAGE_PATH}/meta | ||
108 | mkdir -p ${IMAGE_PATH}/data | ||
109 | |||
110 | cp ${WORKDIR}/image_package.xml ${IMAGE_PATH}/meta/package.xml | ||
111 | patch_installer_files ${IMAGE_PATH}/meta | ||
112 | |||
113 | mkdir -p ${B}/images/${QBSP_INSTALL_PATH}/images | ||
114 | 7z x ${DEPLOY_DIR_IMAGE}/${IMAGE_PACKAGE} -o${B}/images/${QBSP_INSTALL_PATH}/images/ | ||
115 | |||
116 | cd ${B}/images | ||
117 | archivegen ${IMAGE_PATH}/data/image.7z * | ||
118 | |||
119 | # Base component | ||
120 | BASE_PATH="${B}/pkg/${QBSP_INSTALLER_COMPONENT}" | ||
121 | mkdir -p ${BASE_PATH}/meta | ||
122 | |||
123 | cp ${WORKDIR}/base_package.xml ${BASE_PATH}/meta/package.xml | ||
124 | patch_installer_files ${BASE_PATH}/meta | ||
125 | } | ||
126 | |||
127 | create_qbsp() { | ||
128 | prepare_qbsp | ||
129 | |||
130 | # Repository creation | ||
131 | repogen -p ${B}/pkg ${B}/repository | ||
132 | |||
133 | mkdir -p ${DEPLOY_DIR}/qbsp | ||
134 | rm -f ${DEPLOY_DIR}/qbsp/${PN}-${MACHINE}.qbsp | ||
135 | |||
136 | cd ${B}/repository | ||
137 | archivegen ${DEPLOY_DIR}/qbsp/${PN}-${SDK_MACHINE}-${MACHINE}.qbsp * | ||
138 | } | ||
139 | |||
140 | python do_qbsp() { | ||
141 | bb.build.exec_func('create_qbsp', d) | ||
142 | } | ||
143 | |||
144 | addtask qbsp after do_unpack before do_build | ||
145 | |||
146 | do_qbsp[cleandirs] += "${B}" | ||
147 | |||
148 | do_configure[noexec] = "1" | ||
149 | do_compile[noexec] = "1" | ||
150 | do_populate_sysroot[noexec] = "1" | ||
151 | do_populate_lic[noexec] = "1" | ||