From patchwork Mon Aug 9 02:26:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Quirin Gylstorff X-Patchwork-Id: 591 Return-Path: Delivered-To: ilbers.mnt@gmail.com Received: by 2002:a4a:e397:0:0:0:0:0 with SMTP id l23csp1139373oov; Mon, 9 Aug 2021 03:26:49 -0700 (PDT) X-Received: by 2002:a05:6512:2296:: with SMTP id f22mr16741182lfu.248.1628504809291; Mon, 09 Aug 2021 03:26:49 -0700 (PDT) ARC-Seal: i=3; a=rsa-sha256; t=1628504809; cv=pass; d=google.com; s=arc-20160816; b=f1X4JcSWMR+aRPeCT3EP+nBdgP3MmNlV3361IgajnGI3+dyx4fvMaAETs9wgAQHxgZ Vsgc3OCJ0Y7bO5axjj2zCz6v72lWmoNZjoDWVvvNhiMQY3b12d4UU4upw7Yz7sPMyG4P BwhlKIhqmO3QUiyN84BvtkRmVtzlNq5WQ6z9pIp0vIogXdRhXVpZnlVqXpJAbWqaNxZj uDRTjx/GfMzDx2BaNQcLFwn6pBgVvHa3yw8k+xZpNiktRBlkfHcTgxtjdl5cDJ57ktG8 DnDro7rToFifGqZQoJ0V/q4O93An86y0qQaLO4EbHek1TOF4NdCEhwISfxCAOS0pk8Ot C95Q== ARC-Message-Signature: i=3; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:dkim-signature; bh=x465UG92+axfFB64z9hjNjWeHQTajFOOLLO1ucge8bk=; b=KJclFH0KDh0/PKsUiG0Lbw4TuePi+czYpw5xGkp3Sp56YWW7cqV+Uu05cJl3riOK7b 67sWM0ij1a+2o/CLag2ef795UmIqqoZb6Xz5jH3oxA6KEdKNFB1ag6RaUhnHdYHjJpcJ pMN1PRFNU4+sSBphMSZQuK9RIa77pNxaQDwmAz+cwnxFXDD59gKbxyHoZK0wh5OtS9fj XU3s8omlDJbr8yq5siklXoDJQMGtWt7kVjZNVqkRsoKsaCazpTr29L7GLn0EM3EAAQSj cB77oKFbuC0QCQkp//Q6fwoFAKbbC1p+Rz6XkyAqkddRe10ehNmEC3tvV/+/f54AgCvI l4Nw== ARC-Authentication-Results: i=3; mx.google.com; dkim=pass header.i=@googlegroups.com header.s=20161025 header.b=YL4txJPt; arc=pass (i=2 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of isar-users+bncbctzztvx2qcrb2efyseamgqeebuw3ty@googlegroups.com designates 209.85.220.55 as permitted sender) smtp.mailfrom=isar-users+bncBCTZZTVX2QCRB2EFYSEAMGQEEBUW3TY@googlegroups.com; dmarc=fail (p=NONE sp=NONE dis=NONE arc=pass) header.from=siemens.com Received: from mail-sor-f55.google.com (mail-sor-f55.google.com. [209.85.220.55]) by mx.google.com with SMTPS id s12sor715100ljg.17.2021.08.09.03.26.49 (Google Transport Security); Mon, 09 Aug 2021 03:26:49 -0700 (PDT) Received-SPF: pass (google.com: domain of isar-users+bncbctzztvx2qcrb2efyseamgqeebuw3ty@googlegroups.com designates 209.85.220.55 as permitted sender) client-ip=209.85.220.55; Authentication-Results: mx.google.com; dkim=pass header.i=@googlegroups.com header.s=20161025 header.b=YL4txJPt; arc=pass (i=2 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of isar-users+bncbctzztvx2qcrb2efyseamgqeebuw3ty@googlegroups.com designates 209.85.220.55 as permitted sender) smtp.mailfrom=isar-users+bncBCTZZTVX2QCRB2EFYSEAMGQEEBUW3TY@googlegroups.com; dmarc=fail (p=NONE sp=NONE dis=NONE arc=pass) header.from=siemens.com ARC-Seal: i=2; a=rsa-sha256; t=1628504809; cv=pass; d=google.com; s=arc-20160816; b=gxaVtGN6IwlyfJ3vDRcVEBQJbg/4HrJkwvpj0gpIUiRNokcrKcmvuXHci/oVsBAYU4 Z2jvBC7FYGUGcLNYPfuBYvfj1M4Dld29me+23r4e5ZZvS0tuBC7lXTOEpKXYi7iRb/Nf pZD+Gt7YSc1ViK73COgjKTYV32RldlF+mkOKijMZ0wtvNBk3xknFP+Wbkuhcbha5T+OV wO81bpgltcmThQNyYG523lonYIn1dO60XqlgjEVO/8Dl5Zb+zutBHrg8IEvgB3l5F/cT I2vwvImqZ1dru1Kj8IVbYHh08yqa9USJbb9EeZtVYSAPBMNnnV0v8IP+LnxVhLktfa3D 9e7A== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:dkim-signature; bh=x465UG92+axfFB64z9hjNjWeHQTajFOOLLO1ucge8bk=; b=XVer3ONHsjRgLZRFhrdpLaDmIvxjBia/6Lk0XVNzmvwJJD7sCnR4zB4jEjsOYOMx/f NUvfSxhTT03eXMMsUJ1TgqHiCZy7tsTnO7p/Lcv0AssinroasffpoYLDEycRyytMbLcw J2bTwpFnGT7YQUtc+rNfJs1Eb+BgTSWWwhVTcjw9yfuV/76T4K59MHwTj3zsMlqrPQ9/ WT3K07DgnKxEBeQ3HbfNhvyOK6Ccs4AHE07TuUDjbEwgeausUhXGJg6ac+Zk0M7oc0sK xc6DyGBd91+4Avpk2OmzXCFpHS92lk0OSMZtitx2Z+t67229l2H7xuW4wa5Q9vf9lzmn QVUQ== ARC-Authentication-Results: i=2; gmr-mx.google.com; spf=pass (google.com: domain of quirin.gylstorff@siemens.com designates 192.35.17.28 as permitted sender) smtp.mailfrom=Quirin.Gylstorff@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:x-original-sender:x-original-authentication-results :precedence:mailing-list:list-id:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=x465UG92+axfFB64z9hjNjWeHQTajFOOLLO1ucge8bk=; b=YL4txJPtWt5zPIRpGc7mcLb7lFuhwuTci0/D8+FYsKdmtLMgV9gJiWcYoQKSL3Uh0/ DkiFjh0Q5ckVu0ZzEv6ARnzvsQo0SQoG2B8Fja1c2oKkWk1R8Q6oLuGyHS7ki8jDVZeE O1OxGhspKHN5c2zPs+Tj9IDFhQrIE56QOGzmMo8iRK5yS+GIIradpFBAja2Y9GTxOF7S +nULeCN1hJNJKVTcwNa9Gi/k8qdzP6GtmDDP9G37fj+qN5hwxTP0zT8ISJQH+3PX+a7H vaSdMzghBF0w4khumfd2go5ND0TilnkUTD1VNU8w4qLO23tN+/iEl9J08EpUvaqQD/// UVIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=sender:x-gm-message-state:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :x-spam-checked-in-group:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=x465UG92+axfFB64z9hjNjWeHQTajFOOLLO1ucge8bk=; b=P1lQ2VEAL53itOY7rtqJRqbrC3NHR93BilZwo26ghn8E+ikk7iCex7w84KHddI3E1F L3dNKCP3M+T60OVcSSC0vQQedTiLPSw4K+AHs3wkxA+IQ6SFDeA3T2xyuGC1zjF/sZBt Ka/SnCrjQcx7r8FwEBKi5l4SlNJgVIsHHqnAb6jCEm1ew5cU1zo6PgXCkGCzRKMBNbFB PoGtHO0OVQ6NSL9eWemwepwSQFGdrqhBoOD8mPGzotb+IXi565ofiuYevpfz/UbPmaON lOb/KdnJJh8mMcLK9n73D5unH83pgPYf8mAh4WPK6FVo5t2rMrosrr2Ts7odZstxQ9lw P1ZA== Sender: isar-users@googlegroups.com X-Gm-Message-State: AOAM531sf5wdNQtStTOAFyclL51wMFvrj49OOeYY1/rSQV8SxGm5IOXd ApvGhshJz/9UBQV5F3RPRBI= X-Google-Smtp-Source: ABdhPJz/opNoQ+9cqGzWS58JS3SNq8fIljkbzmuZbxglpUh/3abLb6/WQV18Rk2uSjmZige74OHF0Q== X-Received: by 2002:a2e:9243:: with SMTP id v3mr4852707ljg.357.1628504808961; Mon, 09 Aug 2021 03:26:48 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a19:691e:: with SMTP id e30ls1347270lfc.0.gmail; Mon, 09 Aug 2021 03:26:48 -0700 (PDT) X-Received: by 2002:a05:6512:5cb:: with SMTP id o11mr17345826lfo.359.1628504808030; Mon, 09 Aug 2021 03:26:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1628504808; cv=none; d=google.com; s=arc-20160816; b=UQAAYyTQEeTyjB/Xv6Sx9Fn0KBUifyTU20sJ4TxI6A4PNjlqb4lE9dUQ9J1aehy9G/ OSb0SwdilXKw3Sz+eh2myox/IyQWB+qde3grVWQ+l9A9xNZW9GNghIc7c4T2/2ro2zdL c6/Jw5AFvavTXzi8kZqV63g5YGeqA7ffEgqKUq4M4aXfGt7JJ21wVgA+hArC4MAPJkxE Aj4NRXhFoyWKD2JUiH3Y5Fc1hTGAivnFnv5i9pgBN4YHAnlDhWNOOOots/QcF+CrGvBE QxP7g8N/hY/VctXgwDPOO7xkjMtgs6ZTV9QtvLVaTdAdviBbX6XwBELCHwtUJlIkMFPR BoJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=ST0TL22R+H/7YRNVI81LVmW0WBu/mlJqlOKW1M/XQjw=; b=OWlIaqzasiizTWQduWKDcHVnNqOmQXxaeu+AS8cdL4tA0UoH1LTd7LU0f14ZjBSo1r lKHgwRevQPin2O0PZPvlmXtNesanYDMvkgbN+HUOF28vcmWx56zEtOg5DHGY0xK4/9wd jNytV+5nhaGUSLHKxlAvuSkE1M8wDVW2Y8m2d8kahDzGPtNQKkWtJMzjN3imU9UEs80q CXIU5CP+jVTZDnE0pwL1U3ZmrVrEnQAf5bOOZYt6VCwNjyqE+bN+emTdPP6xEbODM7yj T31YXagE/ILpMIqdaG5A4A2Sw2tFf9cmBaHB8ceATyjFTImkngG+pRx5OjDB+WTcUYnI fv0w== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of quirin.gylstorff@siemens.com designates 192.35.17.28 as permitted sender) smtp.mailfrom=Quirin.Gylstorff@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from goliath.siemens.de (goliath.siemens.de. [192.35.17.28]) by gmr-mx.google.com with ESMTPS id u7si804039ljg.3.2021.08.09.03.26.47 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 09 Aug 2021 03:26:47 -0700 (PDT) Received-SPF: pass (google.com: domain of quirin.gylstorff@siemens.com designates 192.35.17.28 as permitted sender) client-ip=192.35.17.28; Received: from mail2.sbs.de (mail2.sbs.de [192.129.41.66]) by goliath.siemens.de (8.15.2/8.15.2) with ESMTPS id 179AQlVw008474 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 9 Aug 2021 12:26:47 +0200 Received: from md2dvrtc.fritz.box ([167.87.4.54]) by mail2.sbs.de (8.15.2/8.15.2) with ESMTP id 179AQkTq007138; Mon, 9 Aug 2021 12:26:46 +0200 From: "Q. Gylstorff" To: isar-users@googlegroups.com Cc: Quirin Gylstorff Subject: [RFC PATCH 1/2] Add build-config-snippet class Date: Mon, 9 Aug 2021 12:26:44 +0200 Message-Id: <20210809102645.17414-2-Quirin.Gylstorff@siemens.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210809102645.17414-1-Quirin.Gylstorff@siemens.com> References: <20210809102645.17414-1-Quirin.Gylstorff@siemens.com> MIME-Version: 1.0 X-Original-Sender: quirin.gylstorff@siemens.com X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of quirin.gylstorff@siemens.com designates 192.35.17.28 as permitted sender) smtp.mailfrom=Quirin.Gylstorff@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Precedence: list Mailing-list: list isar-users@googlegroups.com; contact isar-users+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: isar-users@googlegroups.com X-Google-Group-Id: 914930254986 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: =?utf-8?q?1707611058928434405?= X-GMAIL-MSGID: =?utf-8?q?1707611058928434405?= From: Quirin Gylstorff This class allows to generate a build configuration with debian dependencies. Signed-off-by: Quirin Gylstorff --- doc/technical_overview.md | 33 ++++++++ meta/classes/build-config-snippets.bbclass | 87 ++++++++++++++++++++++ 2 files changed, 120 insertions(+) create mode 100644 meta/classes/build-config-snippets.bbclass diff --git a/doc/technical_overview.md b/doc/technical_overview.md index bbd22b6..fdfec0c 100644 --- a/doc/technical_overview.md +++ b/doc/technical_overview.md @@ -308,3 +308,36 @@ to the end. Only template files from the `WORKDIR` are accepted. Either specify relative paths based on the recipes `WORKDIR` or absolute paths containing the `WORKDIR` in the `TEMPLATE_FILES` variable. + +### 3.9.2 Build configuration snippets + +A build configuration can be created from multiple snippets files. + +This system is implemented in the `build-config-snippets.bbclass` and defines +a `do_generate_build_configuration` task. + +To define a feature set, the user has to define the following +variable to an empty string: + +``` +BUILD_FEATURE_featurename = "" +``` + +Then, required additions to the variables can be defined: + +``` +BUILD_FEATURE_featurename[BUILD_CONFIG_SNIPPETS] = "file://snippet-file-name.snippet" +BUILD_FEATURE_featurename[SRC_URI] = "file://required-file.txt" +BUILD_FEATURE_featurename[DEPENDS] = "deb-pkg1 deb-pkg2 deb-pkg3" +BUILD_FEATURE_featurename[DEBIAN_DEPENDS] = "deb-pkg1" +BUILD_FEATURE_featurename[DEBIAN_BUILD_DEPENDS] = "deb-pkg1,deb-pkg2,deb-pkg3" +``` + +The `BUILD_CONFIG_SNIPPETS` flag gives a list of URI entries, where only +file:// is supported. These snippets are appended to the BUILD_CONFIG file. + +Features can depend on other features via the following mechanism: + +``` +BUILD_FEATURE_DEPS[feature1] = "feature2" +``` diff --git a/meta/classes/build-config-snippets.bbclass b/meta/classes/build-config-snippets.bbclass new file mode 100644 index 0000000..1d1054d --- /dev/null +++ b/meta/classes/build-config-snippets.bbclass @@ -0,0 +1,87 @@ +# This software is a part of ISAR. +# Copyright (C) 2021 Siemens AG +# +# SPDX-License-Identifier: MIT + + +BUILD_CONFIG_SNIPPETS = "" + +# The following function defines the build config snippet system +# with automatich debian dependency injection +# +# To define a feature set, the user has to define the following +# variable to an empty string: +# +# BUILD_FEATURE_featurename = "" +# +# Then, required additions to the variables can be defined: +# +# BUILD_FEATURE_featurename[BUILD_CONFIG_SNIPPETS] = "file://snippet-file-name.snippet" +# BUILD_FEATURE_featurename[SRC_URI] = "file://required-file.txt" +# BUILD_FEATURE_featurename[DEPENDS] = "deb-pkg1 deb-pkg2 deb-pkg3" +# BUILD_FEATURE_featurename[DEBIAN_DEPENDS] = "deb-pkg1" +# BUILD_FEATURE_featurename[DEBIAN_BUILD_DEPENDS] = "deb-pkg1,deb-pkg2,deb-pkg3" + +# The 'BUILD_CONFIG_SNIPPETS' flag gives a list of URI entries, where only +# file:// is supported. These snippets are appended to the BUILD_CONFIG file. +# +# Features can depend on other features via the following mechanism: +# +# BUILD_FEATURE_DEPS[feature1] = "feature2" + +KOMMA_SEPERATED_ELEMENTS ?= "DEBIAN_BUILD_DEPENDS DEBIAN_DEPENDS" + +python () { + requested_features = d.getVar("BUILD_FEATURES", True) or "" + + features = set(requested_features.split()) + old_features = set() + feature_deps = d.getVarFlags("BUILD_FEATURE_DEPS") or {} + while old_features != features: + diff_features = old_features.symmetric_difference(features) + old_features = features.copy() + for i in diff_features: + features.update(feature_deps.get(i, "").split()) + + for f in sorted(features): + bb.debug(2, "Feature: " + f) + varname = "BUILD_FEATURE_" + f + dummyvar = d.getVar(varname, False) + if dummyvar == None: + bb.error("Feature var " + f + " must be defined with needed flags.") + else: + feature_flags = d.getVarFlags(varname) + for feature_varname in sorted(feature_flags): + if feature_flags.get(feature_varname, "") != "": + sep = " " + + # Required to add BUILD_CONFIG_SNIPPETS to SRC_URI here, + # because 'SRC_URI += "${BUILD_CONFIG_SNIPPETS}"' would + # conflict with SRC_APT feature. + if feature_varname == "BUILD_CONFIG_SNIPPETS": + d.appendVar('SRC_URI', + " " + feature_flags[feature_varname].strip()) + + # BUILD_DEP_DEPENDS and DEBIAN_DEPENDS is ',' separated + # Only add ',' if there is already something there + if feature_varname in (d.getVar("KOMMA_SEPERATED_ELEMENTS", True) or "").split(): + sep = "," if d.getVar(feature_varname) else "" + + d.appendVar(feature_varname, + sep + feature_flags[feature_varname].strip()) +} + +# BUILD_CONFIG must be a predefined bitbake variable and the corresponding file +# must exist in the WORKDIR. +# The resulting generated config is the same file suffixed with ".gen" + +do_generate_build_configuration() { + GENCONFIG="${WORKDIR}/${BUILD_CONFIG}".gen + rm -f "$GENCONFIG" + cp "${WORKDIR}/${BUILD_CONFIG}" "$GENCONFIG" + for CONFIG_SNIPPET in $(echo "${BUILD_CONFIG_SNIPPETS}" | sed 's#file://##g') + do + cat ${WORKDIR}/$CONFIG_SNIPPET >> "$GENCONFIG" + done +} +addtask generate_build_configuration before do_prepare_build after do_patch