Patchwork [bitbake-devel,3/6] packageinfo.bbclass : extended functionality

login
register
mail settings
Submitter Andrei Dinu
Date March 28, 2013, 8:23 a.m.
Message ID <1364459002-4165-4-git-send-email-andrei.adrianx.dinu@intel.com>
Download mbox | patch
Permalink /patch/47065/
State New
Headers show

Comments

Andrei Dinu - March 28, 2013, 8:23 a.m.
Extended the functionality of packageinfo.bbclass
so that the sistem retrieves information about the
files brought in by each package. This is done
(without activating buildhistory) by parsing
the packages-split directory for each package.

Signed-off-by: Andrei Dinu <andrei.adrianx.dinu@intel.com>
---
 meta/classes/packageinfo.bbclass |   21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
Paul Eggleton - March 28, 2013, 6:54 p.m.
Hi Andrei,

On Thursday 28 March 2013 10:23:19 Andrei Dinu wrote:
> Extended the functionality of packageinfo.bbclass
> so that the sistem retrieves information about the
> files brought in by each package. This is done
> (without activating buildhistory) by parsing
> the packages-split directory for each package.
> 
> Signed-off-by: Andrei Dinu <andrei.adrianx.dinu@intel.com>
> ---
>  meta/classes/packageinfo.bbclass |   21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
> 
> diff --git a/meta/classes/packageinfo.bbclass
> b/meta/classes/packageinfo.bbclass index bd7b249..5e6f590 100644
> --- a/meta/classes/packageinfo.bbclass
> +++ b/meta/classes/packageinfo.bbclass
> @@ -8,6 +8,25 @@ python packageinfo_handler () {
>          package_archs = e.data.getVar('PACKAGE_ARCHS', True)
>          packaging = e.data.getVar('PACKAGE_CLASSES',
> True).split()[0].split('_')[1] deploy_dir = e.data.getVar('DEPLOY_DIR',
> True) + '/' + packaging +        dirs = os.listdir(tmpdir + '/work/')
> +        pkgsplit_dir = tmpdir + '/work/'
> +        items = {}
> +        passing = ''
> +        for directories in dirs:
> +                temp_dirs = os.listdir(pkgsplit_dir + directories)
> +                for temps1 in temp_dirs:
> +                        if os.path.exists(pkgsplit_dir + directories + '/'
> + temps1 + '/' + os.listdir(pkgsplit_dir + directories + '/' + temps1)[0] +
> '/packages-split'): +                                subs = pkgsplit_dir +
> directories + '/' + temps1 + '/' + os.listdir(pkgsplit_dir + directories +
> '/' + temps1)[0] + '/packages-split' +                                for
> temps in os.listdir(subs):
> +                                        items[temps] = {}
> +                                        for path, dirs, files in
> os.walk(pkgsplit_dir + directories + '/' + temps1 + '/' +
> os.listdir(pkgsplit_dir + directories + '/' + temps1)[0] +
> '/packages-split' + '/' + temps): +                                        
>                file_list = [] +                                            
>            if os.listdir(path) != []: +                                    
>                            items[temps][path] = [] +                       
>                                         for f in files: +                  
>                                                      file_list.append(f) + 
>                                                              
> items[temps][path].append(file_list) +
>          for arch in package_archs.split():
>              pkgdata_dir = tmpdir + '/pkgdata/' + arch + target_vendor + '-'
> + target_os + '/runtime/' if os.path.exists(pkgdata_dir):
> @@ -19,6 +38,8 @@ python packageinfo_handler () {
>                              try:
>                                  sdata =
> oe.packagedata.read_pkgdatafile(pkgdatafile) sdata['PKG'] = pkgname
> +                                if pkgname in items:
> +                                        sdata['FILES_INFO'] =
> items[pkgname] pkginfolist.append(sdata)
>                              except Exception as e:
>                                  bb.warn("Failed to read pkgdata file %s:
> %s: %s" % (pkgdatafile, e.__class__, str(e)))

This is a change against the metadata rather than BitBake; it needs to be sent 
separately to the OE-Core mailing list.

Before you send it there however, you really need to be using the PKGDEST 
variable instead of composing the path to packages-split using hardcoded path 
components.

Cheers,
Paul
Richard Purdie - March 29, 2013, 10:42 a.m.
On Thu, 2013-03-28 at 18:54 +0000, Paul Eggleton wrote:
> Hi Andrei,
> 
> On Thursday 28 March 2013 10:23:19 Andrei Dinu wrote:
> > Extended the functionality of packageinfo.bbclass
> > so that the sistem retrieves information about the
> > files brought in by each package. This is done
> > (without activating buildhistory) by parsing
> > the packages-split directory for each package.
> > 
> > Signed-off-by: Andrei Dinu <andrei.adrianx.dinu@intel.com>
> > ---
> >  meta/classes/packageinfo.bbclass |   21 +++++++++++++++++++++
> >  1 file changed, 21 insertions(+)
> > 
> > diff --git a/meta/classes/packageinfo.bbclass
> > b/meta/classes/packageinfo.bbclass index bd7b249..5e6f590 100644
> > --- a/meta/classes/packageinfo.bbclass
> > +++ b/meta/classes/packageinfo.bbclass
> > @@ -8,6 +8,25 @@ python packageinfo_handler () {
> >          package_archs = e.data.getVar('PACKAGE_ARCHS', True)
> >          packaging = e.data.getVar('PACKAGE_CLASSES',
> > True).split()[0].split('_')[1] deploy_dir = e.data.getVar('DEPLOY_DIR',
> > True) + '/' + packaging +        dirs = os.listdir(tmpdir + '/work/')
> > +        pkgsplit_dir = tmpdir + '/work/'
> > +        items = {}
> > +        passing = ''
> > +        for directories in dirs:
> > +                temp_dirs = os.listdir(pkgsplit_dir + directories)
> > +                for temps1 in temp_dirs:
> > +                        if os.path.exists(pkgsplit_dir + directories + '/'
> > + temps1 + '/' + os.listdir(pkgsplit_dir + directories + '/' + temps1)[0] +
> > '/packages-split'): +                                subs = pkgsplit_dir +
> > directories + '/' + temps1 + '/' + os.listdir(pkgsplit_dir + directories +
> > '/' + temps1)[0] + '/packages-split' +                                for
> > temps in os.listdir(subs):
> > +                                        items[temps] = {}
> > +                                        for path, dirs, files in
> > os.walk(pkgsplit_dir + directories + '/' + temps1 + '/' +
> > os.listdir(pkgsplit_dir + directories + '/' + temps1)[0] +
> > '/packages-split' + '/' + temps): +                                        
> >                file_list = [] +                                            
> >            if os.listdir(path) != []: +                                    
> >                            items[temps][path] = [] +                       
> >                                         for f in files: +                  
> >                                                      file_list.append(f) + 
> >                                                              
> > items[temps][path].append(file_list) +
> >          for arch in package_archs.split():
> >              pkgdata_dir = tmpdir + '/pkgdata/' + arch + target_vendor + '-'
> > + target_os + '/runtime/' if os.path.exists(pkgdata_dir):
> > @@ -19,6 +38,8 @@ python packageinfo_handler () {
> >                              try:
> >                                  sdata =
> > oe.packagedata.read_pkgdatafile(pkgdatafile) sdata['PKG'] = pkgname
> > +                                if pkgname in items:
> > +                                        sdata['FILES_INFO'] =
> > items[pkgname] pkginfolist.append(sdata)
> >                              except Exception as e:
> >                                  bb.warn("Failed to read pkgdata file %s:
> > %s: %s" % (pkgdatafile, e.__class__, str(e)))
> 
> This is a change against the metadata rather than BitBake; it needs to be sent 
> separately to the OE-Core mailing list.
> 
> Before you send it there however, you really need to be using the PKGDEST 
> variable instead of composing the path to packages-split using hardcoded path 
> components.

Sorry, I missed this feedback. Can you please send a follow up patch to
the OE-Core list addressing the PKGDEST issue.

Thanks,

Richard
Andrei Dinu - March 29, 2013, 1:35 p.m.
Hi Paul, Richard,

Thanks for the heads-up. I will look into PKDEST variable to replace all the
hardcoded paths in there and send the patch on the right list.

Thanks,

Andrei Dinu

On 03/29/2013 12:42 PM, Richard Purdie wrote:
> On Thu, 2013-03-28 at 18:54 +0000, Paul Eggleton wrote:
>> Hi Andrei,
>>
>> On Thursday 28 March 2013 10:23:19 Andrei Dinu wrote:
>>> Extended the functionality of packageinfo.bbclass
>>> so that the sistem retrieves information about the
>>> files brought in by each package. This is done
>>> (without activating buildhistory) by parsing
>>> the packages-split directory for each package.
>>>
>>> Signed-off-by: Andrei Dinu <andrei.adrianx.dinu@intel.com>
>>> ---
>>>   meta/classes/packageinfo.bbclass |   21 +++++++++++++++++++++
>>>   1 file changed, 21 insertions(+)
>>>
>>> diff --git a/meta/classes/packageinfo.bbclass
>>> b/meta/classes/packageinfo.bbclass index bd7b249..5e6f590 100644
>>> --- a/meta/classes/packageinfo.bbclass
>>> +++ b/meta/classes/packageinfo.bbclass
>>> @@ -8,6 +8,25 @@ python packageinfo_handler () {
>>>           package_archs = e.data.getVar('PACKAGE_ARCHS', True)
>>>           packaging = e.data.getVar('PACKAGE_CLASSES',
>>> True).split()[0].split('_')[1] deploy_dir = e.data.getVar('DEPLOY_DIR',
>>> True) + '/' + packaging +        dirs = os.listdir(tmpdir + '/work/')
>>> +        pkgsplit_dir = tmpdir + '/work/'
>>> +        items = {}
>>> +        passing = ''
>>> +        for directories in dirs:
>>> +                temp_dirs = os.listdir(pkgsplit_dir + directories)
>>> +                for temps1 in temp_dirs:
>>> +                        if os.path.exists(pkgsplit_dir + directories + '/'
>>> + temps1 + '/' + os.listdir(pkgsplit_dir + directories + '/' + temps1)[0] +
>>> '/packages-split'): +                                subs = pkgsplit_dir +
>>> directories + '/' + temps1 + '/' + os.listdir(pkgsplit_dir + directories +
>>> '/' + temps1)[0] + '/packages-split' +                                for
>>> temps in os.listdir(subs):
>>> +                                        items[temps] = {}
>>> +                                        for path, dirs, files in
>>> os.walk(pkgsplit_dir + directories + '/' + temps1 + '/' +
>>> os.listdir(pkgsplit_dir + directories + '/' + temps1)[0] +
>>> '/packages-split' + '/' + temps): +
>>>                 file_list = [] +
>>>             if os.listdir(path) != []: +
>>>                             items[temps][path] = [] +
>>>                                          for f in files: +
>>>                                                       file_list.append(f) +
>>>                                                               
>>> items[temps][path].append(file_list) +
>>>           for arch in package_archs.split():
>>>               pkgdata_dir = tmpdir + '/pkgdata/' + arch + target_vendor + '-'
>>> + target_os + '/runtime/' if os.path.exists(pkgdata_dir):
>>> @@ -19,6 +38,8 @@ python packageinfo_handler () {
>>>                               try:
>>>                                   sdata =
>>> oe.packagedata.read_pkgdatafile(pkgdatafile) sdata['PKG'] = pkgname
>>> +                                if pkgname in items:
>>> +                                        sdata['FILES_INFO'] =
>>> items[pkgname] pkginfolist.append(sdata)
>>>                               except Exception as e:
>>>                                   bb.warn("Failed to read pkgdata file %s:
>>> %s: %s" % (pkgdatafile, e.__class__, str(e)))
>> This is a change against the metadata rather than BitBake; it needs to be sent
>> separately to the OE-Core mailing list.
>>
>> Before you send it there however, you really need to be using the PKGDEST
>> variable instead of composing the path to packages-split using hardcoded path
>> components.
> Sorry, I missed this feedback. Can you please send a follow up patch to
> the OE-Core list addressing the PKGDEST issue.
>
> Thanks,
>
> Richard
>

Patch

diff --git a/meta/classes/packageinfo.bbclass b/meta/classes/packageinfo.bbclass
index bd7b249..5e6f590 100644
--- a/meta/classes/packageinfo.bbclass
+++ b/meta/classes/packageinfo.bbclass
@@ -8,6 +8,25 @@  python packageinfo_handler () {
         package_archs = e.data.getVar('PACKAGE_ARCHS', True)
         packaging = e.data.getVar('PACKAGE_CLASSES', True).split()[0].split('_')[1]
         deploy_dir = e.data.getVar('DEPLOY_DIR', True) + '/' + packaging
+        dirs = os.listdir(tmpdir + '/work/')
+        pkgsplit_dir = tmpdir + '/work/'
+        items = {}
+        passing = ''
+        for directories in dirs:
+                temp_dirs = os.listdir(pkgsplit_dir + directories)
+                for temps1 in temp_dirs:
+                        if os.path.exists(pkgsplit_dir + directories + '/' + temps1 + '/' + os.listdir(pkgsplit_dir + directories + '/' + temps1)[0] + '/packages-split'):
+                                subs = pkgsplit_dir + directories + '/' + temps1 + '/' + os.listdir(pkgsplit_dir + directories + '/' + temps1)[0] + '/packages-split'
+                                for temps in os.listdir(subs):
+                                        items[temps] = {}
+                                        for path, dirs, files in os.walk(pkgsplit_dir + directories + '/' + temps1 + '/' + os.listdir(pkgsplit_dir + directories + '/' + temps1)[0] + '/packages-split' + '/' + temps):                                                   
+                                                        file_list = []
+                                                        if os.listdir(path) != []:
+                                                                items[temps][path] = []                                                   
+                                                                for f in files:
+                                                                        file_list.append(f)
+                                                                items[temps][path].append(file_list)
+                                           
         for arch in package_archs.split():
             pkgdata_dir = tmpdir + '/pkgdata/' + arch + target_vendor + '-' + target_os + '/runtime/'
             if os.path.exists(pkgdata_dir):
@@ -19,6 +38,8 @@  python packageinfo_handler () {
                             try:
                                 sdata = oe.packagedata.read_pkgdatafile(pkgdatafile)
                                 sdata['PKG'] = pkgname
+                                if pkgname in items:
+                                        sdata['FILES_INFO'] = items[pkgname]        
                                 pkginfolist.append(sdata)
                             except Exception as e:
                                 bb.warn("Failed to read pkgdata file %s: %s: %s" % (pkgdatafile, e.__class__, str(e)))