Enforce the coding standard usages of boost
3 years ago, we pushed a patch to allow the usage of boost libraries,
and deleted the phrase "If you give a mouse a cookie". Seemingly, we've
done a decent job of not asking for glass of milk, despite the cookie
being given.
https://github.com/openbmc/docs/commit/56d79455f15ef07be326e59fde4b47ca5866a30c
This commit adds some enforcement of this by removing the libraries that
are disallowed by the coding standard, and ensuring that only the boost
headers are passed through the build. This means that it reduces a
large bottleneck in the build, and saves a significant amount of build
time (about 5 minutes the last time I measured it).
After a discussion a long time ago, it was deemed that coroutine and
context would be allowed in, given that they solved a significant
problem, and didn't add a large binary size to the image. This patchset
preserves those two libraries.
I've had this patch locally for a long time to improve my build times;
I only remembered it because boost-url broke it given that by default
it builds in c++11 mode, which requires boost. As such, I have modified
our build of it to build in standalone mode, which relies on c++17
semantics, and does not require boost libraries. This is added as a
bbappend, given that it will likely be deleted from meta-phosphor
shortly, once we merge in the latest yocto tree, which has accepted it.
Tested:
Built with the patchset below. obmc-phosphor-image builds in
significantly less time, which no sstate cache.
Signed-off-by: Ed Tanous <ed@tanous.net>
Change-Id: I63b74d5712ab45b26b1c5b69bc1348ff2830f046
diff --git a/recipes-support/boost-url/boost-url_%.bbappend b/recipes-support/boost-url/boost-url_%.bbappend
new file mode 100644
index 0000000..5ef4f9f
--- /dev/null
+++ b/recipes-support/boost-url/boost-url_%.bbappend
@@ -0,0 +1 @@
+EXTRA_OECMAKE_append_openbmc-phosphor = "-DBOOST_URL_STANDALONE=ON"
diff --git a/recipes-support/boost/boost_%.bbappend b/recipes-support/boost/boost_%.bbappend
new file mode 100644
index 0000000..aa93d73
--- /dev/null
+++ b/recipes-support/boost/boost_%.bbappend
@@ -0,0 +1,12 @@
+#This is largely to improve our build times by not building or installing
+#modules that OpenBMC does not use by our coding standard. Another thing to
+#note is that for most targets, coroutine and context libraries are also added
+#with a BOOST_LIBS_append_<platform> for most targets. Chrono/Thread should not
+#be relied directly, but are required dependencies of context and coroutine.
+#See the relevant portion of the openbmc coding standard with regards to boost
+#libraries
+#
+#https://github.com/openbmc/docs/blob/master/cpp-style-and-conventions.md#boost
+#
+BOOST_LIBS_openbmc-phosphor = "chrono thread"
+