Added a template mechanism to act as the user interface in far creation.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2124 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
bbahnsen 2006-12-21 01:32:37 +00:00
parent e53a7e1bc9
commit fb96878ec4
2 changed files with 58 additions and 15 deletions

View File

@ -4,6 +4,22 @@ import os, sys, getopt, string, xml.dom.minidom, zipfile, md5
from XmlRoutines import *
from WorkspaceRoutines import *
class Far:
"""This class is used to collect arbitrarty data from the template file."""
def __init__(far):
"""Assign the default values for the far fields."""
far.FileName = "output.far"
far.FarName=""
far.Version=""
far.License=""
far.Description=""
far.Copyright=""
far.SpdFiles=""
far.FpdFile=""
far.ExtraFile=""
far = Far()
def parseMsa(msaFile, spdDir):
filelist = [msaFile]
@ -16,7 +32,6 @@ def parseMsa(msaFile, spdDir):
"/ModuleSurfaceArea/SourceFiles/Filename",
"/ModuleSurfaceArea/NonProcessedFiles/Filename" ]
for xmlPath in xmlPaths:
for f in XmlList(msa, xmlPath):
filelist.append(str(os.path.join(msaDir, XmlElementData(f))))
@ -60,25 +75,25 @@ def makeFarHeader(doc):
header = doc.createElement("FarHeader")
name = doc.createElement("FarName")
name.appendChild(doc.createTextNode("My New Far"))
name.appendChild(doc.createTextNode(far.FarName))
header.appendChild(name)
guidVal = doc.createElement("GuidValue")
guidVal.appendChild(doc.createTextNode(genguid()))
header.appendChild(guidVal)
ver = doc.createElement("Version")
ver.appendChild(doc.createTextNode("1.0"))
ver.appendChild(doc.createTextNode(far.Version))
header.appendChild(ver)
abstract = doc.createElement("Abstract")
abstract.appendChild(doc.createTextNode("This is a cool new far."))
abstract.appendChild(doc.createTextNode(far.Abstract))
header.appendChild(abstract)
desc = doc.createElement("Description")
desc.appendChild(doc.createTextNode("This is a cool new far. It can do great things."))
desc.appendChild(doc.createTextNode(far.Description))
header.appendChild(desc)
copy = doc.createElement("Copyright")
copy.appendChild(doc.createTextNode("Copyright (c) Intel Corporation 2006."))
copy.appendChild(doc.createTextNode(far.Copyright))
header.appendChild(copy)
lic = doc.createElement("License")
lic.appendChild(doc.createTextNode("BSD Compatible."))
lic.appendChild(doc.createTextNode(far.License))
header.appendChild(lic)
spec = doc.createElement("Specification")
spec.appendChild(doc.createTextNode("FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052"))
@ -193,11 +208,8 @@ if __name__ == '__main__':
# Create a pretty printer for dumping data structures in a readable form.
# pp = pprint.PrettyPrinter(indent=2)
# Default name for far file.
farName = "output.far"
# Process the command line args.
optlist, args = getopt.getopt(sys.argv[1:], 'hf:', [ 'far=', 'help'])
optlist, args = getopt.getopt(sys.argv[1:], 'hf:t:', [ 'template=', 'far=', 'help'])
for o, a in optlist:
if o in ["-h", "--help"]:
@ -207,12 +219,20 @@ You may give the name of the far with a -f or --far option. For example:
%s --far library.far MdePkg/MdePkg.spd
The file paths of .spd and .fpd are relative to the WORKSPACE envirnonment
which must be set to a valid workspace root directory.
The file paths of .spd and .fpd are treated as relative to the WORKSPACE
envirnonment variable which must be set to a valid workspace root directory.
""" % os.path.basename(sys.argv[0])
sys.exit()
if o in ["-t", "--template"]:
# The template file is processed first, so that command line options can
# override it.
templateName = a
execfile(templateName)
if o in ["-f", "--far"]:
farName = a
far.FileName = a
if os.path.exists(far.FileName):
print "Error: File %s exists. Not overwriting." % far.FileName
sys.exit()
makeFar(args, farName)
makeFar(args, far.FileName)

23
Tools/Python/far-template Normal file
View File

@ -0,0 +1,23 @@
# This file is a template to be used in creating a Framework Archive Manifest.
# Each entry can be assigned to a string, which is quoted, or to a string that
# spans mutliple lines, which is triple quoted.
# This file should be passed as a command line argument to the MkFar.py script.
# It is used to help the user control how the far is created.
far.FileName = "my.far"
far.FarName = "My Far"
far.Version = "0.3"
far.License="""This program and the accompanying materials are licensed and made
available under the terms and conditions of the BSD License which accompanies
this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER
THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF
ANY KIND, EITHER EXPRESS OR IMPLIED."""
far.Description="""This Package provides headers and libraries that conform to
my wishes."""
far.Copyright="Copyright (c) 2006, My Corporation."
far.SpdFiles=""
far.FpdFile=""
far.ExtraFile=""
# vim:syntax=python