| Index: source/test/depstest/dependencies.py
|
| diff --git a/source/test/depstest/dependencies.py b/source/test/depstest/dependencies.py
|
| deleted file mode 100755
|
| index fb1fc2e3b1011a73bda34742e2b8602d44ca4554..0000000000000000000000000000000000000000
|
| --- a/source/test/depstest/dependencies.py
|
| +++ /dev/null
|
| @@ -1,198 +0,0 @@
|
| -#! /usr/bin/python
|
| -# -*- coding: utf-8 -*-
|
| -#
|
| -# Copyright (C) 2011-2014, International Business Machines
|
| -# Corporation and others. All Rights Reserved.
|
| -#
|
| -# file name: dependencies.py
|
| -#
|
| -# created on: 2011may26
|
| -
|
| -"""Reader module for dependency data for the ICU dependency tester.
|
| -
|
| -Reads dependencies.txt and makes the data available.
|
| -
|
| -Attributes:
|
| - files: Set of "library/filename.o" files mentioned in the dependencies file.
|
| - items: Map from library or group names to item maps.
|
| - Each item has a "type" ("library" or "group" or "system_symbols").
|
| - A library or group item can have an optional set of "files" (as in the files attribute).
|
| - Each item can have an optional set of "deps" (libraries & groups).
|
| - A group item also has a "library" name unless it is a group of system symbols.
|
| - The one "system_symbols" item and its groups have sets of "system_symbols"
|
| - with standard-library system symbol names.
|
| - libraries: Set of library names mentioned in the dependencies file.
|
| - file_to_item: Map from a symbol (ushoe.o) to library or group (shoesize)
|
| -"""
|
| -__author__ = "Markus W. Scherer"
|
| -
|
| -# TODO: Support binary items.
|
| -# .txt syntax: binary: tools/genrb
|
| -# item contents: {"type": "binary"} with optional files & deps
|
| -# A binary must not be used as a dependency for anything else.
|
| -
|
| -import sys
|
| -
|
| -files = set()
|
| -items = {}
|
| -libraries = set()
|
| -file_to_item = {}
|
| -
|
| -_line_number = 0
|
| -_groups_to_be_defined = set()
|
| -
|
| -def _CheckLibraryName(name):
|
| - global _line_number
|
| - if not name:
|
| - sys.exit("Error:%d: \"library: \" without name" % _line_number)
|
| - if name.endswith(".o"):
|
| - sys.exit("Error:%d: invalid library name %s" % (_line_number, name))
|
| -
|
| -def _CheckGroupName(name):
|
| - global _line_number
|
| - if not name:
|
| - sys.exit("Error:%d: \"group: \" without name" % _line_number)
|
| - if "/" in name or name.endswith(".o"):
|
| - sys.exit("Error:%d: invalid group name %s" % (_line_number, name))
|
| -
|
| -def _CheckFileName(name):
|
| - global _line_number
|
| - if "/" in name or not name.endswith(".o"):
|
| - sys.exit("Error:%d: invalid file name %s" % (_line_number, name))
|
| -
|
| -def _RemoveComment(line):
|
| - global _line_number
|
| - _line_number = _line_number + 1
|
| - index = line.find("#") # Remove trailing comment.
|
| - if index >= 0: line = line[:index]
|
| - return line.rstrip() # Remove trailing newlines etc.
|
| -
|
| -def _ReadLine(f):
|
| - while True:
|
| - line = _RemoveComment(f.next())
|
| - if line: return line
|
| -
|
| -def _ReadFiles(deps_file, item, library_name):
|
| - global files
|
| - item_files = item.get("files")
|
| - while True:
|
| - line = _ReadLine(deps_file)
|
| - if not line: continue
|
| - if not line.startswith(" "): return line
|
| - if item_files == None: item_files = item["files"] = set()
|
| - for file_name in line.split():
|
| - _CheckFileName(file_name)
|
| - file_name = library_name + "/" + file_name
|
| - if file_name in files:
|
| - sys.exit("Error:%d: file %s listed in multiple groups" % (_line_number, file_name))
|
| - files.add(file_name)
|
| - item_files.add(file_name)
|
| - file_to_item[file_name] = item["name"]
|
| -
|
| -def _IsLibrary(item): return item and item["type"] == "library"
|
| -
|
| -def _IsLibraryGroup(item): return item and "library" in item
|
| -
|
| -def _ReadDeps(deps_file, item, library_name):
|
| - global items, _line_number, _groups_to_be_defined
|
| - item_deps = item.get("deps")
|
| - while True:
|
| - line = _ReadLine(deps_file)
|
| - if not line: continue
|
| - if not line.startswith(" "): return line
|
| - if item_deps == None: item_deps = item["deps"] = set()
|
| - for dep in line.split():
|
| - _CheckGroupName(dep)
|
| - dep_item = items.get(dep)
|
| - if item["type"] == "system_symbols" and (_IsLibraryGroup(dep_item) or _IsLibrary(dep_item)):
|
| - sys.exit(("Error:%d: system_symbols depend on previously defined " +
|
| - "library or library group %s") % (_line_number, dep))
|
| - if dep_item == None:
|
| - # Add this dependency as a new group.
|
| - items[dep] = {"type": "group"}
|
| - if library_name: items[dep]["library"] = library_name
|
| - _groups_to_be_defined.add(dep)
|
| - item_deps.add(dep)
|
| -
|
| -def _AddSystemSymbol(item, symbol):
|
| - exports = item.get("system_symbols")
|
| - if exports == None: exports = item["system_symbols"] = set()
|
| - exports.add(symbol)
|
| -
|
| -def _ReadSystemSymbols(deps_file, item):
|
| - global _line_number
|
| - while True:
|
| - line = _ReadLine(deps_file)
|
| - if not line: continue
|
| - if not line.startswith(" "): return line
|
| - line = line.lstrip()
|
| - if '"' in line:
|
| - # One double-quote-enclosed symbol on the line, allows spaces in a symbol name.
|
| - symbol = line[1:-1]
|
| - if line.startswith('"') and line.endswith('"') and '"' not in symbol:
|
| - _AddSystemSymbol(item, symbol)
|
| - else:
|
| - sys.exit("Error:%d: invalid quoted symbol name %s" % (_line_number, line))
|
| - else:
|
| - # One or more space-separate symbols.
|
| - for symbol in line.split(): _AddSystemSymbol(item, symbol)
|
| -
|
| -def Load():
|
| - """Reads "dependencies.txt" and populates the module attributes."""
|
| - global items, libraries, _line_number, _groups_to_be_defined
|
| - deps_file = open("dependencies.txt")
|
| - try:
|
| - line = None
|
| - current_type = None
|
| - while True:
|
| - while not line: line = _RemoveComment(deps_file.next())
|
| -
|
| - if line.startswith("library: "):
|
| - current_type = "library"
|
| - name = line[9:].lstrip()
|
| - _CheckLibraryName(name)
|
| - if name in items:
|
| - sys.exit("Error:%d: library definition using duplicate name %s" % (_line_number, name))
|
| - libraries.add(name)
|
| - item = items[name] = {"type": "library", "name": name}
|
| - line = _ReadFiles(deps_file, item, name)
|
| - elif line.startswith("group: "):
|
| - current_type = "group"
|
| - name = line[7:].lstrip()
|
| - _CheckGroupName(name)
|
| - if name not in items:
|
| - sys.exit("Error:%d: group %s defined before mentioned as a dependency" %
|
| - (_line_number, name))
|
| - if name not in _groups_to_be_defined:
|
| - sys.exit("Error:%d: group definition using duplicate name %s" % (_line_number, name))
|
| - _groups_to_be_defined.remove(name)
|
| - item = items[name]
|
| - item["name"] = name
|
| - library_name = item.get("library")
|
| - if library_name:
|
| - line = _ReadFiles(deps_file, item, library_name)
|
| - else:
|
| - line = _ReadSystemSymbols(deps_file, item)
|
| - elif line == " deps":
|
| - if current_type == "library":
|
| - line = _ReadDeps(deps_file, items[name], name)
|
| - elif current_type == "group":
|
| - item = items[name]
|
| - line = _ReadDeps(deps_file, item, item.get("library"))
|
| - elif current_type == "system_symbols":
|
| - item = items[current_type]
|
| - line = _ReadDeps(deps_file, item, None)
|
| - else:
|
| - sys.exit("Error:%d: deps before any library or group" % _line_number)
|
| - elif line == "system_symbols:":
|
| - current_type = "system_symbols"
|
| - if current_type in items:
|
| - sys.exit("Error:%d: duplicate entry for system_symbols" % _line_number)
|
| - item = items[current_type] = {"type": current_type, "name": current_type}
|
| - line = _ReadSystemSymbols(deps_file, item)
|
| - else:
|
| - sys.exit("Syntax error:%d: %s" % (_line_number, line))
|
| - except StopIteration:
|
| - pass
|
| - if _groups_to_be_defined:
|
| - sys.exit("Error: some groups mentioned in dependencies are undefined: %s" % _groups_to_be_defined)
|
|
|