From f810774a7726d9fa0e4d41a3438b30aa2d44e1b6 Mon Sep 17 00:00:00 2001 From: hbai Date: Tue, 29 Mar 2022 20:25:35 +0800 Subject: [PATCH] build-pkgs: pass build type to debrepack Pass build type to debrepack to support to build rt packages Test Plan: Pass: Cherry pick https://review.opendev.org/c/starlingx/kernel/+/834810 Update the 'BUILD_TYPE' in contorl file to 'KERNEL_TYPE' Create 'debian_pkg_dirs_rt' for rt kernel module build-pkgs -c -p [debname of kernel module] -b rt Story: 2008846 Task: 44627 Signed-off-by: hbai Change-Id: I39cd6dc6affff4d5d2e8e5df01ffd9718f785d5e --- build-tools/stx/build-pkgs | 9 ++++++--- build-tools/stx/debrepack.py | 29 +++++++++++++++++++++++++++-- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/build-tools/stx/build-pkgs b/build-tools/stx/build-pkgs index 97dfbbad..1619f5e7 100755 --- a/build-tools/stx/build-pkgs +++ b/build-tools/stx/build-pkgs @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# Copyright (C) 2021 Wind River Systems,Inc +# Copyright (C) 2021-2022 Wind River Systems,Inc import argparse import debrepack @@ -304,8 +304,11 @@ class BuildController(): if not build_type in self.kits['dsc_maker']: try: - self.kits['dsc_maker'][build_type] = debrepack.Parser(build_dir, - recipes_dir, 'debug') + if build_type == 'rt': + self.kits['dsc_maker'][build_type] = debrepack.Parser(build_dir, recipes_dir, + 'debug', None, 'rt') + else: + self.kits['dsc_maker'][build_type] = debrepack.Parser(build_dir, recipes_dir, 'debug') except Exception as e: logger.error(str(e)) logger.error("Failed to create dsc maker") diff --git a/build-tools/stx/debrepack.py b/build-tools/stx/debrepack.py index 305b69b9..60164f81 100755 --- a/build-tools/stx/debrepack.py +++ b/build-tools/stx/debrepack.py @@ -10,7 +10,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# Copyright (C) 2021 WindRiver Corporation +# Copyright (C) 2021-2022 WindRiver Corporation # import apt import apt_pkg @@ -36,6 +36,7 @@ RELEASENOTES = " ".join([os.environ.get('PROJECT'), os.environ.get('MY_RELEASE') DIST = os.environ.get('STX_DIST') CENGN_BASE = os.path.join(os.environ.get('CENGNURL'), "debian") CENGN_STRATEGY = os.environ.get('CENGN_STRATEGY') +BTYPE = "@KERNEL_TYPE@" class DownloadProgress(): @@ -234,7 +235,7 @@ class Parser(): 'crit': logging.CRITICAL } - def __init__(self, basedir, output, loglevel='info', srcrepo=None): + def __init__(self, basedir, output, loglevel='info', srcrepo=None, btype="std"): self.logger = logging.getLogger(__name__) self.logger.setLevel(self.level_relations.get(loglevel)) @@ -260,6 +261,7 @@ class Parser(): self.output = os.path.abspath(output) self.srcrepo = srcrepo + self.btype = btype self.meta_data = dict() self.versions = dict() self.pkginfo = dict() @@ -332,6 +334,24 @@ class Parser(): if os.path.exists(self.pkginfo["srcdir"]): shutil.rmtree(self.pkginfo["srcdir"]) + def set_build_type(self): + + local_debian = os.path.join(self.pkginfo["packdir"], "local_debian") + run_shell_cmd('cp -r %s %s' % (self.pkginfo["debfolder"], local_debian), self.logger) + + # clean @KERNEL_TYPE@ if build type is std + if self.btype == "std": + btype = "" + else: + btype = "-" + self.btype + + sed_cmd = 'sed -i s#%s#%s#g %s' + for root, _, files in os.walk(local_debian): + for name in files: + run_shell_cmd(sed_cmd % (BTYPE, btype, os.path.join(root, name)), self.logger) + + self.pkginfo["debfolder"] = os.path.join(local_debian) + def set_revision(self): revision = 0 @@ -339,6 +359,9 @@ class Parser(): if "revision" not in self.meta_data: return dist + # reset the debfolder + self.pkginfo["debfolder"] = os.path.join(self.pkginfo["pkgpath"], "debian") + revision_data = self.meta_data["revision"] if "dist" in revision_data: if revision_data["dist"] is not None: @@ -762,6 +785,8 @@ class Parser(): shutil.rmtree(self.pkginfo["packdir"]) os.mkdir(self.pkginfo["packdir"]) + self.set_build_type() + logfile = os.path.join(self.pkginfo["packdir"], self.pkginfo["pkgname"] + ".log") if os.path.exists(logfile): os.remove(logfile)