From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6584097242600177664 X-Received: by 2002:a1c:8492:: with SMTP id g140-v6mr71084wmd.2.1532979602756; Mon, 30 Jul 2018 12:40:02 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a1c:7a0a:: with SMTP id v10-v6ls102297wmc.9.canary-gmail; Mon, 30 Jul 2018 12:40:02 -0700 (PDT) X-Google-Smtp-Source: AAOMgpccAZubsKI8oFx0z2o8Oc+roU11qE8SO6t/MQ+F1YpB+PcVqqFnbaeDFy0BTyC+Rb7YVY42 X-Received: by 2002:a1c:ef04:: with SMTP id n4-v6mr62575wmh.15.1532979602411; Mon, 30 Jul 2018 12:40:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532979602; cv=none; d=google.com; s=arc-20160816; b=nuQAdQ8439tdx2Ih+CT3ETHl3sx+01dP6aYYec1KlqDcLcWbTBAG9FQW8vdDfC+kaz OWAbjiuzeMllGGmfUiX1RxpD2Cc/UUTbdiKLJV1gByqksL1df8lXTNy1BABPs/o6Qgjt VK8wRm5mWTGVkL1Tl0CTn8Zuv7qofkGpELO2C0DJ7JoFpW5O3EuAlG2Vj4FO8/NeE/I9 Qb0tcTscD8yWZ2nATEPr3Q8ULE3W9DubDa15JRS6P5hYHVYXsT9eKg0NTUxjzETK3s0q 4qaxrpvYLrKP9g+botyHyHsrcme5Ksm/NBp4ZXR3WFnX9WaB9/PJwCjbOpKoZESnFjq2 WBlw== 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=10hkTv1m7HfvL3X6uVOwqgBXepukAbCcACb9inibsAg=; b=WoOe8xNVRbuIshw9T/iyYKzaPtQ28RrIjjB6C+105suRmycvDvw7pfR2j9ZytqgWVN wegl7uQmyezNFPUZYu80G6wxRI5mmz3l03zyzFHszUWjjE5vPcAHx/FTpibYlSTnFXQ1 XL6yArJmC58a5vKCpDCAD53HZgvt6Ru6kooSyZSfJbtP0OnB/uxFoi9Rl+UaB5/qONub PZLGX1bFSOBkPwHCkhA7YJ0P0CT26gN/UDLMiIFcHg8GLVagHDTKxG+hVNbMAEfKzh6f OomPGgq/NacedemNm6ONvY0w7D0Igt6SFwmpsPwFcdCwGt2qIP5K2gGfHAKXdyWZUsW0 6Kjg== 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 r2-v6si166201wmh.1.2018.07.30.12.40.02 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 30 Jul 2018 12:40:02 -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 localhost.localdomain ([188.227.110.165]) (authenticated bits=0) by aqmola.ilbers.de (8.14.4/8.14.4/Debian-4+deb7u1) with ESMTP id w6UJdiYH013563 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT); Mon, 30 Jul 2018 21:39:52 +0200 From: Alexander Smirnov To: isar-users@googlegroups.com Cc: Alexander Smirnov Subject: [PATCH v5 06/12] cross-compilation: Introduce variable switch Date: Mon, 30 Jul 2018 19:39:31 +0000 Message-Id: <20180730193937.32694-7-asmirnov@ilbers.de> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180730193937.32694-1-asmirnov@ilbers.de> References: <20180730193937.32694-1-asmirnov@ilbers.de> X-TUID: Yf6/sRk/urSR Add variable to switch from native to cross compilation. Signed-off-by: Alexander Smirnov --- meta-isar/conf/local.conf.sample | 5 +++++ .../recipes-kernel/example-module/example-module.bb | 7 +++++++ meta/classes/dpkg-base.bbclass | 19 ++++++++++++++++--- meta/classes/dpkg-raw.bbclass | 1 - meta/classes/dpkg.bbclass | 4 +--- 5 files changed, 29 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-isar/recipes-kernel/example-module/example-module.bb b/meta-isar/recipes-kernel/example-module/example-module.bb index 98d0aaa..6b63ae3 100644 --- a/meta-isar/recipes-kernel/example-module/example-module.bb +++ b/meta-isar/recipes-kernel/example-module/example-module.bb @@ -12,3 +12,10 @@ SRC_URI += "file://src" S = "${WORKDIR}/src" AUTOLOAD = "1" + +# Cross-compilation is not supported for the 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" 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} } -- 2.11.0