diff --git a/pkg/redhat/repo-rpm.sh b/pkg/redhat/repo-rpm.sh new file mode 100755 index 000000000..e869cbd59 --- /dev/null +++ b/pkg/redhat/repo-rpm.sh @@ -0,0 +1,105 @@ +#!/bin/bash + +# Set the repo RPM version and build +REPO_RPM_VERSION=1 +REPO_RPM_BUILD=1 + +# Exit when any command fails +set -e + +# Debugging shizz +trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG +trap 'if [ $? -ne 0 ]; then echo "\"${last_command}\" command filed with exit code $?."; fi' EXIT + +OS_VERSION=$(cat /etc/os-release | grep "^VERSION_ID=" | awk -F "=" '{ print $2 }' | sed 's/"//g') +OS_NAME=$(cat /etc/os-release | grep "^ID=" | awk -F "=" '{ print $2 }' | sed 's/"//g') +OS_ARCH=$(arch) + +# Common Linux build functions +source pkg/linux/build-functions.sh + +# Are we installing a package key? +INCLUDE_KEY=0 +if [ -f "pkg/redhat/PGADMIN_PKG_KEY" ]; then + INCLUDE_KEY=1 + echo "Building repo RPMs including a package signing key..." +else + echo "pkg/redhat/PGADMIN_PKG_KEY not found." + echo "Building repo RPMs WITHOUT a package signing key..." + sleep 5 +fi + +# Create the Redhat packaging stuffs for the repo +_create_repo_rpm() { + DISTRO=$1 + if [ ${DISTRO} == "redhat" ]; then + PLATFORM="rhel" + else + PLATFORM=${DISTRO} + fi + + echo "Creating the repo package for ${DISTRO}..." + test -d ${BUILDROOT}/${DISTRO}-repo/etc/yum.repos.d || mkdir -p ${BUILDROOT}/${DISTRO}-repo/etc/yum.repos.d + + cat << EOF > "${BUILDROOT}/${DISTRO}-repo/etc/yum.repos.d/pgadmin4.repo" +[pgAdmin4] +name=pgadmin4 +baseurl=https://ftp.postgresql.org/pub/pgadmin/pgadmin4/repos/yum/${DISTRO}/${PLATFORM}-\$RELEASEVER-\$BASEARCH +enabled=1 +EOF + + if [ ${INCLUDE_KEY} -eq 1 ]; then + echo gpgcheck=1 >> "${BUILDROOT}/${DISTRO}-repo/etc/yum.repos.d/pgadmin4.repo" + else + echo gpgcheck=0 >> "${BUILDROOT}/${DISTRO}-repo/etc/yum.repos.d/pgadmin4.repo" + fi + + echo "Creating the spec file for ${DISTRO}..." + cat << EOF > "${BUILDROOT}/${DISTRO}-repo.spec" +%global __requires_exclude_from ^/.*$ +%global __provides_exclude_from ^/.*$ + +Name: ${APP_NAME}-${DISTRO}-repo +Version: ${REPO_RPM_VERSION} +Release: ${REPO_RPM_BUILD} +BuildArch: noarch +Summary: Repository configuration for the pgAdmin ${DISTRO^} repositories. +License: PostgreSQL +URL: https://www.pgadmin.org/ + +%description +The yum repository configuration for ${DISTRO^} platforms. + +%build + +%install +cp -rfa %{pga_build_root}/${DISTRO}-repo/* \${RPM_BUILD_ROOT} + +%files +/etc/yum.repos.d/pgadmin4.repo +EOF + + if [ ${INCLUDE_KEY} -eq 1 ]; then + cat << EOF >> ${BUILDROOT}/${DISTRO}-repo.spec +/etc/pki/rpm-gpg/PGADMIN_PKG_KEY + +%post +rpm --import /etc/pki/rpm-gpg/PGADMIN_PKG_KEY +EOF + test -d ${BUILDROOT}/${DISTRO}-repo/etc/pki/rpm-gpg || mkdir -p ${BUILDROOT}/${DISTRO}-repo/etc/pki/rpm-gpg + cp pkg/redhat/PGADMIN_PKG_KEY ${BUILDROOT}/${DISTRO}-repo/etc/pki/rpm-gpg/ + fi + + # Build the package + echo "Building the repo RPM for ${DISTRO}..." + rpmbuild --define "pga_build_root ${BUILDROOT}" -bb "${BUILDROOT}/${DISTRO}-repo.spec" +} + +_setup_env $0 "redhat" +_create_repo_rpm redhat +_create_repo_rpm fedora + +# +# Get the results! +# +cp ${HOME}/rpmbuild/RPMS/noarch/${APP_NAME}-*-repo-${REPO_RPM_VERSION}-${REPO_RPM_BUILD}.noarch.rpm "${DISTROOT}/" \ No newline at end of file