Name: test Version: 3.4.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.4 %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: fuse BuildRequires: fuse-devel BuildRequires: fuse-libs BuildRequires: gawk BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: git BuildRequires: grep BuildRequires: gzip BuildRequires: hostname BuildRequires: java-11-openjdk-devel BuildRequires: java-1.8.0-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 # Prefer Java 11 for this wrapper build. export BIGTOP_JDK=11 export BIGTOP_PREFERRED_JAVA_VERSION=11 # Resolve JAVA_HOME robustly and require Java 11. pick_java_home() { for c in \ /usr/lib/jvm/java-11-openjdk \ /usr/lib/jvm/java-11-openjdk-* \ /usr/lib/jvm/java-11 \ /usr/lib/jvm/jre-11-openjdk \ /etc/alternatives/java_sdk_11 \ /etc/alternatives/java_sdk; do if [ -x "$c/bin/javac" ] && "$c/bin/javac" -version 2>&1 | grep -Eq '^javac 11([. ]|$)'; then echo "$c" return 0 fi done if [ -x "$(command -v javac)" ] && javac -version 2>&1 | grep -Eq '^javac 11([. ]|$)'; then dirname "$(dirname "$(readlink -f "$(command -v javac)")")" return 0 fi return 1 } JAVA_HOME_CANDIDATE="$(pick_java_home || true)" if [ -z "$JAVA_HOME_CANDIDATE" ]; then echo "ERROR: Java 11 JDK not found. Build requires javac 11." >&2 echo "java -version output:" >&2 java -version >&2 || true echo "javac -version output:" >&2 javac -version >&2 || true exit 1 fi export JAVA_HOME="$JAVA_HOME_CANDIDATE" export PATH="$JAVA_HOME/bin:$PATH" # Enforce Gradle JVM as Java 11 even if another default JVM exists. export GRADLE_USER_HOME=%{_builddir}/.gradle export GRADLE_OPTS="-Dorg.gradle.java.home=$JAVA_HOME" export MAVEN_OPTS="-Dmaven.repo.local=%{_builddir}/.m2 -Xmx2g -XX:ReservedCodeCacheSize=512m" export IVY_HOME=%{_builddir}/.ivy2 # Rootless bootstrap for 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:$MAVEN_HOME/bin:$ANT_HOME/bin:$PROTOBUF_HOME/bin:$PATH" # Build visibility for troubleshooting in COPR logs. echo "Selected JAVA_HOME=$JAVA_HOME" java -version javac -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 puppet probe. 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 \ zookeeper-pkg # Export generated RPMs for COPR pickup. find . -type f -name "*.rpm" -path "*/output/*" -exec cp -v -- {} %{_rpmdir}/ \; %install install -d -m 0755 %{buildroot}%{_datadir}/bigtop-zookeeper-build # Metadata marker so this wrapper package is not empty. cat > %{buildroot}%{_datadir}/bigtop-zookeeper-build/build-info.txt < - 3.4.0-4 - Force and validate Java 11 selection in %build - Pin Gradle JVM using org.gradle.java.home - Keep rootless toolchain bootstrap and Gradle zookeeper-pkg entrypoint