Patchwork [V2] Add file information to package information window

login
register
mail settings
Submitter Andrei Dinu
Date April 3, 2013, 3:30 p.m.
Message ID <1365003047-10522-1-git-send-email-andrei.adrianx.dinu@intel.com>
Download mbox | patch
Permalink /patch/47347/
State New
Headers show

Comments

Andrei Dinu - April 3, 2013, 3:30 p.m.
Removed the package files parsing routine from the
packageinfo.bbclass file and added it to the
package.bbclass file.

Signed-off-by: Andrei Dinu <andrei.adrianx.dinu@intel.com>
---
 meta/classes/package.bbclass     |   10 ++++++++++
 meta/classes/packageinfo.bbclass |   20 --------------------
 2 files changed, 10 insertions(+), 20 deletions(-)
Paul Eggleton - April 3, 2013, 4:18 p.m.
Hi Andrei,

On Wednesday 03 April 2013 18:30:47 Andrei Dinu wrote:
> Removed the package files parsing routine from the
> packageinfo.bbclass file and added it to the
> package.bbclass file.
> 
> Signed-off-by: Andrei Dinu <andrei.adrianx.dinu@intel.com>
> ---
>  meta/classes/package.bbclass     |   10 ++++++++++
>  meta/classes/packageinfo.bbclass |   20 --------------------
>  2 files changed, 10 insertions(+), 20 deletions(-)
> 
> diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
> index 3479947..cafe339 100644
> --- a/meta/classes/package.bbclass
> +++ b/meta/classes/package.bbclass
> @@ -1130,6 +1130,13 @@ python emit_pkgdata() {
>      workdir = d.getVar('WORKDIR', True)
> 
>      for pkg in packages.split():
> +        items = {}
> +        for files_list in pkgfiles[pkg]:
> +             if
> files_list.split(files_list.split('/')[len(files_list.split('/'))-1])[0][:-
> 1] not in items: +                
> items[files_list.split(files_list.split('/')[len(files_list.split('/'))-1])
> [0][:-1]] = [] +                
> items[files_list.split(files_list.split('/')[len(files_list.split('/'))-1])
> [0][:-1]].append(files_list.split('/')[len(files_list.split('/'))-1]) +     
>        else:
> +                
> items[files_list.split(files_list.split('/')[len(files_list.split('/'))-1])
> [0][:-1]].append(files_list.split('/')[len(files_list.split('/'))-1])
> subdata_file = pkgdatadir + "/runtime/%s" % pkg

I'd recommend the use of os.path.basename() here; additionally rather than 
repeating the same call several times (possibly expensive within a loop), 
assign the return value to a variable and then use that instead.

Cheers,
Paul
Andrei Dinu - April 4, 2013, 8:22 a.m.
Hi Paul,

Thank you for your review!

I just submitted a V3 with the changes you suggested.

Thanks,

Andrei

On 04/03/2013 07:18 PM, Paul Eggleton wrote:
> Hi Andrei,
>
> On Wednesday 03 April 2013 18:30:47 Andrei Dinu wrote:
>> Removed the package files parsing routine from the
>> packageinfo.bbclass file and added it to the
>> package.bbclass file.
>>
>> Signed-off-by: Andrei Dinu <andrei.adrianx.dinu@intel.com>
>> ---
>>   meta/classes/package.bbclass     |   10 ++++++++++
>>   meta/classes/packageinfo.bbclass |   20 --------------------
>>   2 files changed, 10 insertions(+), 20 deletions(-)
>>
>> diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
>> index 3479947..cafe339 100644
>> --- a/meta/classes/package.bbclass
>> +++ b/meta/classes/package.bbclass
>> @@ -1130,6 +1130,13 @@ python emit_pkgdata() {
>>       workdir = d.getVar('WORKDIR', True)
>>
>>       for pkg in packages.split():
>> +        items = {}
>> +        for files_list in pkgfiles[pkg]:
>> +             if
>> files_list.split(files_list.split('/')[len(files_list.split('/'))-1])[0][:-
>> 1] not in items: +
>> items[files_list.split(files_list.split('/')[len(files_list.split('/'))-1])
>> [0][:-1]] = [] +
>> items[files_list.split(files_list.split('/')[len(files_list.split('/'))-1])
>> [0][:-1]].append(files_list.split('/')[len(files_list.split('/'))-1]) +
>>         else:
>> +
>> items[files_list.split(files_list.split('/')[len(files_list.split('/'))-1])
>> [0][:-1]].append(files_list.split('/')[len(files_list.split('/'))-1])
>> subdata_file = pkgdatadir + "/runtime/%s" % pkg
> I'd recommend the use of os.path.basename() here; additionally rather than
> repeating the same call several times (possibly expensive within a loop),
> assign the return value to a variable and then use that instead.
>
> Cheers,
> Paul
>

Patch

diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index 3479947..cafe339 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -1130,6 +1130,13 @@  python emit_pkgdata() {
     workdir = d.getVar('WORKDIR', True)
 
     for pkg in packages.split():
+        items = {}
+        for files_list in pkgfiles[pkg]:
+             if files_list.split(files_list.split('/')[len(files_list.split('/'))-1])[0][:-1] not in items:
+                 items[files_list.split(files_list.split('/')[len(files_list.split('/'))-1])[0][:-1]] = []
+                 items[files_list.split(files_list.split('/')[len(files_list.split('/'))-1])[0][:-1]].append(files_list.split('/')[len(files_list.split('/'))-1])
+             else:
+                 items[files_list.split(files_list.split('/')[len(files_list.split('/'))-1])[0][:-1]].append(files_list.split('/')[len(files_list.split('/'))-1])
         subdata_file = pkgdatadir + "/runtime/%s" % pkg
 
         pkgval = d.getVar('PKG_%s' % pkg, True)
@@ -1137,6 +1144,8 @@  python emit_pkgdata() {
             pkgval = pkg
             d.setVar('PKG_%s' % pkg, pkg)
 
+        d.setVar('FILES_INFO', str(items))
+
         sf = open(subdata_file, 'w')
         write_if_exists(sf, pkg, 'PN')
         write_if_exists(sf, pkg, 'PV')
@@ -1161,6 +1170,7 @@  python emit_pkgdata() {
         write_if_exists(sf, pkg, 'pkg_preinst')
         write_if_exists(sf, pkg, 'pkg_prerm')
         write_if_exists(sf, pkg, 'FILERPROVIDESFLIST')
+        write_if_exists(sf, pkg, 'FILES_INFO')
         for dfile in (d.getVar('FILERPROVIDESFLIST_' + pkg, True) or "").split():
             write_if_exists(sf, pkg, 'FILERPROVIDES_' + dfile)
 
diff --git a/meta/classes/packageinfo.bbclass b/meta/classes/packageinfo.bbclass
index 5e6f590..4709bea 100644
--- a/meta/classes/packageinfo.bbclass
+++ b/meta/classes/packageinfo.bbclass
@@ -8,24 +8,6 @@  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/'
@@ -38,8 +20,6 @@  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)))