yep, that makes sense, thanks for the contribution

merged

On 10/05/2017 12:03 PM, Jeffrey Pautler wrote:
If the -f option is enabled, opkg-make-index will include user-defined

fields in the package index rather than discarding them. This change is

motivated by the fact that opkg now has support for user-defined fields

in the package index.

Signed-off-by: Jeffrey Pautler <jeffrey.paut...@ni.com>

---

opkg-make-index | 11 +++++++----

opkg.py         | 28 ++++++++++++++++++----------

2 files changed, 25 insertions(+), 14 deletions(-)

diff --git a/opkg-make-index b/opkg-make-index

index 3f757f6..3227fc0 100755

--- a/opkg-make-index

+++ b/opkg-make-index

@@ -11,7 +11,7 @@ import re

verbose = 0

  def usage():

-     sys.stderr.write("%s [-h] [-s] [-m] [-a] [-l Packages.filelist] [-p Packages] [-r Packages.old] [-L localesdir] [-v] packagesdir\n" % (sys.argv[0],))

+     sys.stderr.write("%s [-h] [-s] [-m] [-a] [-f] [-l Packages.filelist] [-p Packages] [-r Packages.old] [-L localesdir] [-v] packagesdir\n" % (sys.argv[0],))

       sys.exit(-1)

  def to_morgue(filename):

@@ -43,7 +43,8 @@ stamplist_filename = "Packages.stamps"

opt_s = 0

opt_m = 0

opt_a = 0

-(opts, remaining_args) = getopt.getopt(sys.argv[1:], "hl:p:vsmr:L:a")

+opt_f = 0

+(opts, remaining_args) = getopt.getopt(sys.argv[1:], "hl:p:vsmr:L:af")

for (optkey, optval) in opts:

       if optkey == '-h':

            usage()

@@ -64,6 +65,8 @@ for (optkey, optval) in opts:

            locales_dir = optval

       if optkey == '-a':

            opt_a = 1

+     if optkey == '-f':

+          opt_f = 1

  if ( not remaining_args ):

       usage()

@@ -81,7 +84,7 @@ if old_filename:

       if (verbose):

           sys.stderr.write("Reading package list from " + old_filename + "\n")

       old_packages = opkg.Packages()

-     old_packages.read_packages_file(old_filename)

+     old_packages.read_packages_file(old_filename, opt_f)

       for k in list(old_packages.packages.keys()):

            p = old_packages.packages[k]

            old_pkg_hash[p.filename] = p

@@ -122,7 +125,7 @@ for abspath in files:

       if not pkg:

            if (verbose):

                sys.stderr.write("Reading info for package %s\n" % (filename,))

-          pkg = opkg.Package(abspath, relpath=pkg_dir)

+          pkg = opkg.Package(abspath, relpath=pkg_dir, all_fields=opt_f)

       if opt_a:

           pkg_key = ("%s:%s:%s" % (pkg.package, pkg.architecture, pkg.version))

diff --git a/opkg.py b/opkg.py

index 9131755..cdadcab 100644

--- a/opkg.py

+++ b/opkg.py

@@ -45,6 +45,7 @@ from stat import ST_SIZE

import arfile

import tarfile

import textwrap

+import collections

  class Version(object):

      """A class for holding parsed package version information."""

@@ -123,7 +124,7 @@ class Package(object):

     # relpath: If this argument is set, the file path is given relative to this

     #   path when a string representation of the Package object is created. If

      #   this argument is not set, the basename of the file path is given.

-    def __init__(self, fn=None, relpath=None):

+    def __init__(self, fn=None, relpath=None, all_fields=None):

          self.package = None

          self.version = 'none'

          self.parsed_version = None

@@ -153,6 +154,7 @@ class Package(object):

          self.fn = fn

          self.license = None

+        self.user_defined_fields = collections.OrderedDict()

          if fn:

              # see if it is deb format

              f = open(fn, "rb")

@@ -176,7 +178,7 @@ class Package(object):

              except KeyError:

                  control = tarf.extractfile("./control")

              try:

-                self.read_control(control)

+                self.read_control(control, all_fields)

              except TypeError as e:

                 sys.stderr.write("Cannot read control file '%s' - %s\n" % (fn, e))

              control.close()

@@ -215,7 +217,7 @@ class Package(object):

              self.size = stat[ST_SIZE]

          return int(self.size)

-    def read_control(self, control):

+    def read_control(self, control, all_fields=None):

          import os

          line = control.readline()

@@ -227,19 +229,22 @@ class Package(object):

              line = line.rstrip()

              lineparts = re.match(r'([\w-]*?):\s*(.*)', line)

              if lineparts:

-                name = lineparts.group(1).lower()

+                name = lineparts.group(1)

+                name_lowercase = name.lower()

                  value = lineparts.group(2)

                  while 1:

                      line = control.readline()

                      if not line: break

                      if line[0] != ' ': break

                      value = value + '\n' + line

-                if name == 'size':

+                if name_lowercase == 'size':

                      self.size = int(value)

-                elif name == 'md5sum':

+                elif name_lowercase == 'md5sum':

                      self.md5 = value

-                elif name in self.__dict__:

-                    self.__dict__[name] = value

+                elif name_lowercase in self.__dict__:

+                    self.__dict__[name_lowercase] = value

+                elif all_fields:

+                    self.user_defined_fields[name] = value

                  else:

                      print("Lost field %s, %s" % (name,value))

                      pass

@@ -490,6 +495,9 @@ class Package(object):

          if self.license: out = out + "License: %s\n" % (self.license)

          if self.priority: out = out + "Priority: %s\n" % (self.priority)

          if self.tags: out = out + "Tags: %s\n" % (self.tags)

+        if self.user_defined_fields:

+            for k, v in self.user_defined_fields.items():

+                out = out + "%s: %s\n" % (k, v)

          out = out + "\n"

          return out

@@ -523,12 +531,12 @@ class Packages(object):

          else:

              return 1

-    def read_packages_file(self, fn):

+    def read_packages_file(self, fn, all_fields=None):

          f = open(fn, "r")

          while True:

              pkg = Package()

              try:

-                pkg.read_control(f)

+                pkg.read_control(f, all_fields)

              except TypeError as e:

                 sys.stderr.write("Cannot read control file '%s' - %s\n" % (fn, e))

                  continue

--

2.7.4

--
You received this message because you are subscribed to the Google Groups "opkg-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to opkg-devel+unsubscr...@googlegroups.com <mailto:opkg-devel+unsubscr...@googlegroups.com>. For more options, visit https://groups.google.com/d/optout <https://urldefense.proofpoint.com/v2/url?u=https-3A__groups.google.com_d_optout&d=DwMFaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=wNcrL2akRn6jfxhHaKavUrJB_C9JAMXtynjLd8ZzgXQ&m=ovQLEvQ9Lx-7vCjplOAzesO39gF_IJUaWHnH7MYJRKk&s=Cjo25iHoDUxMx8anWywj0hPZTramOkXjGn9UCLksWcU&e=>.

--
Cheers,

Alejandro
--
_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to