Patchwork [2/4] recipes: add x11 to required DISTRO_FEATURES

login
register
mail settings
Submitter Martin Jansa
Date July 24, 2014, 1:42 p.m.
Message ID <1406209379-1662-2-git-send-email-Martin.Jansa@gmail.com>
Download mbox | patch
Permalink /patch/76601/
State New
Headers show

Comments

Martin Jansa - July 24, 2014, 1:42 p.m.
* it's not complete, but recipes depending on virtual/libx11 are easiest
  to spot, I've long list of PNBLACKLIST for all recipes which cannot
  be built in distro without x11 in DISTRO_FEATURES

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
 meta/recipes-gnome/gnome/gnome-desktop.inc                           | 5 ++++-
 meta/recipes-graphics/eglinfo/eglinfo-x11_1.0.bb                     | 4 ++++
 meta/recipes-graphics/fstests/fstests_git.bb                         | 5 ++++-
 meta/recipes-graphics/glew/glew_1.10.0.bb                            | 4 +++-
 meta/recipes-graphics/libmatchbox/libmatchbox_1.11.bb                | 5 ++++-
 .../recipes-graphics/libxsettings-client/libxsettings-client_0.10.bb | 5 ++++-
 meta/recipes-graphics/matchbox-wm/matchbox-wm_1.2.bb                 | 5 ++++-
 meta/recipes-graphics/matchbox-wm/matchbox-wm_git.bb                 | 5 ++++-
 meta/recipes-graphics/piglit/piglit_git.bb                           | 5 ++++-
 meta/recipes-graphics/pong-clock/pong-clock_1.0.bb                   | 4 ++++
 .../startup-notification/startup-notification_0.12.bb                | 5 ++++-
 meta/recipes-graphics/x11vnc/x11vnc_0.9.13.bb                        | 5 ++++-
 meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb     | 5 ++++-
 13 files changed, 51 insertions(+), 11 deletions(-)
Ross Burton - July 24, 2014, 1:52 p.m.
On 24 July 2014 14:42, Martin Jansa <martin.jansa@gmail.com> wrote:
> +REQUIRED_DISTRO_FEATURES = "x11"

Now I'm wondering why this is the solution.

If you attempt to build e.g. gnome-desktop explicitly without the x11
distro feature you understandably get an error message, because
gnome-desktop depends on libx11 which sanity checks the distro
features.  This seems correct.

Presumably you're problem is that you're running world builds and
they're producing errors on gnome-desktop because they can't satisfy a
dependency on libx11.  It seems that bubbling up the
REQUIRED_DISTRO_FEATURES tests isn't the right thing to do here - why
can't SkipPackage be handled specially, so if you do bitbake -k world
and libx11 emits SkipPackage, anything that has unsatisfiable
dependencies because of this is also skipped?

Ross
Martin Jansa - July 24, 2014, 3:22 p.m.
On Thu, Jul 24, 2014 at 02:52:45PM +0100, Burton, Ross wrote:
> On 24 July 2014 14:42, Martin Jansa <martin.jansa@gmail.com> wrote:
> > +REQUIRED_DISTRO_FEATURES = "x11"
> 
> Now I'm wondering why this is the solution.
> 
> If you attempt to build e.g. gnome-desktop explicitly without the x11
> distro feature you understandably get an error message, because
> gnome-desktop depends on libx11 which sanity checks the distro
> features.  This seems correct.
> 
> Presumably you're problem is that you're running world builds and
> they're producing errors on gnome-desktop because they can't satisfy a
> dependency on libx11.  It seems that bubbling up the
> REQUIRED_DISTRO_FEATURES tests isn't the right thing to do here - why
> can't SkipPackage be handled specially, so if you do bitbake -k world
> and libx11 emits SkipPackage, anything that has unsatisfiable
> dependencies because of this is also skipped?

We discussed this many months ago and IIRC the conclusion was that user
should explicitly say that he wants to skip the recipes which depend on
something skipped (so that he is aware of what he is missing).

At that time there wasn't REQUIRED_DISTRO_FEATURES support, so I've
created huge list of PNBLACKLISTs to blacklist everything not available
in our setup - so I can do world builds without ERRORs at the beginning.

REQUIRED_DISTRO_FEATURES seems to me like reasonable compromise, that's
why I've sent this patchset to replace small part of my huge blacklist.

This is the list:
https://github.com/openwebos/meta-webos/blob/master/conf/distro/include/webos-recipe-blacklist-world.inc

If someone has time to improve SkipPackage and we really want to skip
all depending packages, I would be glad to test such patch (because it
allows to easily drop all those blacklists for "depends-on-broken"
components)

Regards,
Richard Purdie - July 28, 2014, 1:18 p.m.
On Thu, 2014-07-24 at 17:22 +0200, Martin Jansa wrote:
> On Thu, Jul 24, 2014 at 02:52:45PM +0100, Burton, Ross wrote:
> > On 24 July 2014 14:42, Martin Jansa <martin.jansa@gmail.com> wrote:
> > > +REQUIRED_DISTRO_FEATURES = "x11"
> > 
> > Now I'm wondering why this is the solution.
> > 
> > If you attempt to build e.g. gnome-desktop explicitly without the x11
> > distro feature you understandably get an error message, because
> > gnome-desktop depends on libx11 which sanity checks the distro
> > features.  This seems correct.
> > 
> > Presumably you're problem is that you're running world builds and
> > they're producing errors on gnome-desktop because they can't satisfy a
> > dependency on libx11.  It seems that bubbling up the
> > REQUIRED_DISTRO_FEATURES tests isn't the right thing to do here - why
> > can't SkipPackage be handled specially, so if you do bitbake -k world
> > and libx11 emits SkipPackage, anything that has unsatisfiable
> > dependencies because of this is also skipped?
> 
> We discussed this many months ago and IIRC the conclusion was that user
> should explicitly say that he wants to skip the recipes which depend on
> something skipped (so that he is aware of what he is missing).
> 
> At that time there wasn't REQUIRED_DISTRO_FEATURES support, so I've
> created huge list of PNBLACKLISTs to blacklist everything not available
> in our setup - so I can do world builds without ERRORs at the beginning.
> 
> REQUIRED_DISTRO_FEATURES seems to me like reasonable compromise, that's
> why I've sent this patchset to replace small part of my huge blacklist.
> 
> This is the list:
> https://github.com/openwebos/meta-webos/blob/master/conf/distro/include/webos-recipe-blacklist-world.inc
> 
> If someone has time to improve SkipPackage and we really want to skip
> all depending packages, I would be glad to test such patch (because it
> allows to easily drop all those blacklists for "depends-on-broken"
> components)

The question here is whether we want a system which calculates what it
thinks is right or that we declare it.

The risk is that if SkipPackage (now known as SkipRecipe) were to
automatically "spread", you could in theory break the toolchain, have
nothing buildable and "bitbake world" would return success.

Effectively the -k option to bitbake already does the SkipPackage
"spread" idea since bitbake just removes dependencies until it works. If
does that in a fairly verbose way but it does so deliberately so you can
see what is going on.

The alternative is to declare what a given recipe supports and then we
can know whether it should be skipped or not under a given circumstance.

Personally, I'm leaning towards a more declarative approach where we
specify what should and shouldn't be expected to work. I'm open to
discussion on it though...

Cheers,

Richard
Martin Jansa - Aug. 6, 2014, 11:48 a.m.
On Mon, Jul 28, 2014 at 02:18:30PM +0100, Richard Purdie wrote:
> On Thu, 2014-07-24 at 17:22 +0200, Martin Jansa wrote:
> > On Thu, Jul 24, 2014 at 02:52:45PM +0100, Burton, Ross wrote:
> > > On 24 July 2014 14:42, Martin Jansa <martin.jansa@gmail.com> wrote:
> > > > +REQUIRED_DISTRO_FEATURES = "x11"
> > > 
> > > Now I'm wondering why this is the solution.
> > > 
> > > If you attempt to build e.g. gnome-desktop explicitly without the x11
> > > distro feature you understandably get an error message, because
> > > gnome-desktop depends on libx11 which sanity checks the distro
> > > features.  This seems correct.
> > > 
> > > Presumably you're problem is that you're running world builds and
> > > they're producing errors on gnome-desktop because they can't satisfy a
> > > dependency on libx11.  It seems that bubbling up the
> > > REQUIRED_DISTRO_FEATURES tests isn't the right thing to do here - why
> > > can't SkipPackage be handled specially, so if you do bitbake -k world
> > > and libx11 emits SkipPackage, anything that has unsatisfiable
> > > dependencies because of this is also skipped?
> > 
> > We discussed this many months ago and IIRC the conclusion was that user
> > should explicitly say that he wants to skip the recipes which depend on
> > something skipped (so that he is aware of what he is missing).
> > 
> > At that time there wasn't REQUIRED_DISTRO_FEATURES support, so I've
> > created huge list of PNBLACKLISTs to blacklist everything not available
> > in our setup - so I can do world builds without ERRORs at the beginning.
> > 
> > REQUIRED_DISTRO_FEATURES seems to me like reasonable compromise, that's
> > why I've sent this patchset to replace small part of my huge blacklist.
> > 
> > This is the list:
> > https://github.com/openwebos/meta-webos/blob/master/conf/distro/include/webos-recipe-blacklist-world.inc
> > 
> > If someone has time to improve SkipPackage and we really want to skip
> > all depending packages, I would be glad to test such patch (because it
> > allows to easily drop all those blacklists for "depends-on-broken"
> > components)
> 
> The question here is whether we want a system which calculates what it
> thinks is right or that we declare it.
> 
> The risk is that if SkipPackage (now known as SkipRecipe) were to
> automatically "spread", you could in theory break the toolchain, have
> nothing buildable and "bitbake world" would return success.
> 
> Effectively the -k option to bitbake already does the SkipPackage
> "spread" idea since bitbake just removes dependencies until it works. If
> does that in a fairly verbose way but it does so deliberately so you can
> see what is going on.
> 
> The alternative is to declare what a given recipe supports and then we
> can know whether it should be skipped or not under a given circumstance.
> 
> Personally, I'm leaning towards a more declarative approach where we
> specify what should and shouldn't be expected to work. I'm open to
> discussion on it though...

I agree with more declarative approach.

I don't mind maintaining PNBLACKLIST e.g. for components depending on
something we decided to blacklist ourselves in distro config.

But for components like this, where we really know that they won't work
without X11 in DISTRO_FEATURES, I think bitbake should skip them
automatically (thanks to REQUIRED_DISTRO_FEATURES). It already
automatically skips all recipes in xorg-lib directory, why it shouldn't
skip other recipes living somewhere else?

> Cheers,
> 
> Richard
> 
> 
> 
>
Martin Jansa - Oct. 30, 2014, 1:20 p.m.
On Wed, Aug 06, 2014 at 01:48:31PM +0200, Martin Jansa wrote:
> On Mon, Jul 28, 2014 at 02:18:30PM +0100, Richard Purdie wrote:
> > On Thu, 2014-07-24 at 17:22 +0200, Martin Jansa wrote:
> > > On Thu, Jul 24, 2014 at 02:52:45PM +0100, Burton, Ross wrote:
> > > > On 24 July 2014 14:42, Martin Jansa <martin.jansa@gmail.com> wrote:
> > > > > +REQUIRED_DISTRO_FEATURES = "x11"
> > > > 
> > > > Now I'm wondering why this is the solution.
> > > > 
> > > > If you attempt to build e.g. gnome-desktop explicitly without the x11
> > > > distro feature you understandably get an error message, because
> > > > gnome-desktop depends on libx11 which sanity checks the distro
> > > > features.  This seems correct.
> > > > 
> > > > Presumably you're problem is that you're running world builds and
> > > > they're producing errors on gnome-desktop because they can't satisfy a
> > > > dependency on libx11.  It seems that bubbling up the
> > > > REQUIRED_DISTRO_FEATURES tests isn't the right thing to do here - why
> > > > can't SkipPackage be handled specially, so if you do bitbake -k world
> > > > and libx11 emits SkipPackage, anything that has unsatisfiable
> > > > dependencies because of this is also skipped?
> > > 
> > > We discussed this many months ago and IIRC the conclusion was that user
> > > should explicitly say that he wants to skip the recipes which depend on
> > > something skipped (so that he is aware of what he is missing).
> > > 
> > > At that time there wasn't REQUIRED_DISTRO_FEATURES support, so I've
> > > created huge list of PNBLACKLISTs to blacklist everything not available
> > > in our setup - so I can do world builds without ERRORs at the beginning.
> > > 
> > > REQUIRED_DISTRO_FEATURES seems to me like reasonable compromise, that's
> > > why I've sent this patchset to replace small part of my huge blacklist.
> > > 
> > > This is the list:
> > > https://github.com/openwebos/meta-webos/blob/master/conf/distro/include/webos-recipe-blacklist-world.inc
> > > 
> > > If someone has time to improve SkipPackage and we really want to skip
> > > all depending packages, I would be glad to test such patch (because it
> > > allows to easily drop all those blacklists for "depends-on-broken"
> > > components)
> > 
> > The question here is whether we want a system which calculates what it
> > thinks is right or that we declare it.
> > 
> > The risk is that if SkipPackage (now known as SkipRecipe) were to
> > automatically "spread", you could in theory break the toolchain, have
> > nothing buildable and "bitbake world" would return success.
> > 
> > Effectively the -k option to bitbake already does the SkipPackage
> > "spread" idea since bitbake just removes dependencies until it works. If
> > does that in a fairly verbose way but it does so deliberately so you can
> > see what is going on.
> > 
> > The alternative is to declare what a given recipe supports and then we
> > can know whether it should be skipped or not under a given circumstance.
> > 
> > Personally, I'm leaning towards a more declarative approach where we
> > specify what should and shouldn't be expected to work. I'm open to
> > discussion on it though...
> 
> I agree with more declarative approach.
> 
> I don't mind maintaining PNBLACKLIST e.g. for components depending on
> something we decided to blacklist ourselves in distro config.
> 
> But for components like this, where we really know that they won't work
> without X11 in DISTRO_FEATURES, I think bitbake should skip them
> automatically (thanks to REQUIRED_DISTRO_FEATURES). It already
> automatically skips all recipes in xorg-lib directory, why it shouldn't
> skip other recipes living somewhere else?

Can we make some decision now?

> > Cheers,
> > 
> > Richard
> > 
> > 
> > 
> > 
> 
> -- 
> Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com
Richard Purdie - Oct. 30, 2014, 1:28 p.m.
On Thu, 2014-10-30 at 14:20 +0100, Martin Jansa wrote:
> On Wed, Aug 06, 2014 at 01:48:31PM +0200, Martin Jansa wrote:
> > On Mon, Jul 28, 2014 at 02:18:30PM +0100, Richard Purdie wrote:
> > > On Thu, 2014-07-24 at 17:22 +0200, Martin Jansa wrote:
> > > > On Thu, Jul 24, 2014 at 02:52:45PM +0100, Burton, Ross wrote:
> > > > > On 24 July 2014 14:42, Martin Jansa <martin.jansa@gmail.com> wrote:
> > > > > > +REQUIRED_DISTRO_FEATURES = "x11"
> > > > > 
> > > > > Now I'm wondering why this is the solution.
> > > > > 
> > > > > If you attempt to build e.g. gnome-desktop explicitly without the x11
> > > > > distro feature you understandably get an error message, because
> > > > > gnome-desktop depends on libx11 which sanity checks the distro
> > > > > features.  This seems correct.
> > > > > 
> > > > > Presumably you're problem is that you're running world builds and
> > > > > they're producing errors on gnome-desktop because they can't satisfy a
> > > > > dependency on libx11.  It seems that bubbling up the
> > > > > REQUIRED_DISTRO_FEATURES tests isn't the right thing to do here - why
> > > > > can't SkipPackage be handled specially, so if you do bitbake -k world
> > > > > and libx11 emits SkipPackage, anything that has unsatisfiable
> > > > > dependencies because of this is also skipped?
> > > > 
> > > > We discussed this many months ago and IIRC the conclusion was that user
> > > > should explicitly say that he wants to skip the recipes which depend on
> > > > something skipped (so that he is aware of what he is missing).
> > > > 
> > > > At that time there wasn't REQUIRED_DISTRO_FEATURES support, so I've
> > > > created huge list of PNBLACKLISTs to blacklist everything not available
> > > > in our setup - so I can do world builds without ERRORs at the beginning.
> > > > 
> > > > REQUIRED_DISTRO_FEATURES seems to me like reasonable compromise, that's
> > > > why I've sent this patchset to replace small part of my huge blacklist.
> > > > 
> > > > This is the list:
> > > > https://github.com/openwebos/meta-webos/blob/master/conf/distro/include/webos-recipe-blacklist-world.inc
> > > > 
> > > > If someone has time to improve SkipPackage and we really want to skip
> > > > all depending packages, I would be glad to test such patch (because it
> > > > allows to easily drop all those blacklists for "depends-on-broken"
> > > > components)
> > > 
> > > The question here is whether we want a system which calculates what it
> > > thinks is right or that we declare it.
> > > 
> > > The risk is that if SkipPackage (now known as SkipRecipe) were to
> > > automatically "spread", you could in theory break the toolchain, have
> > > nothing buildable and "bitbake world" would return success.
> > > 
> > > Effectively the -k option to bitbake already does the SkipPackage
> > > "spread" idea since bitbake just removes dependencies until it works. If
> > > does that in a fairly verbose way but it does so deliberately so you can
> > > see what is going on.
> > > 
> > > The alternative is to declare what a given recipe supports and then we
> > > can know whether it should be skipped or not under a given circumstance.
> > > 
> > > Personally, I'm leaning towards a more declarative approach where we
> > > specify what should and shouldn't be expected to work. I'm open to
> > > discussion on it though...
> > 
> > I agree with more declarative approach.
> > 
> > I don't mind maintaining PNBLACKLIST e.g. for components depending on
> > something we decided to blacklist ourselves in distro config.
> > 
> > But for components like this, where we really know that they won't work
> > without X11 in DISTRO_FEATURES, I think bitbake should skip them
> > automatically (thanks to REQUIRED_DISTRO_FEATURES). It already
> > automatically skips all recipes in xorg-lib directory, why it shouldn't
> > skip other recipes living somewhere else?
> 
> Can we make some decision now?

Well, I think there was an implied outcome of this:

a) We don't want to automatically do things, we want something
declarative

b) We therefore need to go and add REQUIRED_DISTRO_FEATURES = "x11" to
some further places.

As such, I'll take patches.

Was that what other people understood?

Cheers,

Richard
Koen Kooi - Oct. 30, 2014, 2:18 p.m.
Op 30 okt. 2014, om 14:28 heeft Richard Purdie <richard.purdie@linuxfoundation.org> het volgende geschreven:

> On Thu, 2014-10-30 at 14:20 +0100, Martin Jansa wrote:
>> On Wed, Aug 06, 2014 at 01:48:31PM +0200, Martin Jansa wrote:
>>> On Mon, Jul 28, 2014 at 02:18:30PM +0100, Richard Purdie wrote:
>>>> On Thu, 2014-07-24 at 17:22 +0200, Martin Jansa wrote:
>>>>> On Thu, Jul 24, 2014 at 02:52:45PM +0100, Burton, Ross wrote:
>>>>>> On 24 July 2014 14:42, Martin Jansa <martin.jansa@gmail.com> wrote:
>>>>>>> +REQUIRED_DISTRO_FEATURES = "x11"
>>>>>> 
>>>>>> Now I'm wondering why this is the solution.
>>>>>> 
>>>>>> If you attempt to build e.g. gnome-desktop explicitly without the x11
>>>>>> distro feature you understandably get an error message, because
>>>>>> gnome-desktop depends on libx11 which sanity checks the distro
>>>>>> features.  This seems correct.
>>>>>> 
>>>>>> Presumably you're problem is that you're running world builds and
>>>>>> they're producing errors on gnome-desktop because they can't satisfy a
>>>>>> dependency on libx11.  It seems that bubbling up the
>>>>>> REQUIRED_DISTRO_FEATURES tests isn't the right thing to do here - why
>>>>>> can't SkipPackage be handled specially, so if you do bitbake -k world
>>>>>> and libx11 emits SkipPackage, anything that has unsatisfiable
>>>>>> dependencies because of this is also skipped?
>>>>> 
>>>>> We discussed this many months ago and IIRC the conclusion was that user
>>>>> should explicitly say that he wants to skip the recipes which depend on
>>>>> something skipped (so that he is aware of what he is missing).
>>>>> 
>>>>> At that time there wasn't REQUIRED_DISTRO_FEATURES support, so I've
>>>>> created huge list of PNBLACKLISTs to blacklist everything not available
>>>>> in our setup - so I can do world builds without ERRORs at the beginning.
>>>>> 
>>>>> REQUIRED_DISTRO_FEATURES seems to me like reasonable compromise, that's
>>>>> why I've sent this patchset to replace small part of my huge blacklist.
>>>>> 
>>>>> This is the list:
>>>>> https://github.com/openwebos/meta-webos/blob/master/conf/distro/include/webos-recipe-blacklist-world.inc
>>>>> 
>>>>> If someone has time to improve SkipPackage and we really want to skip
>>>>> all depending packages, I would be glad to test such patch (because it
>>>>> allows to easily drop all those blacklists for "depends-on-broken"
>>>>> components)
>>>> 
>>>> The question here is whether we want a system which calculates what it
>>>> thinks is right or that we declare it.
>>>> 
>>>> The risk is that if SkipPackage (now known as SkipRecipe) were to
>>>> automatically "spread", you could in theory break the toolchain, have
>>>> nothing buildable and "bitbake world" would return success.
>>>> 
>>>> Effectively the -k option to bitbake already does the SkipPackage
>>>> "spread" idea since bitbake just removes dependencies until it works. If
>>>> does that in a fairly verbose way but it does so deliberately so you can
>>>> see what is going on.
>>>> 
>>>> The alternative is to declare what a given recipe supports and then we
>>>> can know whether it should be skipped or not under a given circumstance.
>>>> 
>>>> Personally, I'm leaning towards a more declarative approach where we
>>>> specify what should and shouldn't be expected to work. I'm open to
>>>> discussion on it though...
>>> 
>>> I agree with more declarative approach.
>>> 
>>> I don't mind maintaining PNBLACKLIST e.g. for components depending on
>>> something we decided to blacklist ourselves in distro config.
>>> 
>>> But for components like this, where we really know that they won't work
>>> without X11 in DISTRO_FEATURES, I think bitbake should skip them
>>> automatically (thanks to REQUIRED_DISTRO_FEATURES). It already
>>> automatically skips all recipes in xorg-lib directory, why it shouldn't
>>> skip other recipes living somewhere else?
>> 
>> Can we make some decision now?
> 
> Well, I think there was an implied outcome of this:
> 
> a) We don't want to automatically do things, we want something
> declarative
> 
> b) We therefore need to go and add REQUIRED_DISTRO_FEATURES = "x11" to
> some further places.
> 
> As such, I'll take patches.
> 
> Was that what other people understood?

That's how I read it and FWIW, I agree.

regards,

Koen

Patch

diff --git a/meta/recipes-gnome/gnome/gnome-desktop.inc b/meta/recipes-gnome/gnome/gnome-desktop.inc
index 3853022..4aa664f 100644
--- a/meta/recipes-gnome/gnome/gnome-desktop.inc
+++ b/meta/recipes-gnome/gnome/gnome-desktop.inc
@@ -3,6 +3,9 @@  SECTION = "x11/gnome"
 LICENSE = "GPLv2 & LGPLv2"
 DEPENDS = "gconf libxrandr virtual/libx11 gtk+ glib-2.0 gnome-doc-utils startup-notification"
 
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
 EXTRA_OECONF = "--disable-scrollkeeper --disable-desktop-docs"
 
 do_configure_prepend () {
@@ -13,7 +16,7 @@  FILES_${PN} += "${datadir}/gnome-about ${datadir}/libgnome-desktop/pnp.ids"
 
 PR = "r6"
 
-inherit gnomebase
+inherit gnomebase distro_features_check
 
 do_install_append () {
 	sed -i -e's,${STAGING_BINDIR_NATIVE},${bindir},g' ${D}${bindir}/gnome-about
diff --git a/meta/recipes-graphics/eglinfo/eglinfo-x11_1.0.bb b/meta/recipes-graphics/eglinfo/eglinfo-x11_1.0.bb
index 18fc893..3427fdf 100644
--- a/meta/recipes-graphics/eglinfo/eglinfo-x11_1.0.bb
+++ b/meta/recipes-graphics/eglinfo/eglinfo-x11_1.0.bb
@@ -5,4 +5,8 @@  include eglinfo.inc
 
 DEPENDS += "virtual/libx11"
 
+inherit distro_features_check
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
 SUMMARY += "(X11 version)"
diff --git a/meta/recipes-graphics/fstests/fstests_git.bb b/meta/recipes-graphics/fstests/fstests_git.bb
index 57ff9f6..5da7986 100644
--- a/meta/recipes-graphics/fstests/fstests_git.bb
+++ b/meta/recipes-graphics/fstests/fstests_git.bb
@@ -4,6 +4,9 @@  SECTION = "devel"
 LICENSE = "Zlib"
 DEPENDS = "pango libxext libxft virtual/libx11 gtk+"
 
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
 SRCREV = "e5939ff608b95cdd4d0ab0e1935781ab9a276ac0"
 PV = "0.1+git${SRCPV}"
 
@@ -13,4 +16,4 @@  LIC_FILES_CHKSUM = "file://test-pango-gdk.c;endline=24;md5=1ee74ec851ecda57eb7ac
 
 S = "${WORKDIR}/git/tests"
 
-inherit autotools pkgconfig
+inherit autotools pkgconfig distro_features_check
diff --git a/meta/recipes-graphics/glew/glew_1.10.0.bb b/meta/recipes-graphics/glew/glew_1.10.0.bb
index 94f1bc1..4470f99 100644
--- a/meta/recipes-graphics/glew/glew_1.10.0.bb
+++ b/meta/recipes-graphics/glew/glew_1.10.0.bb
@@ -8,6 +8,8 @@  LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=2ac251558de685c6b9478d89be3149c2"
 
 DEPENDS = "virtual/libx11 virtual/libgl libglu libxext libxi libxmu"
 
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/project/glew/glew/${PV}/glew-${PV}.tgz \
            file://autotools.patch \
@@ -18,4 +20,4 @@  SRC_URI = "${SOURCEFORGE_MIRROR}/project/glew/glew/${PV}/glew-${PV}.tgz \
 SRC_URI[md5sum] = "2f09e5e6cb1b9f3611bcac79bc9c2d5d"
 SRC_URI[sha256sum] = "99c41320b63f6860869b5fb9af9a1854b15582796c64ee3dfd7096dc0c89f307"
 
-inherit autotools lib_package pkgconfig
+inherit autotools lib_package pkgconfig distro_features_check
diff --git a/meta/recipes-graphics/libmatchbox/libmatchbox_1.11.bb b/meta/recipes-graphics/libmatchbox/libmatchbox_1.11.bb
index 4acac39..f688b4e 100644
--- a/meta/recipes-graphics/libmatchbox/libmatchbox_1.11.bb
+++ b/meta/recipes-graphics/libmatchbox/libmatchbox_1.11.bb
@@ -10,13 +10,16 @@  LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34 \
 
 DEPENDS = "virtual/libx11 libxext"
 
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
 SRC_URI = "http://downloads.yoctoproject.org/releases/matchbox/${BPN}/${PV}/${BPN}-${PV}.tar.bz2 \
            file://libpng.patch"
 
 SRC_URI[md5sum] = "fc6cc807f55a3e7c752d8013176875d7"
 SRC_URI[sha256sum] = "254cab52e304a3512c8df4be59d690cf3921bbb68a28ede7fe26b93534217b53"
 
-inherit autotools pkgconfig
+inherit autotools pkgconfig distro_features_check
 
 PACKAGECONFIG ??= "jpeg png xft xsettings"
 PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg,jpeg"
diff --git a/meta/recipes-graphics/libxsettings-client/libxsettings-client_0.10.bb b/meta/recipes-graphics/libxsettings-client/libxsettings-client_0.10.bb
index d7a8030..764eb95 100644
--- a/meta/recipes-graphics/libxsettings-client/libxsettings-client_0.10.bb
+++ b/meta/recipes-graphics/libxsettings-client/libxsettings-client_0.10.bb
@@ -12,6 +12,9 @@  LIC_FILES_CHKSUM = "file://COPYING;md5=7cfac9d2d4dc3694cc7eb605cf32a69b \
                     file://xsettings-common.h;endline=22;md5=7cfac9d2d4dc3694cc7eb605cf32a69b"
 DEPENDS = "virtual/libx11"
 
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
 PR = "r5"
 
 headers = "xsettings-common.h xsettings-client.h"
@@ -28,7 +31,7 @@  SRC_URI[sha256sum] = "f274a4bc969ae192994a856b7f786c6fce96bae77f96c1c2b71dd97599
 
 S = "${WORKDIR}/Xsettings-client-0.10"
 
-inherit autotools gettext
+inherit autotools gettext distro_features_check
 
 do_configure_prepend() {
     # This package doesn't ship with its own COPYING file and
diff --git a/meta/recipes-graphics/matchbox-wm/matchbox-wm_1.2.bb b/meta/recipes-graphics/matchbox-wm/matchbox-wm_1.2.bb
index 8ee42c3..662f85b 100644
--- a/meta/recipes-graphics/matchbox-wm/matchbox-wm_1.2.bb
+++ b/meta/recipes-graphics/matchbox-wm/matchbox-wm_1.2.bb
@@ -4,6 +4,9 @@  LICENSE = "GPLv2.0+"
 DEPENDS = "libmatchbox virtual/libx11 libxext libxcomposite libxfixes libxcursor xdamage libxrender startup-notification expat"
 PR = "r5"
 
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
 SRC_URI = "http://downloads.yoctoproject.org/releases/matchbox/matchbox-window-manager/${PV}/matchbox-window-manager-${PV}.tar.bz2 \
            file://configure_fix.patch \
            file://kbdconfig \
@@ -14,7 +17,7 @@  SRC_URI[sha256sum] = "81a23a4af797cf350759fd5ac738797015a66dd5dba2f3d9f3c6908506
 
 S = "${WORKDIR}/matchbox-window-manager-${PV}"
 
-inherit autotools pkgconfig
+inherit autotools pkgconfig distro_features_check
 
 FILES_${PN} = "${bindir}/* \
 	       ${datadir}/matchbox \
diff --git a/meta/recipes-graphics/matchbox-wm/matchbox-wm_git.bb b/meta/recipes-graphics/matchbox-wm/matchbox-wm_git.bb
index 154b967..5512d7e 100644
--- a/meta/recipes-graphics/matchbox-wm/matchbox-wm_git.bb
+++ b/meta/recipes-graphics/matchbox-wm/matchbox-wm_git.bb
@@ -10,6 +10,9 @@  LIC_FILES_CHKSUM = "file://src/wm.h;endline=21;md5=a7e844465edbcf79c282369f93caa
 SECTION = "x11/wm"
 DEPENDS = "libmatchbox virtual/libx11 libxext libxrender startup-notification expat gconf libxcursor libxfixes"
 
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
 SRCREV = "29544f0e61cc281fc60061443a537271e1081b78"
 PV = "1.2+git${SRCPV}"
 
@@ -18,7 +21,7 @@  SRC_URI = "git://git.yoctoproject.org/matchbox-window-manager \
 
 S = "${WORKDIR}/git"
 
-inherit autotools pkgconfig
+inherit autotools pkgconfig distro_features_check
 
 FILES_${PN} = "${bindir}/* \
                ${datadir}/matchbox \
diff --git a/meta/recipes-graphics/piglit/piglit_git.bb b/meta/recipes-graphics/piglit/piglit_git.bb
index 7417cd5..64289ed 100644
--- a/meta/recipes-graphics/piglit/piglit_git.bb
+++ b/meta/recipes-graphics/piglit/piglit_git.bb
@@ -13,7 +13,10 @@  S = "${WORKDIR}/git"
 
 DEPENDS = "virtual/libx11 waffle virtual/libgl libglu python-mako-native python-numpy-native"
 
-inherit cmake pythonnative
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+inherit cmake pythonnative distro_features_check
 
 # As piglit doesn't install, enforce in-tree builds so that we can easily copy
 # contents out of $S and $B.
diff --git a/meta/recipes-graphics/pong-clock/pong-clock_1.0.bb b/meta/recipes-graphics/pong-clock/pong-clock_1.0.bb
index fe886f5..0e1a792 100644
--- a/meta/recipes-graphics/pong-clock/pong-clock_1.0.bb
+++ b/meta/recipes-graphics/pong-clock/pong-clock_1.0.bb
@@ -2,6 +2,10 @@  SUMMARY = "A clock combined with a game of pong"
 LICENSE = "GPLv2+"
 DEPENDS = "virtual/libx11 xdmcp xau"
 
+inherit distro_features_check
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
 SRC_URI = "file://pong-clock-no-flicker.c"
 
 LIC_FILES_CHKSUM = "file://pong-clock-no-flicker.c;beginline=1;endline=23;md5=dd248d50f73f746d1ee78586b0b2ebd3"
diff --git a/meta/recipes-graphics/startup-notification/startup-notification_0.12.bb b/meta/recipes-graphics/startup-notification/startup-notification_0.12.bb
index 363bdcd..a9e89f6 100644
--- a/meta/recipes-graphics/startup-notification/startup-notification_0.12.bb
+++ b/meta/recipes-graphics/startup-notification/startup-notification_0.12.bb
@@ -17,7 +17,10 @@  SECTION = "libs"
 
 DEPENDS = "virtual/libx11 libsm xcb-util"
 
-inherit autotools pkgconfig
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+inherit autotools pkgconfig distro_features_check
 
 SRC_URI = "http://www.freedesktop.org/software/startup-notification/releases/${BPN}-${PV}.tar.gz \
            file://obsolete_automake_macros.patch \
diff --git a/meta/recipes-graphics/x11vnc/x11vnc_0.9.13.bb b/meta/recipes-graphics/x11vnc/x11vnc_0.9.13.bb
index 3d98172..3178239 100644
--- a/meta/recipes-graphics/x11vnc/x11vnc_0.9.13.bb
+++ b/meta/recipes-graphics/x11vnc/x11vnc_0.9.13.bb
@@ -16,7 +16,10 @@  SRC_URI[sha256sum] = "f6829f2e629667a5284de62b080b13126a0736499fe47cdb447aedb07a
 
 DEPENDS = "openssl virtual/libx11 libxext jpeg zlib libxfixes libxrandr libxdamage libxtst"
 
-inherit autotools-brokensep
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+inherit autotools-brokensep distro_features_check
 
 PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)}"
 PACKAGECONFIG[avahi] = "--with-avahi,--without-avahi,avahi"
diff --git a/meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb b/meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb
index 562434f..d1fe215 100644
--- a/meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb
+++ b/meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb
@@ -4,10 +4,13 @@  LICENSE = "MIT-X"
 LIC_FILES_CHKSUM = "file://src/calibrator.cpp;endline=22;md5=1bcba08f67cdb56f34021557898e4b5a"
 DEPENDS = "virtual/libx11 libxi"
 
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
 PV = "0.7.5+git${SRCPV}"
 PR = "r6"
 
-inherit autotools pkgconfig
+inherit autotools pkgconfig distro_features_check
 
 SRCREV = "c01c5af807cb4b0157b882ab07a893df9a810111"
 SRC_URI = "git://github.com/tias/xinput_calibrator.git \