Patchwork gtk+3: don't split immodules if we have none

login
register
mail settings
Submitter Christopher Larson
Date Aug. 28, 2013, 4:12 p.m.
Message ID <1377706342-15547-1-git-send-email-kergoth@gmail.com>
Download mbox | patch
Permalink /patch/56837/
State New
Headers show

Comments

Christopher Larson - Aug. 28, 2013, 4:12 p.m.
From: Christopher Larson <chris_larson@mentor.com>

Currently we don't enable any immodules for gtk+3, yet we unconditionally call
do_split_packages on a nonexistent path. This results in a return value of
None, which it then tries to join, resulting in a TypeError. Only split the
modules if we have any modules to split.

Signed-off-by: Christopher Larson <chris_larson@mentor.com>
---
 meta/recipes-gnome/gtk+/gtk+3.inc | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
Saul Wold - Aug. 28, 2013, 11:13 p.m.
On 08/28/2013 09:12 AM, Christopher Larson wrote:
> From: Christopher Larson <chris_larson@mentor.com>
>
> Currently we don't enable any immodules for gtk+3, yet we unconditionally call
> do_split_packages on a nonexistent path. This results in a return value of
> None, which it then tries to join, resulting in a TypeError. Only split the
> modules if we have any modules to split.
>
> Signed-off-by: Christopher Larson <chris_larson@mentor.com>
> ---
>   meta/recipes-gnome/gtk+/gtk+3.inc | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/meta/recipes-gnome/gtk+/gtk+3.inc b/meta/recipes-gnome/gtk+/gtk+3.inc
> index f4d5254..204a425 100644
> --- a/meta/recipes-gnome/gtk+/gtk+3.inc
> +++ b/meta/recipes-gnome/gtk+/gtk+3.inc
> @@ -94,7 +94,8 @@ python populate_packages_prepend () {
>       immodules_root = os.path.join(gtk_libdir, 'immodules')
>       printmodules_root = os.path.join(gtk_libdir, 'printbackends');
>
> -    d.setVar('GTKIMMODULES_PACKAGES', ' '.join(do_split_packages(d, immodules_root, '^im-(.*)\.so$', 'gtk3-immodule-%s', 'GTK input module for %s')))
> +    if os.path.exists(os.path.join(d.getVar('D', True), immodules_root)):
> +        d.setVar('GTKIMMODULES_PACKAGES', ' '.join(do_split_packages(d, immodules_root, '^im-(.*)\.so$', 'gtk3-immodule-%s', 'GTK input module for %s')))
>       do_split_packages(d, printmodules_root, '^libprintbackend-(.*)\.so$', 'gtk3-printbackend-%s', 'GTK printbackend module for %s')
>
>       if (d.getVar('DEBIAN_NAMES', 1)):
>

This seems to give me the following QA error:

> ERROR: QA Issue: gtk+3: Files/directories were installed but not shipped
>   /usr/lib/gtk-3.0/3.0.0/immodules/im-viqr.so
>   /usr/lib/gtk-3.0/3.0.0/immodules/im-am-et.so
>   /usr/lib/gtk-3.0/3.0.0/immodules/im-xim.so
>   /usr/lib/gtk-3.0/3.0.0/immodules/im-multipress.so
>   /usr/lib/gtk-3.0/3.0.0/immodules/im-cedilla.so
>   /usr/lib/gtk-3.0/3.0.0/immodules/im-ti-et.so
>   /usr/lib/gtk-3.0/3.0.0/immodules/im-ipa.so
>   /usr/lib/gtk-3.0/3.0.0/immodules/im-inuktitut.so
>   /usr/lib/gtk-3.0/3.0.0/immodules/im-ti-er.so
>   /usr/lib/gtk-3.0/3.0.0/immodules/im-thai.so
>   /usr/lib/gtk-3.0/3.0.0/immodules/im-cyrillic-translit.so
> ERROR: QA run found fatal errors. Please consider fixing them.
> ERROR: Function failed: do_package_qa
> ERROR: Logfile of failure stored in: /srv/hdd/builds/world/tmp/work/x86_64-poky-linux/gtk+3/3.8.2-r0/temp/log.do_package.17386
> ERROR: Task 6017 (/srv/hdd/poky/meta/recipes-gnome/gtk+/gtk+3_3.8.2.bb, do_package) failed with exit code '1'
> NOTE: Tasks Summary: Attempted 6199 tasks of which 6190 didn't need to be rerun and 1 failed.

Thanks
	Sau!
Christopher Larson - Aug. 29, 2013, 12:05 a.m.
On Wed, Aug 28, 2013 at 4:13 PM, Saul Wold <sgw@linux.intel.com> wrote:

> On 08/28/2013 09:12 AM, Christopher Larson wrote:
>
>> From: Christopher Larson <chris_larson@mentor.com>
>>
>> Currently we don't enable any immodules for gtk+3, yet we unconditionally
>> call
>> do_split_packages on a nonexistent path. This results in a return value of
>> None, which it then tries to join, resulting in a TypeError. Only split
>> the
>> modules if we have any modules to split.
>>
>> Signed-off-by: Christopher Larson <chris_larson@mentor.com>
>> ---
>>   meta/recipes-gnome/gtk+/gtk+3.**inc | 3 ++-
>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/meta/recipes-gnome/gtk+/gtk+**3.inc
>> b/meta/recipes-gnome/gtk+/gtk+**3.inc
>> index f4d5254..204a425 100644
>> --- a/meta/recipes-gnome/gtk+/gtk+**3.inc
>> +++ b/meta/recipes-gnome/gtk+/gtk+**3.inc
>> @@ -94,7 +94,8 @@ python populate_packages_prepend () {
>>       immodules_root = os.path.join(gtk_libdir, 'immodules')
>>       printmodules_root = os.path.join(gtk_libdir, 'printbackends');
>>
>> -    d.setVar('GTKIMMODULES_**PACKAGES', ' '.join(do_split_packages(d,
>> immodules_root, '^im-(.*)\.so$', 'gtk3-immodule-%s', 'GTK input module for
>> %s')))
>> +    if os.path.exists(os.path.join(d.**getVar('D', True),
>> immodules_root)):
>> +        d.setVar('GTKIMMODULES_**PACKAGES', '
>> '.join(do_split_packages(d, immodules_root, '^im-(.*)\.so$',
>> 'gtk3-immodule-%s', 'GTK input module for %s')))
>>       do_split_packages(d, printmodules_root,
>> '^libprintbackend-(.*)\.so$', 'gtk3-printbackend-%s', 'GTK printbackend
>> module for %s')
>>
>>       if (d.getVar('DEBIAN_NAMES', 1)):
>>
>>
> This seems to give me the following QA error:
>
>  ERROR: QA Issue: gtk+3: Files/directories were installed but not shipped
>>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-viqr.so
>>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-am-et.so
>>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-xim.so
>>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-multipress.so
>>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-cedilla.so
>>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-ti-et.so
>>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-ipa.so
>>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-inuktitut.so
>>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-ti-er.so
>>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-thai.so
>>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-cyrillic-**translit.so
>> ERROR: QA run found fatal errors. Please consider fixing them.
>> ERROR: Function failed: do_package_qa
>> ERROR: Logfile of failure stored in: /srv/hdd/builds/world/tmp/**
>> work/x86_64-poky-linux/gtk+3/**3.8.2-r0/temp/log.do_package.**17386
>> ERROR: Task 6017 (/srv/hdd/poky/meta/recipes-**gnome/gtk+/gtk+3_3.8.2.bb,
>> do_package) failed with exit code '1'
>> NOTE: Tasks Summary: Attempted 6199 tasks of which 6190 didn't need to be
>> rerun and 1 failed.
>
>
Huh, interesting, on this box it doesn't build any modules at all, hence
the need for this.. oh, I see what I did wrong, I used os.path.join(), so
gtk_libdir squished ${D} down to nothing. I'll send a v2 using the
oe.path.join, and also try to determine why it builds modules for you but
not me :) I expect we should be passing an explicit autoconf argument to
enable all modules, or not.
Martin Jansa - Aug. 29, 2013, 5:36 a.m.
On Wed, Aug 28, 2013 at 05:05:38PM -0700, Chris Larson wrote:
> On Wed, Aug 28, 2013 at 4:13 PM, Saul Wold <sgw@linux.intel.com> wrote:
> 
> > On 08/28/2013 09:12 AM, Christopher Larson wrote:
> >
> >> From: Christopher Larson <chris_larson@mentor.com>
> >>
> >> Currently we don't enable any immodules for gtk+3, yet we unconditionally
> >> call
> >> do_split_packages on a nonexistent path. This results in a return value of
> >> None, which it then tries to join, resulting in a TypeError. Only split
> >> the
> >> modules if we have any modules to split.
> >>
> >> Signed-off-by: Christopher Larson <chris_larson@mentor.com>
> >> ---
> >>   meta/recipes-gnome/gtk+/gtk+3.**inc | 3 ++-
> >>   1 file changed, 2 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/meta/recipes-gnome/gtk+/gtk+**3.inc
> >> b/meta/recipes-gnome/gtk+/gtk+**3.inc
> >> index f4d5254..204a425 100644
> >> --- a/meta/recipes-gnome/gtk+/gtk+**3.inc
> >> +++ b/meta/recipes-gnome/gtk+/gtk+**3.inc
> >> @@ -94,7 +94,8 @@ python populate_packages_prepend () {
> >>       immodules_root = os.path.join(gtk_libdir, 'immodules')
> >>       printmodules_root = os.path.join(gtk_libdir, 'printbackends');
> >>
> >> -    d.setVar('GTKIMMODULES_**PACKAGES', ' '.join(do_split_packages(d,
> >> immodules_root, '^im-(.*)\.so$', 'gtk3-immodule-%s', 'GTK input module for
> >> %s')))
> >> +    if os.path.exists(os.path.join(d.**getVar('D', True),
> >> immodules_root)):
> >> +        d.setVar('GTKIMMODULES_**PACKAGES', '
> >> '.join(do_split_packages(d, immodules_root, '^im-(.*)\.so$',
> >> 'gtk3-immodule-%s', 'GTK input module for %s')))
> >>       do_split_packages(d, printmodules_root,
> >> '^libprintbackend-(.*)\.so$', 'gtk3-printbackend-%s', 'GTK printbackend
> >> module for %s')
> >>
> >>       if (d.getVar('DEBIAN_NAMES', 1)):
> >>
> >>
> > This seems to give me the following QA error:
> >
> >  ERROR: QA Issue: gtk+3: Files/directories were installed but not shipped
> >>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-viqr.so
> >>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-am-et.so
> >>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-xim.so
> >>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-multipress.so
> >>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-cedilla.so
> >>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-ti-et.so
> >>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-ipa.so
> >>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-inuktitut.so
> >>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-ti-er.so
> >>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-thai.so
> >>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-cyrillic-**translit.so
> >> ERROR: QA run found fatal errors. Please consider fixing them.
> >> ERROR: Function failed: do_package_qa
> >> ERROR: Logfile of failure stored in: /srv/hdd/builds/world/tmp/**
> >> work/x86_64-poky-linux/gtk+3/**3.8.2-r0/temp/log.do_package.**17386
> >> ERROR: Task 6017 (/srv/hdd/poky/meta/recipes-**gnome/gtk+/gtk+3_3.8.2.bb,
> >> do_package) failed with exit code '1'
> >> NOTE: Tasks Summary: Attempted 6199 tasks of which 6190 didn't need to be
> >> rerun and 1 failed.
> >
> >
> Huh, interesting, on this box it doesn't build any modules at all, hence
> the need for this.. oh, I see what I did wrong, I used os.path.join(), so
> gtk_libdir squished ${D} down to nothing. I'll send a v2 using the
> oe.path.join, and also try to determine why it builds modules for you but
> not me :) I expect we should be passing an explicit autoconf argument to
> enable all modules, or not.

Why not use return value from do_split_packages to decide whether to set
GTKIMMODULES_**PACKAGES or not? At least that's what's already used in
some places.
Christopher Larson - Aug. 29, 2013, 4:30 p.m.
On Wed, Aug 28, 2013 at 10:36 PM, Martin Jansa <martin.jansa@gmail.com>wrote:

> On Wed, Aug 28, 2013 at 05:05:38PM -0700, Chris Larson wrote:
> > On Wed, Aug 28, 2013 at 4:13 PM, Saul Wold <sgw@linux.intel.com> wrote:
> >
> > > On 08/28/2013 09:12 AM, Christopher Larson wrote:
> > >
> > >> From: Christopher Larson <chris_larson@mentor.com>
> > >>
> > >> Currently we don't enable any immodules for gtk+3, yet we
> unconditionally
> > >> call
> > >> do_split_packages on a nonexistent path. This results in a return
> value of
> > >> None, which it then tries to join, resulting in a TypeError. Only
> split
> > >> the
> > >> modules if we have any modules to split.
> > >>
> > >> Signed-off-by: Christopher Larson <chris_larson@mentor.com>
> > >> ---
> > >>   meta/recipes-gnome/gtk+/gtk+3.**inc | 3 ++-
> > >>   1 file changed, 2 insertions(+), 1 deletion(-)
> > >>
> > >> diff --git a/meta/recipes-gnome/gtk+/gtk+**3.inc
> > >> b/meta/recipes-gnome/gtk+/gtk+**3.inc
> > >> index f4d5254..204a425 100644
> > >> --- a/meta/recipes-gnome/gtk+/gtk+**3.inc
> > >> +++ b/meta/recipes-gnome/gtk+/gtk+**3.inc
> > >> @@ -94,7 +94,8 @@ python populate_packages_prepend () {
> > >>       immodules_root = os.path.join(gtk_libdir, 'immodules')
> > >>       printmodules_root = os.path.join(gtk_libdir, 'printbackends');
> > >>
> > >> -    d.setVar('GTKIMMODULES_**PACKAGES', ' '.join(do_split_packages(d,
> > >> immodules_root, '^im-(.*)\.so$', 'gtk3-immodule-%s', 'GTK input
> module for
> > >> %s')))
> > >> +    if os.path.exists(os.path.join(d.**getVar('D', True),
> > >> immodules_root)):
> > >> +        d.setVar('GTKIMMODULES_**PACKAGES', '
> > >> '.join(do_split_packages(d, immodules_root, '^im-(.*)\.so$',
> > >> 'gtk3-immodule-%s', 'GTK input module for %s')))
> > >>       do_split_packages(d, printmodules_root,
> > >> '^libprintbackend-(.*)\.so$', 'gtk3-printbackend-%s', 'GTK
> printbackend
> > >> module for %s')
> > >>
> > >>       if (d.getVar('DEBIAN_NAMES', 1)):
> > >>
> > >>
> > > This seems to give me the following QA error:
> > >
> > >  ERROR: QA Issue: gtk+3: Files/directories were installed but not
> shipped
> > >>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-viqr.so
> > >>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-am-et.so
> > >>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-xim.so
> > >>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-multipress.so
> > >>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-cedilla.so
> > >>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-ti-et.so
> > >>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-ipa.so
> > >>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-inuktitut.so
> > >>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-ti-er.so
> > >>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-thai.so
> > >>   /usr/lib/gtk-3.0/3.0.0/**immodules/im-cyrillic-**translit.so
> > >> ERROR: QA run found fatal errors. Please consider fixing them.
> > >> ERROR: Function failed: do_package_qa
> > >> ERROR: Logfile of failure stored in: /srv/hdd/builds/world/tmp/**
> > >> work/x86_64-poky-linux/gtk+3/**3.8.2-r0/temp/log.do_package.**17386
> > >> ERROR: Task 6017 (/srv/hdd/poky/meta/recipes-**gnome/gtk+/gtk+
> 3_3.8.2.bb,
> > >> do_package) failed with exit code '1'
> > >> NOTE: Tasks Summary: Attempted 6199 tasks of which 6190 didn't need
> to be
> > >> rerun and 1 failed.
> > >
> > >
> > Huh, interesting, on this box it doesn't build any modules at all, hence
> > the need for this.. oh, I see what I did wrong, I used os.path.join(), so
> > gtk_libdir squished ${D} down to nothing. I'll send a v2 using the
> > oe.path.join, and also try to determine why it builds modules for you but
> > not me :) I expect we should be passing an explicit autoconf argument to
> > enable all modules, or not.
>
> Why not use return value from do_split_packages to decide whether to set
> GTKIMMODULES_**PACKAGES or not? At least that's what's already used in
> some places.


Sent a new short series of 2 patches to do just that as well as fix the
real root cause of the issue I was hitting. Thanks for the review.

Patch

diff --git a/meta/recipes-gnome/gtk+/gtk+3.inc b/meta/recipes-gnome/gtk+/gtk+3.inc
index f4d5254..204a425 100644
--- a/meta/recipes-gnome/gtk+/gtk+3.inc
+++ b/meta/recipes-gnome/gtk+/gtk+3.inc
@@ -94,7 +94,8 @@  python populate_packages_prepend () {
     immodules_root = os.path.join(gtk_libdir, 'immodules')
     printmodules_root = os.path.join(gtk_libdir, 'printbackends');
 
-    d.setVar('GTKIMMODULES_PACKAGES', ' '.join(do_split_packages(d, immodules_root, '^im-(.*)\.so$', 'gtk3-immodule-%s', 'GTK input module for %s')))
+    if os.path.exists(os.path.join(d.getVar('D', True), immodules_root)):
+        d.setVar('GTKIMMODULES_PACKAGES', ' '.join(do_split_packages(d, immodules_root, '^im-(.*)\.so$', 'gtk3-immodule-%s', 'GTK input module for %s')))
     do_split_packages(d, printmodules_root, '^libprintbackend-(.*)\.so$', 'gtk3-printbackend-%s', 'GTK printbackend module for %s')
 
     if (d.getVar('DEBIAN_NAMES', 1)):