From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7330292884155924480 X-Received: by 2002:a05:6a21:999a:b0:19c:503f:2c26 with SMTP id ve26-20020a056a21999a00b0019c503f2c26mr2273682pzb.22.1706716812939; Wed, 31 Jan 2024 08:00:12 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a17:90b:3c06:b0:296:4d0:871a with SMTP id pb6-20020a17090b3c0600b0029604d0871als44955pjb.1.-pod-prod-02-us; Wed, 31 Jan 2024 08:00:11 -0800 (PST) X-Google-Smtp-Source: AGHT+IG9WYk2L+hbVfBJduOLC7wZPMBiR9Z0GcFU+sRJS0qgKCK8i/4v4mRO9YNd5FOMGL0c3K5m X-Received: by 2002:a17:90b:388:b0:295:fc40:9fa4 with SMTP id ga8-20020a17090b038800b00295fc409fa4mr773776pjb.18.1706716811048; Wed, 31 Jan 2024 08:00:11 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1706716811; cv=pass; d=google.com; s=arc-20160816; b=ZnafinGIkDbV8UCr/xvx4HbyqZ28OELxk7jUdZYH7vRBrDfaP6MGSVaETPi7iZ7/h+ j2K5AW2a6i0ENk7KtnALH2hPyOBMYUar7sdjANXQPerjYZtgWf/CKOz3WstkO7onCXlA /R/fYN8n1qnxwiqCZNaRIkt80XRbs5wo1X+9+ysPGiXkKftR59BKRpAIEzg2FXipAQpO YD5+gK0FmHS1eSVIREZ1XRkocz1zWZUy+is3T9hQCoMs165b2X96/koCy03HjQ0d+neg q06wEGsc6aXKhhHtxOQs5Ltr4r294azSm4PnDzpQ4phb/FkcHdXWM3EKekXnsgrrqYjN N/bA== 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=fSsYapC//nFBbdPnEiVeb/JcZ4r6wbvPhf2n5uKzQnk=; fh=xEShFggSpnuOkNhWsuGGuL9hws+gR5u0Poxh36yfvmk=; b=YDdLHl2iPLGLnUjVknCynj/hnf3XFCvY5jGrUqNjhsPzITMaBtNGQEaBuHQ3ewCSPY hI1x2jePrygpQ0rhA/OtKm9Atnp7mqGKP1S37IderGJxneaDEbjg5GHMs4Mq10FqhpFY 9Db1wgXKJwQeLbazF9gmvhbANaZbY2EkQLAKDtnJRjRLvOZQRCdKQIrqVcR7qoaE3Sbs TaelPgoRujIEXVIGVxIRPOJUfk4/Oe0eSfPDQ4OcyC9WR4TT2SMFgbKwvz+w6Hp54B7u NQHFoSXYF9Tru2W+gbuJq1MRu6PVX5HWX1rg9yNiJFrujeQa04Oy8GTNvY7bPuk8yCVd Pg1w==; dara=google.com ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=kvYu3PI2; 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:f400:fe1e::618 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 EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0618.outbound.protection.outlook.com. [2a01:111:f400:fe1e::618]) by gmr-mx.google.com with ESMTPS id mr17-20020a17090b239100b00295fe8e0fd3si20167pjb.0.2024.01.31.08.00.10 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 31 Jan 2024 08:00:11 -0800 (PST) Received-SPF: pass (google.com: domain of stefan-koch@siemens.com designates 2a01:111:f400:fe1e::618 as permitted sender) client-ip=2a01:111:f400:fe1e::618; Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=kvYu3PI2; 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:f400:fe1e::618 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=cc5oeGx1PtFf0dJCtozUv30/5c/s9gCDnTMD8y1PaGJRtlqLsPvgJO1fFgtJpMzV94rAn3HLnviyU8MauFZRvWqSHdJlpaYvGDLttKpeiFsyRGm5quHrVYeokS+ErODJiiZX5ddcwJJtQ4wPYvFEgfitzKpvY0n5ZDYAi1fC+YnGHWkND4vfWnXSXZXXGgF59hHEye6P9hXqzfuZynuWeDhIq7q9NeoHf85eccTX9+IGJIVYRvdfSE7T54/9CQBFxtpaxbxIWqVCcN14FKvXnVI/TFOuEwMcJQBRsqpgE+jdyncd0rL+5q+OwB3YFSiPCbWQ/+UKSXm+yx/LC+GIfQ== 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=fSsYapC//nFBbdPnEiVeb/JcZ4r6wbvPhf2n5uKzQnk=; b=YNcC7XXmbOwQVYuIVSvAF6z5m5gvlzGA9LUlxZKYk2gmCGd8GZO95J+M94ZJT2JO6W0FbhigSUI3r5uBs/p3q1Wto+pv5pqCUui3zp6LvY6mbsnjPrqD/HHKMZYXTusGSoQTUBZ56IiAfTMSXggZoaUqpWu7IXsOhTfkGZieEYICYpWvFoEKebOzMmUUJRlsXpTgP6myDOoXgJZEsnt+TjWfTSGPGNQ/46tWkibWIVH4wbSgBmL0zHVocs1rmFHgmYEAQYliQWqmRnBjUv0moJYumyzMzFSVzOfJDLvMNvhIHrug/50rHjO8X9YiiNhrZGwsDxg74gW6MUharhAs9Q== 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=fSsYapC//nFBbdPnEiVeb/JcZ4r6wbvPhf2n5uKzQnk=; b=kvYu3PI23nPyHXGLvDHED8qnZi69jxClp+5bR0+6g+9O9hl+1nOjBa2w5BUDE9xl2tN+t6uPIcKYhppWmHyc9HQXBDRCGVUfnmtnoYvT42+rUKoQAP3ZF+cCF/QwTb/C+8x/kOd//0wQR2SjgprK4NqCv4cvOlbqtJZMFRoX/i7FgzT9Z4xUGca1PLLgMa/C1rHRpWQUw5auWcodUUtn4YnPnQy0xPg1Zwr9bmWcFO2N0qJLxjhf1ZNTG9bX2JBII/NWQ0uPtdvyl2ya5O21BG349WrtsfvAWe70o2dwVWFZxRq+gSHbO9vZ7w7GY++eo2VOv9A6nHKrq/p6nH1IwQ== 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 DBAPR10MB4074.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:1c9::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.23; Wed, 31 Jan 2024 16:00:08 +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.7249.024; Wed, 31 Jan 2024 16:00:08 +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 v5 3/4] linux-custom: Provide target and host specific kernel kbuild packages Date: Wed, 31 Jan 2024 17:00:00 +0100 Message-Id: <20240131160001.322247-4-stefan-koch@siemens.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240131160001.322247-1-stefan-koch@siemens.com> References: <20240131160001.322247-1-stefan-koch@siemens.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: FR4P281CA0334.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:ea::10) 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_|DBAPR10MB4074:EE_ X-MS-Office365-Filtering-Correlation-Id: ba63974f-e98b-4c66-dec5-08dc2275b2c8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: AZ3fv1D2JGcYocBExAHK0HZ+R28wABv+MCvAhj858HTTE1eoLt8ZRMMU3RS6OKds4+Hjfs6vRbavX/D0qmKXPzZFm8T0q9KuIOuVQSobrKi/v3fSZ4tTp4rPgf+DJ8kIUUKCj5c2ClCyyvEl+mLxyTUWL11WsGyyvbFEUJCbHdeJfucZ5sg/P02HgeCtBOwhZHaC9fpeHMf2XsxKb+H/8n/l9lR4E5QvdO3qdUHNWDe4iP9lcckjulaSjGGY/hxCU44J1mVoW08o4CJJ80QBEPUOmIEy+IuwjG0d4MusaiedPL/oAzaBnNOonmHXlbFzgDy0eH6lXfDD2cHvtGcP6Wyl1Wy0atCDZsnPPzqU3PO8nrnvVCuX5LMNF7LE4J9urQGK+spsvBVTqk2Zh51JwUhgnSMrFxWbXkL+r3H+F65v7X6vK8Xc5DoDPPA5vefcwnD3FOPdaxMvBRK7ZVHvbPhGEMQ9D/EYRziNEUfxT656GrhfC/F4aF8QiROJcQYofsCVRRD/YQJmQv9mAOy32Hh4VhP1LgRHkm8Kmkptob844rOq02sgZM5UykWJY/hzLjLBwOQv1XCq8aUiT5sQonnPSW36RPQdUZMbP6GujigV35x5Vs20Di8PjwDzAz29 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)(346002)(366004)(136003)(396003)(39860400002)(376002)(230273577357003)(230173577357003)(230922051799003)(186009)(64100799003)(451199024)(1800799012)(66899024)(316002)(6916009)(66476007)(66946007)(66556008)(4326008)(8676002)(8936002)(6486002)(966005)(478600001)(86362001)(5660300002)(2906002)(41300700001)(30864003)(36756003)(83380400001)(26005)(1076003)(38100700002)(2616005)(82960400001)(6666004)(6506007)(6512007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?53w43UhWUiNZHzgyBlXRTc690MGXhvg294M09mCf9Rt2o++IJOER67RCd9DE?= =?us-ascii?Q?uimBRXbW/NcwCsFsMROrtjSQ7PnrMTiWpb8H72DUZbWknVx+HhhDpek1fYZe?= =?us-ascii?Q?O3vIt2cttr1O9ME5r/48FBjlXi6Pq0ZHzleCAHdswt7oGvE3SNXpJCZcOL+Y?= =?us-ascii?Q?Diy22MNgZvumoH1lQ/eaLbo5Qr9FofJrvBQgEixDGQ9ap9eznO2ztWB7osOe?= =?us-ascii?Q?5PrDhYLN6WCqTDAqJN/5VQvQ6oY9dOEJc1Qv3/ORpO9J+MiGSld4qvTAf3an?= =?us-ascii?Q?Wc9L2SwQiNlVmGs7DPOqysP3ARFJdLIewTFTxcniG363IoHJBC1tDrNpywiI?= =?us-ascii?Q?6qhS2dOB4bsILmMR5U0jPI5x2AVPB/YU7ZLw5l13G9EAmRHuh3W/ziFhsh30?= =?us-ascii?Q?1gdkS4SokqtTAhCe26Bw9rzlrxyGREfV4X+cJyjWobwBkEvMj/LQpvRWxzLY?= =?us-ascii?Q?IMblmbbDjTpU1q4mSegI/fUEQuRoUPyIrihdJ44sscpjPhh7OOfS62ZZjS3l?= =?us-ascii?Q?gCTQUN2lMUW6utxLK+tiWN3reIq/zWo5nWPIXVMViLeLerqdjbPYgmDR8thR?= =?us-ascii?Q?aYk1pe+RuhJEqBIivnlR0dlYmt0OfLenfF4BgDJ4Ib2LqOMHuAh1b419w5xR?= =?us-ascii?Q?MH8QRZoZKiz87cLhKNOVysiTiuDuWzJs3UrfjJx3p3yOEUiV0o/0jwJaqeTb?= =?us-ascii?Q?RviLQQPi1icHzu1A/1S014XbdKPo4HqP886VngYQTbw0bunTMudJFiHvBtge?= =?us-ascii?Q?/5AAtg3tQyg/MLaHf2y5xU2ExfzBMDW1DNPPal7nxc2BN+2332JrXXGMqWW5?= =?us-ascii?Q?8Pqdk/4YZij5+dDdCO3XYzEdLvqHJs+mnaySLSUalC3JvlMBCYSiehcX6Edv?= =?us-ascii?Q?DimEQwpuse9aJ22velJNj55e+gZ8Xb3pk+zsG3xFMxQpU3VH7emUs7Yjy7Tf?= =?us-ascii?Q?Vs9o+mW5D4VkW29LEMT/fMh+0BtsSr6eBz/wjOixe5B6UGLy+bXAnP9t17/2?= =?us-ascii?Q?b7feC0oZ9mLhSERptGxgxPTa3Q8X92ow+POkBNIFI6f9+BUhqK2O2UniQioF?= =?us-ascii?Q?LSpiF5oMlzHjRx2UVIGn+Bh65sKKa2yK6Vpn6bbO8Jg4eovX7KKpkX4EEjLi?= =?us-ascii?Q?yuTG8ibt84T8r4ZdPTdOI0RpgGhGtXhKWE4Hga2UIDqqT3AD6f+GBc/vo+a+?= =?us-ascii?Q?fCQkDXWcaw/Ky6RLxvV9X3ZUDToTH97uRUvOKA4RmtY48ih9WhHlIuWQQFAB?= =?us-ascii?Q?jkTgZZszZ1A69XKqcP1S8NgGmzjo5Ii3a3vullji4uIuAcYcPhqFUYQM7ObL?= =?us-ascii?Q?7ThcQezPO4hkBEYxH+z/++QHEEaaOqTXEvVgoqiRd0gSOAxnqL5cPr2TE97S?= =?us-ascii?Q?Fpk6q/Nb0f6O5Bmq3zJV6CtDnoAoeiT26k+vF3Ocs6hKRviNLsI+UM3KJLZ6?= =?us-ascii?Q?9suye5fUQjNfDn7vJbLKOjRiLeLl99xVi1IyYnGfPZM9B2j/iTDjZwV1h4EE?= =?us-ascii?Q?o/7VLV8gHPJDY6LWxqEjXn8brTEumtg2QMtmI5emwEVvJS2uTHPitP+NeoLb?= =?us-ascii?Q?OLBInr4InZzm/Gjy2JXJdnkK+67wTd1E1o3caruDsrC3mLFjETdHU1CJK6TA?= =?us-ascii?Q?Ww=3D=3D?= X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-Network-Message-Id: ba63974f-e98b-4c66-dec5-08dc2275b2c8 X-MS-Exchange-CrossTenant-AuthSource: AM9PR10MB4959.EURPRD10.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jan 2024 16:00:08.6935 (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: VYmAF4wgTjVR9l46r3jzTBkCmjEjX0WnOmdlow0AK+BSjcD3Oixigcj4YburzsK6C4AtohPITAj5ejcOm1/WhQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR10MB4074 X-TUID: /VmY31Gj4+BX 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 | 52 +++++++++++++++++-- 6 files changed, 101 insertions(+), 21 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 48d86c2a..3f71fd7e 100644 --- a/meta/recipes-kernel/linux/linux-custom.inc +++ b/meta/recipes-kernel/linux/linux-custom.inc @@ -84,30 +84,72 @@ TEMPLATE_VARS += " \ DISTRIBUTOR \ " -inherit dpkg -inherit template - # 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]}" + +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): + 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" + +inherit dpkg +inherit template +inherit kbuildtarget + def get_kernel_arch(d): distro_arch = d.getVar("DISTRO_ARCH") if distro_arch in ["amd64", "i386"]: -- 2.39.2