This uses our standard buildpack, but each module must get a custom .blazar.yaml to pass in required properties to the build. One can distribute that .blazar.yaml using build-scripts/copy_blazar_yaml.sh. In order to minimize the duplication, most of the customizations are consolidated in build-scripts/prepare_environment.sh. The RPM build is hooked into the standard build hbase-assembly, as a post-build step. The RPM build scripts in hbase-assembly/rpm-build handle turning the assembled tar.gz into multiple RPMs. We required some minor changes to the descriptor in hbase-assembly to account for the fact that our build processes each module independently instead of as a single reactor build. As a result, moduleSet does not work, so moduleSet usages were converted to dependencySet.
This module has proto files used by core. These protos overlap with protos that are used by coprocessor endpoints (CPEP) in the module hbase-protocol. So core versions have a different name, the generated classes are relocated -- i.e. shaded -- to a new location; they are moved from org.apache.hadoop.hbase.* to org.apache.hadoop.hbase.shaded.