Skip to content

Commit

Permalink
build: updated featuretool that does no longer require the .nedfolder…
Browse files Browse the repository at this point in the history
…s file
  • Loading branch information
rhornig committed Apr 6, 2016
1 parent 26c6698 commit 5113cf8
Showing 1 changed file with 68 additions and 24 deletions.
92 changes: 68 additions & 24 deletions inet_featuretool
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ root directory where the following files are present:
defines_parser = subparsers.add_parser('defines', help='Print the compiler macros that can be used as a header file (i.e. the -DWITH_FEATURE options from the project features)')

# isenabled command
isenabled_parser = subparsers.add_parser('isenabled', help='Tests whether the specified features are enabled and returns with 0 exit code.')
isenabled_parser = subparsers.add_parser('isenabled', help='Returns true if the specified feature(s) are enabled, and false otherwise.')
isenabled_parser.add_argument('features', nargs='+',
help='feature list',
)
Expand Down Expand Up @@ -259,7 +259,14 @@ root directory where the following files are present:

emptyline = re.compile(r'^\s*$')
check = re.compile(r'^\-?([a-zA-Z0-9_]+\.)*[a-zA-Z0-9_]+$')
pkgchk = re.compile(r'^package\s+(([a-zA-Z0-9_]+\.)*[a-zA-Z0-9_]+);')

if not os.path.isfile(NEDFOLDERSFILE):
# warn("the "+NEDFOLDERSFILE+" file is missing.")
nedfilename = './package.ned'
prefix = self.getPrefixFromPackageNedFile(nedfilename)
self.nedfolders.append(NedFolder('.', '.', prefix, 0))
return

try:
nedfoldersfile = open(NEDFOLDERSFILE, 'r')
except IOError as e:
Expand All @@ -277,36 +284,43 @@ root directory where the following files are present:
elif line[0] == '-':
pass # ignore omnet 4.x exclusion lines
else:
path = line.replace('.', '/')
if line == '.':
path = line
else:
path = line.replace('.', '/')
prefix = ''
nedfilename = path+'/package.ned'
if os.path.isfile(nedfilename):
try:
with open(nedfilename, 'r') as nedfile:
for nedline in nedfile:
m = pkgchk.match(nedline)
if m:
prefix = m.group(1)
break
except IOError as e:
fail("file error occurred when reading the {}: {}".format(nedfilename, e))
prefix = self.getPrefixFromPackageNedFile(nedfilename)
self.nedfolders.append(NedFolder(line, path, prefix, ord))
nedfoldersfile.close()
except IOError as e:
fail("error occurred when reading the {} file: {}".format(NEDFOLDERSFILE, e))

############################
def getPrefixFromPackageNedFile(self, nedfilename):
pkgchk = re.compile(r'^package\s+(([a-zA-Z0-9_]+\.)*[a-zA-Z0-9_]+);')

if os.path.isfile(nedfilename):
try:
with open(nedfilename, 'r') as nedfile:
for nedline in nedfile:
m = pkgchk.match(nedline)
if m:
prefix = m.group(1)
return prefix
except IOError as e:
fail("error reading {}: {}".format(nedfilename, e))
return ''

############################
def readNedExclusionsFile(self):
# read nedfolders file:
# read nedexclusions file:
self.nedfoldersExcluded = []

if not os.path.isfile(NEDEXCLUSIONSFILE):
if self.fixingMode or self.autoFixingMode:
# warn("the "+NEDEXCLUSIONSFILE+" file is missing.")
return
else:
fail("the "+NEDEXCLUSIONSFILE+" file is missing.")
# warn("the "+NEDEXCLUSIONSFILE+" file is missing.")
return

try:
nedexclusionsfile = open(NEDEXCLUSIONSFILE, 'r')
except IOError as e:
Expand Down Expand Up @@ -368,7 +382,7 @@ root directory where the following files are present:

if not os.path.isfile(FEATURESTATEFILE):
if (self.fixingMode or self.autoFixingMode):
# warn("the .featurestate file does not exists. Using defaults.")
# warn("the .featurestate file does not exist. Using defaults.")
# generate default featurestate
for fk, feature in self.sortedFeatures:
fs = FeatureState(feature.id, feature.initiallyEnabled, feature.ord)
Expand All @@ -377,7 +391,7 @@ root directory where the following files are present:
if self.fixingMode:
self.fsChanged = True
else:
fail("the "+FEATURESTATEFILE+" file does not exists.")
fail("the "+FEATURESTATEFILE+" file does not exist.")
else:
try:
fsFile = open(FEATURESTATEFILE, 'r')
Expand Down Expand Up @@ -443,6 +457,33 @@ root directory where the following files are present:
return result


############################
def checkFeatureNedFolders(self, feature):
retval = True
for nedPackage in feature.nedPackages:
foundNedPackageFolder = False
for nedfolder in self.nedfolders:
if nedfolder.isSubpackage(nedPackage):
packageSuffix = nedPackage[len(nedfolder.prefix):]
folder = nedfolder.path + '/' + packageSuffix.replace('.', '/')
if os.path.exists(folder):
foundNedPackageFolder = True
if not foundNedPackageFolder:
print("opp_featuretool: Error: NED package '{}' in feature '{}' was not found.".format(nedPackage, feature.id), file=sys.stderr)
retval = False
return retval


############################
def verifyFeaturesNedFolders(self):
ok = True
for fid, feature in self.sortedFeatures:
if not self.checkFeatureNedFolders(feature):
ok = False
if not ok:
fail("Check whether all NED folders are set properly (in the {} file) and all directories corresponding to the NED packages defined in the {} file do exist.".format(NEDFOLDERSFILE, FEATURESFILE))


############################
def doListCommand(self):
self.doValidateCommand()
Expand Down Expand Up @@ -725,7 +766,8 @@ root directory where the following files are present:
if len(featureUnknownList) > 0:
fail("Unknown feature(s): {}.".format((", ".join(sorted(featureUnknownList)))))
if len(featureOnList) > 0:
self.printIfVerbose(2, "Disabled feature(s): {}.".format((", ".join(sorted(featureOnList)))))
if self.args.verbose >= 2:
print("Disabled feature(s): {}.".format((", ".join(sorted(featureOnList)))), file=sys.stderr)
sys.exit(1)
self.printIfVerbose(1, "Feature(s) {} are enabled.".format((", ".join(self.args.features))))
sys.exit(0)
Expand All @@ -746,11 +788,13 @@ root directory where the following files are present:
self.autoFixingMode = (self.args.command != "validate")
self.fixingMode = (self.args.command == "repair")

# read nedfolders file:
self.readNedFoldersFile()

# read feature file
self.readFeatures()

# read nedfolders file:
self.readNedFoldersFile()
self.verifyFeaturesNedFolders()

if self.args.command == 'reset':
self.doResetCommand()
Expand Down

0 comments on commit 5113cf8

Please sign in to comment.