summaryrefslogtreecommitdiffstats
path: root/classes
diff options
context:
space:
mode:
authorSamuli Piippo <samuli.piippo@qt.io>2016-11-10 10:06:11 +0200
committerSamuli Piippo <samuli.piippo@qt.io>2016-11-21 08:39:46 +0000
commit1a9ad4899efb2f3054ec0d676e41a85e01d8f806 (patch)
tree0db9018d6d7e3c6caa71fe4710e94e25021e041d /classes
parent3ee5d97e4de4356d416dad28239324ab757ec27a (diff)
downloadmeta-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.bbclass53
-rw-r--r--classes/qbsp.bbclass151
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
30QBSP_IMAGE_CONTENT ??= ""
31
32fakeroot 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
53IMAGE_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
30inherit meta nopackages abi-arch
31
32FILESEXTRAPATHS_prepend := "${B2QTBASE}/files/qbsp:"
33
34SRC_URI = "\
35 file://base_package.xml \
36 file://image_package.xml \
37 file://toolchain_package.xml \
38 file://toolchain_installscript.qs \
39 "
40
41INHIBIT_DEFAULT_DEPS = "1"
42do_qbsp[depends] += "\
43 installer-framework:do_populate_sysroot \
44 ${QBSP_SDK_TASK}:do_populate_sdk \
45 ${QBSP_IMAGE_TASK}:do_image_complete \
46 "
47
48QBSP_VERSION ?= "${PV}${VERSION_AUTO_INCREMENT}"
49QBSP_INSTALLER_COMPONENT ?= "${MACHINE}"
50QBSP_INSTALL_PATH ?= "/Extras/${MACHINE}"
51
52QBSP_LICENSE_DEPENDENCY ?= ""
53QBSP_LICENSE_DEPENDENCY_imx = "qt.embedded.b2qt.freescalelicense"
54
55VERSION_AUTO_INCREMENT = "-0-${DATETIME}"
56VERSION_AUTO_INCREMENT[vardepsexclude] = "DATETIME"
57
58DEPLOY_CONF_NAME ?= "${MACHINE}"
59RELEASEDATE = "${@time.strftime('%Y-%m-%d',time.gmtime())}"
60
61IMAGE_PACKAGE = "${QBSP_IMAGE_TASK}-${MACHINE}.7z"
62SDK_NAME = "${DISTRO}-${SDK_MACHINE}-${QBSP_SDK_TASK}-${MACHINE}.${SDK_POSTFIX}"
63SDK_POSTFIX = "sh"
64SDK_POSTFIX_sdkmingw32 = "7z"
65REAL_MULTIMACH_TARGET_SYS = "${TUNE_PKGARCH}${TARGET_VENDOR}-${TARGET_OS}"
66SDK_MACHINE = "${@d.getVar('SDKMACHINE', True) or '${SDK_ARCH}'}"
67
68B = "${WORKDIR}/build"
69
70patch_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
85prepare_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
127create_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
140python do_qbsp() {
141 bb.build.exec_func('create_qbsp', d)
142}
143
144addtask qbsp after do_unpack before do_build
145
146do_qbsp[cleandirs] += "${B}"
147
148do_configure[noexec] = "1"
149do_compile[noexec] = "1"
150do_populate_sysroot[noexec] = "1"
151do_populate_lic[noexec] = "1"