From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6579174846558633984 X-Received: by 2002:adf:f101:: with SMTP id r1-v6mr167154wro.26.1531833517388; Tue, 17 Jul 2018 06:18:37 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:adf:e8d0:: with SMTP id k16-v6ls375034wrn.11.gmail; Tue, 17 Jul 2018 06:18:37 -0700 (PDT) X-Google-Smtp-Source: AAOMgpeatDQQDbVsvSCZBHFdh3iNwq9XJQalw8uaTFFI5+4lyvA9PtHqdb2q//5F7S4oXiqMoklC X-Received: by 2002:adf:ce85:: with SMTP id r5-v6mr171912wrn.22.1531833517034; Tue, 17 Jul 2018 06:18:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531833517; cv=none; d=google.com; s=arc-20160816; b=efk1JV1pujrW0OW1VkCc2jTO95r3YmzS9bE+dOD3h6gbScgsxXxnKF+VeN0HtdqS/H fZF1xIqdwQNDCOQ6m0zFt8Ww3KFu1f9E+7/eUpRICbaVRPdXfigQnbZ/vo2l34f0yhEQ N1Ey11lswObOoR9+Kak7sDpqFfPZ38+FLZE1pHumSMrCASqb17y83SC6fKWlmBg9e0tp VKH0aGz7vXbGyJKs0SSJE17u2J9eooOScEtovDWhrDwPEOiJD/clNVLoaHBSzeF+ax+J ldkG4c2WkVa3Q4czFi68STh19TLg4TZpEN4+2QSq6e9fC77p/s9gxSyyv9gcIXQaHWde DkwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=DgHYB/KRJBQ7ylY5JJMMPp6Nz5OlRcNzaqL9hG8iiIQ=; b=LIn1GkrKRJQ7Rq5BiXDnsiI89rnqWmUV28Y0sNe6AbMgHe/tPChcOQV9rhX64U8ab9 Ajbc4/Gv5sid9j/F/7Go30MP0vmn+PMHXmSBNMU08E42aMp38eJFrZbzaTx4ssbQYE71 rl9zv7T2BeiF5ZfiDoHqybQDsgZ8nKZUku/+2drJJ0cHch8a+oPRgR6U3zbkvjAW4Owq uRHwXaJb37EhQxOVQM8DI5gmHgYXihwbhyVgFGK29p/iqeW+TP0CyvSoFFNRqBujdVyC tWkOaRXJRxhignKgjpXv815cBSTVw97njh+xlcSOVBiEEjZrK/OpowwqrBQy4Kh2aeBi DeOw== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: best guess record for domain of asmirnov@ilbers.de designates 85.214.62.211 as permitted sender) smtp.mailfrom=asmirnov@ilbers.de Return-Path: Received: from aqmola.ilbers.de (aqmola.ilbers.de. [85.214.62.211]) by gmr-mx.google.com with ESMTPS id v20-v6si2496wmc.2.2018.07.17.06.18.36 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 Jul 2018 06:18:37 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of asmirnov@ilbers.de designates 85.214.62.211 as permitted sender) client-ip=85.214.62.211; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: best guess record for domain of asmirnov@ilbers.de designates 85.214.62.211 as permitted sender) smtp.mailfrom=asmirnov@ilbers.de Received: from zbook.fosdem.net ([188.227.110.165]) (authenticated bits=0) by aqmola.ilbers.de (8.14.4/8.14.4/Debian-4+deb7u1) with ESMTP id w6HDIIY8024651 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 17 Jul 2018 15:18:28 +0200 From: Alexander Smirnov To: isar-users@googlegroups.com Cc: Alexander Smirnov Subject: [PATCH v3 6/7] cross-compilation: Introduce variable switch Date: Tue, 17 Jul 2018 16:18:10 +0300 Message-Id: <20180717131811.14239-7-asmirnov@ilbers.de> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20180717131811.14239-1-asmirnov@ilbers.de> References: <20180717131811.14239-1-asmirnov@ilbers.de> X-TUID: CQXdJzH8dqM4 Add variable to switch from native to cross compilation. Signed-off-by: Alexander Smirnov --- meta-isar/conf/local.conf.sample | 5 +++++ meta/classes/dpkg-base.bbclass | 19 ++++++++++++++++--- meta/classes/dpkg-raw.bbclass | 1 - meta/classes/dpkg.bbclass | 4 +--- meta/recipes-kernel/linux-module/module.inc | 7 +++++++ meta/recipes-kernel/linux/linux-custom.inc | 2 ++ 6 files changed, 31 insertions(+), 7 deletions(-) diff --git a/meta-isar/conf/local.conf.sample b/meta-isar/conf/local.conf.sample index 16ef488..27b43d1 100644 --- a/meta-isar/conf/local.conf.sample +++ b/meta-isar/conf/local.conf.sample @@ -156,3 +156,8 @@ CONF_VERSION = "1" # # The default list of extra packages to be installed. IMAGE_INSTALL = "example-hello example-raw example-module" + +# +# Enable cross-compilation support +# NOTE: this works only for stretch-armhf and stretch-amd64 targets for now. +ISAR_CROSS_COMPILE ?= "0" diff --git a/meta/classes/dpkg-base.bbclass b/meta/classes/dpkg-base.bbclass index 3234234..674c0b5 100644 --- a/meta/classes/dpkg-base.bbclass +++ b/meta/classes/dpkg-base.bbclass @@ -1,6 +1,22 @@ # This software is a part of ISAR. # Copyright (C) 2017 Siemens AG +ISAR_CROSS_COMPILE ??= "0" + +# Add dependency from the correct buildchroot: host or target +python __anonymous() { + mode = d.getVar('ISAR_CROSS_COMPILE', True) + if mode == "0": + dep = "buildchroot-target:do_build" + rootfs = d.getVar('BUILDCHROOT_TARGET_DIR', True) + else: + dep = "buildchroot-host:do_build" + rootfs = d.getVar('BUILDCHROOT_HOST_DIR', True) + + d.setVarFlag('do_build', 'depends', dep) + d.setVar('BUILDCHROOT_DIR', rootfs) +} + do_adjust_git() { if [ -f ${S}/.git/objects/info/alternates ]; then sed -i ${S}/.git/objects/info/alternates \ @@ -14,9 +30,6 @@ do_adjust_git[stamp-extra-info] = "${DISTRO}-${DISTRO_ARCH}" inherit patch addtask patch after do_adjust_git before do_build -# Add dependency from buildchroot creation -do_build[depends] = "buildchroot-target:do_build" - # Add dependency between Isar recipes DEPENDS ?= "" do_build[deptask] = "do_deploy_deb" diff --git a/meta/classes/dpkg-raw.bbclass b/meta/classes/dpkg-raw.bbclass index 2f23eb7..28233ac 100644 --- a/meta/classes/dpkg-raw.bbclass +++ b/meta/classes/dpkg-raw.bbclass @@ -7,7 +7,6 @@ DEBIAN_DEPENDS ?= "" MAINTAINER ?= "FIXME Unknown maintainer" D = "${WORKDIR}/image/" -BUILDCHROOT_DIR = "${BUILDCHROOT_TARGET_DIR}" # Populate folder that will be picked up as package do_install() { diff --git a/meta/classes/dpkg.bbclass b/meta/classes/dpkg.bbclass index 563b63c..ab70645 100644 --- a/meta/classes/dpkg.bbclass +++ b/meta/classes/dpkg.bbclass @@ -3,10 +3,8 @@ inherit dpkg-base -BUILDCHROOT_DIR = "${BUILDCHROOT_TARGET_DIR}" - # Build package from sources using build script dpkg_runbuild() { E="${@ bb.utils.export_proxies(d)}" - sudo -E chroot ${BUILDCHROOT_DIR} /build.sh ${PP}/${PPS} + sudo -E chroot ${BUILDCHROOT_DIR} /build.sh ${PP}/${PPS} ${DISTRO_ARCH} } diff --git a/meta/recipes-kernel/linux-module/module.inc b/meta/recipes-kernel/linux-module/module.inc index 3075f44..aeccfba 100644 --- a/meta/recipes-kernel/linux-module/module.inc +++ b/meta/recipes-kernel/linux-module/module.inc @@ -15,6 +15,13 @@ SRC_URI += "file://debian/" AUTOLOAD ?= "0" +# Cross-compilation is not supported for default Debian kernels. +# For example, package with kernel headers for ARM: +# linux-headers-armmp +# has hard dependencies from linux-compiler-gcc-4.8-arm, what +# conflicts with the host binaries. +ISAR_CROSS_COMPILE := "0" + inherit dpkg dpkg_runbuild_prepend() { diff --git a/meta/recipes-kernel/linux/linux-custom.inc b/meta/recipes-kernel/linux/linux-custom.inc index 1176b25..f7641ef 100644 --- a/meta/recipes-kernel/linux/linux-custom.inc +++ b/meta/recipes-kernel/linux/linux-custom.inc @@ -20,6 +20,8 @@ python() { 'linux-headers-' + kernel) } +ISAR_CROSS_COMPILE = "0" + inherit dpkg-base SRC_URI += "file://build-kernel.sh" -- 2.1.4