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:
@ -4,6 +4,22 @@ import os, sys, getopt, string, xml.dom.minidom, zipfile, md5
|
|||||||
from XmlRoutines import *
|
from XmlRoutines import *
|
||||||
from WorkspaceRoutines 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):
|
def parseMsa(msaFile, spdDir):
|
||||||
|
|
||||||
filelist = [msaFile]
|
filelist = [msaFile]
|
||||||
@ -16,7 +32,6 @@ def parseMsa(msaFile, spdDir):
|
|||||||
"/ModuleSurfaceArea/SourceFiles/Filename",
|
"/ModuleSurfaceArea/SourceFiles/Filename",
|
||||||
"/ModuleSurfaceArea/NonProcessedFiles/Filename" ]
|
"/ModuleSurfaceArea/NonProcessedFiles/Filename" ]
|
||||||
|
|
||||||
|
|
||||||
for xmlPath in xmlPaths:
|
for xmlPath in xmlPaths:
|
||||||
for f in XmlList(msa, xmlPath):
|
for f in XmlList(msa, xmlPath):
|
||||||
filelist.append(str(os.path.join(msaDir, XmlElementData(f))))
|
filelist.append(str(os.path.join(msaDir, XmlElementData(f))))
|
||||||
@ -60,25 +75,25 @@ def makeFarHeader(doc):
|
|||||||
|
|
||||||
header = doc.createElement("FarHeader")
|
header = doc.createElement("FarHeader")
|
||||||
name = doc.createElement("FarName")
|
name = doc.createElement("FarName")
|
||||||
name.appendChild(doc.createTextNode("My New Far"))
|
name.appendChild(doc.createTextNode(far.FarName))
|
||||||
header.appendChild(name)
|
header.appendChild(name)
|
||||||
guidVal = doc.createElement("GuidValue")
|
guidVal = doc.createElement("GuidValue")
|
||||||
guidVal.appendChild(doc.createTextNode(genguid()))
|
guidVal.appendChild(doc.createTextNode(genguid()))
|
||||||
header.appendChild(guidVal)
|
header.appendChild(guidVal)
|
||||||
ver = doc.createElement("Version")
|
ver = doc.createElement("Version")
|
||||||
ver.appendChild(doc.createTextNode("1.0"))
|
ver.appendChild(doc.createTextNode(far.Version))
|
||||||
header.appendChild(ver)
|
header.appendChild(ver)
|
||||||
abstract = doc.createElement("Abstract")
|
abstract = doc.createElement("Abstract")
|
||||||
abstract.appendChild(doc.createTextNode("This is a cool new far."))
|
abstract.appendChild(doc.createTextNode(far.Abstract))
|
||||||
header.appendChild(abstract)
|
header.appendChild(abstract)
|
||||||
desc = doc.createElement("Description")
|
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)
|
header.appendChild(desc)
|
||||||
copy = doc.createElement("Copyright")
|
copy = doc.createElement("Copyright")
|
||||||
copy.appendChild(doc.createTextNode("Copyright (c) Intel Corporation 2006."))
|
copy.appendChild(doc.createTextNode(far.Copyright))
|
||||||
header.appendChild(copy)
|
header.appendChild(copy)
|
||||||
lic = doc.createElement("License")
|
lic = doc.createElement("License")
|
||||||
lic.appendChild(doc.createTextNode("BSD Compatible."))
|
lic.appendChild(doc.createTextNode(far.License))
|
||||||
header.appendChild(lic)
|
header.appendChild(lic)
|
||||||
spec = doc.createElement("Specification")
|
spec = doc.createElement("Specification")
|
||||||
spec.appendChild(doc.createTextNode("FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052"))
|
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.
|
# Create a pretty printer for dumping data structures in a readable form.
|
||||||
# pp = pprint.PrettyPrinter(indent=2)
|
# pp = pprint.PrettyPrinter(indent=2)
|
||||||
|
|
||||||
# Default name for far file.
|
|
||||||
farName = "output.far"
|
|
||||||
|
|
||||||
# Process the command line args.
|
# 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:
|
for o, a in optlist:
|
||||||
if o in ["-h", "--help"]:
|
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
|
%s --far library.far MdePkg/MdePkg.spd
|
||||||
|
|
||||||
The file paths of .spd and .fpd are relative to the WORKSPACE envirnonment
|
The file paths of .spd and .fpd are treated as relative to the WORKSPACE
|
||||||
which must be set to a valid workspace root directory.
|
envirnonment variable which must be set to a valid workspace root directory.
|
||||||
""" % os.path.basename(sys.argv[0])
|
""" % os.path.basename(sys.argv[0])
|
||||||
|
|
||||||
sys.exit()
|
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"]:
|
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
23
Tools/Python/far-template
Normal 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
|
Reference in New Issue
Block a user