Skip to content

Commit 2713bb6

Browse files
committed
Fix wrong package path generated for BasicConstants when recompile basic pipeline. The package path will generated from output argument if no with-package-path argument specified
Change-Id: I1e864bc08d2aa855e44a9fb2a80e453941eefa8b
1 parent 52517ff commit 2713bb6

File tree

1 file changed

+21
-7
lines changed

1 file changed

+21
-7
lines changed

tools/dev/bin/onos-gen-p4-constants

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ import org.onosproject.net.pi.model.PiCounterId;
3232
import org.onosproject.net.pi.model.PiMatchFieldId;
3333
import org.onosproject.net.pi.model.PiTableId;'''
3434

35-
PKG_FMT = 'package org.onosproject.pipelines.%s.impl.behaviour;'
35+
PKG_FMT = 'package %s;'
36+
DEFAULT_PKG_PATH = 'org.onosproject.pipelines.%s'
3637

3738
CLASS_OPEN = 'public final class %s {'
3839
CLASS_CLOSE = '}'
@@ -98,10 +99,10 @@ class ConstantClassGenerator(object):
9899
s1 = re.sub('([a-z0-9])([A-Z])', r'\1_\2', s1).upper()
99100
return s1.replace('.', '_')
100101

101-
def __init__(self, base_name):
102+
def __init__(self, base_name, pkg_path):
102103

103104
self.class_name = base_name.title() + 'Constants'
104-
self.package_name = PKG_FMT % (base_name, )
105+
self.package_name = PKG_FMT % (pkg_path, )
105106
self.java_doc = JAVA_DOC_FMT % (base_name, )
106107

107108
def parse(self, p4info):
@@ -203,32 +204,45 @@ class ConstantClassGenerator(object):
203204

204205
return '\n'.join(lines)
205206

206-
207+
def gen_pkg_path(output, base_name):
208+
if output is not None:
209+
i = output.find('java/')
210+
if i != -1:
211+
pkg_path = output[i+5:]
212+
last_slash = pkg_path.rfind('/')
213+
pkg_path = pkg_path[:last_slash].replace('/','.')
214+
return pkg_path
215+
return DEFAULT_PKG_PATH % (base_name, )
207216
def main():
208217
parser = argparse.ArgumentParser(prog='onos-gen-p4-constants',
209218
description='ONOS P4Info to Java constant generator.')
210219
parser.add_argument('name', help='Name of the constant, will be used as class name')
211220
parser.add_argument('p4info', help='P4Info file')
212221
parser.add_argument('-o', '--output', help='output path', default='-')
222+
parser.add_argument('--with-package-path', help='Specify the java package path', dest='pkg_path')
213223
args = parser.parse_args()
214224

215225
base_name = args.name
216226
file_name = args.p4info
227+
output = args.output
228+
pkg_path = args.pkg_path
229+
if pkg_path is None:
230+
pkg_path = gen_pkg_path(output, base_name)
217231
p4info = p4info_pb2.P4Info()
218232
with open(file_name, 'r') as intput_file:
219233
s = intput_file.read()
220234
tf.Merge(s, p4info)
221235

222-
gen = ConstantClassGenerator(base_name)
236+
gen = ConstantClassGenerator(base_name, pkg_path)
223237
gen.parse(p4info)
224238

225239
java_code = gen.generate_java()
226240

227-
if args.output == '-':
241+
if output == '-':
228242
# std output
229243
print java_code
230244
else:
231-
with open(args.output, 'w') as output_file:
245+
with open(output, 'w') as output_file:
232246
output_file.write(java_code)
233247

234248

0 commit comments

Comments
 (0)