Clean up vpp build bootstrap step 23/11123/7
authorDave Barach <dave@barachs.net>
Tue, 13 Mar 2018 16:54:43 +0000 (12:54 -0400)
committerDamjan Marion <dmarion.lists@gmail.com>
Wed, 14 Mar 2018 19:06:16 +0000 (19:06 +0000)
Net of rewriting vppapigen in python-ply, there's no need to compile
vppinfra.

Install a copy of vppapigen in .../build-root/tools/bin, so
the sample plugin build will work. Rationalize suffix-rules.mk.

Add clang, clang++ links to .../build-root/ccache-bin.

Change-Id: Ib4017848b7767b6054238ea544ee5319667c3659
Signed-off-by: Dave Barach <dave@barachs.net>
Makefile
build-root/Makefile
build-root/bootstrap.sh
build-root/packages/src.mk [deleted file]
build-root/packages/tools.mk [deleted file]
build-root/scripts/set-rpath [moved from build-root/packages/vppinfra.mk with 57% similarity, mode: 0755]
src/examples/sample-plugin/Makefile.am
src/suffix-rules.mk

index b3eb9cc..8168b94 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -262,8 +262,13 @@ else
        @mkdir -p $(BR)/tools/ccache-bin
        @ln -s /usr/bin/ccache $(BR)/tools/ccache-bin/gcc
        @ln -s /usr/bin/ccache $(BR)/tools/ccache-bin/g++
+       @ln -s /usr/bin/ccache $(BR)/tools/ccache-bin/clang
+       @ln -s /usr/bin/ccache $(BR)/tools/ccache-bin/clang++
+       @mkdir -p $(BR)/tools/bin
+       @rm -f $(BR)/tools/bin/vppapigen
+       @ln -s $(WS_ROOT)/src/tools/vppapigen/vppapigen \
+              $(BR)/tools/bin/vppapigen
 endif
-       @make -C $(BR) V=$(V) is_build_tool=yes tools-install
        @touch $@
 
 bootstrap: $(BR)/.bootstrap.ok
@@ -327,7 +332,7 @@ dist:
        @ln -rs $(DIST_FILE).xz $(BR)/vpp-latest.tar.xz
 
 build: $(BR)/.bootstrap.ok
-       $(call make,$(PLATFORM)_debug,$(addsuffix -install,$(TARGETS)))
+       $(call make,$(PLATFORM),$(addsuffix -install,$(TARGETS)))
 
 wipedist:
        @$(RM) $(BR)/*.tar.xz
index 8154ecd..9190803 100644 (file)
@@ -929,11 +929,7 @@ install-packages: $(patsubst %,%-find-source,$(ROOT_PACKAGES))
              basic_system                                                      \
              $(ROOT_PACKAGES)) || exit 1;                                      \
        $(call build_msg_fn, Relocating ELF executables to run in $${d}) ;      \
-       find $${d} -type f                                                      \
-           -exec elftool quiet in '{}' out '{}'                                \
-               set-interpreter                                                 \
-                   $${d}/$(arch_lib_dir)/$(DYNAMIC_LINKER)                     \
-               set-rpath $${d}/$(arch_lib_dir):$${d}/lib ';' ;                 \
+       scripts/set-rpath $${d} $${d}/$(arch_lib_dir) ;                         \
        : strip symbols from files ;                                            \
        if [ $${strip_symbols:-no} = 'yes' ] ; then                             \
            $(call build_msg_fn, Stripping symbols from files) ;                \
@@ -968,11 +964,7 @@ $(PLATFORM_IMAGE_DIR)/ro.img ro-image: $(patsubst %,%-find-source,$(ROOT_PACKAGE
          : make dev directory ;                                        \
          $(linuxrc_makedev) ;                                          \
          echo @@@@ Relocating ELF executables to run in / @@@@ ;       \
-         find $${d} -type f                                            \
-             -exec elftool quiet in '{}' out '{}'                      \
-               set-interpreter                                         \
-                   /$(arch_lib_dir)/$(DYNAMIC_LINKER)                  \
-               set-rpath /$(arch_lib_dir):/lib ';' ;                   \
+         scripts/set-rpath /$(arch_lib_dir):/lib ;                     \
          : strip symbols from files ;                                  \
          if [ '$${strip_symbols:-yes}' = 'yes' ] ; then                \
              echo @@@@ Stripping symbols from files @@@@ ;             \
index 3f71cef..c3b355b 100755 (executable)
@@ -38,28 +38,22 @@ EOF
 
 # regenerate tools/ccache-bin
 rm -rf tools/ccache-bin
-mkdir -p tools/ccache-bin
+mkdir -p tools/ccache-bin tools/bin
 
 if [ ! -f /usr/bin/ccache ] ; then
-    echo Please install ccache AYEC and re-run this script
+    echo CCACHE is required. Please install it!
+    exit 1
 fi
 
 cd tools/ccache-bin
-for c in gcc g++
-    do
-    if [ -f /usr/bin/ccache ] ; then
-        ln -s /usr/bin/ccache $c
-    else
-        ln -s /usr/bin/gcc
-    fi
+for c in gcc g++ clang clang++
+do
+    ln -s /usr/bin/ccache $c
 done
-
-cd $wsroot
+cd ../
+ln -s $wsroot/src/tools/vppapigen/vppapigen  \
+      $build_root/tools/bin/vppapigen
 
 cd $build_root
-echo Compile native tools
-for tool in tools
-do
-    make V=0 is_build_tool=yes $tool-install
-done
 
+exit 0
diff --git a/build-root/packages/src.mk b/build-root/packages/src.mk
deleted file mode 100644 (file)
index 4f7e823..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (c) 2015 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# nothing
-
-
-
diff --git a/build-root/packages/tools.mk b/build-root/packages/tools.mk
deleted file mode 100644 (file)
index 7db04e6..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright (c) 2015 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-tools_source = src
-tools_configure_args = --disable-vlib --disable-svm --disable-japi
-
old mode 100644 (file)
new mode 100755 (executable)
similarity index 57%
rename from build-root/packages/vppinfra.mk
rename to build-root/scripts/set-rpath
index 40d9c73..f20ff3f
@@ -1,3 +1,5 @@
+#!/bin/bash
+
 # Copyright (c) 2015 Cisco and/or its affiliates.
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+if [ -z $1 ]; then
+       echo "Please specify path"
+       exit 1
+fi
+
+which chrpath &> /dev/null
+
+if [ $? -ne 0 ] ; then
+       echo "Please install chrpath tool"
+       exit 1
+fi
+
+cd $1
 
-# nothing
+libs=$(find * -type f -name \*.so\*)
+execs=$(find * -type f -path bin/\* )
 
+echo "Setting RPATH to $2 ..."
 
+for i in $libs $execs; do
+       # in case non-ELF file is found
+       chrpath $i 2> /dev/null > /dev/null
+       if [ $? -eq 0 ] ; then
+               echo $i
+               chrpath -r $2
+       fi
+done
 
index 5c279c4..1825a8f 100644 (file)
@@ -31,12 +31,13 @@ vpppluginsdir = ${libdir}/vpp_plugins
 include sample.am
 
 %.api.h: %.api
-       mkdir -p `dirname $@` ; \
+       @echo "  APIGEN  " $@ ;                 \
+       mkdir -p `dirname $@` ;                 \
        vppapigen --input $^ --output $@
 
 %.api.json: %.api
-       @echo "  JSON APIGEN  " $@ ;                            \
-       mkdir -p `dirname $@` ;                                 \
+       @echo "  JSON APIGEN  " $@ ;            \
+       mkdir -p `dirname $@` ;                 \
        vppapigen --input $^ JSON --output $@
 
 apidir = $(prefix)/api/plugins
index 8b1ab83..1e70165 100644 (file)
 # Shared suffix rules
 # Please do not set "SUFFIXES = .api.h .api" here
 
-VPPAPIGEN = $(top_srcdir)/tools/vppapigen/vppapigen
+VPPAPIGEN = vppapigen
 %.api.h: %.api
-       @echo "  APIGEN  " $@ ;                                              \
-       mkdir -p `dirname $@` ;                                              \
+       @echo "  APIGEN  " $@ ;                                         \
+       mkdir -p `dirname $@` ;                                         \
        $(VPPAPIGEN) --includedir $(top_srcdir) --input $< --output $@
 
-%.api.json: %.api
-       @echo "  JSON API" $@ ;                                              \
-       mkdir -p `dirname $@` ;                                              \
+%.api.json: %.api                                                           
+       @echo "  JSON API" $@ ;                                             \
+       mkdir -p `dirname $@` ;                                             \
        $(VPPAPIGEN) --includedir $(top_srcdir) --input $< JSON --output $@