Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] pseudo: remaining issues...
Date: Tue, 22 Nov 2016 22:25:34 +0100	[thread overview]
Message-ID: <20161122212534.GA3529@free.fr> (raw)

Hello All,

We recently switched from using fakeroot to using pseudo to generate the
filesystem images.

After fixing the biggest fallouts from the conversion, we're still left
with a few users reporting remaining issues.

We're now starting to better understand what is going on, and it is
pretty messy...

Those issues seem to occur on second-and-subsequent (re)builds, never on
the first (full) build. They manifest themselves as incorrect acces
rights in the generated images, like (as reported by J?r?me), first line
is correct, second line is incorrect:

    rwxr-xr-x 0/0  4700 2016-11-22 16:57 ./usr/sbin/nologin
    rw------- 0/0  4700 2016-11-22 16:57 ./usr/sbin/nologin

Then J?r?me noticed that those files were the ones stripped during
target-finalize. Removing the call to strip fixed the issue for him.

What this means is that, by tweaking the content of target/ outside of
pseudo, we break its internal state that it saved in its DB.

Now, when pseudo reloades its DB and detects inconsistencies, it wil try
to repare it. Sometimes, it guesses correctly; sometimes, it gueses
wrong.

However, we don't really need the pseudo DB because we ensure setting
all acces rights when assembling the filesystem images; we don;t need to
remember anything.

Hence, we could very well get rid of the DB after exiting pseudo.

Except it still breaks one case.

/dev/console is created under pseudo and its {c,5,1} is tored in the DB.
When we remove the DB, a second run under pseudo will see a real file,
not a {c,5,1}. Then makedevs will whine that /dev/console already exist
as a real file and fail.


So, we now have two antagonist needs:

  - keep the "specialness" of some files so that makedevs does not break
    when creating /dev entries; 

  - get rid of the DB to avoid mis-match when pseudo rebuilds its
    internal state.


There is no way we can (easily) satisfy both.


One solution that would make it work in all cases would be:

  - do the target-finalize actions in a copy of target/
  - generate, filesystem images form that copy
  - trash the copy
  - trash pseudo DB

Another possibility would be to always do changes in target/ under
pseudo:
  - installing packages
  - taget-finalize
  - filesystem generation

Neither solution is trivial, especially so close to the release.


Alternatively, we can revert back to using fakeroot for this release, at
the expense of breaking (already previously broken) setups with SELinux
on the host.


Thoughts? Ideas?

(In Cc:, people already aware/working on the issue).

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

             reply	other threads:[~2016-11-22 21:25 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-22 21:25 Yann E. MORIN [this message]
2016-11-22 22:16 ` [Buildroot] pseudo: remaining issues Yann E. MORIN
2016-11-23  5:44   ` Gaël PORTAY
2016-11-22 23:02 ` Arnout Vandecappelle
2016-11-23  6:37   ` Gaël PORTAY
2016-11-23 10:10     ` Arnout Vandecappelle
2016-11-23 18:50       ` Yann E. MORIN
2016-11-23 18:46   ` Yann E. MORIN
2016-11-23  6:29 ` Gaël PORTAY
2016-11-23  8:35 ` Thomas Petazzoni
2016-11-23  8:47   ` Maxime Hadjinlian
2016-11-24 15:24   ` Waldemar Brodkorb
2016-11-26 23:25   ` Peter Korsgaard

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=20161122212534.GA3529@free.fr \
    --to=yann.morin.1998@free.fr \
    --cc=buildroot@busybox.net \
    /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