BIGTOP-4076. Fix compilation failure of Flink on centos 7 aarch64. (#1250)

diff --git a/bigtop-packages/src/common/flink/do-component-build b/bigtop-packages/src/common/flink/do-component-build
index a2816b9..36f9c86 100644
--- a/bigtop-packages/src/common/flink/do-component-build
+++ b/bigtop-packages/src/common/flink/do-component-build
@@ -16,10 +16,16 @@
 
 set -ex
 
-
 #load versions
 . `dirname $0`/bigtop.bom
 
+. /etc/os-release
+
+if [[ $ID = "centos" && $VERSION_ID = "7" && ( $HOSTTYPE = "aarch64" || $HOSTTYPE = "powerpc64le" ) ]]; then
+  # BIGTOP-4076: newer g++ is required for rebuilding watcher used by flink-runtime-web    
+  BUILD_ENV="scl enable devtoolset-9 -- "
+fi
+
 # husky have to be executed from the path that .git exists
 git_path="$(cd $(dirname $0)/../../../.. && pwd)"
 cmd_from="cd ../.. && husky install flink-runtime-web/web-dashboard/.husky"
@@ -36,6 +42,6 @@
 sed -i "s/$repl_from/$repl_to/" flink-runtime-web/web-dashboard/package.json
 
 # Use Maven to build Flink from source
-mvn install $FLINK_BUILD_OPTS -Drat.skip=true -DskipTests -Dhadoop.version=$HADOOP_VERSION "$@"
+${BUILD_ENV} mvn install $FLINK_BUILD_OPTS -Drat.skip=true -DskipTests -Dhadoop.version=$HADOOP_VERSION "$@"
 cd flink-dist
-mvn install $FLINK_BUILD_OPTS -Drat.skip=true -DskipTests -Dhadoop.version=$HADOOP_VERSION "$@"
+${BUILD_ENV} mvn install $FLINK_BUILD_OPTS -Drat.skip=true -DskipTests -Dhadoop.version=$HADOOP_VERSION "$@"
diff --git a/bigtop_toolchain/manifests/packages.pp b/bigtop_toolchain/manifests/packages.pp
index 0b7c060..6688c7a 100644
--- a/bigtop_toolchain/manifests/packages.pp
+++ b/bigtop_toolchain/manifests/packages.pp
@@ -338,6 +338,18 @@
       package { 'ca-certificates':
         ensure => latest
       }
+
+      # BIGTOP-4076: newer g++ is required for rebuilding watcher used by flink-runtime-web
+      if ($architecture in ['aarch64', 'ppc64le']) {
+        package { 'centos-release-scl':
+          ensure => latest
+        }
+
+        package { 'devtoolset-9-gcc-c++':
+          ensure => latest,
+          require => Package['centos-release-scl']
+        }
+      }
     }
     if $operatingsystemmajrelease !~ /^[0-7]$/ {
       # On CentOS 8, EPEL requires that the PowerTools repository is enabled.