gen-components revision 1273
43b4c41fbb07705c9df321221ab9cb9832460407Christian Maeder#!/usr/bin/python
c63ebf815c8a874525cf18670ad74847f7fc7b26Christian Maeder#
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder# CDDL HEADER START
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder#
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder# The contents of this file are subject to the terms of the
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder# Common Development and Distribution License (the "License").
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder# You may not use this file except in compliance with the License.
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder#
43b4c41fbb07705c9df321221ab9cb9832460407Christian Maeder# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder# or http://www.opensolaris.org/os/licensing.
f4a2a20e49f41b2afa657e5e64d9e349c7faa091Christian Maeder# See the License for the specific language governing permissions
f2f9df2e17e70674f0bf426ed1763c973ee4cde0Christian Maeder# and limitations under the License.
c9a7e6af169a2adfb92f42331cd578065ed83a2bChristian Maeder#
c9a7e6af169a2adfb92f42331cd578065ed83a2bChristian Maeder# When distributing Covered Code, include this CDDL HEADER in each
e7757995211bd395dc79d26fe017d99375f7d2a6Christian Maeder# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
e7757995211bd395dc79d26fe017d99375f7d2a6Christian Maeder# If applicable, add the following below this CDDL HEADER, with the
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder# fields enclosed by brackets "[]" replaced with your own identifying
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder# information: Portions Copyright [yyyy] [name of copyright owner]
a1ed34933c266ce85066acb0d7b20c90cb8eb213Christian Maeder#
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder# CDDL HEADER END
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus Luettich#
b1f59a4ea7c96f4c03a4d7cfcb9c5e66871cfbbbChristian Maeder# Copyright (c) 2012, Oracle and/or it's affiliates. All rights reserved.
ad270004874ce1d0697fb30d7309f180553bb315Christian Maeder#
4d56f2fa72e4aec20eb827c11ed49c8cbb7014bdChristian Maeder#
4cb215739e9ab13447fa21162482ebe485b47455Christian Maeder# gen_components
8ef75f1cc0437656bf622cec5ac9e8ea221da8f2Christian Maeder# A simple script to generate (on stdout), the component.html web page
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus Luettich# found at: http://userland.us.oracle.com/components.html
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder#
74eed04be26f549d2f7ca35c370e1c03879b28b1Christian Maeder
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maederimport getopt
3e8b136f23ed57d40ee617f49bcac37830b58cabChristian Maederimport os
ef9e8535c168d3f774d9e74368a2317a9eda5826Christian Maederimport sys
3e8b136f23ed57d40ee617f49bcac37830b58cabChristian Maeder
ef9e8535c168d3f774d9e74368a2317a9eda5826Christian Maederdebug = False
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder
e593b89bfd4952698dc37feced21cefe869d87a2Christian Maeder# Hashtable of components with TPNOs keyed by component name.
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maedercomp_TPNOs = {}
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
7cc09dd93962a2155c34d209d1d4cd7d7b838264Christian Maeder# Hashtable of RE's, RM's and Teams keyed by component path.
1aee4aaddde105264c1faf394d88e302c05094ffChristian Maederowners = {}
1aee4aaddde105264c1faf394d88e302c05094ffChristian Maeder
51d769d55d88dfa88bdf54bee78d8fa85a2deba8Christian Maeder# Initial HTML for the generated web page.
f041c9a6bda23de33a38490e35b831ae18d96b45Christian Maederpreamble = """
7cc09dd93962a2155c34d209d1d4cd7d7b838264Christian Maeder<html>
51d769d55d88dfa88bdf54bee78d8fa85a2deba8Christian Maeder<head>
1aee4aaddde105264c1faf394d88e302c05094ffChristian Maeder <style type='text/css' media='screen'>
1aee4aaddde105264c1faf394d88e302c05094ffChristian Maeder @import '/css/demo_table.css';
c3053d57f642ca507cdf79512e604437c4546cb9Christian Maeder @import '/css/ColVis.css';
dcbd32289a7bdf1e6edd06c6ab0698c6a9dbf37aChristian Maeder @import '/css/ColReorder.css';
f4a2a20e49f41b2afa657e5e64d9e349c7faa091Christian Maeder
f4a2a20e49f41b2afa657e5e64d9e349c7faa091Christian Maeder tr.even:hover, tr.even:hover td.sorting_1 ,
dcbd32289a7bdf1e6edd06c6ab0698c6a9dbf37aChristian Maeder tr.odd:hover, tr.odd:hover td.sorting_1 {
05a62e84edac8c64de04f8349dee418598d216b9Christian Maeder background-color: gold;
1cd4f6541984962658add5cfaa9f28a93879881bChristian Maeder }
1aee4aaddde105264c1faf394d88e302c05094ffChristian Maeder
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder </style>
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder <script type='text/javascript' src='js/jquery.js'></script>
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder <script type='text/javascript' src='js/jquery.dataTables.js'></script>
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder <script type='text/javascript' src='js/ColReorder.js'></script>
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder <script type='text/javascript' src='js/ColVis.js'></script>
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder <script>
d54cd08a4cfa26256c38d8ed12c343adbfe1a0e3Christian Maeder $(document).ready(function() {
23b4e542dca35852f58d1fb3f7d9078c1de5ab06Christian Maeder $('#components').dataTable({
7a3fe82695aa32657693e05712f84d7f81672f2eJonathan von Schroeder "sDom": 'C<"clear">Rlfrtip',
8cacad2a09782249243b80985f28e9387019fe40Christian Maeder bPaginate: true,
363939beade943a02b31004cea09dec34fa8a6d9Christian Maeder bFilter: true,
a7c27282e71cf4505026645f96d4f5cb8a284e32Christian Maeder bSort: true,
363939beade943a02b31004cea09dec34fa8a6d9Christian Maeder iDisplayLength: -1,
014dc30f64ec25e4790cca987d4d1e6635430510Christian Maeder aLengthMenu: [ [ 10, 50, -1], [ 10, 50, 'All'] ]
f04e8f3ff56405901be968fd4c6e9769239f1a9bKlaus Luettich });
6aea82c63ba1d2efc0329bc784a14e521469ec20Christian Maeder });
6aea82c63ba1d2efc0329bc784a14e521469ec20Christian Maeder </script>
431d34c7007a787331c4e5ec997badb0f8190fc7Christian Maeder</head>
f1541d4a151dbd08002dbd14e7eb1d5dde253689Christian Maeder<body>
498aa48bdb931ab50990d3b74318a5db2312186cChristian Maeder
f1541d4a151dbd08002dbd14e7eb1d5dde253689Christian Maeder<h1>Userland Components</h1>
6dc9bc98d0854fe2e3dd3bfc4275096a0c28ee1cChristian Maeder<p>
6dc9bc98d0854fe2e3dd3bfc4275096a0c28ee1cChristian Maeder<table align='center' id='components'>
6dc9bc98d0854fe2e3dd3bfc4275096a0c28ee1cChristian Maeder<thead>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder<tr>
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maeder <th>Component</th>
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder <th>Version</th>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder <th>Gate Path</th>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder <th>Package(s)</th>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder <th>ARC Case(s)</th>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder <th>License(s)</th>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder <th>TPNO</th>
9e748851c150e1022fb952bab3315e869aaf0214Christian Maeder <th>BugDB</th>
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder <th>RE</th>
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder <th>RM</th>
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder <th>Team</th>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder</tr>
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder</thead>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder<tbody>
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder"""
a5e5b8c3e5c11177e5034ef2423813a5d28979edChristian Maeder
bc8cbf12aa172bf5673b92a9e7a0151d4aa4c315Christian Maeder# Final HTML for the generated web page.
2d130d212db7208777ca896a7ecad619a8944971Christian Maederpostamble = """
2d130d212db7208777ca896a7ecad619a8944971Christian Maeder</tr>
51d769d55d88dfa88bdf54bee78d8fa85a2deba8Christian Maeder</tbody>
a5e5b8c3e5c11177e5034ef2423813a5d28979edChristian Maeder</table>
2d130d212db7208777ca896a7ecad619a8944971Christian Maeder</body>
bc8cbf12aa172bf5673b92a9e7a0151d4aa4c315Christian Maeder</html>
2d130d212db7208777ca896a7ecad619a8944971Christian Maeder"""
1cd4f6541984962658add5cfaa9f28a93879881bChristian Maeder
1cd4f6541984962658add5cfaa9f28a93879881bChristian Maeder# Return a hashtable of RE's, RM's and Teams keyed by component path.
2d130d212db7208777ca896a7ecad619a8944971Christian Maederdef read_owners(owners_file):
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder if debug:
6ff7a91875597d6e4dfaa68c79187d01473e8341Christian Maeder print >> sys.stderr, "Reading %s" % owners_file
6ff7a91875597d6e4dfaa68c79187d01473e8341Christian Maeder try:
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder fin = open(owners_file, 'r')
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder lines = fin.readlines()
4017ebc0f692820736d796af3110c3b3018c108aChristian Maeder fin.close()
a9b59eb2ce961014974276cdae0e9df4419bd212Christian Maeder except:
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder if debug:
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder print >> sys.stderr, "Unable to read owners file: %s" % owners_file
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder owners = {}
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian Maeder for line in lines:
a3c6d8e0670bf2aa71bc8e2a3b1f45d56dd65e4cChristian Maeder line = line[:-1]
dc679edd4ca027663212afdf00926ae2ce19b555Christian Maeder component, re, rm, team = line.split("|")
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder owners[component] = [ re, rm, team ]
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder return owners
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder# Return a hashtable of components with TPNOs keyed by component name.
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maederdef find_TPNOs(workspace):
4017ebc0f692820736d796af3110c3b3018c108aChristian Maeder comp_TPNOs = {}
b568982efd0997d877286faa592d81b03c8c67b8Christian Maeder for directory, _, files in os.walk(workspace + "/components"):
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder for filename in files:
0be0db405c49906bd7057255069bf6df53395ac9Klaus Luettich if filename.endswith(".license") or filename.endswith(".copyright"):
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder pathname = os.path.join(directory, filename)
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder fin = open(pathname, 'r')
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder lines = fin.readlines()
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder fin.close()
f2f9df2e17e70674f0bf426ed1763c973ee4cde0Christian Maeder
d946c1bfdd7d58aa7c023efe864d5999eb44a61bChristian Maeder for line in lines:
d946c1bfdd7d58aa7c023efe864d5999eb44a61bChristian Maeder line = line.replace("\n", "")
d946c1bfdd7d58aa7c023efe864d5999eb44a61bChristian Maeder if line.startswith("Oracle Internal Tracking Number"):
d946c1bfdd7d58aa7c023efe864d5999eb44a61bChristian Maeder tpno_str = line.split()[-1]
d946c1bfdd7d58aa7c023efe864d5999eb44a61bChristian Maeder try:
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder # Check that the TPNO is a valid number.
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder tpno = int(tpno_str)
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder if debug:
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder print >> sys.stderr, "TPNO: %s: %s" % \
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder (directory, tpno_str)
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder comp_TPNOs[directory] = tpno_str
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder except:
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder print >> sys.stderr, "Unable to read TPNO: %s" % \
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder pathname
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder return(comp_TPNOs)
3e8b136f23ed57d40ee617f49bcac37830b58cabChristian Maeder
f1541d4a151dbd08002dbd14e7eb1d5dde253689Christian Maeder# Return a sorted list of the directories containing one or more .p5m files.
6dc9bc98d0854fe2e3dd3bfc4275096a0c28ee1cChristian Maederdef find_p5m_dirs(workspace):
d946c1bfdd7d58aa7c023efe864d5999eb44a61bChristian Maeder p5m_dirs = []
e6d5dbbc3308f05197868806e0b860f4f53875f1Christian Maeder for dir, _, files in os.walk(workspace + "/components"):
363939beade943a02b31004cea09dec34fa8a6d9Christian Maeder for file in files:
e4f4d096e5e6d60dd91c746d0e833d0ac7a29c50Christian Maeder if file.endswith(".p5m"):
eb74267cf39e4e95f9eeb5c765f4c8dac33971b4Christian Maeder p5m_dirs.append(dir)
eb74267cf39e4e95f9eeb5c765f4c8dac33971b4Christian Maeder
e4f4d096e5e6d60dd91c746d0e833d0ac7a29c50Christian Maeder return sorted(list(set(p5m_dirs)))
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maeder
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder# Write out the initial HTML for the components.html web page.
f1541d4a151dbd08002dbd14e7eb1d5dde253689Christian Maederdef write_preamble():
363939beade943a02b31004cea09dec34fa8a6d9Christian Maeder print preamble
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder
6cd33d6101fb1b93baa6d86fac158af18a115108Christian Maeder# Return the RE, RM and Team for this component.
6cd33d6101fb1b93baa6d86fac158af18a115108Christian Maederdef get_owner(p5m_dir):
6cd33d6101fb1b93baa6d86fac158af18a115108Christian Maeder result = [ "Unknown", "Unknown", "Unknown" ]
6cd33d6101fb1b93baa6d86fac158af18a115108Christian Maeder component_path = ""
6cd33d6101fb1b93baa6d86fac158af18a115108Christian Maeder started = False
6cd33d6101fb1b93baa6d86fac158af18a115108Christian Maeder tokens = p5m_dir.split("/")
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder for token in tokens:
10883d13973c46cac98964b66ace7a52b2d059abChristian Maeder if started:
c9a7e6af169a2adfb92f42331cd578065ed83a2bChristian Maeder component_path += token + "/"
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder if token == "components":
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder started = True
0e5b095a19790411e5352fa7cf57cb0388e70472Christian Maeder component_path = component_path[:-1]
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder if component_path in owners:
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder result = owners[component_path]
c9a7e6af169a2adfb92f42331cd578065ed83a2bChristian Maeder if debug:
c9a7e6af169a2adfb92f42331cd578065ed83a2bChristian Maeder print >> sys.stderr, "Component path: ", component_path,
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder print >> sys.stderr, "RE, RM, Team: ", result
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder return result
93f5b72fdb9ee734caa750b43dd79bbb590dcd73Christian Maeder
93f5b72fdb9ee734caa750b43dd79bbb590dcd73Christian Maeder# Generate an HTML table entry for all the information for the component
93f5b72fdb9ee734caa750b43dd79bbb590dcd73Christian Maeder# in the given directory. This generates a file called 'component-report'
93f5b72fdb9ee734caa750b43dd79bbb590dcd73Christian Maeder# under the components build directory.
328a85c807f2a95c3f147d10b05927eaf862ebebChristian Maederdef gen_reports(workspace, component_dir):
a6db617ca58eb6a0587b6366e913107dfecb71b5Heng Jiang if debug:
06dd4e7c29f33f6122a910719e3bd9062256e397Andy Gimblett print >> sys.stderr, "Processing %s" % component_dir
254df6f22d01eacf7c57b85729e0445747b630d9Christian Maeder
7a3fe82695aa32657693e05712f84d7f81672f2eJonathan von Schroeder try:
5b818f10e11fc79def1fdd5c8a080d64a6438d87Christian Maeder tpno = comp_TPNOs[component_dir]
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers except:
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder tpno = ""
819e29dba060687cf391e444e0f6ff88c1908cc3Christian Maeder
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder re, rm, team = get_owner(component_dir)
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder makefiles = "-f Makefile -f %s/make-rules/component-report" % workspace
a14767aeac3e78ed100f5b75e210ba563ee10dbaChristian Maeder targets = "clean component-hook"
54ea981a0503c396c2923a1c06421c6235baf27fChristian Maeder template = "cd %s; "
aded505f9b42cc38975559c2a5d175ae95de436bChristian Maeder template += "TPNO='%s' "
3e8b136f23ed57d40ee617f49bcac37830b58cabChristian Maeder template += "RESPONSIBLE_ENGINEER='%s' "
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers template += "RESPONSIBLE_MANAGER='%s' "
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder template += "TEAM='%s' "
9e748851c150e1022fb952bab3315e869aaf0214Christian Maeder template += "gmake COMPONENT_HOOK='gmake %s component-report' %s"
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder cmd = template % (component_dir, tpno, re, rm, team, makefiles, targets)
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maeder
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder if debug:
383aa66e5142365fe9b1f88b18c1da5b27cc8c04Christian Maeder print >> sys.stderr, "gen_reports: command: `%s`" % cmd
383aa66e5142365fe9b1f88b18c1da5b27cc8c04Christian Maeder lines = os.popen(cmd).readlines()
383aa66e5142365fe9b1f88b18c1da5b27cc8c04Christian Maeder
383aa66e5142365fe9b1f88b18c1da5b27cc8c04Christian Maeder# Collect all the .../build/component-report files and write them to stdout.
aded505f9b42cc38975559c2a5d175ae95de436bChristian Maederdef write_reports(p5m_dirs, owners_file):
aded505f9b42cc38975559c2a5d175ae95de436bChristian Maeder for p5m_dir in p5m_dirs:
aded505f9b42cc38975559c2a5d175ae95de436bChristian Maeder report = "%s/build/component-report" % p5m_dir
aded505f9b42cc38975559c2a5d175ae95de436bChristian Maeder if debug:
aded505f9b42cc38975559c2a5d175ae95de436bChristian Maeder print >> sys.stderr, "Reading %s" % report
aded505f9b42cc38975559c2a5d175ae95de436bChristian Maeder try:
383aa66e5142365fe9b1f88b18c1da5b27cc8c04Christian Maeder fin = open(report, 'r')
383aa66e5142365fe9b1f88b18c1da5b27cc8c04Christian Maeder lines = fin.readlines()
a14767aeac3e78ed100f5b75e210ba563ee10dbaChristian Maeder fin.close()
a14767aeac3e78ed100f5b75e210ba563ee10dbaChristian Maeder sys.stdout.writelines(lines)
a14767aeac3e78ed100f5b75e210ba563ee10dbaChristian Maeder except:
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder if debug:
aded505f9b42cc38975559c2a5d175ae95de436bChristian Maeder print >> sys.stderr, "Unable to read: %s" % report
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder
54ea981a0503c396c2923a1c06421c6235baf27fChristian Maeder# Write out the final HTML for the components.html web page.
54ea981a0503c396c2923a1c06421c6235baf27fChristian Maederdef write_postamble():
54ea981a0503c396c2923a1c06421c6235baf27fChristian Maeder print postamble
697e63e30aa3c309a1ef1f9357745111f8dfc5a9Christian Maeder
aded505f9b42cc38975559c2a5d175ae95de436bChristian Maeder# Write out a usage message showing valid options to this script.
697e63e30aa3c309a1ef1f9357745111f8dfc5a9Christian Maederdef usage():
f9e0b18852b238ddb649d341194e05d7200d1bbeChristian Maeder print >> sys.stderr, \
aded505f9b42cc38975559c2a5d175ae95de436bChristian Maeder"""
f9e0b18852b238ddb649d341194e05d7200d1bbeChristian MaederUsage:
819e29dba060687cf391e444e0f6ff88c1908cc3Christian Maeder update_man_pages.py [OPTION...]
819e29dba060687cf391e444e0f6ff88c1908cc3Christian Maeder
819e29dba060687cf391e444e0f6ff88c1908cc3Christian Maeder-d, --debug
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder Turn on debugging
254df6f22d01eacf7c57b85729e0445747b630d9Christian Maeder
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder-o, --owners
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder Location of a file containing a list of RE's /RM's per component
254df6f22d01eacf7c57b85729e0445747b630d9Christian Maeder
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder-w --workspace
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder Location of the Userland workspace
254df6f22d01eacf7c57b85729e0445747b630d9Christian Maeder"""
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder sys.exit(1)
aded505f9b42cc38975559c2a5d175ae95de436bChristian Maeder
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maederif __name__ == "__main__":
ac34194a668399bb8ef238da77c3a09e93fb253bChristian Maeder workspace = os.getenv('WS_TOP')
4fc9de0da898448f1d3597ebbd8c04a066464c21Christian Maeder owners_file = "/net/userland.us.oracle.com/gates/private/RM-RE-list.txt"
aded505f9b42cc38975559c2a5d175ae95de436bChristian Maeder
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder try:
1842453990fed8a1bd7a5ac792d7982c1d2bfcd5Christian Maeder opts, args = getopt.getopt(sys.argv[1:], "do:w:",
4fc9de0da898448f1d3597ebbd8c04a066464c21Christian Maeder [ "debug", "owners=", "workspace=" ])
4fc9de0da898448f1d3597ebbd8c04a066464c21Christian Maeder except getopt.GetoptError, err:
1842453990fed8a1bd7a5ac792d7982c1d2bfcd5Christian Maeder print str(err)
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder usage()
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder
986d3f255182539098a97ac86da9eeee5b7a72e3Christian Maeder for opt, arg in opts:
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maeder if opt in [ "-d", "--debug" ]:
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian Maeder debug = True
01e278bdd7dce13b9303ed3d79683d83c89d09f9Liam O'Reilly elif opt in [ "-o", "--owners" ]:
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maeder owners_file = arg
5ad5dffe06818a13e1632b1119fbca7881085fc1Dominik Luecke elif opt in [ "-w", "--workspace" ]:
8c812cd83569e973f10cf69a342424ceabc07af9Christian Maeder workspace = arg
8c812cd83569e973f10cf69a342424ceabc07af9Christian Maeder else:
8c812cd83569e973f10cf69a342424ceabc07af9Christian Maeder assert False, "unknown option"
7a3fe82695aa32657693e05712f84d7f81672f2eJonathan von Schroeder
7a3fe82695aa32657693e05712f84d7f81672f2eJonathan von Schroeder owners = read_owners(owners_file)
7a3fe82695aa32657693e05712f84d7f81672f2eJonathan von Schroeder write_preamble()
7a3fe82695aa32657693e05712f84d7f81672f2eJonathan von Schroeder comp_TPNOs = find_TPNOs(workspace)
05a206508bc898f87fe6ab6e069814df3c29d303Dominik Luecke p5m_dirs = find_p5m_dirs(workspace)
05a206508bc898f87fe6ab6e069814df3c29d303Dominik Luecke for p5m_dir in p5m_dirs:
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder gen_reports(workspace, p5m_dir)
d54cd08a4cfa26256c38d8ed12c343adbfe1a0e3Christian Maeder write_reports(p5m_dirs, owners_file)
d54cd08a4cfa26256c38d8ed12c343adbfe1a0e3Christian Maeder write_postamble()
d54cd08a4cfa26256c38d8ed12c343adbfe1a0e3Christian Maeder sys.exit(0)
3b06e23643a9f65390cb8c1caabe83fa7e87a708Till Mossakowski