# Based on Bigtop build documentation: # - use Gradle entry point (component-pkg) # - avoid toolchain/puppet bootstrap in build job # - let COPR SCM generate SRPM from this spec Name: test Version: 3.3.0 Release: 4%{?dist} Summary: Build-service wrapper that builds Apache Bigtop ZooKeeper RPMs via Gradle License: Apache-2.0 URL: https://bigtop.apache.org %global debug_package %{nil} # --- Bigtop source ------------------------------------------------------------- %global bigtop_ref branch-3.3 %global bigtop_archive_name bigtop-%{bigtop_ref} Source0: https://github.com/apache/bigtop/archive/%{bigtop_ref}.tar.gz # --- Common -------------------------------------------------------------------- BuildArch: noarch BuildRequires: bash BuildRequires: bison BuildRequires: boost-devel BuildRequires: bzip2-devel BuildRequires: cmake BuildRequires: curl BuildRequires: coreutils BuildRequires: cppunit-devel BuildRequires: cyrus-sasl-devel BuildRequires: diffutils BuildRequires: findutils BuildRequires: flex BuildRequires: gawk BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: git BuildRequires: grep BuildRequires: gzip BuildRequires: hostname BuildRequires: java-1.8.0-openjdk-devel BuildRequires: java-11-openjdk-devel BuildRequires: krb5-devel BuildRequires: libcurl-devel BuildRequires: libevent-devel BuildRequires: libffi-devel BuildRequires: libtirpc-devel BuildRequires: libtool BuildRequires: libuuid-devel BuildRequires: libxml2-devel BuildRequires: libxslt-devel BuildRequires: libyaml-devel BuildRequires: lzo-devel BuildRequires: make BuildRequires: mariadb-connector-c-devel BuildRequires: ncurses-devel BuildRequires: net-tools BuildRequires: openldap-devel BuildRequires: openssl-devel BuildRequires: patch BuildRequires: perl-Digest-SHA BuildRequires: perl-FindBin BuildRequires: python3 BuildRequires: python3-devel BuildRequires: readline-devel BuildRequires: redhat-rpm-config BuildRequires: rpm-build BuildRequires: sed BuildRequires: snappy-devel BuildRequires: sqlite-devel BuildRequires: tar BuildRequires: unzip BuildRequires: which BuildRequires: wget BuildRequires: xfsprogs-devel BuildRequires: zlib-devel BuildRequires: zstd %description This package is a COPR build wrapper to run Apache Bigtop's Gradle packaging entry point for ZooKeeper (zookeeper-pkg) and export generated RPMs. It is aligned with Ambari's Bigtop build guide constraints while remaining rootless for COPR builds. %prep %setup -q -n %{bigtop_archive_name} %build # Keep all writable state in the build user's workspace and emulate # Bigtop toolchain environment setup without Puppet/sudo. export LANG=C export LC_ALL=C umask 022 export HOME=%{_builddir}/home mkdir -p "$HOME" %{_builddir}/.gradle %{_builddir}/.m2 %{_builddir}/.ivy2 %{_rpmdir} # Bigtop docs recommend avoiding hyphens in BIGTOP_BUILD_STAMP. export BIGTOP_BUILD_STAMP=1 # Resolve JAVA_HOME dynamically so the spec survives minor chroot differences. if [ -x "$(command -v javac)" ]; then export JAVA_HOME="$(dirname "$(dirname "$(readlink -f "$(command -v javac)")")")" else export JAVA_HOME=/usr/lib/jvm/java-11-openjdk fi export PATH="$JAVA_HOME/bin:$PATH" # Prefer Java 11 for this wrapper build. export BIGTOP_JDK=11 export BIGTOP_PREFERRED_JAVA_VERSION=11 export GRADLE_USER_HOME=%{_builddir}/.gradle export MAVEN_OPTS="-Dmaven.repo.local=%{_builddir}/.m2 -Xmx2g -XX:ReservedCodeCacheSize=512m" export IVY_HOME=%{_builddir}/.ivy2 # Rootless bootstrap for the tool binaries Puppet usually installs under /usr/local. export TOOLCHAIN_HOME=%{_builddir}/toolchain export MAVEN_HOME="$TOOLCHAIN_HOME/maven" export ANT_HOME="$TOOLCHAIN_HOME/ant" export PROTOBUF_HOME="$TOOLCHAIN_HOME/protobuf" mkdir -p "$TOOLCHAIN_HOME" MAVEN_VERSION=3.9.11 ANT_VERSION=1.9.16 PROTOBUF_VERSION=3.7.1 if [ ! -x "$MAVEN_HOME/bin/mvn" ]; then curl -fL "https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz" \ -o "%{_builddir}/apache-maven-${MAVEN_VERSION}-bin.tar.gz" rm -rf "$MAVEN_HOME" mkdir -p "$MAVEN_HOME" tar -xzf "%{_builddir}/apache-maven-${MAVEN_VERSION}-bin.tar.gz" -C "$MAVEN_HOME" --strip-components=1 fi if [ ! -x "$ANT_HOME/bin/ant" ]; then curl -fL "https://archive.apache.org/dist/ant/binaries/apache-ant-${ANT_VERSION}-bin.tar.gz" \ -o "%{_builddir}/apache-ant-${ANT_VERSION}-bin.tar.gz" rm -rf "$ANT_HOME" mkdir -p "$ANT_HOME" tar -xzf "%{_builddir}/apache-ant-${ANT_VERSION}-bin.tar.gz" -C "$ANT_HOME" --strip-components=1 fi if [ ! -x "$PROTOBUF_HOME/bin/protoc" ]; then curl -fL "https://github.com/protocolbuffers/protobuf/archive/refs/tags/v${PROTOBUF_VERSION}.tar.gz" \ -o "%{_builddir}/protobuf-${PROTOBUF_VERSION}.tar.gz" rm -rf "%{_builddir}/protobuf-${PROTOBUF_VERSION}" mkdir -p "%{_builddir}/protobuf-${PROTOBUF_VERSION}" tar -xzf "%{_builddir}/protobuf-${PROTOBUF_VERSION}.tar.gz" -C "%{_builddir}/protobuf-${PROTOBUF_VERSION}" --strip-components=1 pushd "%{_builddir}/protobuf-${PROTOBUF_VERSION}" ./autogen.sh ./configure --prefix="$PROTOBUF_HOME" --disable-shared --with-pic make -j"$(nproc)" make install popd fi mkdir -p %{_builddir}/bin ln -sf /usr/bin/true %{_builddir}/bin/sudo export PATH="%{_builddir}/bin:$PATH" export PATH="$MAVEN_HOME/bin:$ANT_HOME/bin:$PROTOBUF_HOME/bin:$PATH" # Build visibility for troubleshooting in COPR logs. java -version "$MAVEN_HOME/bin/mvn" -version "$ANT_HOME/bin/ant" -version "$PROTOBUF_HOME/bin/protoc" --version ./gradlew --version # Prevent Gradle configuration-phase execution of sudo: # "sudo puppet --version".execute() runs at config time, not task time. # Replace with a fake version string so the condition evaluates safely. # sed -i 's/"sudo puppet --version"\.execute()\.text/"0.0"/' build.gradle # Follow Bigtop docs: use Gradle entry point for component packaging. ./gradlew --no-daemon --stacktrace allclean ./gradlew --no-daemon --stacktrace \ -Dbuildwithdeps=true \ -PparentDir=/usr/bigtop \ -PpkgSuffix \ -PbuildThreads=2C \ hbase-pkg # Export generated RPMs for COPR pickup, similar to ambari.spec style. # Bigtop docs describe output under output/; keep search broad for safety. find . -type f -name "*.rpm" -path "*/output/*" -exec cp -v -- {} %{_rpmdir}/ \; %changelog * Thu Jun 04 2026 Copilot - 3.3.0-4 - Drop m2 subpackage and related payload - Add conditional source of in-tree bigtop.sh for environment parity with docs - Apply Ambari Bigtop guide build flags: -PparentDir=/usr/bigtop and -PpkgSuffix - Increase build thread default to 2C per guide examples * Thu Jun 04 2026 Copilot - 3.3.0-2 - Add build-service bootstrap equivalent in %build (locale, JAVA_HOME, user-local repos) - Expand BuildRequires to mirror Bigtop toolchain expectations on Fedora builds - Keep Gradle zookeeper-pkg entry point and enable dependency-aware build flags * Thu Jun 04 2026 Copilot - 3.3.0-3 - Add rootless user-space downloads/builds for Maven, Ant, and Protobuf tools - Mirror Puppet-style /usr/local toolchain behavior via TOOLCHAIN_HOME and PATH * Thu Jun 04 2026 Copilot - 3.3.0-1 - Initial Gradle-entry-point COPR wrapper spec for Bigtop ZooKeeper - Uses zookeeper-pkg task per Bigtop documentation - Exports generated RPMs to rpmdir for build-service publication