From: Henning Schild <henning.schild@siemens.com>
To: Alexander Smirnov <asmirnov@ilbers.de>
Cc: <isar-users@googlegroups.com>
Subject: Re: [RFC] [PATCH 0/9] Initial cross-compilation support
Date: Mon, 18 Jun 2018 09:04:00 +0200 [thread overview]
Message-ID: <20180618090400.130c721d@md1pvb1c.ad001.siemens.net> (raw)
In-Reply-To: <78111574-15e2-449f-fb71-626587033863@ilbers.de>
Am Sun, 17 Jun 2018 22:41:08 +0300
schrieb Alexander Smirnov <asmirnov@ilbers.de>:
> Hi Henning,
>
> On 06/14/2018 02:20 PM, Henning Schild wrote:
> > Am Wed, 13 Jun 2018 15:07:58 +0200
> > schrieb Alexander Smirnov <asmirnov@ilbers.de>:
> >
> >> Hi all,
> >>
> >> this series introduces basic cross-compilation support for Isar.
> >> The implementation is based around new entity - buildchroot-cross,
> >> which is quite similar to original buildchroot, but has host
> >> architecture.
> >>
> >> This series tested for the following configuration only:
> >>
> >> $ bitbake multiconfig:qemui386
> >>
> >> In this build:
> >> - libhello is cross-compiled
> >> - example-hello is compiled traditionally (but it's successfully
> >> linked with libhello)
> >>
> >> TODO list:
> >> - Depending on the target architecture, various host tools
> >> should be installed. For example binutils package has the
> >> following names:
> >> * binutils
> >> * binutils-x86-64-linux-gnu
> >> * binutils-arm-linux-gnueabihf
> >> - Cross-dependency installation. This topic is still open for me
> >> because 'mk-build-deps' tool doesn't work here correctly. For
> >> example package depends on binutils, but instead of installation of
> >> 'binutils-arm-linux-gnueabihf' it tries to install 'binutils:armhf'
> >> and ruins the rootfs.
> >
> > mk-build-deps supports the following switches "--arch foo
> > --host-arch foo", maybe they help?
> >
>
> Sorry that mess the thread, but the last message in this thread
> doesn't contain you comment :-)
>
> So, I've tried to play with mk-build-deps, but results are really
> disappointed:
>
> 1. mk-build-deps support --host-arch and --build-arch starting from
> stretch only, in jessie these parameters are not presented.
>
> 2. I've tried to run mk-build-deps in stretch for libhello:
>
> $ mk-build-deps --host-arch amd64 --build-arch i386 debian/control
> ...
> dpkg -I libhello-cross-build-deps-depends_0.1_amd64.deb
> new debian package, version 2.0.
> size 2012 bytes: control archive=516 bytes.
> 367 bytes, 11 lines control
> 283 bytes, 3 lines md5sums
> Package: libhello-cross-build-deps-depends
> Version: 0.1
> Architecture: amd64
> Maintainer: root <root@>
> Installed-Size: 9
> Depends: build-essential:i386, crossbuild-essential-amd64:i386,
> debhelper (>= 9), docbook-to-man
> Section: devel
> Priority: optional
> Multi-Arch: foreign
> Description: build-dependencies for libhello
> Dependency package to build the 'libhello' package
>
> BUT: package 'crossbuild-essential-amd64:i386' does not exists. At
> least I wasn't able to find it via apt (I've also added i386 to
> source list).
>
> Another issue during attempts to install generated deps:
>
> $ apt-get install build-essential:i386
> Reading package lists... Done
> Building dependency tree
> Reading state information... Done
> You might want to run 'apt --fix-broken install' to correct these.
> The following packages have unmet dependencies:
> build-essential:i386 : Depends: libc6-dev:i386 but it is not going
> to be installed or
> libc-dev:i386
> Depends: gcc:i386 (>= 4:6.3) but it is not
> going to be installed
> Depends: g++:i386 (>= 4:6.3) but it is not
> going to be installed
> Depends: make:i386
> libhello-cross-build-deps : Depends:
> crossbuild-essential-amd64:i386 but it is not installable
> E: Unmet dependencies. Try 'apt --fix-broken install' with no
> packages (or specify a solution).
>
> It tries to pull target compiler, what is also incorrect behavior.
> The cross binutils should be installed instead.
>
> So, will continue this investigation :-(
The stretch+ would not be such a big issue, we already have a few
features that will not work for older distros. But since debian
upstream does not really support cross, it is not too surprising that
it is hard to get working.
Since cross will be more of a hack anyways, maybe you can revive the
perl (or was it sed) magic that my mk-build-dep patch replaced. We
could also think about a variable like "CROSS_BUILD_DEBIAN_DEPENDS"
that would by default carry the toolchain etc. and could be extended
with whatever all the recipes for the image might need. So instead of
actually looking at the recipe, just expect that global image-variable
to be all you need. ... Again the whole thing is a hack. Code that
tries to use debian/control to install more is optional on top of the
general mechanism.
Henning
> Alex
>
> > Henning
> >
> >> So, as usually, comments and suggestions are welcome :-)
> >>
> >> With best redgards,
> >> Alex
> >>
> >> Alexander Smirnov (9):
> >> isar-bootstrap: Add routin to determine host arch
> >> isar-bootstrap: Move common part to include
> >> isar-bootstrap: Add host architecture support
> >> isar-bootstrap-helper: Add parameter to set arch
> >> buildchroot-cross: Initial implementation
> >> classes/dpkg*: Relocate dependency from buildchroot
> >> classes/dpkg*: Drop hardcoded buildchroot blobs
> >> classes/dpkg-cross: Initial implementation
> >> [FOR TESTING] libhello: Switch to cross compilation
> >>
> >> meta-isar/recipes-app/libhello/libhello.bb | 2 +-
> >> meta/classes/dpkg-base.bbclass | 17 +-
> >> meta/classes/dpkg-cross.bbclass | 15 ++
> >> meta/classes/dpkg-raw.bbclass | 7 +-
> >> meta/classes/dpkg.bbclass | 7 +-
> >> meta/classes/image.bbclass | 2 +-
> >> meta/classes/isar-bootstrap-helper.bbclass | 13 +-
> >> meta/conf/isar-bitbake.conf | 1 +
> >> .../isar-bootstrap/isar-bootstrap-host.bb | 44 ++++
> >> .../isar-bootstrap/isar-bootstrap-target.bb | 44 ++++
> >> meta/recipes-core/isar-bootstrap/isar-bootstrap.bb | 259
> >> --------------------- .../recipes-core/isar-bootstrap/isar-bootstrap.inc
> >> | 223
> >> ++++++++++++++++++ .../buildchroot/buildchroot-cross.bb
> >> | 53 +++++ meta/recipes-devtools/buildchroot/buildchroot.bb |
> >> 2 +- .../buildchroot/files/build-cross.sh | 29 +++
> >> 15 files changed, 443 insertions(+), 275 deletions(-) create mode
> >> 100644 meta/classes/dpkg-cross.bbclass create mode 100644
> >> meta/recipes-core/isar-bootstrap/isar-bootstrap-host.bb create mode
> >> 100644 meta/recipes-core/isar-bootstrap/isar-bootstrap-target.bb
> >> delete mode 100644
> >> meta/recipes-core/isar-bootstrap/isar-bootstrap.bb create mode
> >> 100644 meta/recipes-core/isar-bootstrap/isar-bootstrap.inc create
> >> mode 100644 meta/recipes-devtools/buildchroot/buildchroot-cross.bb
> >> create mode 100644
> >> meta/recipes-devtools/buildchroot/files/build-cross.sh
> >
next prev parent reply other threads:[~2018-06-18 7:04 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-13 13:07 Alexander Smirnov
2018-06-13 13:07 ` [PATCH 1/9] isar-bootstrap: Add routin to determine host arch Alexander Smirnov
2018-06-14 11:23 ` Henning Schild
2018-06-15 11:11 ` Alexander Smirnov
2018-06-15 11:15 ` Jan Kiszka
2018-06-13 13:08 ` [PATCH 2/9] isar-bootstrap: Move common part to include Alexander Smirnov
2018-06-13 13:08 ` [PATCH 3/9] isar-bootstrap: Add host architecture support Alexander Smirnov
2018-06-14 11:27 ` Henning Schild
2018-06-15 11:09 ` Alexander Smirnov
2018-06-13 13:08 ` [PATCH 4/9] isar-bootstrap-helper: Add parameter to set arch Alexander Smirnov
2018-06-13 13:08 ` [PATCH 5/9] buildchroot-cross: Initial implementation Alexander Smirnov
2018-06-14 11:36 ` Henning Schild
2018-06-15 11:16 ` Alexander Smirnov
2018-06-14 15:55 ` Jan Kiszka
2018-06-15 10:56 ` Alexander Smirnov
2018-06-15 11:12 ` Jan Kiszka
2018-06-17 19:28 ` Alexander Smirnov
2018-06-13 13:08 ` [PATCH 6/9] classes/dpkg*: Relocate dependency from buildchroot Alexander Smirnov
2018-06-14 6:44 ` Jan Kiszka
2018-06-15 10:52 ` Alexander Smirnov
2018-06-13 13:08 ` [PATCH 7/9] classes/dpkg*: Drop hardcoded buildchroot blobs Alexander Smirnov
2018-06-13 13:08 ` [PATCH 8/9] classes/dpkg-cross: Initial implementation Alexander Smirnov
2018-06-13 13:08 ` [PATCH 9/9] [FOR TESTING] libhello: Switch to cross compilation Alexander Smirnov
2018-06-13 13:57 ` [RFC] [PATCH 0/9] Initial cross-compilation support Jan Kiszka
2018-06-14 11:20 ` Henning Schild
2018-06-17 19:41 ` Alexander Smirnov
2018-06-18 7:04 ` Henning Schild [this message]
2018-06-14 12:01 ` Henning Schild
2018-06-14 12:04 ` Claudius Heine
2018-06-14 12:24 ` Henning Schild
2018-06-14 12:36 ` Claudius Heine
2018-06-14 12:30 ` Jan Kiszka
2018-06-14 12:42 ` Claudius Heine
2018-06-14 12:55 ` Claudius Heine
2018-06-15 10:50 ` Alexander Smirnov
2018-06-15 13:17 ` Claudius Heine
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180618090400.130c721d@md1pvb1c.ad001.siemens.net \
--to=henning.schild@siemens.com \
--cc=asmirnov@ilbers.de \
--cc=isar-users@googlegroups.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox