From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6581862148598661120 X-Received: by 2002:a19:f810:: with SMTP id a16-v6mr814270lff.13.1532459202726; Tue, 24 Jul 2018 12:06:42 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a19:7b0f:: with SMTP id w15-v6ls481310lfc.17.gmail; Tue, 24 Jul 2018 12:06:42 -0700 (PDT) X-Google-Smtp-Source: AAOMgpe+i+p9abaMerlB5DzTi/qqpRp7YwUueTD981t2y3sMU77uAQQBSBhF4wHrUs6AUvLO4uVZ X-Received: by 2002:a19:2082:: with SMTP id g124-v6mr816545lfg.23.1532459202298; Tue, 24 Jul 2018 12:06:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532459202; cv=none; d=google.com; s=arc-20160816; b=hVRrCwP3+u8g5vgbme4iF7fgbGxygUrV4u6yirl+uVR7gI2a9mFwf8Nq+MhdoLgbQw tjkjCPowKWGZ2hUzGX7WK1iZ/f6jK0XCHuMM71XKwOtch/KcvuJz2zgF+MqJkg6uWk6O lrbua9/wxBqKF33MQX5U+DsI6t7sx2LS1AAYU2Fv3BMzSRxVObX1U/aeuXL+hO9UgRpr J2ETeaXrTPQpTjMheJBRn4XFfNVA2i22jRVkQYUNNfqulO8JC51BztGqNnVj4qcertoL 8UDr/fuoOMXeuCayZTtCa0uT9ISRzBaFg1NheXbw5ia1WBAOIHMWP5Mb7vHBLbjZ88em jTgA== 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=ZAOjZasrVRdm9RlS6eQeNy33pxeWVJqT1V8QAp6CuyI=; b=k9RObihfqHvnDEEYoRDtp1K9M2YLmKzFD2O4H0e0/UuSKXJGC9cjRIiQiTIHm52FSX 7v7xzKXCid0rF8H5yiTzAXxNztioMKut5dpVuxbfJc8r6oEwccDctf10cz8RDRGCmUtu Y8CGHigk8T2r6iAIm5OrZXL0eXcKVoKExpd161gf5fEqwVVkof3fX+xCrVCBNRmCDZbB dvoLhwFrdy2Rv4RhspRglToUQuwygmFR2M/DNnIH3tC9P2sRdUl1L4S0JaP8R/ttOzPw 9iu7VGPQPG0IO/Eu5jPvVnjnkamGkuPKFXuKwYftxwmmkn+CNMry1E5lr2sH/HeWe+cf RF9w== 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 v16-v6si429100ljg.3.2018.07.24.12.06.42 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 24 Jul 2018 12:06:42 -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 w6OJ6PDw020773 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 24 Jul 2018 21:06:34 +0200 From: Alexander Smirnov To: isar-users@googlegroups.com Cc: Alexander Smirnov Subject: [PATCH v4 04/10] cross-compilation: Introduce variable switch Date: Tue, 24 Jul 2018 22:06:12 +0300 Message-Id: <20180724190618.19155-5-asmirnov@ilbers.de> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20180724190618.19155-1-asmirnov@ilbers.de> References: <20180724190618.19155-1-asmirnov@ilbers.de> X-TUID: cp311sM0DDfN 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..8977668 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