2020-03-18 07:51:11 -05:00
#!/bin/bash
# Exit when any command fails
set -e
# Debugging shizz
2021-05-04 08:12:13 -05:00
trap 'ERRCODE=$? && if [ ${ERRCODE} -ne 0 ]; then echo "The command \"${BASH_COMMAND}\" failed in \"${FUNCNAME}\" with exit code ${ERRCODE}."; fi' EXIT
2020-03-18 07:51:11 -05:00
OS_ARCH = $( arch)
2022-12-22 05:21:21 -06:00
# Make sure we get the latest libpq
export PATH = $( ls -d /usr/pgsql-1* | sort -r | head -1) /bin:$PATH
2020-06-02 05:30:07 -05:00
2022-02-14 05:56:27 -06:00
# Stop creating pyc files.
export PYTHONDONTWRITEBYTECODE = 1
2020-03-18 07:51:11 -05:00
# Common Linux build functions
2022-08-10 11:01:31 -05:00
# shellcheck disable=SC1091
2020-03-18 07:51:11 -05:00
source pkg/linux/build-functions.sh
# Assemble the "standard" installation footprint
2022-08-10 05:34:40 -05:00
_setup_env " $0 " "redhat"
2020-03-18 07:51:11 -05:00
_cleanup "rpm"
_setup_dirs
_create_python_virtualenv "redhat"
_build_runtime
_build_docs "redhat"
_copy_code
2023-08-03 05:38:59 -05:00
_generate_sbom
2020-03-18 07:51:11 -05:00
2021-01-29 02:08:27 -06:00
# Get an RPM-compatible version number
RPM_VERSION = ${ APP_RELEASE } .${ APP_REVISION }
2022-08-10 11:01:31 -05:00
if [ -n " ${ APP_SUFFIX } " ] ; then
2021-01-29 02:08:27 -06:00
RPM_VERSION = ${ RPM_VERSION } _${ APP_SUFFIX }
fi
2020-03-18 07:51:11 -05:00
#
# Server package
#
# Create the Redhat packaging stuffs for the server
echo "Creating the server package..."
cat << EOF > " ${ BUILDROOT } /server.spec "
%global __requires_exclude_from ^/.*$
%global __provides_exclude_from ^/.*$
2021-11-23 04:57:20 -06:00
%global _build_id_links none
2020-03-18 07:51:11 -05:00
2022-03-01 07:54:54 -06:00
# Disable RPATH checking, as it will fail with some of the paths in the Python
# virtualenv, in particular Pillow.libs.
%global __brp_check_rpaths %{ nil}
2022-04-08 09:27:34 -05:00
# Don't strip binaries when packaging them as this might break cpython modules
%define __strip /bin/true
2020-03-18 07:51:11 -05:00
%undefine __brp_mangle_shebangs
%undefine __brp_ldconfig
Name: ${ APP_NAME } -server
2021-01-29 02:08:27 -06:00
Version: ${ RPM_VERSION }
2020-03-18 07:51:11 -05:00
Release: 1%{ ?dist}
Summary: The core server package for pgAdmin.
License: PostgreSQL
URL: https://www.pgadmin.org/
2020-05-28 10:26:44 -05:00
2023-03-30 05:35:03 -05:00
Requires: ${ PYTHON_BINARY } , libpq5, krb5-libs
2020-03-18 07:51:11 -05:00
%description
The core server package for pgAdmin. pgAdmin is the most popular and feature rich Open Source administration and development platform for PostgreSQL, the most advanced Open Source database in the world.
2023-04-04 07:58:26 -05:00
%pre
rm -rf /usr/pgadmin4/venv
2023-04-06 08:45:01 -05:00
if [ -d /usr/pgadmin4/web ] ; then
2023-04-11 00:12:19 -05:00
cd /usr/pgadmin4/web && rm -rf \$ ( ls -A -I config_local.py)
2023-04-06 08:45:01 -05:00
fi
2023-04-04 07:58:26 -05:00
2020-03-18 07:51:11 -05:00
%build
%install
cp -rfa %{ pga_build_root} /server/* \$ { RPM_BUILD_ROOT}
%files
2024-06-20 00:09:24 -05:00
%defattr( 755,root,root,755)
%dir /usr/pgadmin4
2020-03-18 07:51:11 -05:00
/usr/pgadmin4/*
EOF
# Build the Redhat package for the server
rpmbuild --define " pga_build_root ${ BUILDROOT } " -bb " ${ BUILDROOT } /server.spec "
#
# Desktop package
#
# Create the Redhat packaging stuffs for the desktop
echo "Creating the desktop package..."
cat << EOF > " ${ BUILDROOT } /desktop.spec "
%global __requires_exclude_from ^/.*$
%global __provides_exclude_from ^/.*$
2021-11-23 04:57:20 -06:00
%global _build_id_links none
2020-03-18 07:51:11 -05:00
%undefine __brp_mangle_shebangs
%undefine __brp_ldconfig
Name: ${ APP_NAME } -desktop
2021-01-29 02:08:27 -06:00
Version: ${ RPM_VERSION }
2020-03-18 07:51:11 -05:00
Release: 1%{ ?dist}
Summary: The desktop user interface for pgAdmin.
License: PostgreSQL
URL: https://www.pgadmin.org/
2021-04-02 03:31:17 -05:00
Requires: ${ APP_NAME } -server = ${ RPM_VERSION } , libatomic, xdg-utils
2020-03-18 07:51:11 -05:00
%description
The desktop user interface for pgAdmin. pgAdmin is the most popular and feature rich Open Source administration and development platform for PostgreSQL, the most advanced Open Source database in the world.
%build
%install
cp -rfa %{ pga_build_root} /desktop/* \$ { RPM_BUILD_ROOT}
2021-01-29 02:08:27 -06:00
%post
/bin/xdg-icon-resource forceupdate
2020-03-18 07:51:11 -05:00
%files
2024-06-20 00:09:24 -05:00
%defattr( 755,root,root,755)
2020-03-18 07:51:11 -05:00
/usr/pgadmin4/bin/*
2021-01-29 02:08:27 -06:00
/usr/share/icons/hicolor/128x128/apps/*
/usr/share/icons/hicolor/64x64/apps/*
/usr/share/icons/hicolor/48x48/apps/*
/usr/share/icons/hicolor/32x32/apps/*
/usr/share/icons/hicolor/16x16/apps/*
2020-03-18 07:51:11 -05:00
/usr/share/applications/*
2023-08-04 04:35:06 -05:00
/usr/pgadmin4/sbom-desktop.json
2020-03-18 07:51:11 -05:00
EOF
2024-06-20 00:09:24 -05:00
# Build the Redhat package for the desktop
2020-03-18 07:51:11 -05:00
rpmbuild --define " pga_build_root ${ BUILDROOT } " -bb " ${ BUILDROOT } /desktop.spec "
#
# Web package
#
# Create the Redhat packaging stuffs for the web
echo "Creating the web package..."
cat << EOF > " ${ BUILDROOT } /web.spec "
%global __requires_exclude_from ^/.*$
%global __provides_exclude_from ^/.*$
2021-11-23 04:57:20 -06:00
%global _build_id_links none
2020-03-18 07:51:11 -05:00
%undefine __brp_mangle_shebangs
%undefine __brp_ldconfig
Name: ${ APP_NAME } -web
2021-01-29 02:08:27 -06:00
Version: ${ RPM_VERSION }
2020-03-18 07:51:11 -05:00
Release: 1%{ ?dist}
2020-03-20 10:48:00 -05:00
BuildArch: noarch
2020-03-18 07:51:11 -05:00
Summary: The web interface for pgAdmin, hosted under Apache HTTPD.
License: PostgreSQL
URL: https://www.pgadmin.org/
2023-03-27 07:38:02 -05:00
Requires: ${ APP_NAME } -server = ${ RPM_VERSION } , httpd, ${ PYTHON_BINARY_WITHOUT_DOTS } -mod_wsgi
2020-03-18 07:51:11 -05:00
%description
The web interface for pgAdmin, hosted under Apache HTTPD. pgAdmin is the most popular and feature rich Open Source administration and development platform for PostgreSQL, the most advanced Open Source database in the world.
%build
%install
cp -rfa %{ pga_build_root} /web/* \$ { RPM_BUILD_ROOT}
%files
2024-06-20 00:09:24 -05:00
%defattr( 755,root,root,755)
2020-03-18 07:51:11 -05:00
/usr/pgadmin4/bin/*
2021-03-29 04:35:50 -05:00
%config( noreplace) /etc/httpd/conf.d/*
2023-08-04 05:07:13 -05:00
/usr/pgadmin4/sbom-web.json
2020-03-18 07:51:11 -05:00
EOF
mkdir -p " ${ WEBROOT } /etc/httpd/conf.d "
cp " ${ SOURCEDIR } /pkg/redhat/pgadmin4.conf " " ${ WEBROOT } /etc/httpd/conf.d "
# Build the Redhat package for the web
rpmbuild --define " pga_build_root ${ BUILDROOT } " -bb " ${ BUILDROOT } /web.spec "
#
# Meta package
#
# Create the Redhat packaging stuffs for the meta package
echo "Creating the meta package..."
cat << EOF > " ${ BUILDROOT } /meta.spec "
%global __requires_exclude_from ^/.*$
%global __provides_exclude_from ^/.*$
2021-11-23 04:57:20 -06:00
%global _build_id_links none
2020-03-18 07:51:11 -05:00
%undefine __brp_mangle_shebangs
%undefine __brp_ldconfig
Name: ${ APP_NAME }
2021-01-29 02:08:27 -06:00
Version: ${ RPM_VERSION }
2020-03-18 07:51:11 -05:00
Release: 1%{ ?dist}
BuildArch: noarch
Summary: Installs all required components to run pgAdmin in desktop and web modes.
License: PostgreSQL
URL: https://www.pgadmin.org/
2021-02-19 04:08:25 -06:00
Requires: ${ APP_NAME } -server = ${ RPM_VERSION } , ${ APP_NAME } -desktop = ${ RPM_VERSION } , ${ APP_NAME } -web = ${ RPM_VERSION }
2020-03-18 07:51:11 -05:00
%description
Installs all required components to run pgAdmin in desktop and web modes. pgAdmin is the most popular and feature rich Open Source administration and development platform for PostgreSQL, the most advanced Open Source database in the world.
%build
%install
%files
EOF
# Build the Redhat package for the meta package
rpmbuild --define " pga_build_root ${ BUILDROOT } " -bb " ${ BUILDROOT } /meta.spec "
2020-06-02 05:30:07 -05:00
# Get the libpq we need
2023-02-28 06:28:38 -06:00
yumdownloader -y --downloadonly --destdir= " ${ DISTROOT } " libpq5 libpq5-devel postgresql$( ls -d /usr/pgsql-1* | sort -r | head -1 | awk -F '-' '{ print $2 }' ) -libs
2020-06-02 05:30:07 -05:00
2020-03-18 07:51:11 -05:00
#
# Get the results!
#
2022-08-10 11:01:31 -05:00
cp " ${ HOME } /rpmbuild/RPMS/ ${ OS_ARCH } / ${ APP_NAME } - " *" ${ RPM_VERSION } - " *" . ${ OS_ARCH } .rpm " " ${ DISTROOT } / "
cp " ${ HOME } /rpmbuild/RPMS/noarch/ ${ APP_NAME } - " *" ${ RPM_VERSION } - " *".noarch.rpm" " ${ DISTROOT } / "
2020-06-02 05:30:07 -05:00
2020-06-02 07:19:46 -05:00
echo " Completed. RPMs created in ${ DISTROOT } . "