Good Evening Sports Fans,

Have we got a match for you tonight!

In this corner, ccache.  Loved for it speed and hackery, hated for
its invasive corruptibility.

In the other corner, we have vppapigen, loved tool of the single-source
definitions for all things yet hated as the monster that will not die!

Tonight we bring them together in the top-level Makefile, in a clause
that might leave a few, myself included, mystified:

ifeq ("$(wildcard /usr/bin/ccache )","")
        @echo "WARNING: Please install ccache AYEC and re-run this script"
else
        @rm -rf $(BR)/tools/ccache-bin
        @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
        ls -lsa $(BR)/tools/bin
endif
        @touch $@

You might recognize that as part of the $(BR)/.bootstrap.ok target!
It is!  You could win!

But first, let's see what happens when ccache is NOt installed on the
build machine!  Yep, you get that warning:

        @echo "WARNING: Please install ccache AYEC and re-run this script"

Naturally, that is lost way, way, back at the beginning of the
scroll-back.  Twenty
minutes of scroll-back.  Unless....  Yes, in just under 2 minutes, the
build fails!
Quizically like this:

  APIGEN   vlibmemory/memclnt.api.h
  JSON API vlibmemory/memclnt.api.json
/bin/sh: line 2: vppapigen: command not found
/bin/sh: line 2: vppapigen: command not found


So, yeah, installing ccache clears all that up.


And since using vppapigen is sort of necessary for the

whole build here, using ccache is not really an optional

build-time dependency anymore.  If you're cools with that,

I'm cool with that, but we should list it as a build-time

requirement for all build hosts including CentOS:


$ git grep ccache Makefile
Makefile:CCACHE_DIR?=$(BR)/.ccache
Makefile:DEB_DEPENDS  = curl build-essential autoconf automake ccache
Makefile:RPM_SUSE_BUILDTOOLS_DEPS = autoconf automake ccache check-devel chrpath


If no one beats me to it, I might submit a patch to

help the situation.


So it's a tie!


jdl

Reply via email to