From: Claudius Heine <claudius.heine.ext@siemens.com>
To: Alexander Smirnov <asmirnov@ilbers.de>
Cc: isar-users@googlegroups.com,
"johann.pfefferl@siemens.com >> PFEFFERL JOHANN Z003CRBA"
<johann.pfefferl@siemens.com>
Subject: Re: Isar build tree structure
Date: Tue, 5 Sep 2017 13:09:59 +0200 [thread overview]
Message-ID: <8aa6847a-63ba-49ec-32ec-b77a38800ac8@siemens.com> (raw)
In-Reply-To: <1fb116bd-d3a6-bca9-9105-cc32b0ba276d@ilbers.de>
Hi,
On 09/05/2017 11:35 AM, Alexander Smirnov wrote:
>
>
> On 09/05/2017 12:28 PM, Claudius Heine wrote:
>> On 09/05/2017 11:13 AM, Alexander Smirnov wrote:
>>>
>>>
>>> On 09/05/2017 12:06 PM, Claudius Heine wrote:
>>>> Hi,
>>>>
>>>> On 09/05/2017 10:21 AM, Alexander Smirnov wrote:
>>>>> Hi all,
>>>>>
>>>>> I'd like to discuss build folders tree to somehow chose more
>>>>> suitable approach.
>>>>>
>>>>> 1. How it's done at the moment.
>>>>>
>>>>> The folder tree contains the following main paths:
>>>>>
>>>>> - tmp/work/${PP}
>>>>>
>>>>> It's a $WORKDIR for each recipe, here is stored bibtbake logs and
>>>>> commands, and data for packages that doesn't require buildchroot
>>>>> (for example, buildchroot and isar-image-base).
>>>>>
>>>>> - tmp/work/buildchroot/${DISTRO}-${ARCH}/rootfs/home/build/${PN}
>>>>>
>>>>> This is the $BUILDROOT for packages, that require compilation in
>>>>> chroot. It is used as destination folder for unpack task.
>>>>>
>>>>> Benefits:
>>>>>
>>>>> - Maximal common OE-like folder structure for all kind of
>>>>> recipes. You can find the information about specific package in
>>>>> 'tmp/work/${PP}'. And it doesn't matter if this package uses dpkg
>>>>> class, or not.
>>>>>
>>>>> - After buildchroot cleanup, the build information is not loosed.
>>>>>
>>>>> - For multiple buildchroots in project, there will be single
>>>>> place for package meta information.
>>>>>
>>>>> 2. Remove $BUILDROOT.
>>>>>
>>>>> This would mean that $WORKDIR location may vary depending on recipe
>>>>> type. So the recipes data will be distributed across buildchroots
>>>>> and tmp/work dir.
>>>>>
>>>>> Benefits:
>>>>>
>>>>> - Each recipe will use single folder for everything.
>>>>>
>>>>>
>>>>>
>>>>> So... Ideas and opinions? :-)
>>>>>
>>>>
>>>> Why not both benefits? Using bind mount to put the workdir of
>>>> recipes into the buildchroot?
>>>
>>> Mount is very difficult to manage. For example if something failed
>>> during build, it's hard to check in next build what is already
>>> mounted and what is not yet.
>>>
>>> But your idea is good. Could we use symlinks instead?
>>
>> If you are in a chroot environment the paths of the symlinks are wrong
>> since they reference a different root directory.
>
> Yeah, you are right... So probably mount could be an option:
>
> = do_unpack =
> 1. unpack to WORKDIR (tmp/work/${PP})
>
> = do_build =
> 1. mount respective folder in buildchroot
> 2. build
> 3. unmount respective folder in buildchroot
>
> This approach will be quite good compatible with OE.
If we go with proot then all this mounting could be done without
requiring root or this build step. I could be done like this:
$ proot -S ${BUILDROOT} -b ${WORKDIR}:${CHROOT_BUILDDIR} build.sh
One problem with proot is this:
$ mkdir test
$ cd test
$ proot -0
# id
uid=0(root) gid=0(root) groups=0(root)
# touch testfile
# ls -al
total 8
drwxr-xr-x 2 root root 4096 Sep 5 13:02 .
drwxrwxrwt 18 root root 4096 Sep 5 13:02 ..
-rw-r--r-- 1 root root 0 Sep 5 13:02 testfile
# chown 123:123 testfile
# ls -al
total 8
drwxr-xr-x 2 root root 4096 Sep 5 13:02 .
drwxrwxrwt 18 root root 4096 Sep 5 13:02 ..
-rw-r--r-- 1 root root 0 Sep 5 13:02 testfile
# exit
$ ls -al
total 8
drwxr-xr-x 2 user user 4096 Sep 5 13:02 .
drwxrwxrwt 18 root root 4096 Sep 5 13:02 ..
-rw-r--r-- 1 user user 0 Sep 5 13:02 testfile
It maps just everything from the current user to root and back. So
multiple users aren't supported here. But maybe this can be patched.
>>>>
>>>> Maybe we should take a look at proot [1] and use this instead of
>>>> chroot, because its more flexible, does not require privileges, etc.
>>>>
>>>> [1] https://github.com/proot-me/PRoot/blob/master/doc/proot/manual.txt
>>>>
>>>
>>> Do you know if it fully supports dpkg & Co?
>>
>> I currently use proot in some parts of my isar fork already. And from
>> my experience it works rather well. Since it uses the ptrace
>> systemcall, static binaries work work as well.
>>
>
> Do you have patch for this, could you please send it as RFC?
I don't have anything worth submitting (even as RFC) concerning proot.
But AFAIK Johannes has converted more of isar to use proot. Maybe he can
give some input for this.
Claudius
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-54 Fax: (+49)-8142-66989-80 Email: ch@denx.de
next prev parent reply other threads:[~2017-09-05 11:10 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-05 8:21 Alexander Smirnov
2017-09-05 9:06 ` Claudius Heine
2017-09-05 9:13 ` Alexander Smirnov
2017-09-05 9:28 ` Claudius Heine
2017-09-05 9:35 ` Alexander Smirnov
2017-09-05 11:09 ` Claudius Heine [this message]
2017-09-06 14: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=8aa6847a-63ba-49ec-32ec-b77a38800ac8@siemens.com \
--to=claudius.heine.ext@siemens.com \
--cc=asmirnov@ilbers.de \
--cc=isar-users@googlegroups.com \
--cc=johann.pfefferl@siemens.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