From e11d78a554a184767383758185a3902e4d6c986d Mon Sep 17 00:00:00 2001 From: Samuli Piippo Date: Tue, 16 Jun 2015 15:43:26 +0300 Subject: Support BYOS for enterprise only addons When QT_SDK_PATH has been set, use sources for all enterprise addons from the SDK installation path. This allows customers to build enterprise only addos and b2qt addons without access to qt-gerrit. Change-Id: I66ad8a2ff81628333ba7dd6042659c3fa220be8c Reviewed-by: Eirik Aavitsland --- classes/sdk-sources.bbclass | 90 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 classes/sdk-sources.bbclass (limited to 'classes/sdk-sources.bbclass') diff --git a/classes/sdk-sources.bbclass b/classes/sdk-sources.bbclass new file mode 100644 index 0000000..1c3629b --- /dev/null +++ b/classes/sdk-sources.bbclass @@ -0,0 +1,90 @@ +############################################################################# +## +## Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +## +## This file is part of the Qt Enterprise Embedded Scripts of the Qt +## framework. +## +## $QT_BEGIN_LICENSE$ +## Commercial License Usage Only +## Licensees holding valid commercial Qt license agreements with Digia +## with an appropriate addendum covering the Qt Enterprise Embedded Scripts, +## may use this file in accordance with the terms contained in said license +## agreement. +## +## For further information use the contact form at +## http://www.qt.io/contact-us. +## +## +## $QT_END_LICENSE$ +## +############################################################################# + +python do_fetch () { + src_uri = (d.getVar('SRC_URI', True) or "").split() + if len(src_uri) == 0: + return + + sdk_path = d.getVar('QT_SDK_PATH', True) or "" + if len(sdk_path) != 0: + uris = list(src_uri); + for url in uris: + ud = list(bb.fetch2.decodeurl(url)) + if ("sdk-uri" in ud[5]): + src_uri.remove(url) + + + if len(src_uri) == 0: + return + + try: + fetcher = bb.fetch2.Fetch(src_uri, d) + fetcher.download() + except bb.fetch2.BBFetchException as e: + raise bb.build.FuncFailed(e) +} + +python do_unpack () { + src_uri = (d.getVar('SRC_URI', True) or "").split() + if len(src_uri) == 0: + return + + rootdir = d.getVar('WORKDIR', True) + + sdk_path = d.getVar('QT_SDK_PATH', True) or "" + if len(sdk_path) != 0: + uris = list(src_uri); + for url in uris: + ud = list(bb.fetch2.decodeurl(url)) + if ("sdk-uri" in ud[5]): + unpack_local_uri(ud, d) + src_uri.remove(url) + + if len(src_uri) == 0: + return + + try: + fetcher = bb.fetch2.Fetch(src_uri, d) + fetcher.unpack(rootdir) + except bb.fetch2.BBFetchException as e: + raise bb.build.FuncFailed(e) +} + +def unpack_local_uri(ud, d): + import subprocess + rootdir = d.getVar('WORKDIR', True) + sdk_path = d.getVar('QT_SDK_PATH', True) + + destdir = os.path.join(rootdir, ud[5].get("destsuffix", "git")) + srcdir = os.path.join(sdk_path, ud[5].get("sdk-uri")) + cmd = "cp -vrf %s %s" % (srcdir, destdir) + + bb.note("Unpacking SDK sources %s to %s" % (srcdir, destdir)) + + if os.path.exists(destdir): + bb.utils.prunedir(destdir) + + ret = subprocess.call(cmd, shell=True) + + if ret != 0: + raise bb.fetch.UnpackError("Unpack command %s failed with return value %s" % (cmd, ret), ud) -- cgit v1.2.3-54-g00ecf