if len( args ) == 1:
platformdir = args[0]
- # This gives the whole string when there's no / in platformdir
- platform = platformdir[platformdir.rfind( "/" ) + 1:]
+ platform = os.path.basename(platformdir)
+ # In case platformdir was specified with a trailing path separator
+ if not platform:
+ platformdir = os.path.dirname(platformdir)
+ platform = os.path.basename(platformdir)
+ familydir = os.path.dirname(platformdir)
+ if familydir and not os.path.isfile(os.path.join(familydir, '.family')):
+ familydir = ""
elif len( args ) == 0:
platformdir = ""
platform = ""
+ familydir = ""
else:
stderr.write( "Usage: tos-storage-stm25p [-t] <platform directory>\n" )
sub = platform
elif c == 'P':
sub = platformdir
+ elif c == 'F':
+ if not familydir:
+ nfail( "invalid include-path substitution character " + c + "; " + \
+ platform + " not in a family" )
+ sub = familydir
elif c == 'T':
sub = Popen( ["ncc", "-print-tosdir"], stdout=PIPE ).communicate( )[0]
sub = sub[:-1] # remove newline
NUM_SECTORS = 0
SECTOR_SIZE = 0
-def parseHeader( dotplatform ):
- """ Return an ordered list of paths from the dotplatform file """
+def parseHeader( dotfile ):
+ """ Return an ordered list of paths from the dotfile """
paths = []
inArray = False
p = re.compile('push\s*\(\s*@includes,\s*qw\s*\(');
q = re.compile('\)\s*\)\s*;');
try:
- with open(dotplatform, 'r') as file:
+ with open(dotfile, 'r') as file:
for line in file:
path = line.strip()
if path:
paths.append(path)
return paths
except:
- return None
+ return []
def findFile( paths, filename ):
""" Find the first occurrence of 'filename' in the list of paths given. """
if vars.has_key(m.group(1)):
vars[m.group(1)] = m.group(2)
-paths = parseHeader(platformdir + '/.platform')
+paths = parseHeader(os.path.join(familydir, '.family')) + \
+ parseHeader(os.path.join(platformdir, '.platform'))
if paths:
path = findFile(paths, HEADER_FILE)
if path: