Fix: vppapigen make build fails on fresh install 91/14791/5
authorPaul Vinciguerra <pvinci@vinciconsulting.com>
Wed, 12 Sep 2018 20:40:13 +0000 (13:40 -0700)
committerDamjan Marion <dmarion@me.com>
Thu, 13 Sep 2018 00:32:35 +0000 (00:32 +0000)
Steps to reproduce:
  vagrant@localhost:/vagrant$ build-root/vagrant/build.sh
  ...
  @@@@ Building vpp in /vagrant/build-root/build-vpp-native/vpp @@@@
  [51/1169] Generating API header /vagrant/build-root/build-vpp-native/vpp/vlibmemory/memclnt.api.json
  FAILED: cd /vagrant/build-root/build-vpp-native/vpp/vlibmemory && mkdir -p /vagrant/build-root/build-vpp-native/vpp/vlibmemory && /vagrant/src/tools/vppapigen/vppapigen --includedir /vagrant/src --input /vagrant/src/vlibmemory/memclnt.api JSON --output /vagrant/build-root/build-vpp-native/vpp/vlibmemory/memclnt.api.json
  AttributeError: 'module' object has no attribute 'dumps'

  This seems to be due to JSON.py namespace colliding with the standard lib json.py

Change-Id: If389e4e05ef0c166b0c2b3bef7ec0185298679a8
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
build-data/platforms.mk
extras/rpm/vpp.spec
src/tools/vppapigen/CMakeLists.txt
src/tools/vppapigen/vppapigen.py
src/tools/vppapigen/vppapigen_c.py [moved from src/tools/vppapigen/C.py with 100% similarity]
src/tools/vppapigen/vppapigen_json.py [moved from src/tools/vppapigen/JSON.py with 100% similarity]

index fafddc6..d067202 100644 (file)
@@ -78,9 +78,9 @@ install-deb: $(patsubst %,%-find-source,$(ROOT_PACKAGES))
        : dev package needs a couple of additions ;                     \
        echo ../$(INSTALL_PREFIX)$(ARCH)/vpp/bin/vppapigen /usr/bin     \
           >> deb/debian/vpp-dev.install ;                              \
-       echo ../$(INSTALL_PREFIX)$(ARCH)/vpp/share/vpp/C.py /usr/share/vpp  \
+       echo ../$(INSTALL_PREFIX)$(ARCH)/vpp/share/vpp/vppapigen_c.py /usr/share/vpp  \
           >> deb/debian/vpp-dev.install ;                              \
-       echo ../$(INSTALL_PREFIX)$(ARCH)/vpp/share/vpp/JSON.py /usr/share/vpp \
+       echo ../$(INSTALL_PREFIX)$(ARCH)/vpp/share/vpp/vppapigen_json.py /usr/share/vpp \
           >> deb/debian/vpp-dev.install ;                              \
        echo ../../extras/japi/java/jvpp/gen/jvpp_gen.py /usr/bin       \
           >> deb/debian/vpp-dev.install ;                              \
index 1339751..a66b46c 100644 (file)
@@ -263,8 +263,8 @@ for i in $(ls %{_mu_build_dir}/../extras/japi/java/jvpp/gen/jvppgen/*.py); do
    install -p -m666 ${i} %{buildroot}%{python2_sitelib}/jvppgen
 done;
 
-install -p -m 644 %{_mu_build_dir}/../src/tools/vppapigen/C.py %{buildroot}/usr/share/vpp
-install -p -m 644 %{_mu_build_dir}/../src/tools/vppapigen/JSON.py %{buildroot}/usr/share/vpp
+install -p -m 644 %{_mu_build_dir}/../src/tools/vppapigen/vppapigen_c.py %{buildroot}/usr/share/vpp
+install -p -m 644 %{_mu_build_dir}/../src/tools/vppapigen/vppapigen_json.py %{buildroot}/usr/share/vpp
 
 # sample plugin
 mkdir -p -m755 %{buildroot}/usr/share/doc/vpp/examples/sample-plugin/sample
index 0d982fe..ce25cb0 100644 (file)
@@ -21,4 +21,4 @@ install(
   COMPONENT vpp-dev
 )
 
-install(FILES C.py JSON.py DESTINATION share/vpp COMPONENT vpp-dev)
+install(FILES vppapigen_c.py vppapigen_json.py DESTINATION share/vpp COMPONENT vpp-dev)
index f3094ec..9d04ec2 100755 (executable)
@@ -785,14 +785,14 @@ def main():
                     '/../share/vpp/')
         for c in cand:
             c += '/'
-            if os.path.isfile(c + args.output_module + '.py'):
+            if os.path.isfile('{}vppapigen_{}.py'.format(c, args.output_module.lower())):
                 pluginpath = c
                 break
     else:
         pluginpath = args.pluginpath + '/'
     if pluginpath == '':
         raise Exception('Output plugin not found')
-    module_path = pluginpath + args.output_module + '.py'
+    module_path = '{}vppapigen_{}.py'.format(pluginpath, args.output_module.lower())
 
     try:
         plugin = imp.load_source(args.output_module, module_path)