public inbox for isar-users@googlegroups.com
 help / color / mirror / Atom feed
From: "Maxim Yu. Osipov" <mosipov@ilbers.de>
To: isar-users@googlegroups.com
Subject: [RFC PATCH 0/6] ISAR SDK root filesystem
Date: Wed, 13 Jun 2018 15:58:23 +0200	[thread overview]
Message-ID: <20180613135829.3151-1-mosipov@ilbers.de> (raw)

Hello everybody,

This series provides preliminary support of ISAR SDK root file system.

Motivation

Building applications for targets in ISAR takes a lot of time as they are built under QEMU.
SDK providing crossbuild environment will help to solve this problem.

Approach

Create SDK root file system for host with installed cross-toolchain for target architecture and ability to install already prebuilt
target binary artifacts. Developer chroots to sdk rootfs and develops applications for target platform.

Solution

User manually triggers creation of SDK root filesystem for his target platform by launching the task `do_isar_sdk` for target image, f.e.
`bitbake -c do_isar_sdk multiconfig:${MACHINE}-${DISTRO}:isar-image-base`.

The resulting SDK rootfs is located under `tmp/work/${DITSRO}-${DISTRO_ARCH}/sdkchroot/rootfs`.
SDK rootfs directory `/isar-apt` contains the copy of isar-apt repo with locally prebuilt target debian packages.
One may chroot to SDK and install required target packages with the help of `apt-get install <package_name>:<DISTRO_ARCH>` command.

Limitation

Only Debian Stretch for SDK root filesystem is supported as only Stretch provides crossbuild environment by default.
(Debian Jessie requires some additional preconfiguration steps see https://wiki.debian.org/CrossToolchains#Installation for details).

Example

 - Trigger creation of SDK root filesystem


bitbake -c do_isar_sdk multiconfig:qemuarm-stretch:isar-image-base


 - Mount the following directories in chroot by passing resulting rootfs as an argument to the script `mount_chroot.sh`:


$ cat mount_chroot.sh
#!/bin/bash
sudo mount /tmp     $1/tmp                 -o bind
sudo mount proc     $1/proc    -t proc     -o nosuid,noexec,nodev
sudo mount sysfs    $1/sys     -t sysfs    -o nosuid,noexec,nodev
sudo mount devtmpfs $1/dev     -t devtmpfs -o mode=0755,nosuid
sudo mount devpts   $1/dev/pts -t devpts   -o gid=5,mode=620
sudo mount tmpfs    $1/dev/shm -t tmpfs    -o rw,seclabel,nosuid,nodev

$ ./mount_chroot.sh ./build/tmp/work/debian-stretch-armhf/sdkchroot/rootfs


 - chroot to isar SDK rootfs:

$ sudo chroot ./build/tmp/work/debian-stretch-armhf/sdkchroot/rootfs


 - Check that cross toolchains are installed


:~# dpkg -l | grep crossbuild-essential-armhf
ii  crossbuild-essential-armhf           12.3                   all          Informational list of cross-build-essential packages


 - Install needed prebuilt target packages.


:~# apt-get install libhello-dev:armhf


 - Check the contents of the installed target package


:~# dpkg -L libhello-dev
/.
/usr
/usr/include
/usr/include/hello.h
/usr/lib
/usr/lib/arm-linux-gnueabihf
/usr/lib/arm-linux-gnueabihf/libhello.a
/usr/lib/arm-linux-gnueabihf/libhello.la
/usr/share
/usr/share/doc
/usr/share/doc/libhello-dev
/usr/share/doc/libhello-dev/changelog.gz
/usr/share/doc/libhello-dev/copyright
~#


Note:
This code was not sync'ed with patchset 'Initial cross-compilation support'
sent today by Alex. 


Your comments/suggestions are welcome,

Kind regards,
Maxim.


Alexander Smirnov (1):
  isar-debootstrap: split into host and target recipes

Maxim Yu. Osipov (5):
  isar-bootstrap-helper: Add option --copyrepo to
    setup_root_file_system()
  sdkchroot: Added recipe-devel to create SDK root filesystem
  meta/class/image: Add do_isar task to trigger SDK rootfs creation.
  scripts: Add helper scripts to mount/umount chroot directory.
  doc: Add description of ISAR SDK root filesystem creation

 doc/user_manual.md                                 | 90 ++++++++++++++++++++++
 meta-isar/recipes-core/images/isar-image-base.bb   |  2 +-
 meta/classes/image.bbclass                         | 10 ++-
 meta/classes/isar-bootstrap-helper.bbclass         | 24 +++++-
 .../isar-bootstrap/isar-bootstrap-host.bb          | 31 ++++++++
 .../isar-bootstrap/isar-bootstrap-target.bb        | 32 ++++++++
 .../{isar-bootstrap.bb => isar-bootstrap.inc}      | 24 ------
 meta/recipes-devtools/buildchroot/buildchroot.bb   |  4 +-
 .../sdkchroot/files/configscript.sh                | 14 ++++
 meta/recipes-devtools/sdkchroot/sdkchroot.bb       | 59 ++++++++++++++
 scripts/mount_chroot.sh                            |  7 ++
 scripts/umount_chroot.sh                           |  7 ++
 12 files changed, 273 insertions(+), 31 deletions(-)
 create mode 100644 meta/recipes-core/isar-bootstrap/isar-bootstrap-host.bb
 create mode 100644 meta/recipes-core/isar-bootstrap/isar-bootstrap-target.bb
 rename meta/recipes-core/isar-bootstrap/{isar-bootstrap.bb => isar-bootstrap.inc} (89%)
 create mode 100644 meta/recipes-devtools/sdkchroot/files/configscript.sh
 create mode 100644 meta/recipes-devtools/sdkchroot/sdkchroot.bb
 create mode 100755 scripts/mount_chroot.sh
 create mode 100755 scripts/umount_chroot.sh

-- 
2.11.0


             reply	other threads:[~2018-06-13 13:58 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-13 13:58 Maxim Yu. Osipov [this message]
2018-06-13 13:58 ` [RFC PATCH 1/6] isar-bootstrap-helper: Add option --copyrepo to setup_root_file_system() Maxim Yu. Osipov
2018-06-14  8:51   ` Henning Schild
2018-06-13 13:58 ` [RFC PATCH 2/6] isar-debootstrap: split into host and target recipes Maxim Yu. Osipov
2018-06-14  8:59   ` Henning Schild
2018-06-13 13:58 ` [RFC PATCH 3/6] sdkchroot: Added recipe-devel to create SDK root filesystem Maxim Yu. Osipov
2018-06-14  9:19   ` Henning Schild
2018-06-14 10:46     ` Maxim Yu. Osipov
2018-06-14 11:07       ` Henning Schild
2018-06-13 13:58 ` [RFC PATCH 4/6] meta/class/image: Add do_isar task to trigger SDK rootfs creation Maxim Yu. Osipov
2018-06-14  9:23   ` Henning Schild
2018-06-14 11:49     ` Maxim Yu. Osipov
2018-06-18  9:56   ` Baurzhan Ismagulov
2018-06-13 13:58 ` [RFC PATCH 5/6] scripts: Add helper scripts to mount/umount chroot directory Maxim Yu. Osipov
2018-06-14  9:28   ` Henning Schild
2018-06-13 13:58 ` [RFC PATCH 6/6] doc: Add description of ISAR SDK root filesystem creation Maxim Yu. Osipov
2018-06-14  8:48 ` [RFC PATCH 0/6] ISAR SDK root filesystem Henning Schild
2018-06-14  8:51   ` Jan Kiszka
2018-06-14  9:34     ` Henning Schild
2018-06-14  9:46   ` Maxim Yu. Osipov
2018-06-18  7:08     ` Henning Schild
2018-06-19  7:33       ` Maxim Yu. Osipov

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=20180613135829.3151-1-mosipov@ilbers.de \
    --to=mosipov@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