StarlingX open source release updates
Signed-off-by: Dean Troyer <dtroyer@gmail.com>
This commit is contained in:
137
bsp-files/platform_comps.py
Normal file
137
bsp-files/platform_comps.py
Normal file
@@ -0,0 +1,137 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
"""
|
||||
Copyright (c) 2018 Wind River Systems, Inc.
|
||||
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
"""
|
||||
|
||||
import getopt
|
||||
import os
|
||||
import platform
|
||||
import subprocess
|
||||
import sys
|
||||
import xml.etree.ElementTree as ElementTree
|
||||
|
||||
def usage():
|
||||
print "Usage: %s --groups <groups.xml> --pkgdir <pkgdir>" \
|
||||
% os.path.basename(sys.argv[0])
|
||||
exit(1)
|
||||
|
||||
def add_text_tag_to_xml(parent,
|
||||
name,
|
||||
text):
|
||||
"""
|
||||
Utility function for adding a text tag to an XML object
|
||||
:param parent: Parent element
|
||||
:param name: Element name
|
||||
:param text: Text value
|
||||
:return:The created element
|
||||
"""
|
||||
tag = ElementTree.SubElement(parent, name)
|
||||
tag.text = text
|
||||
tag.tail = '\n '
|
||||
return tag
|
||||
|
||||
|
||||
def add_group(comps, personality, rpmlist=None, filter_dir=None, filter=None):
|
||||
"""
|
||||
Add a software group to the comps.xml
|
||||
:param comps: comps element
|
||||
:param personality: Personality of node for group
|
||||
:param rpmlist: List of all rpms in the base load
|
||||
:param filter_dir: Path to filter files
|
||||
:param filter: Name of filter file to use
|
||||
"""
|
||||
|
||||
if rpmlist is not None:
|
||||
# Define a base platform group
|
||||
groupname = "platform-%s" % personality
|
||||
desc = "Platform packages for %s" % personality
|
||||
else:
|
||||
# Define an empty patch group
|
||||
groupname = "updates-%s" % personality
|
||||
desc = "Patches for %s" % personality
|
||||
|
||||
group = ElementTree.SubElement(comps, 'group')
|
||||
group.tail = '\n'
|
||||
|
||||
add_text_tag_to_xml(group, 'id', groupname)
|
||||
add_text_tag_to_xml(group, 'default', "false")
|
||||
add_text_tag_to_xml(group, 'uservisible', "true")
|
||||
add_text_tag_to_xml(group, 'display_order', "1024")
|
||||
add_text_tag_to_xml(group, 'name', groupname)
|
||||
add_text_tag_to_xml(group, 'description', desc)
|
||||
|
||||
package_element = ElementTree.SubElement(group,
|
||||
'packagelist')
|
||||
package_element.tail = '\n '
|
||||
|
||||
if rpmlist is not None:
|
||||
# Read the filter file
|
||||
f = open(os.path.join(filter_dir, filter), 'r')
|
||||
filtered = f.read().split()
|
||||
f.close()
|
||||
|
||||
for pkg in sorted(rpmlist):
|
||||
if pkg not in filtered:
|
||||
tag = ElementTree.SubElement(package_element,
|
||||
'packagereq',
|
||||
type="mandatory")
|
||||
tag.text = pkg
|
||||
tag.tail = '\n '
|
||||
|
||||
|
||||
def main():
|
||||
try:
|
||||
opts, remainder = getopt.getopt(sys.argv[1:],
|
||||
'',
|
||||
['pkgdir=',
|
||||
'groups='])
|
||||
except getopt.GetoptError:
|
||||
usage()
|
||||
|
||||
pkgdir = None
|
||||
groups_file = None
|
||||
|
||||
# Filters are colocated with this script
|
||||
filter_dir = os.path.dirname(sys.argv[0])
|
||||
|
||||
for opt, arg in opts:
|
||||
if opt == "--pkgdir":
|
||||
pkgdir = arg
|
||||
elif opt == "--groups":
|
||||
groups_file = arg
|
||||
|
||||
if pkgdir is None or groups_file is None:
|
||||
usage()
|
||||
|
||||
# Get the pkglist
|
||||
cmd = "find %s -name '*.rpm' | xargs rpm -qp --queryformat '%%{NAME}\n'" % pkgdir
|
||||
rpmlist = subprocess.check_output(cmd, shell=True).split()
|
||||
|
||||
tree = ElementTree.parse(groups_file)
|
||||
comps = tree.getroot()
|
||||
comps.tail = '\n'
|
||||
|
||||
add_group(comps, 'controller', rpmlist, filter_dir, 'filter_out_from_controller')
|
||||
add_group(comps, 'controller-compute', rpmlist, filter_dir, 'filter_out_from_smallsystem')
|
||||
add_group(comps, 'controller-compute-lowlatency', rpmlist, filter_dir, 'filter_out_from_smallsystem_lowlatency')
|
||||
add_group(comps, 'compute', rpmlist, filter_dir, 'filter_out_from_compute')
|
||||
add_group(comps, 'compute-lowlatency', rpmlist, filter_dir, 'filter_out_from_compute_lowlatency')
|
||||
add_group(comps, 'storage', rpmlist, filter_dir, 'filter_out_from_storage')
|
||||
|
||||
add_group(comps, 'controller')
|
||||
add_group(comps, 'controller-compute')
|
||||
add_group(comps, 'controller-compute-lowlatency')
|
||||
add_group(comps, 'compute')
|
||||
add_group(comps, 'compute-lowlatency')
|
||||
add_group(comps, 'storage')
|
||||
|
||||
tree.write(groups_file, encoding="UTF-8")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user