From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7330292884155924480 X-Received: by 2002:a2e:a791:0:b0:2d0:a4f7:11aa with SMTP id c17-20020a2ea791000000b002d0a4f711aamr2231437ljf.41.1707905438733; Wed, 14 Feb 2024 02:10:38 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:651c:1501:b0:2d0:e31c:273a with SMTP id e1-20020a05651c150100b002d0e31c273als99030ljf.1.-pod-prod-04-eu; Wed, 14 Feb 2024 02:10:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IHY3Ey119QHVTVecMVm0WEBlcbnTmKa/Swo8KwB0b+hJWoTFNfKPG1Jw8u1tn8KPZhKQp3K X-Received: by 2002:a2e:9c07:0:b0:2d0:7a98:a493 with SMTP id s7-20020a2e9c07000000b002d07a98a493mr1631269lji.39.1707905436641; Wed, 14 Feb 2024 02:10:36 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1707905436; cv=pass; d=google.com; s=arc-20160816; b=a98IRSQaOahOYAjl3J2ZMqLrVmPtqVwtcHJ3ezqxd3yQUq9S9svDZeRj7cPDCcMpTu tgTtrZcbaYhRuLEt8fAtM9tVChRrNujL9HQbMWjXA9Kys67O1+1rcP0tDu6wtC69kCEO 4pDe4dT2l1ScAoSh+qMio4hMHIqZr1YHJF1xal7ob9K72azbRnITpJYD1y1wumALC8MA gGfe/WFurC99usMRdj966I06Yax0SVkZUY3azM6dibIyN3ioS142WilbpFewdbjNaYHs 4WyYywA7wFt1ZSs8u3l92ooM+HGcQ7pHoNz+1tLelUzNXRXGDRb7SV2vmz+LvJuwLqb3 +Rww== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:content-transfer-encoding:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=uwCSzE2tOhniwJqCbMW+qFuaivmfsLQ2vpCrrzu3FRA=; fh=xEShFggSpnuOkNhWsuGGuL9hws+gR5u0Poxh36yfvmk=; b=zahhGF0oDCLVbkgDJuawLlMJYcc9tml5i0Q4No7IOJK3eZX/HkQSou+1u96J/adDB8 MMHbDSU1y08k5l3WDPqUe07H9FUxk1VoBpdP+XiEeEHbCLyjGYtoTeZ8JID903xnLhfO 40JqHVQrsm5CkOoQpb9hQvdG5y+XdORk0r31r4a9YvV8PxLo14+u2IDwiSPOCpaov6fO yTGWIcjHIKKQefLG3mpwSO3ouWaIw7d+4S6tDTBbWQMc/cEPoLJLXlHBGIKvaszvv+kF NBXW38iS24dIXoX1elEKeypbBysMnK+E//p+aDQkwyOhKKL+W62uUTbBrbJJVtqnXQ+O gKWQ==; dara=google.com ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=RMGPM1QX; arc=pass (i=1 spf=pass spfdomain=siemens.com dkim=pass dkdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of stefan-koch@siemens.com designates 2a01:111:f403:2612::600 as permitted sender) smtp.mailfrom=stefan-koch@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Return-Path: Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on20600.outbound.protection.outlook.com. [2a01:111:f403:2612::600]) by gmr-mx.google.com with ESMTPS id n40-20020a05600c3ba800b00411a80271d8si32552wms.2.2024.02.14.02.10.36 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 14 Feb 2024 02:10:36 -0800 (PST) Received-SPF: pass (google.com: domain of stefan-koch@siemens.com designates 2a01:111:f403:2612::600 as permitted sender) client-ip=2a01:111:f403:2612::600; Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=RMGPM1QX; arc=pass (i=1 spf=pass spfdomain=siemens.com dkim=pass dkdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of stefan-koch@siemens.com designates 2a01:111:f403:2612::600 as permitted sender) smtp.mailfrom=stefan-koch@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=F+k8ezTIbMC7jQT5hOVh2novcyfvIEXA6VUkJ2YMussPd/GwREPm9u/rbNlLeCgEi17FXIUFsT+bIO2a4DmbhfniAURGQL3dTxH4cXbq4r9+vdQEmIax5zX2qFmflLYj/gOMLbyesN6W2DB5u7MW2g5XBT5Kq6WC6m1dZF+DR/It4sCFrtHu/PURHmsionUOOlGZJvKkVbt/WYpKIldNBSGpgFtpY/SBF3gZJi05ClJX2zoIlVssSYkLMstvCufLrXSQANFfeSxhMk59/wbQsz35cTB/NU+D0g7TnUSVLgW9KqBsgI/fLYT34s8D70WpbHdieZiQTAT+iGZA1vJCmA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=uwCSzE2tOhniwJqCbMW+qFuaivmfsLQ2vpCrrzu3FRA=; b=OLWt0cX001Z7me24bVVBhJtYaoXsFoWEhJcnU9AyvwBmedMN1AeOxhaF6bBkUvZb9BKCmtgWtUoTx2C6ljsRQzP95N3jPF1JDIuw8ZlR9YDiZysCm1FqwHuS+s27vzrHnBXyYGHOmpPQTgpTSFINeaVS7PunlYVFpTUmjUKOLj8OeX5ftWpeFTBVCwStg9uTtR2PnPWZLZpsjQL1WbpXUmuUqPjTWI2uBzZOloU6mXgUlVfacCA2I3YrBdyLsEMQe9wFkqo0BayN25/ba+o3pswH8WlOm2JE2TyU2iV52QQLrUs1nOTiGCuX6lJepaWegI7ltnOSONfvgy58+rmDBw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=siemens.com; dmarc=pass action=none header.from=siemens.com; dkim=pass header.d=siemens.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=siemens.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uwCSzE2tOhniwJqCbMW+qFuaivmfsLQ2vpCrrzu3FRA=; b=RMGPM1QXsPOEvcwaMgSlP/TweKKilNQwFVaY1WI7gslu9OC9elHvCgRt7FBcBbfoBcovRdOQ0JaoxXU9mKiJlGxPBzJP1cwQ+/bOX5x0WqRhkGEwGFcI+55DCmN1uaW8IbpwMLpaeoBLxfic+skI3kHX97UvNzO1D0FqwXt5woqyG3c4HYWfgMCejxcOtPnUVbehzDhIxsVdLwAaMTFkyOfzT91f3HL4Y6895i2Mq7wRkPsA8vRAMrw9tbWFmLxLdcFuaziqOaYDEOLjEKt9+6+nG1xjmKrMku6WcbxWcxGaI4VqmabMf/TZze6iZkAwchJdl8IB4GlEmX1ZLiZtRg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=siemens.com; Received: from AM9PR10MB4959.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:41e::11) by DB8PR10MB3305.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:11c::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.26; Wed, 14 Feb 2024 10:10:34 +0000 Received: from AM9PR10MB4959.EURPRD10.PROD.OUTLOOK.COM ([fe80::33ca:62e:abfc:b1a]) by AM9PR10MB4959.EURPRD10.PROD.OUTLOOK.COM ([fe80::33ca:62e:abfc:b1a%4]) with mapi id 15.20.7292.026; Wed, 14 Feb 2024 10:10:33 +0000 From: Stefan Koch To: isar-users@googlegroups.com Cc: stefan-koch@siemens.com, jan.kiszka@siemens.com, christian.storm@siemens.com, michael.adler@siemens.com, simon.sudler@siemens.com, cedric.hombourger@siemens.com, adriaan.schmidt@siemens.com, felix.moessbauer@siemens.com, ubely@ilbers.de Subject: [PATCH v6 3/5] linux-custom: Provide target and host specific kernel kbuild packages Date: Wed, 14 Feb 2024 11:10:23 +0100 Message-Id: <20240214101025.2123540-4-stefan-koch@siemens.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240214101025.2123540-1-stefan-koch@siemens.com> References: <20240214101025.2123540-1-stefan-koch@siemens.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: FR5P281CA0034.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:f3::13) To AM9PR10MB4959.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:41e::11) Return-Path: stefan-koch@siemens.com MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR10MB4959:EE_|DB8PR10MB3305:EE_ X-MS-Office365-Filtering-Correlation-Id: ab8eeb7a-4b96-4ff7-ad8f-08dc2d452e0a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GhTaZBD7OVNBewtUOctv9ijUL7E/SsdMYx/DXNkaFiahiWZmyMdb2jBnVZIGtrXHUbwR90BZK4CV0wszJfkI7oavuLamcImgTLFRfp+gyHDvnr0JTDClhlm0+DTc/BTmo0uqwgeXYHYj/+9N0oBukLHhoxz+aTM5g+mT2KgkcZZRVAgipqKftBl0mLEwrQrHQhDH2iFVGvYVP9QWxczxlbxOOywd7828Et5EBM/0QTyl0RxyX+14xc8WypBbJEC0l1tcMjciwCKHodTRcG5ACn1hc4gVdzamOP3ie7/lWm8EWnnTeShST9N19eDHNmhYcknla8okPZ2o1A4TfueinELAWAsEBKdfu3X26EauaQl0JJ6xRCYbcSa0S7aw6NmFjSn5ddAwHqfXyYX2+kD88M0SjA8iBLJ622TcR2MTR7710/seHQk0GyCENjOzISM8cqxtLR6E3m6baS+NHNDrBh75//vJO6n0LjNC44E8KRVmCPlRWChZlNx+jlSlZNwcHp9hcb+2o+YuH1yNV3+1eQw6gJpfWwZFQ2GhCgFUrikQeSnBmv1Y6j9h4jm/RW0r X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR10MB4959.EURPRD10.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230031)(376002)(346002)(366004)(39860400002)(396003)(136003)(230273577357003)(230922051799003)(1800799012)(186009)(451199024)(64100799003)(5660300002)(30864003)(2906002)(66899024)(478600001)(6512007)(6506007)(6486002)(966005)(26005)(2616005)(1076003)(41300700001)(66946007)(66556008)(66476007)(4326008)(6916009)(8936002)(8676002)(316002)(6666004)(83380400001)(86362001)(38100700002)(36756003)(82960400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Bhm4FOn9yu9tVPFe/DAjbrZ597aBTQhR826C/qkDr/V9FteyI8ofwETYDUfJ?= =?us-ascii?Q?H+sC5s3SmROUvvB/4OKV+QMEOKK8xlUv66rzcyTgUI+4jXJh5iMhl+6heu/q?= =?us-ascii?Q?H26gypEvOv1mbAkxpUgkWtDSnzfZwXhTrbKz2dOb0bUHGpI4eIOa5T6MPOHY?= =?us-ascii?Q?QdJhzbdtlnYSF38+Sw3lDAWWEMylX9wQ1/gRNXeUfvddU8p6Qrth8X1acwuZ?= =?us-ascii?Q?L1qdKN7202N1VCxFylTVyvvsSc+JaqtDOylOnDz3BvqeZ2Vn5WvFCW3vWShq?= =?us-ascii?Q?XKU57UOpUqiIsqKNPX4NDLRNYIUKsy8ueBsOzyM+ARhiP9XjzWWflQoCmv8X?= =?us-ascii?Q?5tZj+5YDoKfYMtWG6DuND5sHZ2Dk8HGRrsFoATGXErh8f3lvmbvId8dLKbUe?= =?us-ascii?Q?IukPZ2niBGCMAYZXrULvxTBMhHV0JrOhsitweAoy+jDjbzkoVXIkGOnmHqih?= =?us-ascii?Q?ykz0ZG0N1vsptQQFqkFRNhigA8TxP59fXMwcpRiXvsFY2Ore7NV0z7DRgAgw?= =?us-ascii?Q?9iWHBL+ckm6fjaiFDE3yyC2hQ97O1lrrszOV79QNlaamWVWFiojHrM4PqVgH?= =?us-ascii?Q?OPVhh+wNeS0uOwvypWxEbPcVDaSLqYOVtDfg5oupIRHHReR56iNLTZEQAc0b?= =?us-ascii?Q?FnAwN6jm5j4bcEecb4Q0D8GncIg3xLpJUZepPSDYI/AjKz8+QubbC2ohZzhh?= =?us-ascii?Q?AZFx6/o7d+eNVsHdGlv+quCIYke27iqcN9RA5wi0VrP4lzbcH3Ew9YgfM7BY?= =?us-ascii?Q?HNZGeExZdwZCSwwIp8n2Z+64QRvRnLAyVWBbfjSaCz0o79pFudUtKGI+pA77?= =?us-ascii?Q?Nek3AMCOouH7OyvPnAxA3NcNMCQ/SizXD3qNMszfzxB5tPrYsBFvsyL/KmJv?= =?us-ascii?Q?IMp13ALlc+ILSUafKAtoVqc8AHbVjZIOZYJQs2ji0gr3cq39npjIAGv84/RM?= =?us-ascii?Q?Q4kRlTCLt6CQLDZQa7yhQJZQjGcinwftwZ7DLBoBG7W7ZUawJdwsVP+42tWn?= =?us-ascii?Q?uBxbFK2C0zH5YIFxeRxbXBay0bTYJ9s9oPRmbZ5Llnn2MA2HhSXbJ7b6t3zE?= =?us-ascii?Q?V08cnZ8cVLwv0jECAbOCUC63ED1jzwb88opf5UfGcmqont4Bxis1G4Tczopq?= =?us-ascii?Q?0NLBSBBNs7qvmJb8oX/pDy9V0deAvBJzEgHdDH7uJePvYUm8vqS/t6m8r/FH?= =?us-ascii?Q?540MqfKn1BH5YemgsGar0HNIhwDnI37U5+3iUKAzXHXXeMyVj68ngnNeK9Go?= =?us-ascii?Q?q1iANAU3QTow11Y4/UJesagQWq2Cpc69GzLxCJ6pf7kdqgd3xOAmb3Fe9esD?= =?us-ascii?Q?LVq4BUXpAPtwRgbFcWDsiAknP0Ch/VQIowBnJpynh8OZISAJ93wfcRurSOA9?= =?us-ascii?Q?lxhBhThnrOdPbYAEraGebfCCmyNDM7NGlIep7QJ2zbSzMkrh7zkXOONLy3Kq?= =?us-ascii?Q?B2D30Ze1lj0wJrTBoE+BbAnnrJWB6+lp1iaU1J9v5zdJxP4tJIbkSeliADDy?= =?us-ascii?Q?UnbCiPy9qqdRVs6bk8phczzxSogc8RyBSi5GHXk6X7v2LbXLrqh8qxxgfp2r?= =?us-ascii?Q?LBrhxdPAgBtU5/NrNGtht1Ws5XqfHNEN5QwGsCTJ3CLUPd9HCJEckyKZYV4H?= =?us-ascii?Q?tg=3D=3D?= X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-Network-Message-Id: ab8eeb7a-4b96-4ff7-ad8f-08dc2d452e0a X-MS-Exchange-CrossTenant-AuthSource: AM9PR10MB4959.EURPRD10.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Feb 2024 10:10:32.9452 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 38ae3bcd-9579-4fd4-adda-b42e1495d55a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: vEzETGTy/hkMJIziJJtBXUY7NO86ymhUcAtAH2dMu1UWKMeRJwUJ0szPDCpDgGmlDKQIKfYNX22J0Ao5QjB5Zg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR10MB3305 X-TUID: a6Eq8FaZ617l When using a cross build this patch does introduce target and host specific kernel kbuild packages that ship the "scripts" and "tools" binaries. The "-kbuildtarget" and "-native" multiarch bitbake targets are useable to run additional target or host specific builds for kbuild scripts and tools. Using the "-kbuildtarget" bitbake target enables the build of a target specific kbuild package at cross builds. So using "linux-kbuild" provides the package for the target platform. Using the "-native" bitbake target enables the build of a host specific kbuild package at cross builds. When cross building using "linux-kbuild-native" provides the package for the host platform. Only the "host" specific package is built automatically at cross builds. This solves this from doc/custom_kernel.inc: - The kernel headers package has not supported both native and cross compilation of kernel modules when itself was cross built - Future roadmap: Generate kernel headers package for both host and target when using a cross build Signed-off-by: Stefan Koch --- .../linux/classes/kbuildtarget.bbclass | 8 ++++ .../linux/files/debian/control.tmpl | 6 ++- .../linux/files/debian/isar/build.tmpl | 13 ++++- .../linux/files/debian/isar/common.tmpl | 9 ++++ .../linux/files/debian/isar/install.tmpl | 34 +++++++++----- meta/recipes-kernel/linux/linux-custom.inc | 47 ++++++++++++++++++- 6 files changed, 99 insertions(+), 18 deletions(-) create mode 100644 meta/recipes-kernel/linux/classes/kbuildtarget.bbclass diff --git a/meta/recipes-kernel/linux/classes/kbuildtarget.bbclass b/meta/recipes-kernel/linux/classes/kbuildtarget.bbclass new file mode 100644 index 00000000..26369861 --- /dev/null +++ b/meta/recipes-kernel/linux/classes/kbuildtarget.bbclass @@ -0,0 +1,8 @@ +python kbuildtarget_virtclass_handler() { + pn = e.data.getVar('PN') + if pn.endswith('-kbuildtarget'): + e.data.setVar('BPN', pn[:-len('-kbuildtarget')]) + e.data.appendVar('OVERRIDES', ':class-kbuildtarget') +} +addhandler kbuildtarget_virtclass_handler +kbuildtarget_virtclass_handler[eventmask] = "bb.event.RecipePreFinalise" diff --git a/meta/recipes-kernel/linux/files/debian/control.tmpl b/meta/recipes-kernel/linux/files/debian/control.tmpl index 7f271367..6f8f8afe 100644 --- a/meta/recipes-kernel/linux/files/debian/control.tmpl +++ b/meta/recipes-kernel/linux/files/debian/control.tmpl @@ -6,6 +6,7 @@ Build-Depends: bc, kmod, cpio, ${KBUILD_DEPENDS} Homepage: http://www.kernel.org/ Package: linux-image-${KERNEL_NAME_PROVIDED} +Build-Profiles: Architecture: any Depends: ${KERNEL_DEBIAN_DEPENDS} Description: ${KERNEL_NAME_PROVIDED} Linux kernel, version @KR@ @@ -13,6 +14,7 @@ Description: ${KERNEL_NAME_PROVIDED} Linux kernel, version @KR@ files, version: @KR@. Package: linux-headers-${KERNEL_NAME_PROVIDED} +Build-Profiles: Architecture: any Depends: ${KERNEL_HEADERS_DEBIAN_DEPENDS}, ${perl:Depends}, ${shlib:Depends} Description: ${KERNEL_NAME_PROVIDED} Linux kernel headers for @KR@ @@ -21,7 +23,7 @@ Description: ${KERNEL_NAME_PROVIDED} Linux kernel headers for @KR@ This is useful for people who need to build external modules Package: linux-libc-dev -Build-Profiles: +Build-Profiles: Section: devel Provides: linux-kernel-headers Architecture: any @@ -41,6 +43,7 @@ Description: Linux Kernel Headers for development (for cross-compiling) your kernel. Use linux-headers-* packages for that. Package: linux-image-${KERNEL_NAME_PROVIDED}-dbg +Build-Profiles: Section: debug Architecture: any Description: Linux kernel debugging symbols for @KR@ @@ -48,6 +51,7 @@ Description: Linux kernel debugging symbols for @KR@ all the necessary debug symbols for the kernel and its modules. Package: linux-kbuild-${KERNEL_NAME_PROVIDED} +Build-Profiles: Architecture: any Depends: ${perl:Depends}, ${shlib:Depends} Description: ${KERNEL_NAME_PROVIDED} Linux kbuild scripts and tools for @KR@ diff --git a/meta/recipes-kernel/linux/files/debian/isar/build.tmpl b/meta/recipes-kernel/linux/files/debian/isar/build.tmpl index 906dc580..81a6ba8a 100644 --- a/meta/recipes-kernel/linux/files/debian/isar/build.tmpl +++ b/meta/recipes-kernel/linux/files/debian/isar/build.tmpl @@ -21,8 +21,17 @@ do_build() { KR=$(${MAKE} O=${KERNEL_BUILD_DIR} -s --no-print-directory kernelrelease) sed -i "s/@KR@/${KR}/g" ${S}/debian/control ${S}/debian/linux-image-${KERNEL_NAME_PROVIDED}.* - # Build the Linux kernel - ${MAKE} O=${KERNEL_BUILD_DIR} ${PARALLEL_MAKE} KCFLAGS="${KCFLAGS}" KAFLAGS="${KAFLAGS}" + if echo "${DEB_BUILD_PROFILES}" | grep -q "kernel"; then # Build kernel scripts and tools + ${MAKE} O=${KERNEL_BUILD_DIR} ${PARALLEL_MAKE} KCFLAGS="${KCFLAGS}" KAFLAGS="${KAFLAGS}" + elif echo "${DEB_BUILD_PROFILES}" | grep -q "kbuild"; then # Build kernel scripts and tools + ${MAKE} O=${KERNEL_BUILD_DIR} ${PARALLEL_MAKE} KCFLAGS="${KCFLAGS}" KAFLAGS="${KAFLAGS}" scripts + if grep -q -E "CONFIG_STACK_VALIDATION=y|CONFIG_HAVE_OBJTOOL=y" ${KERNEL_BUILD_DIR}/.config && [ -d "tools/objtool" ]; then + ${MAKE} O=${KERNEL_BUILD_DIR} ${PARALLEL_MAKE} KCFLAGS="${KCFLAGS}" KAFLAGS="${KAFLAGS}" tools/objtool || true + fi + if grep -q "CONFIG_MODULES=y" ${KERNEL_BUILD_DIR}/.config; then + ${MAKE} O=${KERNEL_BUILD_DIR} ${PARALLEL_MAKE} KCFLAGS="${KCFLAGS}" KAFLAGS="${KAFLAGS}" modules_prepare + fi + fi # Stop tracing set +x diff --git a/meta/recipes-kernel/linux/files/debian/isar/common.tmpl b/meta/recipes-kernel/linux/files/debian/isar/common.tmpl index 0944e943..e3a1d8a0 100644 --- a/meta/recipes-kernel/linux/files/debian/isar/common.tmpl +++ b/meta/recipes-kernel/linux/files/debian/isar/common.tmpl @@ -12,6 +12,15 @@ KERNEL_PKG_LIBC_HEADERS=linux-libc-dev KERNEL_PKG_LIBC_HEADERS_CROSS=linux-libc-dev-${DISTRO_ARCH}-cross KERNEL_PKG_KERN_KBUILD=linux-kbuild-${KERNEL_NAME_PROVIDED} +# Force creating debian package with valid host arch for -native build +# Use a cross build to comply with arch specific kernel defconfigs +# The scripts and tools are always created for host arch +if echo "${DEB_BUILD_PROFILES}" | grep -q -e "cross" -e "kbuild" +then + eval $(dpkg-architecture -f -A ${DISTRO_ARCH}) + CROSS_COMPILE=${DEB_TARGET_GNU_TYPE}- +fi + # Constants KCONF=.config diff --git a/meta/recipes-kernel/linux/files/debian/isar/install.tmpl b/meta/recipes-kernel/linux/files/debian/isar/install.tmpl index 97780dcc..77856aee 100644 --- a/meta/recipes-kernel/linux/files/debian/isar/install.tmpl +++ b/meta/recipes-kernel/linux/files/debian/isar/install.tmpl @@ -33,20 +33,28 @@ do_install() { # Trace what we do here set -x - # Run the install steps - install_image - if [ "${ARCH}" != "um" ]; then - install_config - install_map + if echo "${DEB_BUILD_PROFILES}" | grep -q "kbuild"; then + # Install kernel scripts and tools + install_kbuild ${deb_kern_kbuild_dir} + fi + + if echo "${DEB_BUILD_PROFILES}" | grep -q "kernel"; then + if echo "${DEB_BUILD_PROFILES}" | grep -q "cross"; then + # Install cross kernel scripts and tools + install_kbuild ${deb_kern_kbuild_dir}-${HOST_ARCH}-cross + fi + + # Run the install steps + install_image + if [ "${ARCH}" != "um" ]; then + install_config + install_map + fi + install_hooks + install_dtbs + install_kmods + install_headers fi - install_hooks - install_dtbs - install_kmods - install_headers - - # Cleanup and install kernel scripts and tools - rm -rf ${deb_kern_kbuild_dir} - install_kbuild ${deb_kern_kbuild_dir} # Stop tracing set +x diff --git a/meta/recipes-kernel/linux/linux-custom.inc b/meta/recipes-kernel/linux/linux-custom.inc index cbd23dc2..9c52751c 100644 --- a/meta/recipes-kernel/linux/linux-custom.inc +++ b/meta/recipes-kernel/linux/linux-custom.inc @@ -86,28 +86,71 @@ TEMPLATE_VARS += " \ inherit dpkg inherit template +inherit kbuildtarget # Add custom cflags to the kernel build KCFLAGS ?= "-fdebug-prefix-map=${CURDIR}=." KAFLAGS ?= "-fdebug-prefix-map=${CURDIR}=." # Derive name of the kernel packages from the name of this recipe -KERNEL_NAME_PROVIDED ?= "${@ d.getVar('PN').partition('linux-')[2]}" +KERNEL_NAME_PROVIDED ?= "${@ d.getVar('BPN').partition('linux-')[2]}" + +# Determine cross-profile override +python() { + if d.getVar("DISTRO_ARCH") != d.getVar("HOST_ARCH") and d.getVar("ISAR_CROSS_COMPILE", True) == "1" and "class-native" not in d.getVar("OVERRIDES", True).split(":"): + d.appendVar("OVERRIDES", ":cross-profile") +} + +# Default profiles and provides +BUILD_PROFILES = "kernel kbuild" + +# We only offer the -kbuildtarget variant when actually cross compiling +BBCLASSEXTEND:append:cross-profile = " kbuildtarget" + +# When cross-profile is active: +# build only kernel with the default variant of the recipe +BUILD_PROFILES:cross-profile = "kernel" + +# Select correct kbuild package for isar cross-build +HEADERS_DEPENDS:cross-profile = ", linux-kbuild-${KERNEL_NAME_PROVIDED}:${HOST_ARCH} | linux-kbuild-${KERNEL_NAME_PROVIDED}" + +# -native: kbuild package for host +BUILD_PROFILES:class-native = "kbuild" +RECIPE_PROVIDES:class-native = "linux-kbuild-${KERNEL_NAME_PROVIDED}-native" + +# -kbuildtarget: kbuild package for target, enforcing non-cross-build +BUILD_PROFILES:class-kbuildtarget = "kbuild" +RECIPE_PROVIDES:class-kbuildtarget = "linux-kbuild-${KERNEL_NAME_PROVIDED}" +ISAR_CROSS_COMPILE:class-kbuildtarget = "0" # Make bitbake know we will be producing linux-image and linux-headers packages # Also make it know about other packages from control -PROVIDES += " \ +RECIPE_PROVIDES = " \ linux-image-${KERNEL_NAME_PROVIDED} \ linux-headers-${KERNEL_NAME_PROVIDED} \ linux-libc-dev \ linux-libc-dev-${DISTRO_ARCH}-cross \ linux-image-${KERNEL_NAME_PROVIDED}-dbg \ + linux-kbuild-${KERNEL_NAME_PROVIDED} \ " +# When cross-profile is active: +# kbuild package is provided by -native or -kbuildtarget variant +# Otherwise it's provided by the default variant +RECIPE_PROVIDES:remove:cross-profile = "linux-kbuild-${KERNEL_NAME_PROVIDED}" # Append headers depends HEADERS_DEPENDS = ", linux-kbuild-${KERNEL_NAME_PROVIDED}" KERNEL_HEADERS_DEBIAN_DEPENDS:append = "${HEADERS_DEPENDS}" +# Append provides +PROVIDES += "${RECIPE_PROVIDES}" + +# Append build profiles +DEB_BUILD_PROFILES += "${BUILD_PROFILES}" + +# Add dependency to build -kbuildtarget and -native automatically +RDEPENDS:append:cross-profile = " ${BPN}-native" + def get_kernel_arch(d): distro_arch = d.getVar("DISTRO_ARCH") if distro_arch in ["amd64", "i386"]: -- 2.39.2