From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 0/8 RFC] core: install foo-config scripts early in the PATH (branch yem/foo-config-in-PATH)
Date: Mon, 21 Dec 2015 23:55:18 +0100 [thread overview]
Message-ID: <20151221225518.GI3454@free.fr> (raw)
In-Reply-To: <20151221233458.32befcc2@free-electrons.com>
Thomas, All,
On 2015-12-21 23:34 +0100, Thomas Petazzoni spake thusly:
> On Mon, 21 Dec 2015 23:30:30 +0100, Yann E. MORIN wrote:
> > And how do we handle them today? If we don't do anything about it, then
> > this series would indeed not solve those, but it would not break it
> > either, since it would already be broken today.
> >
> > Unless we do have code to manually install them in $(HOST_DIR)/usr/bin ?
>
> What? No, we are just installing them in $(STAGING_DIR), like all
> libraries. You can look at package/rtai/rtai.mk for an example.
That one is interesting, indeed. We "fix" rtai-config in-place in
staging, but then we never pass $(STAGING_DIR)/usr/bin/rtai-config to
any variable of any package, which means that any consumer of
rtai-config, if any, is called with $(STAGING_DIR)/usr/bin in its PATH.
I think this is an abomination. There are three cases there:
- cross-compiling for a different architecture with shared libraries:
this is not really a problem, binaries in there will not work; yet,
this might still cause problems, because there might be binaries in
there that would shadow those of the host, and that would be a
problem.
- cross-compiling for the same architecture: binaries in staging would
probably work if the host system is recent enough that the C library
id "compatible" (same or newer glibc on the host) or if doing a
static build.
- cross-compiling with static libs: damn, that one would be awfully
trricky to debug. For example, my machine is setup to run qemu-user
for some architectures, so I'd totaly be able to run ARM binaries on
my build machine. Fortunately, this is a rare-enough case that we
were not caught by it yet...
And we indeed do such abonminations. For example, the libhid stuff that
I already fixed in my series.
> > > Also, this solution doesn't solve the (admittedly unlikely) case of a
> > > package calling /usr/bin/<foo>-config directly.
> >
> > Indeed. But it is already broken today, and the series does not break it
> > any more.
>
> It is not broken today. Such special *-config scripts get naturally
> installed in $(STAGING_DIR), they might be fixed up by a patch or some
> custom hook. And then on the consumer side, we pass some environment
> variable or other trick to get the consumer build system to use this
> specific -config script rather than the one in the PATH. Nothing
> special.
Then those patch-or-hook fixups should be complemented by a post-install
hook that also installs the -config script in the newly-introduced
FOO_CONFIG_DIR.
Again, nothing that this series would *break*; existing "workarounds"
would continue to work as-is. It's only a new opportunity to cleanup
the mess, but will need much more pathces later on.
Ah, that's probably what I forgot to write in my cover later: this
8-patch series only introduces the "infra" and does not actually fix the
packages, or undo our workarounds, or removes our patches, of add new
fixes. Hmm. Well, actually I did:
When/if the topic is accepted (and the series is fixed after the
reviews), we can then (un)fix / (un)patch packages in follow-up
patches.
Or maybe I completely missed the point...
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. |
'------------------------------^-------^------------------^--------------------'
next prev parent reply other threads:[~2015-12-21 22:55 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-21 15:56 [Buildroot] [PATCH 0/8 RFC] core: install foo-config scripts early in the PATH (branch yem/foo-config-in-PATH) Yann E. MORIN
2015-12-21 15:56 ` [Buildroot] [PATCH 1/8 RFC] core: split long line of directories Yann E. MORIN
2015-12-21 15:56 ` [Buildroot] [PATCH 2/8 RFC] core/pkg-generic: use a $(foreach) loop to fix foo-config scripts Yann E. MORIN
2015-12-21 15:56 ` [Buildroot] [PATCH 3/8 RFC] core/pkg-generic: install foo-config scripts in their own dir Yann E. MORIN
2015-12-21 18:51 ` Baruch Siach
2015-12-21 20:50 ` Yann E. MORIN
2015-12-21 15:56 ` [Buildroot] [PATCH 4/8 RFC] core: re-instate different target and host PATHs Yann E. MORIN
2015-12-21 15:56 ` [Buildroot] [PATCH 5/8 RFC] fs: use HOST_PATH Yann E. MORIN
2015-12-21 15:56 ` [Buildroot] [PATCH 6/8 RFC] packages: " Yann E. MORIN
2015-12-21 15:56 ` [Buildroot] [PATCH 7/8 RFC] packages: use TARGET_PATH Yann E. MORIN
2015-12-21 18:44 ` Baruch Siach
2015-12-21 20:46 ` Yann E. MORIN
2015-12-21 15:56 ` [Buildroot] [PATCH 8/8 RFC] package/libhid: no need for custom PATH Yann E. MORIN
2015-12-21 22:20 ` [Buildroot] [PATCH 0/8 RFC] core: install foo-config scripts early in the PATH (branch yem/foo-config-in-PATH) Thomas Petazzoni
2015-12-21 22:30 ` Yann E. MORIN
2015-12-21 22:34 ` Thomas Petazzoni
2015-12-21 22:55 ` Yann E. MORIN [this message]
2015-12-22 10:53 ` Thomas Petazzoni
2015-12-22 11:06 ` Yann E. MORIN
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=20151221225518.GI3454@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