All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 9/9] core: finalise target in its own location
Date: Fri, 2 Oct 2015 09:46:33 +0200	[thread overview]
Message-ID: <20151002074632.GA3908@free.fr> (raw)
In-Reply-To: <20151001234400.0d18c041@free-electrons.com>

Thomas, All,

On 2015-10-01 23:44 +0200, Thomas Petazzoni spake thusly:
> On Wed, 30 Sep 2015 23:54:52 +0200, Yann E. MORIN wrote:
> > Currently, after all packages have been installed into target/ , we run
> > a sanitising pass called 'target-finalize' on that directory, to:
> >   - apply overlays
> >   - remove unnecessary files (man, .h, .a ...)
> >   - strip files
> > as well as a few other miscellanous cleanups.
> > 
> > This means that target/ no longer contains only package-installed files,
> > and that target-finalize might not be idempotent (i.e. sucessive runs of
> > target-finalize may yield different results in target/ ). We're trying
> > pretty hard that all the internal target-finalize hooks are idempotent,
> > whether they are from the core (e.g. installing glibc locales) or
> > provided by packages (e.g. cleaning up perl files).
> > 
> > However, that might not be the case for packages from br2-external for
> > example, or under complex situations where a combination of packages
> > does not yield an idempotent sequence (quoting Wikipedia: "a combination
> > of idempotent methods or subroutines is not necessrily idempotent"; see:
> > https://en.wikipedia.org/wiki/Idempotence#Examples ).
[--SNIP--]
> 
> To be honest, my initial reaction is: why? What is the benefit? It's
> additional complexity (not so much in the code), but in the user
> visible output directories.

Well, I would say that the user-visible target/ directory, the one we
are currently exposing, is still user-visible, and the only one we want
to expose to users. The new build/target-finalise/ directory introduced
here is not meant to be user-visible. If having that directory in build/
is considered to be user-visible, then I agree this is not that good; we
should really have this directory hidden to the user. It is an internal
step which the user should not meddle with.

> Having idem-potent post-build scripts seems like a good goal to
> achieve. Your only arguments are:
> 
>  - "this might not be the case for br2-external", but it doesn't
>    explain why

A trivial example of a non-idempotent target-finalise hook could be:

    define FOO_CREATE_MY_USER
        echo "user:x:1234:5678::/home/user:/bin/sh" >>$(TARGET_DIR)/etc/passwd
    endef
    TARGET_FINALIZE_HOOKS += FOO_CREATE_MY_USER

Yes, this is badly written, but we can't expect this kind of situation
won't happen in real life, especially with br2-external stuff which we
by design can not review. It has hapenned; it will happen again.

>  - "under complex situations where a combination of packages does not
>    yield an idempotent sequence", which doesn't come with a real-life
>    example of such a situation.

Indeed, I have no first-hand example. However, I really said "under
complex situations" just because if such a situation exists, it is
complex by nature and will be difficult to debug.

> So with the current explanation/motivation, I'm inclined to say no to
> this change. I'd be happy to revise my opinion if there are some clearer
> benefits to balance the drawbacks of the additional complexity.

Sure, the changes introduced here are not trivial, by a fair margin...

Thanks!

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:[~2015-10-02  7:46 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-30 21:54 [Buildroot] [PATCH 0/9] fs: cleanups and enhancements (branch yem/fs) Yann E. MORIN
2015-09-30 21:54 ` [Buildroot] [PATCH 1/9] core: sort packages and eliminate duplicates before building Yann E. MORIN
2015-10-01  6:19   ` Thomas Petazzoni
2015-10-01 16:32     ` Yann E. MORIN
2015-09-30 21:54 ` [Buildroot] [PATCH 2/9] linux: split overly-long dependency line for readability Yann E. MORIN
2015-09-30 21:54 ` [Buildroot] [PATCH 3/9] linux: meddle not in the affairs of filesystems, for you are tasty with bacon Yann E. MORIN
2015-10-01  6:20   ` Thomas Petazzoni
2015-10-01 16:41     ` Yann E. MORIN
2015-09-30 21:54 ` [Buildroot] [PATCH 4/9] fs/initramfs: cleanup and enhance comments Yann E. MORIN
2015-09-30 21:54 ` [Buildroot] [PATCH 5/9] fs/ext2: use a post-gen hook rather than a post-target rule Yann E. MORIN
2015-09-30 21:54 ` [Buildroot] [PATCH 6/9] fs/cpio: " Yann E. MORIN
2015-09-30 21:54 ` [Buildroot] [PATCH 7/9] fs/common: get rid of post-target rules Yann E. MORIN
2015-09-30 21:54 ` [Buildroot] [PATCH 8/9] fs/common: move actions common to all filesystems to their own rule Yann E. MORIN
2015-09-30 21:54 ` [Buildroot] [PATCH 9/9] core: finalise target in its own location Yann E. MORIN
2015-10-01 21:44   ` Thomas Petazzoni
2015-10-02  7:46     ` Yann E. MORIN [this message]
2015-10-02  8:21       ` Thomas Petazzoni

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=20151002074632.GA3908@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.