All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Seebach <peter.seebach@windriver.com>
To: <openembedded-core@lists.openembedded.org>
Subject: Toolchain library whitelisting: A first pass
Date: Wed, 25 Apr 2012 20:38:05 -0500	[thread overview]
Message-ID: <20120425203805.71113201@wrlaptop> (raw)

This is a followup from some chat in #yocto and elsewhere.  To make a
long story short, some of the commercial vendors (like Wind River) tend
to ship prebuilt binaries for glibc, and want to require these binaries
to be used as-is (unless the user has done something special and is
building libc).  It would be convenient for people providing
replacement toolchain layers to be able to catch attempts to build
something that will fail because there are no corresponding libc
binaries.

With prebuilt libraries, the library is not always built with the exact
same flags that everything else is, but it needs to be ABI-compatible
with them.  With that in mind, I coin the name "TUNEABI" to refer to
the descriptor for a prebuilt library.  This is basically like a
tuning, but it's special in that multiple tunings can refer back to it
as a thing they are based on or will work with.  So I define a couple
of values:

1.  TUNEABI_WHITELIST.  This is a space-separated list of tuneabi
values which are supported.  If this list does not exist, nothing
happens; the check is a no-op.
2.  TUNEABI_OVERRIDE.  If this value exists, it suppresses the check
even if TUNEABI_WHITELIST is set.  This is sort of a placeholder for
whatever people want to do about specifying a rebuild instead of using
prebuilts.
3.  TUNEABI_tune-foo.  This specifies the (space-separated list of)
tuneabis that can support the tuning foo.  If absent, the tuning name
is used.

Intended use:  Imagine that you are distributing a toolchain layer
which has only one ARM library, which is armv7 thumb2, you would
specify TUNEABI_WHITELIST = armv7at.  Then a build for armv7at would
work, but a build for armv6t would fail.  If you are using the
interwork feature, you might also specify TUNEABI_tune-armv7a =
armv7at; then armv7a builds would be allowed also.

The intent of this is that if you're providing a toolchain, and you
want to support a limited set of prebuilt libraries, this check should
be able to let you specify what you need without necessarily having to
replace all the existing tuning and configurations.  All you have to do
is provide TUNEABI_tune-foo settings for any tunings you know to work
with your libraries, and a TUNEABI_WHITELIST value, and the sanity
check should catch everything likely.

Thoughts, feedback?

-s
-- 
Listen, get this.  Nobody with a good compiler needs to be justified.



             reply	other threads:[~2012-04-26  1:48 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-26  1:38 Peter Seebach [this message]
2012-04-26 21:08 ` Toolchain library whitelisting: A first pass (preliminary patch/RFC) Peter Seebach
2012-04-26 22:01   ` Mark Hatle
2012-04-26 22:42     ` Peter Seebach
2012-04-27  5:15       ` Chris Larson

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=20120425203805.71113201@wrlaptop \
    --to=peter.seebach@windriver.com \
    --cc=openembedded-core@lists.openembedded.org \
    /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.