#1077 rewrite list-packages-for-ks.py script to python3
Opened a month ago by amedvede. Modified a month ago
amedvede/fedora-kickstarts list-packages-rewrite  into  main

file modified
+27 -23
@@ -1,4 +1,4 @@ 

- #!/usr/bin/python

+ #!/usr/bin/python3

  # Given as input a comps definition and a .ks file, list

  # the packages which would be installed.  This list is

  # NOT depsolved, it's merely a textual list of explicitly
@@ -11,38 +11,40 @@ 

  import os

  import sys

  import getopt

- import xml.etree.cElementTree as ElementTree

+ import xml.etree.ElementTree as ElementTree

  

  import pykickstart

  import pykickstart.parser

  import pykickstart.version

  

+ 

  def usage(ecode):

-     print "Usage: %s [--version=VERSION] COMPS.xml KICKSTART.ks" % (sys.argv[0], )

-     print "List packages installed by KICKSTART."

+     print("Usage: {} [--version=VERSION] COMPS.xml KICKSTART.ks".format(sys.argv[0]))

+     print("List packages installed by KICKSTART.")

      sys.exit(ecode)

  

+ 

  def main():

      try:

-         opts,args = getopt.getopt(sys.argv[1:], 'h', ['help', 'version=', 'debug'])

-     except getopt.GetoptError, e:

+         opts, args = getopt.getopt(sys.argv[1:], 'h', ['help', 'version=', 'debug'])

+     except getopt.GetoptError as e:

          usage(1)

-         

+ 

      version = None

      debug = False

-     for o,a in opts:

+     for o, a in opts:

          if o in ('-h', '--help'):

              usage(0)

-         elif o in ('--debug', ):

+         elif o in ('--debug',):

              debug = True

-         elif o in ('--version', ):

+         elif o in ('--version',):

              version = a

-         

+ 

      if len(args) != 2:

          usage(1)

      comps_filename = args[0]

      kickstart_filename = args[1]

-     

+ 

      if version:

          version_cls = pykickstart.version.stringToVersion(version)

      else:
@@ -55,10 +57,10 @@ 

      working_directory = os.path.dirname(kickstart_filename)

      if working_directory:

          os.chdir(working_directory)

-         

+ 

      parser = pykickstart.parser.KickstartParser(version_cls)

      parser.readKickstart(kickstart_filename)

-    

+ 

      comps_groups = comps.findall('group')

      packages_for_group = {}

      for group in comps_groups:
@@ -74,27 +76,29 @@ 

          packages_for_group[group_id.text] = pkglist

  

      pkg_list = set()

-    

+ 

      for group in parser.handler.packages.groupList:

          if debug:

-             print >>sys.stderr, "# Including %d packages from group %r" % (len(packages_for_group[group.name]), group.name)

-         for pkg in packages_for_group[group.name]:

+             print("# Including {} packages from group '{}'".format(len(packages_for_group.get(group.name, [])),

+                                                                    group.name), file=sys.stderr)

+         for pkg in packages_for_group.get(group.name, []):

              pkg_list.add(pkg)

      if debug:

-         print >>sys.stderr, "# Adding %d explicitly specified packages" % (len(parser.handler.packages.packageList), )

+         print("# Adding {} explicitly specified packages".format(len(parser.handler.packages.packageList)),

+               file=sys.stderr)

      for pkg in parser.handler.packages.packageList:

          pkg_list.add(pkg)

      if debug:

-         print >>sys.stderr, "# Processing %d explicitly excluded packages" % (len(parser.handler.packages.excludedList), )

+         print("# Processing {} explicitly excluded packages".format(len(parser.handler.packages.excludedList)),

+               file=sys.stderr)

      for pkg in parser.handler.packages.excludedList:

-         if pkg in pkg_list:

-             pkg_list.remove(pkg)

+         pkg_list.discard(pkg)

  

      for pkg in sorted(pkg_list):

-         print "%s" % (pkg, )

+         print(pkg)

  

      sys.exit(0)

  

+ 

  if __name__ == '__main__':

      main()

- 

Updated script to python3
Signed-off-by: Anton Medvedev amedvede@redhat.com

Can you instead update the file in place? There's no reason to have a py2 and py3 version.

Can you instead update the file in place? There's no reason to have a py2 and py3 version.

sure

rebased onto 3112149

a month ago
Metadata