Skip to content

Commit

Permalink
Add 'meta' attribute to Package, with dpkg section
Browse files Browse the repository at this point in the history
  • Loading branch information
remram44 committed Aug 1, 2017
1 parent 1dc27eb commit 52833ce
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 4 deletions.
7 changes: 6 additions & 1 deletion reprounzip/reprounzip/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
from datetime import datetime
from distutils.version import LooseVersion
import functools
import json
import logging
import logging.handlers
import os
Expand Down Expand Up @@ -67,12 +68,14 @@ def __hash__(self):
class Package(CommonEqualityMixin):
"""A distribution package, containing a set of files.
"""
def __init__(self, name, version, files=None, packfiles=True, size=None):
def __init__(self, name, version, files=None, packfiles=True, size=None,
meta=None):
self.name = name
self.version = version
self.files = list(files) if files is not None else []
self.packfiles = packfiles
self.size = size
self.meta = meta

def add_file(self, file_):
self.files.append(file_)
Expand Down Expand Up @@ -461,6 +464,8 @@ def write_package(fp, pkg, indent=0):
fp.write("%s size: %d\n" % (indent_str, pkg.size))
fp.write("%s packfiles: %s\n" % (indent_str, 'true' if pkg.packfiles
else 'false'))
if pkg.meta:
fp.write("%s meta: %s\n" % (indent_str, json.dumps(pkg.meta),))
fp.write("%s files:\n"
"%s # Total files used: %s\n" % (
indent_str, indent_str,
Expand Down
7 changes: 6 additions & 1 deletion reprozip/reprozip/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
from datetime import datetime
from distutils.version import LooseVersion
import functools
import json
import logging
import logging.handlers
import os
Expand Down Expand Up @@ -67,12 +68,14 @@ def __hash__(self):
class Package(CommonEqualityMixin):
"""A distribution package, containing a set of files.
"""
def __init__(self, name, version, files=None, packfiles=True, size=None):
def __init__(self, name, version, files=None, packfiles=True, size=None,
meta=None):
self.name = name
self.version = version
self.files = list(files) if files is not None else []
self.packfiles = packfiles
self.size = size
self.meta = meta

def add_file(self, file_):
self.files.append(file_)
Expand Down Expand Up @@ -461,6 +464,8 @@ def write_package(fp, pkg, indent=0):
fp.write("%s size: %d\n" % (indent_str, pkg.size))
fp.write("%s packfiles: %s\n" % (indent_str, 'true' if pkg.packfiles
else 'false'))
if pkg.meta:
fp.write("%s meta: %s\n" % (indent_str, json.dumps(pkg.meta),))
fp.write("%s files:\n"
"%s # Total files used: %s\n" % (
indent_str, indent_str,
Expand Down
7 changes: 5 additions & 2 deletions reprozip/reprozip/tracer/linux_pkgs.py
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,8 @@ def _create_package(self, pkgname):
p = subprocess.Popen(['dpkg-query',
'--showformat=${Package}\t'
'${Version}\t'
'${Installed-Size}\n',
'${Installed-Size}\t'
'${Section}\n',
'-W',
pkgname],
stdout=subprocess.PIPE)
Expand All @@ -182,13 +183,15 @@ def _create_package(self, pkgname):
if name == pkgname:
version = fields[1].decode('ascii')
size = int(fields[2].decode('ascii')) * 1024 # kbytes
section = fields[3].decode('ascii')
break
for l in p.stdout: # finish draining stdout
pass
finally:
p.wait()
if p.returncode == 0:
pkg = Package(pkgname, version, size=size)
pkg = Package(pkgname, version, size=size,
meta={'section': section})
logging.debug("Found package %s", pkg)
return pkg
else:
Expand Down

0 comments on commit 52833ce

Please sign in to comment.