tools/gen-components
author Rich Burridge <rich.burridge@oracle.com>
Fri, 16 Nov 2012 08:55:04 -0800
changeset 1053 accc15fa8762
parent 1048 e82fa02a4d16
child 1058 34d7aaa03423
permissions -rwxr-xr-x
15878378 Auto-generation of Userland gate list - Phase 2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1048
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     1
#!/usr/bin/python
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     2
#
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     3
# CDDL HEADER START
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     4
#
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     5
# The contents of this file are subject to the terms of the
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     6
# Common Development and Distribution License (the "License").
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     7
# You may not use this file except in compliance with the License.
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     8
#
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     9
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    10
# or http://www.opensolaris.org/os/licensing.
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    11
# See the License for the specific language governing permissions
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    12
# and limitations under the License.
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    13
#
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    14
# When distributing Covered Code, include this CDDL HEADER in each
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    15
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    16
# If applicable, add the following below this CDDL HEADER, with the
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    17
# fields enclosed by brackets "[]" replaced with your own identifying
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    18
# information: Portions Copyright [yyyy] [name of copyright owner]
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    19
#
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    20
# CDDL HEADER END
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    21
#
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    22
# Copyright (c) 2012, Oracle and/or it's affiliates.  All rights reserved.
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    23
#
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    24
#
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    25
# gen_components.py
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    26
# A simple program to generate (on stdout) the component.html web page 
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    27
# found at: http://userland.us.oracle.com/components.html
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    28
#
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    29
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    30
import getopt
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    31
import os
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    32
import sys
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    33
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    34
debug = False
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    35
1053
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
    36
# Hashtable of RE's / RM's keyed by component path.
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
    37
owners = {}
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
    38
1048
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    39
# Initial HTML for the generated web page.
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    40
preamble = """
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    41
<html>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    42
<head>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    43
    <style type='text/css' media='screen'>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    44
        @import '/css/demo_table.css';
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    45
        @import '/css/ColVis.css';
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    46
        @import '/css/ColReorder.css';
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    47
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    48
            tr.even:hover,  tr.even:hover td.sorting_1 ,
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    49
            tr.odd:hover,  tr.odd:hover td.sorting_1 {
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    50
                            background-color: gold;
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    51
            }
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    52
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    53
    </style>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    54
    <script type='text/javascript' src='js/jquery.js'></script>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    55
    <script type='text/javascript' src='js/jquery.dataTables.js'></script>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    56
    <script type='text/javascript' src='js/ColReorder.js'></script>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    57
    <script type='text/javascript' src='js/ColVis.js'></script>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    58
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    59
    <script>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    60
        $(document).ready(function() {
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    61
            $('#components').dataTable({
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    62
                "sDom": 'C<"clear">Rlfrtip',
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    63
                bPaginate: true,
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    64
                bFilter: true,
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    65
                bSort: true,
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    66
                iDisplayLength: -1,
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    67
                aLengthMenu: [ [ 10, 50, -1], [ 10, 50, 'All'] ]
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    68
            });
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    69
        });
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    70
    </script>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    71
</head>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    72
<body>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    73
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    74
<h1>Userland Components</h1>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    75
<p>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    76
<table align='center' id='components'>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    77
<thead>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    78
<tr>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    79
    <th>Component</th>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    80
    <th>Version</th>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    81
    <th>Gate Path</th>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    82
    <th>Package(s)</th>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    83
    <th>ARC Case(s)</th>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    84
    <th>License(s)</th>
1053
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
    85
    <th>RE</th>
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
    86
    <th>RM</th>
1048
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    87
</tr>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    88
</thead>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    89
<tbody>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    90
"""
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    91
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    92
# Final HTML for the generated web page.
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    93
postamble = """
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    94
</tr>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    95
</tbody>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    96
</table>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    97
</body>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    98
</html>
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    99
"""
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   100
1053
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   101
# Return a hashtable of RE's / RM's keyed by component path.
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   102
def read_owners(owners_file):
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   103
    if debug:
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   104
        print >> sys.stderr, "Reading %s" % owners_file
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   105
    try:
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   106
        fin = open(owners_file, 'r')
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   107
        lines = fin.readlines()
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   108
        fin.close()
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   109
    except:
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   110
        if debug:
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   111
            print >> sys.stderr, "Unable to read owners file: %s" % owners_file
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   112
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   113
    owners = {}
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   114
    for line in lines:
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   115
        line = line[:-1]
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   116
        component, re, rm = line.split("|")
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   117
        owners[component] = [ re, rm ]
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   118
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   119
    return owners
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   120
1048
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   121
# Return a sorted list of the directories containing one or more .p5m files.
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   122
def find_p5m_dirs(workspace):
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   123
    p5m_dirs = []
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   124
    for dir, _, files in os.walk(workspace + "/components"):
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   125
        for file in files:
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   126
            if file.endswith(".p5m"):
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   127
                p5m_dirs.append(dir)
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   128
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   129
    return sorted(list(set(p5m_dirs)))
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   130
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   131
# Write out the initial HTML for the components.html web page.
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   132
def write_preamble():
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   133
    print preamble
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   134
1053
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   135
# Return the RE / RM for this component.
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   136
def get_re_and_rm(p5m_dir):
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   137
    re_and_rm = [ "Unknown", "Unknown" ]
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   138
    component_path = ""
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   139
    started = False
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   140
    tokens = p5m_dir.split("/")
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   141
    for token in tokens:
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   142
        if started:
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   143
            component_path += token + "/"
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   144
        if token == "components":
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   145
            started = True
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   146
    component_path = component_path[:-1]
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   147
    if component_path in owners:
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   148
        re_and_rm = owners[component_path]
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   149
    if debug:
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   150
        print >> sys.stderr, "Component path: ", component_path,
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   151
        print >> sys.stderr, "RE / RM: ", re_and_rm
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   152
    
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   153
    return re_and_rm
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   154
1048
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   155
# Generate an HTML table entry for all the information for the component
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   156
# in the given directory. This generates a file called 'component-report'
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   157
# under the components build directory.
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   158
def gen_reports(workspace, component_dir):
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   159
    if debug:
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   160
        print >> sys.stderr, "Processing %s" % component_dir
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   161
1053
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   162
    re, rm = get_re_and_rm(component_dir)
1048
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   163
    makefiles = "-f Makefile -f %s/make-rules/component-report" % workspace
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   164
    targets = "clean component-hook"
1053
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   165
    cmd = "cd %s; RESPONSIBLE_ENGINEER='%s' RESPONSIBLE_MANAGER='%s' gmake COMPONENT_HOOK='gmake %s component-report' %s" % \
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   166
        (component_dir, re, rm, makefiles, targets)
1048
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   167
1053
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   168
    if debug:
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   169
        print >> sys.stderr, "gen_reports: command: `%s`" % cmd
1048
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   170
    lines = os.popen(cmd).readlines()
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   171
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   172
# Collect all the .../build/component-report files and write them to stdout.
1053
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   173
def write_reports(p5m_dirs, owners_file):
1048
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   174
    for p5m_dir in p5m_dirs:
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   175
        report = "%s/build/component-report" % p5m_dir
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   176
        if debug:
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   177
            print >> sys.stderr, "Reading %s" % report
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   178
        try:
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   179
            fin = open(report, 'r')
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   180
            lines = fin.readlines()
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   181
            fin.close()
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   182
            sys.stdout.writelines(lines)
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   183
        except:
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   184
            if debug:
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   185
                print >> sys.stderr, "Unable to read: %s" % report
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   186
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   187
# Write out the final HTML for the components.html web page.
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   188
def write_postamble():
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   189
    print postamble
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   190
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   191
# Write out a usage message showing valid options to this script.
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   192
def usage():
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   193
    print  >> sys.stderr, \
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   194
"""
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   195
Usage: 
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   196
      update_man_pages.py [OPTION...]
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   197
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   198
-d, --debug
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   199
      Turn on debugging
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   200
1053
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   201
-o, --owners
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   202
      Location of a file containing a list of RE's /RM's per component
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   203
1048
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   204
-w --workspace
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   205
      Location of the Userland workspace
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   206
"""
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   207
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   208
    sys.exit(1)
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   209
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   210
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   211
if __name__ == "__main__":
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   212
    workspace = os.getenv('WS_TOP')
1053
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   213
    owners_file = "/net/userland.us.oracle.com/gates/private/RM-RE-list.txt"
1048
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   214
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   215
    try:
1053
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   216
        opts, args = getopt.getopt(sys.argv[1:], "do:w:",
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   217
            [ "debug", "owners=", "workspace=" ])
1048
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   218
    except getopt.GetoptError, err:
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   219
        print str(err)
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   220
        usage()
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   221
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   222
    for opt, arg in opts:
1053
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   223
        if opt in [ "-d", "--debug" ]:
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   224
            debug = True
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   225
        elif opt in [ "-o", "--owners" ]:
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   226
            owners_file = arg
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   227
        elif opt in [ "-w", "--workspace" ]:
1048
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   228
            workspace = arg
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   229
        else:
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   230
            assert False, "unknown option"
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   231
 
1053
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   232
    owners = read_owners(owners_file)
1048
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   233
    write_preamble()
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   234
    p5m_dirs = find_p5m_dirs(workspace)
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   235
    for p5m_dir in p5m_dirs:
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   236
        gen_reports(workspace, p5m_dir)
1053
accc15fa8762 15878378 Auto-generation of Userland gate list - Phase 2
Rich Burridge <rich.burridge@oracle.com>
parents: 1048
diff changeset
   237
    write_reports(p5m_dirs, owners_file)
1048
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   238
    write_postamble()
e82fa02a4d16 15863968 Auto-generation of Userland gate list - Phase 1.
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   239
    sys.exit(0)