diff --git a/common-functions.sh b/common-functions.sh new file mode 100644 index 00000000..8cab6300 --- /dev/null +++ b/common-functions.sh @@ -0,0 +1,153 @@ +#!/usr/bin/env bash +set -x + +shell_quote_string() { + echo "$1" | sed -e 's,\([^a-zA-Z0-9/_.=-]\),\\\1,g' +} + +usage () { + cat <&2 "Current directory cannot be used for building!" + exit 1 + else + if ! test -d "$WORKDIR" + then + echo >&2 "$WORKDIR is not a directory." + exit 1 + fi + fi + return +} + +switch_to_vault_repo() { + sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Linux-* + sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Linux-* +} + +add_percona_yum_repo(){ + yum -y install ${YUM_REPO} + percona-release disable all + percona-release enable ppg-${PG_VERSION} testing + return +} + +add_percona_apt_repo(){ + wget ${APT_REPO} + dpkg -i percona-release_latest.generic_all.deb + rm -f percona-release_latest.generic_all.deb + percona-release disable all + percona-release enable ppg-${PG_VERSION} testing + return +} + +get_system(){ + COMPONENT=$1 + if [ -f /etc/redhat-release ]; then + if [ "$COMPONENT" = "pgpool2" ]; then + GLIBC_VER_TMP="$(rpm glibc -qa --qf %{VERSION})" + fi + RHEL=$(rpm --eval %rhel) + ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') + OS_NAME="el$RHEL" + OS="rpm" + else + if [ "$COMPONENT" = "pgpool2" ]; then + GLIBC_VER_TMP="$(dpkg-query -W -f='${Version}' libc6 | awk -F'-' '{print $1}')" + fi + ARCH=$(uname -m) + apt-get -y update + apt-get -y install lsb-release + OS_NAME="$(lsb_release -sc)" + OS="deb" + fi + return +} + +get_tar(){ + TARBALL=$1 + COMPONENT=$2 + TARFILE=$(basename $(find $WORKDIR/$TARBALL -name "$COMPONENT*.tar.gz" | sort | tail -n1)) + + if [ -z $TARFILE ] + then + TARFILE=$(basename $(find $CURDIR/$TARBALL -name "$COMPONENT*.tar.gz" | sort | tail -n1)) + if [ -z $TARFILE ] + then + echo "There is no $TARBALL for build" + exit 1 + else + cp $CURDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE + fi + else + cp $WORKDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE + fi + return +} diff --git a/etcd/etcd_builder.sh b/etcd/etcd_builder.sh index 8f65b57f..1fd698bf 100755 --- a/etcd/etcd_builder.sh +++ b/etcd/etcd_builder.sh @@ -1,95 +1,9 @@ #!/usr/bin/env bash - -shell_quote_string() { - echo "$1" | sed -e 's,\([^a-zA-Z0-9/_.=-]\),\\\1,g' -} - -usage () { - cat <&2 "Current directory cannot be used for building!" - exit 1 - else - if ! test -d "$WORKDIR" - then - echo >&2 "$WORKDIR is not a directory." - exit 1 - fi - fi - return -} - -add_percona_yum_repo(){ - yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm - percona-release disable all - percona-release enable ppg-${PG_VERSION} testing - return -} - -add_percona_apt_repo(){ - wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb - dpkg -i percona-release_latest.generic_all.deb - rm -f percona-release_latest.generic_all.deb - percona-release disable all - percona-release enable ppg-${PG_VERSION} testing - return -} +set -x +# Versions and other variables +source versions.sh "etcd" +# Common functions +source common-functions.sh get_sources(){ cd "${WORKDIR}" @@ -98,21 +12,12 @@ get_sources(){ echo "Sources will not be downloaded" return 0 fi - PRODUCT=etcd - echo "PRODUCT=${PRODUCT}" > etcd.properties - PRODUCT_FULL=${PRODUCT}-${VERSION} - echo "PRODUCT_FULL=${PRODUCT_FULL}" >> etcd.properties + echo "PRODUCT=${ETCD_PRODUCT}" > etcd.properties + echo "PRODUCT_FULL=${ETCD_PRODUCT_FULL}" >> etcd.properties echo "VERSION=${PSM_VER}" >> etcd.properties echo "BUILD_NUMBER=${BUILD_NUMBER}" >> etcd.properties echo "BUILD_ID=${BUILD_ID}" >> etcd.properties -# git clone "$REPO" ${PRODUCT_FULL} -# retval=$? -# if [ $retval != 0 ] -# then -# echo "There were some issues during repo cloning from github. Please retry one more time" -# exit 1 -# fi ARCH=$(uname -m) if [ "$ARCH" = "x86_64" ]; then @@ -121,22 +26,22 @@ get_sources(){ ARCH="arm64" fi - wget https://github.com/etcd-io/etcd/releases/download/v${VERSION}/etcd-v${VERSION}-linux-${ARCH}.tar.gz - tar -xvzf etcd-v${VERSION}-linux-${ARCH}.tar.gz - mkdir -p ${PRODUCT_FULL} - cp -rp etcd-v${VERSION}-linux-${ARCH}/* ${PRODUCT_FULL} - cd ${PRODUCT_FULL} + wget ${ETCD_SRC_REPO}/etcd-v${ETCD_VERSION}-linux-${ARCH}.tar.gz + tar -xvzf etcd-v${ETCD_VERSION}-linux-${ARCH}.tar.gz + mkdir -p ${ETCD_PRODUCT_FULL} + cp -rp etcd-v${ETCD_VERSION}-linux-${ARCH}/* ${ETCD_PRODUCT_FULL} + cd ${ETCD_PRODUCT_FULL} rm -fr debian rpm - git clone https://github.com/EvgeniyPatlan/etcd-packaging.git deb_packaging + git clone ${ETCD_SRC_REPO_DEB} deb_packaging mv deb_packaging/deb ./debian cd debian/ rm -f etcd-server.install etcd-client.install rules - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/etcd/etcd-server.install - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/etcd/rules - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/etcd/etcd-client.install - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/etcd/etcd.service - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/etcd/etcd.conf.yaml + wget ${PKG_RAW_URL}/etcd/etcd-server.install + wget ${PKG_RAW_URL}/etcd/rules + wget ${PKG_RAW_URL}/etcd/etcd-client.install + wget ${PKG_RAW_URL}/etcd/etcd.service + wget ${PKG_RAW_URL}/etcd/etcd.conf.yaml mv etcd.conf.yaml ../ rm -f etcd-server.etcd.service @@ -148,9 +53,9 @@ get_sources(){ mkdir rpm cd rpm - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/etcd/etcd.spec - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/etcd/etcd.service - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/etcd/etcd.conf.yaml + wget ${PKG_RAW_URL}/etcd/etcd.spec + wget ${PKG_RAW_URL}/etcd/etcd.service + wget ${PKG_RAW_URL}/etcd/etcd.conf.yaml cd ${WORKDIR} # source etcd.properties @@ -158,93 +63,16 @@ get_sources(){ tar --owner=0 --group=0 --exclude=.* -czf ${PRODUCT_FULL}.tar.gz ${PRODUCT_FULL} DATE_TIMESTAMP=$(date +%F_%H-%M-%S) - echo "UPLOAD=UPLOAD/experimental/BUILDS/${PRODUCT}/${PRODUCT_FULL}/${PSM_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> etcd.properties + echo "UPLOAD=UPLOAD/experimental/BUILDS/${ETCD_PRODUCT}/${ETCD_PRODUCT_FULL}/${PSM_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> etcd.properties mkdir $WORKDIR/source_tarball mkdir $CURDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $CURDIR/source_tarball + cp ${ETCD_PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball + cp ${ETCD_PRODUCT_FULL}.tar.gz $CURDIR/source_tarball cd $CURDIR #rm -rf etcd* return } -get_system(){ - if [ -f /etc/redhat-release ]; then - RHEL=$(rpm --eval %rhel) - ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - OS_NAME="el$RHEL" - OS="rpm" - else - ARCH=$(uname -m) - OS_NAME="$(lsb_release -sc)" - OS="deb" - fi - return -} - -install_deps() { - if [ $INSTALL = 0 ]; then - echo "Dependencies will not be installed" - return; - fi - if [ $( id -u ) -ne 0 ]; then - echo "It is not possible to instal dependencies. Please run as root" - exit 1 - fi - CURPLACE=$(pwd) - - if [ "x$OS" = "xrpm" ]; then - RHEL=$(rpm --eval %rhel) - #add_percona_yum_repo - yum clean all - if [[ "${RHEL}" -eq 10 ]]; then - yum install oracle-epel-release-el10 - else - yum -y install epel-release - fi - if [ ${RHEL} -gt 7 ]; then - #dnf -y module disable postgresql - dnf config-manager --set-enabled ol${RHEL}_codeready_builder - dnf clean all - rm -r /var/cache/dnf - dnf -y upgrade - fi - INSTALL_LIST="git vim wget go-toolset rpmdevtools python3-devel" - yum -y install ${INSTALL_LIST} - - else - apt-get update || true - export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - apt-get -y install lsb-release wget curl gnupg2 - export DEBIAN=$(lsb_release -sc) - add_percona_apt_repo - apt-get update || true - INSTALL_LIST="git vim wget rpm dpkg-dev build-essential ccache cron debconf debhelper devscripts dh-exec curl dh-golang fakeroot golang-go" - DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST} - fi - return; -} - -get_tar(){ - TARBALL=$1 - TARFILE=$(basename $(find $WORKDIR/$TARBALL -name 'etcd*.tar.gz' | sort | tail -n1)) - - if [ -z $TARFILE ] - then - TARFILE=$(basename $(find $CURDIR/$TARBALL -name 'etcd*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - echo "There is no $TARBALL for build" - exit 1 - else - cp $CURDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - else - cp $WORKDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - return -} - get_deb_sources(){ param=$1 echo $param @@ -277,7 +105,7 @@ build_srpm(){ exit 1 fi cd $WORKDIR - get_tar "source_tarball" + get_tar "source_tarball" "etcd" rm -fr rpmbuild #ls | grep -v tar.gz | xargs rm -rf TARFILE=$(find . -name 'etcd*.tar.gz' | sort | tail -n1) @@ -292,7 +120,7 @@ build_srpm(){ # mv -fv ${TARFILE} ${WORKDIR}/rpmbuild/SOURCES rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .generic" \ - --define "version ${VERSION}" rpmbuild/SPECS/etcd.spec + --define "version ${ETCD_VERSION}" rpmbuild/SPECS/etcd.spec mkdir -p ${WORKDIR}/srpm mkdir -p ${CURDIR}/srpm cp rpmbuild/SRPMS/*.src.rpm ${CURDIR}/srpm @@ -340,9 +168,9 @@ build_rpm(){ source /opt/rh/devtoolset-7/enable source /opt/rh/llvm-toolset-7/enable fi - export LIBPQ_DIR=/usr/pgsql-${PG_MAJOR_VERSION}/ - export LIBRARY_PATH=/usr/pgsql-${PG_MAJOR_VERSION}/lib/:/usr/pgsql-${PG_MAJOR_VERSION}/include/ - rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "pginstdir /usr/pgsql-${PG_MAJOR_VERSION}" --define "dist .$OS_NAME" --define "version ${VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM + export LIBPQ_DIR=/usr/pgsql-${PG_MAJOR}/ + export LIBRARY_PATH=/usr/pgsql-${PG_MAJOR}/lib/:/usr/pgsql-${PG_MAJOR}/include/ + rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "pginstdir /usr/pgsql-$PG_MAJOR" --define "dist .$OS_NAME" --define "version ${ETCD_VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM return_code=$? if [ $return_code != 0 ]; then @@ -366,7 +194,7 @@ build_source_deb(){ exit 1 fi rm -rf etcd* - get_tar "source_tarball" + get_tar "source_tarball" "etcd" rm -f *.dsc *.orig.tar.gz *.debian.tar.gz *.changes # TARFILE=$(basename $(find . -name 'etcd*.tar.gz' | sort | tail -n1)) @@ -376,18 +204,18 @@ build_source_deb(){ BUILDDIR=${TARFILE%.tar.gz} # - mv ${TARFILE} ${PRODUCT}_${VERSION}.orig.tar.gz + mv ${TARFILE} ${ETCD_PRODUCT}_${ETCD_VERSION}.orig.tar.gz cd ${BUILDDIR} cd debian rm -rf changelog - echo "etcd (${VERSION}-${RELEASE}) unstable; urgency=low" >> changelog + echo "etcd (${ETCD_VERSION}-${ETCD_RELEASE}) unstable; urgency=low" >> changelog echo " * Initial Release." >> changelog echo " -- EvgeniyPatlan $(date -R)" >> changelog cd ../ - dch -D unstable --force-distribution -v "${VERSION}-${RELEASE}" "Update to new etcd version ${VERSION}" + dch -D unstable --force-distribution -v "${ETCD_VERSION}-${ETCD_RELEASE}" "Update to new etcd version ${ETCD_VERSION}" dpkg-buildpackage -S cd ../ mkdir -p $WORKDIR/source_deb @@ -431,8 +259,8 @@ build_deb(){ # dpkg-source -x ${DSC} # - cd ${PRODUCT}-${VERSION} - dch -m -D "${DEBIAN}" --force-distribution -v "1:${VERSION}-${RELEASE}.${DEBIAN}" 'Update distribution' + cd ${ETCD_PRODUCT_FULL} + dch -m -D "${DEBIAN}" --force-distribution -v "1:${ETCD_VERSION}-${ETCD_RELEASE}.${DEBIAN}" 'Update distribution' unset $(locale|cut -d= -f1) dpkg-buildpackage -rfakeroot -us -uc -b mkdir -p $CURDIR/deb @@ -459,22 +287,18 @@ OS_NAME= ARCH= OS= INSTALL=0 -RPM_RELEASE=1 -DEB_RELEASE=1 REVISION=0 -REPO="https://github.com/etcd-io/etcd.git" -PRODUCT=etcd DEBUG=0 -VERSION='3.5.21' -RELEASE='1' -PG_VERSION=17.6 -parse_arguments PICK-ARGS-FROM-ARGV "$@" -PG_MAJOR_VERSION=$(echo $PG_VERSION | cut -f1 -d'.') -PRODUCT_FULL=${PRODUCT}-${VERSION}-${RELEASE} +parse_arguments PICK-ARGS-FROM-ARGV "$@" check_workdir get_system -install_deps +#install_deps +if [ $INSTALL = 0 ]; then + echo "Dependencies will not be installed" +else + source install-deps.sh "etcd" +fi get_sources build_srpm build_source_deb diff --git a/install-deps.sh b/install-deps.sh new file mode 100644 index 00000000..860fc093 --- /dev/null +++ b/install-deps.sh @@ -0,0 +1,1076 @@ +#!/usr/bin/env bash +set -x + +COMPONENT=$1 + +if [ $( id -u ) -ne 0 ]; then + echo "It is not possible to install dependencies. Please run as root" + exit 1 +fi +CURPLACE=$(pwd) + +# postgresql +if [ "$COMPONENT" = "postgresql" ]; then +if [ "x$OS" = "xrpm" ]; then + yum -y install wget + yum clean all + RHEL=$(rpm --eval %rhel) + if [ x"$RHEL" = x6 -o x"$RHEL" = x7 ]; then + until yum -y install centos-release-scl; do + echo "waiting" + sleep 1 + done + yum -y install epel-release + INSTALL_LIST="bison e2fsprogs-devel flex gettext git glibc-devel krb5-devel libicu-devel libselinux-devel libuuid-devel libxml2-devel libxslt-devel llvm-toolset-7-clang llvm5.0-devel openldap-devel openssl-devel pam-devel patch perl perl-ExtUtils-MakeMaker perl-ExtUtils-Embed python2-devel readline-devel rpm-build rpmdevtools selinux-policy systemd systemd-devel systemtap-sdt-devel tcl-devel vim wget zlib-devel python3-devel lz4-devel libzstd-devel perl-IPC-Run perl-Test-Simple rpmdevtools" + yum -y install ${INSTALL_LIST} + source /opt/rh/devtoolset-7/enable + source /opt/rh/llvm-toolset-7/enable + else + dnf config-manager --set-enabled ol${RHEL}_codeready_builder + + INSTALL_LIST="chrpath clang-devel clang llvm-devel python3-devel perl-generators bison e2fsprogs-devel flex gettext git glibc-devel krb5-devel libicu-devel libselinux-devel libuuid-devel libxml2-devel libxslt-devel openldap-devel openssl-devel pam-devel patch perl perl-ExtUtils-MakeMaker perl-ExtUtils-Embed readline-devel rpmdevtools selinux-policy systemd systemd-devel systemtap-sdt-devel tcl-devel vim wget zlib-devel lz4-devel libzstd-devel perl-IPC-Run perl-Test-Simple rpmdevtools" + yum -y install rpmbuild || yum -y install rpm-build || true + yum -y install ${INSTALL_LIST} + yum -y install binutils gcc gcc-c++ + if [ x"$RHEL" = x8 ]; then + yum -y install python2-devel + else + yum -y install python-devel + fi + yum clean all + if [ ! -f /usr/bin/llvm-config ]; then + ln -s /usr/bin/llvm-config-64 /usr/bin/llvm-config + fi + + fi + yum -y install bzip2-devel gcc gcc-c++ rpm-build || true + yum -y install cmake cyrus-sasl-devel make openssl-devel zlib-devel libcurl-devel || true + yum -y install perl-IPC-Run perl-Test-Simple + yum -y install docbook-xsl libxslt-devel + + if [ x"$RHEL" = x9 ]; then + yum -y install gcc-toolset-14 + fi + else + apt-get update || true + DEBIAN_FRONTEND=noninteractive apt-get -y install gnupg2 curl wget lsb-release quilt + apt-get update || true + export DEBIAN=$(lsb_release -sc) + export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') + ENV export DEBIAN_FRONTEND=noninteractive + DEBIAN_FRONTEND=noninteractive apt-get -y install tzdata + ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime + dpkg-reconfigure --frontend noninteractive tzdata + wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb + dpkg -i percona-release_latest.generic_all.deb + rm -f percona-release_latest.generic_all.deb + percona-release disable all + percona-release enable ppg-${PG_VERSION} testing + apt-get update + if [ "x${DEBIAN}" != "xfocal" -a "x${DEBIAN}" != "xbullseye" -a "x${DEBIAN}" != "xjammy" -a "x${DEBIAN}" != "xbookworm" -a "x${DEBIAN}" != "xnoble" -a "x${DEBIAN}" != "xtrixie" ]; then + INSTALL_LIST="bison build-essential ccache cron debconf debhelper devscripts dh-exec dh-systemd docbook-xml docbook-xsl dpkg-dev flex gcc gettext git krb5-multidev libbsd-resource-perl libedit-dev libicu-dev libipc-run-perl libkrb5-dev libldap-dev libldap2-dev libmemchan-tcl-dev libpam0g-dev libperl-dev libpython-dev libreadline-dev libselinux1-dev libssl-dev libsystemd-dev libwww-perl libxml2-dev libxml2-utils libxslt-dev libxslt1-dev llvm-dev perl pkg-config python python-dev python3-dev systemtap-sdt-dev tcl-dev tcl8.6-dev uuid-dev vim wget xsltproc zlib1g-dev rename clang gdb liblz4-dev libipc-run-perl libcurl4-openssl-dev libzstd-dev" + else + INSTALL_LIST="bison build-essential ccache cron debconf debhelper devscripts dh-exec docbook-xml docbook-xsl dpkg-dev flex gcc gettext git krb5-multidev libbsd-resource-perl libedit-dev libicu-dev libipc-run-perl libkrb5-dev libldap-dev libldap2-dev libmemchan-tcl-dev libpam0g-dev libperl-dev libpython3-dev libreadline-dev libselinux1-dev libssl-dev libsystemd-dev libwww-perl libxml2-dev libxml2-utils libxslt-dev libxslt1-dev llvm-dev perl pkg-config python3 python3-dev systemtap-sdt-dev tcl-dev tcl8.6-dev uuid-dev vim wget xsltproc zlib1g-dev rename clang gdb liblz4-dev libipc-run-perl libcurl4-openssl-dev libzstd-dev" + fi + + until DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST}; do + sleep 1 + echo "waiting" + done + fi +fi + + +# postgresql-common +if [ "$COMPONENT" = "postgresql-common" ]; then + if [ "x$OS" = "xrpm" ]; then + yum -y install wget + yum clean all + RHEL=$(rpm --eval %rhel) + if [[ "${RHEL}" -eq 10 ]]; then + yum install oracle-epel-release-el10 + else + yum -y install epel-release + fi + INSTALL_LIST="git patch perl perl-ExtUtils-MakeMaker perl-ExtUtils-Embed rpmdevtools wget perl-podlators sudo make" + yum -y install ${INSTALL_LIST} + else + apt-get update || true + apt-get -y install lsb-release + export DEBIAN=$(lsb_release -sc) + export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') + apt-get -y install gnupg2 + apt-get update || true + INSTALL_LIST="git wget debhelper libreadline-dev lsb-release rename devscripts sudo" + until DEBIAN_FRONTEND=noninteractive apt-get -y install ${INSTALL_LIST}; do + sleep 1 + echo "waiting" + done + fi +fi + +# ydiff +if [ "$COMPONENT" = "ydiff" ]; then + if [ "x$OS" = "xrpm" ]; then + if [ x"$RHEL" = x8 ]; then + switch_to_vault_repo || true + fi + yum -y install wget + yum clean all + if [[ "${RHEL}" -eq 10 ]]; then + yum install oracle-epel-release-el10 + else + yum -y install epel-release + fi + RHEL=$(rpm --eval %rhel) + if [ ${RHEL} -gt 7 ]; then + yum config-manager --set-enabled PowerTools || yum config-manager --set-enabled powertools || true + fi + if [ ${RHEL} = 7 ]; then + INSTALL_LIST="git wget rpm-build python3-devel rpmdevtools" + yum -y install ${INSTALL_LIST} + else + dnf config-manager --set-enabled ol${RHEL}_codeready_builder + dnf clean all + rm -r /var/cache/dnf + dnf -y upgrade + INSTALL_LIST="git wget rpm-build python3-devel python3-setuptools rpmdevtools" + yum -y install ${INSTALL_LIST} + fi + else + apt-get update || true + apt-get -y install lsb-release wget curl gnupg2 + export DEBIAN=$(lsb_release -sc) + export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') + until apt-get -y install gnupg2; do + sleep 3 + echo "WAITING" + done + apt-get update || true + + INSTALL_LIST="build-essential debconf debhelper devscripts dh-exec git wget fakeroot devscripts python3-psycopg2 python3-setuptools libyaml-dev python3-virtualenv ruby ruby-dev rubygems curl golang dh-python libjs-mathjax pyflakes3 python3-dateutil python3-dnspython python3-etcd python3-flake8 python3-kazoo python3-mccabe python3-mock python3-prettytable python3-psutil python3-pycodestyle python3-pytest python3-pytest-cov python3-sphinx python3-sphinx-rtd-theme python3-tz python3-tzlocal sphinx-common python3-click python3-doc python3-all " + if [ "x${DEBIAN}" = "xtrixie" ]; then + INSTALL_LIST+="python3-dev dh-virtualenv python3-boto3" + elif [ "x${DEBIAN}" != "xfocal" ]; then + INSTALL_LIST+="python3-dev dh-virtualenv python3-boto" + else + INSTALL_LIST+="python2-dev python3-boto" + fi + DEBIAN_FRONTEND=noninteractive apt-get -y install ${INSTALL_LIST} + fi +fi + +# wal2json +if [ "$COMPONENT" = "wal2json" ]; then + if [ "x$OS" = "xrpm" ]; then + RHEL=$(rpm --eval %rhel) + if [ x"$RHEL" = x8 ]; then + switch_to_vault_repo || true + fi + yum -y install wget + add_percona_yum_repo + yum clean all + if [[ "${RHEL}" -eq 10 ]]; then + yum install oracle-epel-release-el10 + else + yum -y install epel-release + fi + if [ ${RHEL} -gt 7 ]; then + dnf -y module disable postgresql || true + dnf config-manager --set-enabled ol${RHEL}_codeready_builder + dnf clean all + rm -r /var/cache/dnf + dnf -y upgrade + switch_to_vault_repo || true + + yum -y install clang-devel clang llvm-devel perl lz4-libs c-ares-devel + else + until yum -y install centos-release-scl; do + echo "waiting" + sleep 1 + done + yum -y install llvm-toolset-7-clang llvm5.0-devtoolset + source /opt/rh/devtoolset-7/enable + source /opt/rh/llvm-toolset-7/enable + fi + INSTALL_LIST="pandoc libtool libevent-devel python3-psycopg2 openssl-devel pam-devel percona-postgresql${PG_MAJOR}-devel git rpmdevtools systemd systemd-devel wget libxml2-devel perl perl-DBD-Pg perl-Digest-SHA perl-IO-Socket-SSL perl-JSON-PP zlib-devel gcc make autoconf perl-ExtUtils-Embed" + yum -y install ${INSTALL_LIST} + yum -y install lz4 || true + + else + export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') + apt-get update || true + apt-get -y install lsb-release wget gnupg2 curl + export DEBIAN=$(lsb_release -sc) + add_percona_apt_repo + apt-get update || true + INSTALL_LIST="build-essential pkg-config liblz4-dev debconf debhelper devscripts dh-exec git wget libxml-checker-perl libxml-libxml-perl libio-socket-ssl-perl libperl-dev libssl-dev libxml2-dev txt2man zlib1g-dev libpq-dev percona-postgresql-${PG_MAJOR} percona-postgresql-common percona-postgresql-server-dev-all percona-postgresql-all libbz2-dev libzstd-dev libevent-dev libssl-dev libc-ares-dev pandoc pkg-config" + until DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST}; do + sleep 1 + echo "waiting" + done + DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install libpam0g-dev || DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install libpam-dev + fi +fi + +# pysyncobj +if [ "$COMPONENT" = "pysyncobj" ]; then + if [ "x$OS" = "xrpm" ]; then + if [ x"$RHEL" = x8 ]; then + switch_to_vault_repo || true + fi + yum -y install wget + yum clean all + if [[ "${RHEL}" -eq 10 ]]; then + yum install oracle-epel-release-el10 + else + yum -y install epel-release + fi + RHEL=$(rpm --eval %rhel) + if [ ${RHEL} = 7 ]; then + INSTALL_LIST="git rpm-build python3-devel rpmdevtools rpmlint" + yum -y install ${INSTALL_LIST} + else + dnf config-manager --set-enabled ol${RHEL}_codeready_builder + dnf clean all + rm -r /var/cache/dnf + dnf -y upgrade + INSTALL_LIST="git rpm-build python3-devel python3-setuptools rpmdevtools rpmlint" + yum -y install ${INSTALL_LIST} + fi + else + apt-get update || true + apt-get -y install lsb-release wget curl gnupg2 + export DEBIAN=$(lsb_release -sc) + export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') + until apt-get -y install gnupg2; do + sleep 3 + echo "WAITING" + done + apt-get update || true + + INSTALL_LIST="build-essential debconf debhelper devscripts dh-exec git wget fakeroot devscripts python3-psycopg2 python3-setuptools libyaml-dev python3-virtualenv python3-psycopg2 ruby ruby-dev rubygems curl golang dh-python libjs-mathjax pyflakes3 python3-dateutil python3-dnspython python3-etcd python3-flake8 python3-kazoo python3-mccabe python3-mock python3-prettytable python3-psutil python3-pycodestyle python3-pytest python3-pytest-cov python3-sphinx python3-sphinx-rtd-theme python3-tz python3-tzlocal sphinx-common python3-click python3-doc python3-all " + if [ "x${DEBIAN}" = "xtrixie" ]; then + INSTALL_LIST+="python3-dev dh-virtualenv python3-boto3" + elif [ "x${DEBIAN}" != "xfocal" ]; then + INSTALL_LIST+="python3-dev dh-virtualenv python3-boto" + else + INSTALL_LIST+="python2-dev python3-boto" + fi + DEBIAN_FRONTEND=noninteractive apt-get -y install ${INSTALL_LIST} + fi +fi + +# ppg-server-ha +if [ "$COMPONENT" = "ppg-server-ha" ]; then + if [ "x$OS" = "xrpm" ]; then + RHEL=$(rpm --eval %rhel) + yum -y install wget + add_percona_yum_repo + yum clean all + + if [ ${RHEL} = 8 ]; then + dnf -y module disable postgresql || true + dnf config-manager --set-enabled codeready-builder-for-rhel-8-x86_64-rpms + dnf clean all + rm -r /var/cache/dnf + dnf -y upgrade + yum -y install perl lz4-libs c-ares-devel + fi + if [[ "${RHEL}" -eq 10 ]]; then + INSTALL_LIST="git rpm-build rpmdevtools" + else + INSTALL_LIST="git rpm-build rpmdevtools rpmlint" + fi + yum -y install ${INSTALL_LIST} + yum -y install lz4 || true + + else + export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') + apt-get -y update + apt-get -y install wget curl lsb-release gnupg2 + export DEBIAN=$(lsb_release -sc) + add_percona_apt_repo + apt-get update || true + INSTALL_LIST="debconf debhelper devscripts dh-exec git" + until DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST}; do + sleep 1 + echo "waiting" + done + fi +fi + +# ppg-server +if [ "$COMPONENT" = "ppg-server" ]; then + if [ "x$OS" = "xrpm" ]; then + RHEL=$(rpm --eval %rhel) + yum -y install wget + add_percona_yum_repo + yum clean all + + if [ ${RHEL} = 8 ]; then + dnf -y module disable postgresql || true + dnf config-manager --set-enabled codeready-builder-for-rhel-8-x86_64-rpms + dnf clean all + rm -r /var/cache/dnf + dnf -y upgrade + yum -y install perl lz4-libs c-ares-devel + fi + if [[ "${RHEL}" -eq 10 ]]; then + INSTALL_LIST="git rpm-build rpmdevtools" + else + INSTALL_LIST="git rpm-build rpmdevtools rpmlint" + fi + yum -y install ${INSTALL_LIST} + yum -y install lz4 || true + + else + export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') + apt-get -y update + apt-get -y install wget curl lsb-release gnupg2 + export DEBIAN=$(lsb_release -sc) + add_percona_apt_repo + apt-get update || true + INSTALL_LIST="debconf debhelper devscripts dh-exec git" + until DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST}; do + sleep 1 + echo "waiting" + done + fi +fi + +# postgis +if [ "$COMPONENT" = "postgis" ]; then + if [ "x$OS" = "xrpm" ]; then + yum -y install wget + add_percona_yum_repo + yum clean all + RHEL=$(rpm --eval %rhel) + ARCH=$(uname -m) + if [[ "${RHEL}" -eq 10 ]]; then + yum install oracle-epel-release-el10 + dnf config-manager --set-enabled ol${RHEL}_codeready_builder + else + yum -y install epel-release + fi + if [ x"$RHEL" = x6 -o x"$RHEL" = x7 ]; then + until yum -y install centos-release-scl; do + echo "waiting" + sleep 1 + done + wget --no-check-certificate https://download.postgresql.org/pub/repos/yum/reporpms/EL-${RHEL}-${ARCH}/pgdg-redhat-repo-latest.noarch.rpm + yum -y install pgdg-redhat-repo-latest.noarch.rpm + yum -y install pgdg-srpm-macros + INSTALL_LIST="git rpm-build autoconf libtool flex rpmdevtools wget llvm-toolset-7 devtoolset-7 rpmlint percona-postgresql${PG_MAJOR}-devel gcc make geos geos-devel proj libgeotiff-devel pcre-devel gmp-devel SFCGAL SFCGAL-devel gdal33-devel gdal34-devel geos311-devel gmp-devel gtk2-devel json-c-devel libgeotiff17-devel proj72-devel protobuf-c-devel pkg-config" + yum -y install ${INSTALL_LIST} + source /opt/rh/devtoolset-7/enable + source /opt/rh/llvm-toolset-7/enable + else + yum config-manager --enable PowerTools AppStream BaseOS *epel || true + dnf module -y disable postgresql || true + dnf config-manager --set-enabled ol${RHEL}_codeready_builder + yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-${RHEL}.noarch.rpm + wget --no-check-certificate https://download.postgresql.org/pub/repos/yum/reporpms/EL-${RHEL}-${ARCH}/pgdg-redhat-repo-latest.noarch.rpm + yum -y install pgdg-redhat-repo-latest.noarch.rpm + yum -y install pgdg-srpm-macros + if [ x"$RHEL" = x9 ]; then + yum -y install SFCGAL SFCGAL-devel gdal311-devel proj95-devel + elif [ x"$RHEL" = x10 ]; then + yum -y install SFCGAL SFCGAL-devel gdal311-devel proj96-devel + else + yum -y install SFCGAL SFCGAL-devel gdal38-devel proj95-devel + fi + if [ x"$RHEL" = x10 ]; then + yum -y install geos313-devel pcre2-devel which + else + yum -y install geos311-devel pcre-devel + fi + INSTALL_LIST="xerces-c-devel clang-devel clang llvm-devel git rpm-build autoconf libtool flex rpmdevtools wget rpmlint percona-postgresql${PG_MAJOR}-devel gcc make geos geos-devel libgeotiff-devel gmp-devel gmp-devel gtk2-devel json-c-devel libgeotiff17-devel protobuf-c-devel pkg-config" + yum -y install ${INSTALL_LIST} + yum -y install binutils gcc gcc-c++ + yum clean all + if [ ! -f /usr/bin/llvm-config ]; then + ln -s /usr/bin/llvm-config-64 /usr/bin/llvm-config + fi + fi + yum -y install docbook-xsl libxslt-devel + else + apt-get -y update + apt-get -y install curl wget lsb-release + export DEBIAN=$(lsb_release -sc) + export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') + apt-get -y install gnupg2 + apt-get update || true + ENV export DEBIAN_FRONTEND=noninteractive + DEBIAN_FRONTEND=noninteractive apt-get -y install tzdata + ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime + dpkg-reconfigure --frontend noninteractive tzdata + wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb + dpkg -i percona-release_latest.generic_all.deb + rm -f percona-release_latest.generic_all.deb + percona-release enable-only ppg-${PG_VERSION} testing + percona-release enable telemetry testing + apt-get update + + INSTALL_LIST="bison build-essential imagemagick debconf debhelper devscripts dh-exec dpkg-dev flex gcc git cmake vim wget dctrl-tools docbook docbook-xsl libcunit1-dev libgdal-dev libgeos-dev libjson-c-dev libpcre2-dev libproj-dev libprotobuf-c-dev libsfcgal-dev libxml2-dev pkg-config po-debconf percona-postgresql-all percona-postgresql-common percona-postgresql-server-dev-all percona-postgresql-${PG_MAJOR_VERSION} protobuf-c-compiler rdfind xsltproc" + until DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST}; do + sleep 1 + echo "waiting" + done + apt-get install -y dblatex || true + + if [ "x${DEBIAN}" = "xbionic" ]; then + install_sfcgal + fi + fi +fi + +# pgvector +if [ "$COMPONENT" = "pgvector" ]; then + if [ "x$OS" = "xrpm" ]; then + yum -y install wget + add_percona_yum_repo + yum clean all + RHEL=$(rpm --eval %rhel) + if [[ "${RHEL}" -eq 10 ]]; then + yum install oracle-epel-release-el10 + else + yum -y install epel-release + fi + if [ x"$RHEL" = x6 -o x"$RHEL" = x7 ]; then + until yum -y install centos-release-scl; do + echo "waiting" + sleep 1 + done + INSTALL_LIST="bison e2fsprogs-devel flex gettext git glibc-devel krb5-devel libicu-devel libselinux-devel libuuid-devel libxml2-devel libxslt-devel llvm5.0-devel llvm-toolset-7-clang openldap-devel openssl-devel pam-devel patch perl perl-ExtUtils-Embed perl-ExtUtils-MakeMaker python2-devel readline-devel rpmbuild percona-postgresql${PG_MAJOR}-devel percona-postgresql${PG_MAJOR}-server rpm-build rpmdevtools selinux-policy systemd systemd-devel systemtap-sdt-devel tcl-devel vim wget zlib-devel llvm-toolset-7-clang-devel make gcc gcc-c++" + yum -y install ${INSTALL_LIST} + source /opt/rh/devtoolset-7/enable + source /opt/rh/llvm-toolset-7/enable + else + dnf module -y disable postgresql || true + dnf config-manager --set-enabled ol${RHEL}_codeready_builder + + INSTALL_LIST="clang-devel clang llvm-devel python3-devel perl-generators bison e2fsprogs-devel flex gettext git glibc-devel krb5-devel libicu-devel libselinux-devel libuuid-devel libxml2-devel libxslt-devel openldap-devel openssl-devel pam-devel patch perl perl-ExtUtils-MakeMaker perl-ExtUtils-Embed readline-devel percona-postgresql${PG_MAJOR}-devel percona-postgresql${PG_MAJOR}-server rpm-build rpmdevtools selinux-policy systemd systemd-devel systemtap-sdt-devel tcl-devel vim wget zlib-devel " + yum -y install ${INSTALL_LIST} + yum -y install binutils gcc gcc-c++ + fi + else + apt-get -y update + apt-get -y install wget lsb-release + export DEBIAN=$(lsb_release -sc) + export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') + apt-get -y update || true + apt-get -y install gnupg2 curl + add_percona_apt_repo + apt-get update || true + INSTALL_LIST="build-essential dpkg-dev debconf debhelper clang devscripts dh-exec git wget libkrb5-dev libssl-dev percona-postgresql-common percona-postgresql-server-dev-all" + DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST} + fi +fi + +# pgpool2 +if [ "$COMPONENT" = "pgpool2" ]; then + if [ "$OS" == "rpm" ] + then + if [[ "${RHEL}" -eq 10 ]]; then + yum install oracle-epel-release-el10 + dnf config-manager --set-enabled ol${RHEL}_codeready_builder + else + yum -y install epel-release + fi + yum -y install wget + yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm + percona-release enable ppg-${PG_VERSION} testing + yum -y install git libtool bison flex byacc + + PKGLIST="clang-devel clang llvm-devel percona-postgresql${PG_MAJOR}-devel" + PKGLIST+=" git rpmdevtools vim wget" + PKGLIST+=" perl binutils gcc gcc-c++" + PKGLIST+=" git rpmdevtools wget gcc make autoconf" + PKGLIST+=" jade pam-devel openssl-devel docbook-dtds docbook-style-xsl openldap-devel docbook-style-dsssl libmemcached-devel libxslt" + + if [[ "${RHEL}" -eq 8 ]]; then + dnf config-manager --set-enabled powertools + dnf config-manager --set-enabled ol${RHEL}_codeready_builder + fi + if [ $RHEL -eq 9 ]; then + dnf config-manager --set-enabled ol${RHEL}_codeready_builder + sed -i 's/enabled=0/enabled=1/g' /etc/yum.repos.d/oracle-linux-ol9.repo + fi + if [[ "${RHEL}" -eq 8 ]]; then + dnf -y module disable postgresql || true + elif [[ "${RHEL}" -eq 7 ]]; then + PKGLIST+=" llvm-toolset-7-clang llvm-toolset-7 llvm5.0-devel llvm-toolset-7-llvm-devel" + until yum -y install epel-release centos-release-scl; do + yum clean all + sleep 1 + echo "waiting" + done + until yum -y makecache; do + yum clean all + sleep 1 + echo "waiting" + done + fi + until yum -y install ${PKGLIST}; do + echo "waiting" + sleep 5 + done + else + apt-get update + DEBIAN_FRONTEND=noninteractive apt-get -y install lsb-release gnupg git wget curl + export DEBIAN=$(lsb_release -sc) + + wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb + dpkg -i percona-release_latest.generic_all.deb + rm -f percona-release_latest.generic_all.deb + percona-release enable ppg-${PG_VERSION} testing + + PKGLIST="percona-postgresql-${PG_MAJOR} percona-postgresql-common percona-postgresql-server-dev-all" + + apt-get update + + if [[ "${DEBIAN}" != "focal" ]]; then + #LLVM_EXISTS=$(grep -c "apt.llvm.org" /etc/apt/sources.list) + #if [ "${LLVM_EXISTS}" == 0 ]; then + # wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - + # echo "deb http://apt.llvm.org/${OS_NAME}/ llvm-toolchain-${OS_NAME}-7 main" >> /etc/apt/sources.list + # echo "deb-src http://apt.llvm.org/${OS_NAME}/ llvm-toolchain-${OS_NAME}-7 main" >> /etc/apt/sources.list + # apt-get update + #fi + wget http://mirrors.kernel.org/ubuntu/pool/universe/l/llvm-toolchain-7/llvm-7_7.0.1-12_amd64.deb http://mirrors.kernel.org/ubuntu/pool/universe/l/llvm-toolchain-7/libllvm7_7.0.1-12_amd64.deb http://mirrors.kernel.org/ubuntu/pool/universe/l/llvm-toolchain-7/llvm-7-runtime_7.0.1-12_amd64.deb + apt install ./libllvm7_7.0.1-12_amd64.deb ./llvm-7_7.0.1-12_amd64.deb ./llvm-7-runtime_7.0.1-12_amd64.deb + fi + + PKGLIST+=" debconf devscripts dh-exec git wget libkrb5-dev libssl-dev" + PKGLIST+=" build-essential debconf debhelper devscripts dh-exec libxml-checker-perl" + # PKGLIST+=" libxml-libxml-perl libio-socket-ssl-perl libperl-dev libssl-dev libxml2-dev txt2man zlib1g-dev libpq-dev" + PKGLIST+=" chrpath docbook docbook-dsssl docbook-xml docbook-xsl flex libmemcached-dev libxml2-utils openjade opensp xsltproc" + PKGLIST+=" bison libldap-dev libpam0g-dev" + + until DEBIAN_FRONTEND=noninteractive apt-get -y install ${PKGLIST}; do + sleep 5 + echo "waiting" + done + + cat /etc/apt/sources.list | grep ${DEBIAN}-backports + apt list --all-versions debhelper + apt-get -y install -t ${DEBIAN}-backports debhelper + + get_openjade_devel + fi +fi + +# pgbouncer +if [ "$COMPONENT" = "pgbouncer" ]; then + if [ "x$OS" = "xrpm" ]; then + RHEL=$(rpm --eval %rhel) + if [ x"$RHEL" = x8 ]; then + switch_to_vault_repo || true + fi + yum -y install wget + add_percona_yum_repo + yum clean all + if [[ "${RHEL}" -eq 10 ]]; then + yum install oracle-epel-release-el10 + else + yum -y install epel-release + fi + if [ ${RHEL} -gt 7 ]; then + dnf -y module disable postgresql || true + dnf config-manager --set-enabled ol${RHEL}_codeready_builder + dnf clean all + rm -r /var/cache/dnf + dnf -y upgrade + switch_to_vault_repo || true + yum -y install perl lz4-libs c-ares-devel + else + until yum -y install centos-release-scl; do + echo "waiting" + sleep 1 + done + yum -y install llvm-toolset-7-clang llvm5.0-devtoolset + source /opt/rh/devtoolset-7/enable + source /opt/rh/llvm-toolset-7/enable + fi + INSTALL_LIST="pandoc libtool libevent-devel python3 python3-psycopg2 openssl-devel pam-devel git rpm-build rpmdevtools systemd systemd-devel wget libxml2-devel perl perl-DBD-Pg perl-Digest-SHA perl-IO-Socket-SSL perl-JSON-PP zlib-devel gcc make autoconf perl-ExtUtils-Embed libevent-devel libtool pandoc" + yum -y install ${INSTALL_LIST} + yum -y install lz4 || true + + else + apt-get update || true + export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') + apt-get -y install lsb-release wget curl gnupg2 + export DEBIAN=$(lsb_release -sc) + add_percona_apt_repo + apt-get update || true + INSTALL_LIST="build-essential pkg-config liblz4-dev debconf debhelper devscripts dh-exec git wget libxml-checker-perl libxml-libxml-perl libio-socket-ssl-perl libperl-dev libssl-dev libxml2-dev txt2man zlib1g-dev libpq-dev percona-postgresql-common libbz2-dev libzstd-dev libevent-dev libssl-dev libc-ares-dev pandoc pkg-config" + until DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST}; do + sleep 1 + echo "waiting" + done + DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install libpam0g-dev || DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install libpam-dev + fi +fi + +# pgbadger +if [ "$COMPONENT" = "pgbadger" ]; then + if [ "x$OS" = "xrpm" ]; then + RHEL=$(rpm --eval %rhel) + if [ x"$RHEL" = x8 ]; then + switch_to_vault_repo || true + fi + yum -y install wget + add_percona_yum_repo + yum clean all + if [[ "${RHEL}" -eq 10 ]]; then + yum install oracle-epel-release-el10 + else + yum -y install epel-release + fi + + if [ ${RHEL} -gt 7 ]; then + dnf -y module disable postgresql || true + dnf config-manager --set-enabled ol${RHEL}_codeready_builder + dnf clean all + rm -r /var/cache/dnf + dnf -y upgrade + switch_to_vault_repo || true + yum -y install perl lz4-libs c-ares-devel + yum -y install rpm-build + else + until yum -y install centos-release-scl; do + echo "waiting" + sleep 1 + done + yum -y install llvm-toolset-7-clang llvm5.0-devtoolset + source /opt/rh/devtoolset-7/enable + source /opt/rh/llvm-toolset-7/enable + fi + INSTALL_LIST="pandoc libtool libevent-devel python3-psycopg2 openssl-devel pam-devel git rpm-build rpmdevtools systemd systemd-devel wget libxml2-devel perl perl-DBD-Pg perl-Digest-SHA perl-IO-Socket-SSL perl-JSON-PP zlib-devel gcc make autoconf perl-ExtUtils-Embed which perl-Pod-Markdown" + yum -y install ${INSTALL_LIST} + yum -y install lz4 || true + + else + apt-get update || true + apt-get -y install gnupg2 lsb-release wget curl + export DEBIAN=$(lsb_release -sc) + export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') + add_percona_apt_repo + apt-get update || true + INSTALL_LIST="build-essential pkg-config liblz4-dev debconf debhelper devscripts dh-exec git wget libxml-libxml-perl libcontextual-return-perl libxml-checker-perl libio-socket-ssl-perl libperl-dev libssl-dev libxml2-dev txt2man zlib1g-dev libpq-dev percona-postgresql-common libbz2-dev libzstd-dev libevent-dev libssl-dev libc-ares-dev pandoc pkg-config libjson-xs-perl libpod-markdown-perl" + until DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST}; do + sleep 1 + echo "waiting" + done + DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install libpam0g-dev || DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install libpam-dev + fi +fi + +# pgbackrest +if [ "$COMPONENT" = "pgbackrest" ]; then + if [ "x$OS" = "xrpm" ]; then + if [ x"$RHEL" = x8 ]; then + switch_to_vault_repo || true + fi + yum -y install wget + add_percona_yum_repo + yum clean all + RHEL=$(rpm --eval %rhel) + if [[ "${RHEL}" -eq 10 ]]; then + yum install oracle-epel-release-el10 + else + yum -y install epel-release + fi + if [ ${RHEL} -gt 7 ]; then + dnf -y module disable postgresql || true + dnf config-manager --enable ol${RHEL}_codeready_builder + dnf clean all + rm -r /var/cache/dnf + dnf -y upgrade + yum -y install perl lz4-libs + yum config-manager --set-enabled powertools || true + yum -y install libyaml-devel + else + until yum -y install centos-release-scl; do + echo "waiting" + sleep 1 + done + yum -y install llvm-toolset-7-clang llvm5.0-devtoolset + yum -y install libyaml-devel + source /opt/rh/devtoolset-7/enable + source /opt/rh/llvm-toolset-7/enable + fi + INSTALL_LIST="percona-postgresql${PG_MAJOR}-devel git rpm-build rpmdevtools systemd systemd-devel wget bzip2-devel libxml2-devel openssl-devel perl perl-DBD-Pg perl-Digest-SHA perl-IO-Socket-SSL perl-JSON-PP zlib-devel gcc make autoconf perl-ExtUtils-Embed libssh-devel libzstd-devel lz4-devel" + yum -y install ${INSTALL_LIST} + yum -y install lz4 || true + yum -y install perl-libxml-perl || true + + yum install meson gcc make git autoconf libtool cmake + git clone https://github.com/ianlancetaylor/libbacktrace.git + cd libbacktrace/ + ./configure --prefix=/usr/local + make + make install + cd ../ + + else + export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') + apt-get update || true + apt-get -y install gnupg2 wget curl lsb-release + + export DEBIAN=$(lsb_release -sc) + add_percona_apt_repo + percona-release enable tools testing + percona-release enable ppg-${PG_VERSION} testing + apt-get update || true + INSTALL_LIST="build-essential pkg-config liblz4-dev debconf debhelper devscripts dh-exec git wget libxml-checker-perl libxml-libxml-perl libio-socket-ssl-perl libperl-dev libssl-dev libxml2-dev txt2man zlib1g-dev libpq-dev percona-postgresql-${PG_MAJOR} percona-postgresql-common percona-postgresql-server-dev-all libbz2-dev libzstd-dev libyaml-dev meson python3-setuptools" + until DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST}; do + sleep 1 + echo "waiting" + done + if [ "x${DEBIAN}" != "xbullseye" ]; then + DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install dh_systemd + fi + if [ "x${DEBIAN}" = "xstretch" ]; then + wget http://ftp.us.debian.org/debian/pool/main/liby/libyaml-libyaml-perl/libyaml-libyaml-perl_0.76+repack-1~bpo9+1_amd64.deb + dpkg -i ./libyaml-libyaml-perl_0.76+repack-1~bpo9+1_amd64.deb + fi + fi +fi + +# pgaudit_set_user +if [ "$COMPONENT" = "pgaudit_set_user" ]; then + if [ "x$OS" = "xrpm" ]; then + yum -y install wget + add_percona_yum_repo + percona-release enable telemetry testing + yum clean all + RHEL=$(rpm --eval %rhel) + if [[ "${RHEL}" -eq 10 ]]; then + yum install oracle-epel-release-el10 + else + yum -y install epel-release + fi + if [ x"$RHEL" = x6 -o x"$RHEL" = x7 ]; then + until yum -y install centos-release-scl; do + echo "waiting" + sleep 1 + done + INSTALL_LIST="bison e2fsprogs-devel flex gettext git glibc-devel krb5-devel libicu-devel libselinux-devel libuuid-devel libxml2-devel libxslt-devel llvm5.0-devel llvm-toolset-7-clang openldap-devel openssl-devel pam-devel patch perl perl-ExtUtils-Embed perl-ExtUtils-MakeMaker python2-devel readline-devel rpmbuild percona-postgresql${PG_MAJOR}-devel percona-postgresql${PG_MAJOR}-server rpm-build rpmdevtools selinux-policy systemd systemd-devel systemtap-sdt-devel tcl-devel vim wget zlib-devel llvm-toolset-7-clang-devel make" + yum -y install ${INSTALL_LIST} + source /opt/rh/devtoolset-7/enable + source /opt/rh/llvm-toolset-7/enable + else + dnf config-manager --set-enabled ol${RHEL}_codeready_builder + dnf module disable postgresql || true + + INSTALL_LIST="clang-devel clang llvm-devel python3-devel perl-generators bison e2fsprogs-devel flex gettext git glibc-devel krb5-devel libicu-devel libselinux-devel libuuid-devel libxml2-devel libxslt-devel openldap-devel openssl-devel pam-devel patch perl perl-ExtUtils-MakeMaker perl-ExtUtils-Embed readline-devel percona-postgresql${PG_MAJOR}-devel percona-postgresql${PG_MAJOR}-server rpm-build rpmdevtools selinux-policy systemd systemd-devel systemtap-sdt-devel tcl-devel vim wget zlib-devel " + yum -y install ${INSTALL_LIST} + yum -y install binutils gcc gcc-c++ + fi + else + export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') + apt-get -y update || true + apt-get -y install lsb-release wget gnupg2 curl + export DEBIAN=$(lsb_release -sc) + add_percona_apt_repo + percona-release enable tools testing + percona-release enable ppg-${PG_VERSION} testing + apt-get update || true + INSTALL_LIST="build-essential dpkg-dev debconf debhelper clang devscripts dh-exec git wget libkrb5-dev libssl-dev percona-postgresql-common percona-postgresql-server-dev-all" + DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST} + fi +fi + +# pgaudit +if [ "$COMPONENT" = "pgaudit" ]; then + if [ "x$OS" = "xrpm" ]; then + yum -y install wget + add_percona_yum_repo + percona-release enable telemetry testing + yum clean all + RHEL=$(rpm --eval %rhel) + if [[ "${RHEL}" -eq 10 ]]; then + yum install oracle-epel-release-el10 + else + yum -y install epel-release + fi + if [ x"$RHEL" = x6 -o x"$RHEL" = x7 ]; then + until yum -y install centos-release-scl; do + echo "waiting" + sleep 1 + done + INSTALL_LIST="bison e2fsprogs-devel flex gettext git glibc-devel krb5-devel libicu-devel libselinux-devel libuuid-devel libxml2-devel libxslt-devel llvm5.0-devel llvm-toolset-7-clang openldap-devel openssl-devel pam-devel patch perl perl-ExtUtils-Embed perl-ExtUtils-MakeMaker python2-devel readline-devel rpmbuild percona-postgresql${PG_MAJOR}-devel percona-postgresql${PG_MAJOR}-server rpm-build rpmdevtools selinux-policy systemd systemd-devel systemtap-sdt-devel tcl-devel vim wget zlib-devel llvm-toolset-7-clang-devel make gcc gcc-c++" + yum -y install ${INSTALL_LIST} + source /opt/rh/devtoolset-7/enable + source /opt/rh/llvm-toolset-7/enable + else + if [ x"$RHEL" = x10 ]; then + yum -y install oracle-epel-release-el10 + else + yum -y install epel-release + fi + dnf module -y disable postgresql || true + dnf config-manager --set-enabled ol${RHEL}_codeready_builder + + INSTALL_LIST="clang-devel clang llvm-devel python3-devel perl-generators bison e2fsprogs-devel flex gettext git glibc-devel krb5-devel libicu-devel libselinux-devel libuuid-devel libxml2-devel libxslt-devel openldap-devel openssl-devel pam-devel patch perl perl-ExtUtils-MakeMaker perl-ExtUtils-Embed readline-devel percona-postgresql${PG_MAJOR}-devel percona-postgresql${PG_MAJOR}-server rpm-build rpmdevtools selinux-policy systemd systemd-devel systemtap-sdt-devel tcl-devel vim wget zlib-devel " + yum -y install ${INSTALL_LIST} + yum -y install binutils gcc gcc-c++ + fi + else + apt-get -y update + apt-get -y install wget lsb-release + export DEBIAN=$(lsb_release -sc) + export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') + apt-get -y update || true + apt-get -y install gnupg2 curl + add_percona_apt_repo + percona-release enable tools testing + percona-release enable ppg-${PG_VERSION} testing + apt-get update || true + INSTALL_LIST="build-essential dpkg-dev debconf debhelper clang devscripts dh-exec git wget libkrb5-dev libssl-dev percona-postgresql-common percona-postgresql-server-dev-all" + DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST} + fi +fi + +# pg_repack +if [ "$COMPONENT" = "pg_repack" ]; then + if [ "x$OS" = "xrpm" ]; then + yum -y install wget + add_percona_yum_repo + yum clean all + RHEL=$(rpm --eval %rhel) + if [[ "${RHEL}" -eq 10 ]]; then + yum install oracle-epel-release-el10 + else + yum -y install epel-release + fi + if [ x"$RHEL" = x6 -o x"$RHEL" = x7 ]; then + until yum -y install centos-release-scl; do + echo "waiting" + sleep 1 + done + yum groupinstall -y "Development Tools" + INSTALL_LIST="percona-postgresql${PG_MAJOR} bison e2fsprogs-devel flex gettext git glibc-devel krb5-devel libicu-devel libselinux-devel libuuid-devel libxml2-devel libxslt-devel llvm5.0-devel llvm-toolset-7-clang openldap-devel openssl-devel pam-devel patch perl perl-ExtUtils-Embed perl-ExtUtils-MakeMaker python2-devel readline-devel rpmbuild percona-postgresql${PG_MAJOR}-devel percona-postgresql${PG_MAJOR}-server rpm-build rpmdevtools selinux-policy systemd systemd-devel systemtap-sdt-devel tcl-devel vim wget zlib-devel libzstd-devel lz4-devel" + yum -y install ${INSTALL_LIST} + source /opt/rh/devtoolset-7/enable + source /opt/rh/llvm-toolset-7/enable + else + dnf module -y disable postgresql || true + dnf config-manager --enable ol${RHEL}_codeready_builder + yum install -y libcurl-devel + + if [ x"$RHEL" = x8 ]; then + INSTALL_LIST="clang-devel clang llvm-devel percona-postgresql${PG_MAJOR} python3-devel perl-generators bison e2fsprogs-devel flex gettext git glibc-devel krb5-devel libicu-devel libselinux-devel libuuid-devel libxml2-devel libxslt-devel openldap-devel openssl-devel pam-devel patch perl perl-ExtUtils-MakeMaker perl-ExtUtils-Embed readline-devel percona-postgresql${PG_MAJOR}-devel percona-postgresql${PG_MAJOR}-server rpm-build rpmdevtools selinux-policy systemd systemd-devel systemtap-sdt-devel tcl-devel vim wget zlib-devel libzstd-devel lz4-devel" + yum -y install ${INSTALL_LIST} + yum -y install binutils gcc gcc-c++ + else + yum -y install percona-postgresql${PG_MAJOR}-devel + yum -y install zlib-devel libzstd-devel readline-devel lz4-devel clang rpmdevtools git openssl-devel openssl-libs lz4-devel + fi + if [ x"$RHEL" = x9 ]; then + yum -y install gcc-toolset-14 + fi + fi + else + apt-get update + apt-get -y install wget gnupg2 lsb-release curl + export DEBIAN=$(lsb_release -sc) + export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') + add_percona_apt_repo + percona-release enable tools testing + apt-get update || true + INSTALL_LIST="dpkg-dev build-essential percona-postgresql-${PG_MAJOR} debconf debhelper devscripts dh-exec git wget libkrb5-dev libssl-dev percona-postgresql-common percona-postgresql-server-dev-all" + DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST} + fi +fi + +# pg_gather +if [ "$COMPONENT" = "pg_gather" ]; then + if [ "x$OS" = "xrpm" ]; then + yum -y install wget + #mv -f percona-dev.repo /etc/yum.repos.d/ + yum clean all + RHEL=$(rpm --eval %rhel) + if [ x"$RHEL" = x6 -o x"$RHEL" = x7 ]; then + until yum -y install centos-release-scl; do + echo "waiting" + sleep 1 + done + fi + if [[ "${RHEL}" -eq 10 ]]; then + INSTALL_LIST="git rpm-build rpmdevtools wget" + else + INSTALL_LIST="git rpm-build rpmdevtools wget rpmlint" + fi + yum -y install ${INSTALL_LIST} + else + apt-get update || true + apt-get -y install wget lsb-release + export DEBIAN=$(lsb_release -sc) + export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') + apt-get -y install gnupg2 + apt-get update || true + INSTALL_LIST="debconf debhelper devscripts dh-exec git" + DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST} + fi +fi + +# pg_cron +if [ "$COMPONENT" = "pg_cron" ]; then + if [ "x$OS" = "xrpm" ]; then + yum -y install wget + add_percona_yum_repo + yum clean all + RHEL=$(rpm --eval %rhel) + if [[ "${RHEL}" -eq 10 ]]; then + yum install oracle-epel-release-el10 + else + yum -y install epel-release + fi + if [ x"$RHEL" = x6 -o x"$RHEL" = x7 ]; then + until yum -y install centos-release-scl; do + echo "waiting" + sleep 1 + done + INSTALL_LIST="bison e2fsprogs-devel flex gettext git glibc-devel krb5-devel libicu-devel libselinux-devel libuuid-devel libxml2-devel libxslt-devel llvm5.0-devel llvm-toolset-7-clang openldap-devel openssl-devel pam-devel patch perl perl-ExtUtils-Embed perl-ExtUtils-MakeMaker python2-devel readline-devel rpmbuild percona-postgresql${PG_MAJOR}-devel percona-postgresql${PG_MAJOR}-server rpm-build rpmdevtools selinux-policy systemd systemd-devel systemtap-sdt-devel tcl-devel vim wget zlib-devel llvm-toolset-7-clang-devel make gcc gcc-c++" + yum -y install ${INSTALL_LIST} + source /opt/rh/devtoolset-7/enable + source /opt/rh/llvm-toolset-7/enable + else + dnf module -y disable postgresql || true + dnf config-manager --set-enabled ol${RHEL}_codeready_builder + + INSTALL_LIST="clang-devel clang llvm-devel python3-devel perl-generators bison e2fsprogs-devel flex gettext git glibc-devel krb5-devel libicu-devel libselinux-devel libuuid-devel libxml2-devel libxslt-devel openldap-devel openssl-devel pam-devel patch perl perl-ExtUtils-MakeMaker perl-ExtUtils-Embed readline-devel percona-postgresql${PG_MAJOR}-devel percona-postgresql${PG_MAJOR}-server rpm-build rpmdevtools selinux-policy systemd systemd-devel systemtap-sdt-devel tcl-devel vim wget zlib-devel " + yum -y install ${INSTALL_LIST} + yum -y install binutils gcc gcc-c++ + fi + else + apt-get -y update + apt-get -y install wget lsb-release + export DEBIAN=$(lsb_release -sc) + export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') + apt-get -y update || true + apt-get -y install gnupg2 curl + add_percona_apt_repo + percona-release enable tools testing + percona-release enable ppg-${PG_VERSION} testing + apt-get update || true + INSTALL_LIST="build-essential dpkg-dev debconf debhelper clang devscripts dh-exec git wget libkrb5-dev libssl-dev percona-postgresql-common percona-postgresql-server-dev-all" + DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST} + fi +fi + +# patroni +if [ "$COMPONENT" = "patroni" ]; then + if [ "x$OS" = "xrpm" ]; then + if [ x"$RHEL" = x8 ]; then + switch_to_vault_repo || true + fi + yum -y install wget + add_percona_yum_repo + yum clean all + if [[ "${RHEL}" -eq 10 ]]; then + yum install oracle-epel-release-el10 + else + yum -y install epel-release + fi + RHEL=$(rpm --eval %rhel) + if [ ${RHEL} -gt 7 ]; then + yum config-manager --set-enabled PowerTools || yum config-manager --set-enabled powertools || true + fi + if [ ${RHEL} = 7 ]; then + INSTALL_LIST="git wget rpm-build python36-virtualenv libyaml-devel gcc python36-psycopg2 python36-six" + yum -y install ${INSTALL_LIST} + else + dnf config-manager --set-enabled ol${RHEL}_codeready_builder + dnf clean all + rm -r /var/cache/dnf + dnf -y upgrade + INSTALL_LIST="git wget rpm-build python3-virtualenv python3-setuptools libyaml-devel gcc python3-psycopg2" + yum -y install ${INSTALL_LIST} + #ln -s /usr/bin/virtualenv-2 /usr/bin/virtualenv + fi + else + apt-get update || true + apt-get -y install lsb-release wget curl gnupg2 + export DEBIAN=$(lsb_release -sc) + export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') + until apt-get -y install gnupg2; do + sleep 3 + echo "WAITING" + done + add_percona_apt_repo + apt-get update || true + INSTALL_LIST="build-essential debconf debhelper clang devscripts dh-exec git wget fakeroot devscripts python3-psycopg2 libyaml-dev python3-virtualenv python3-psycopg2 ruby ruby-dev rubygems curl golang libjs-mathjax pyflakes3 python3-dateutil python3-dnspython python3-etcd python3-flake8 python3-kazoo python3-mccabe python3-mock python3-prettytable python3-psutil python3-pycodestyle python3-pytest python3-pytest-cov python3-setuptools python3-pip python3-sphinx python3-sphinx-rtd-theme python3-tz python3-tzlocal sphinx-common python3-click python3-doc python3-cdiff dh-python " + if [ "x${DEBIAN}" = "xtrixie" ]; then + INSTALL_LIST+="python3-dev dh-virtualenv python3-boto3" + elif [ "x${DEBIAN}" != "xfocal" -a "x${DEBIAN}" != "xbullseye" -a "x${DEBIAN}" != "xjammy" -a "x${DEBIAN}" != "xbookworm" -a "x${DEBIAN}" != "xnoble" -a "x${DEBIAN}" != "xtrixie" ]; then + INSTALL_LIST+="python-setuptools python-dev dh-virtualenv python3-boto" + else + INSTALL_LIST+="python3-dev python3-boto" + fi + DEBIAN_FRONTEND=noninteractive apt-get -y install ${INSTALL_LIST} + if [ "x${DEBIAN}" = "xstretch" ]; then + DEBIAN_FRONTEND=noninteractive apt-get -y install python3-pip + pip3 install python-consul + pip3 install python-kubernetes + else + DEBIAN_FRONTEND=noninteractive apt-get -y install python3-consul python3-kubernetes python3-cdiff || true + if [ "x${DEBIAN}" = "xbookworm" -o "x${DEBIAN}" = "xnoble" -o "x${DEBIAN}" = "xtrixie" ]; then + apt-get install -y python3-sphinxcontrib.apidoc + apt-get install -y python3-pysyncobj + apt-get install -y python3-boto3 + elif [ "x${DEBIAN}" = "xjammy" -o "x${DEBIAN}" = "xbuster" -o "x${DEBIAN}" = "xbullseye" ]; then + pip3 install --upgrade sphinx sphinx-rtd-theme + pip3 install sphinxcontrib.apidoc + pip3 install pysyncobj + pip3 install boto3 + fi + fi + if [ "x${DEBIAN}" = "xfocal" ]; then + wget https://bootstrap.pypa.io/get-pip.py + python2.7 get-pip.py + rm -rf /usr/bin/python2 + ln -s /usr/bin/python2.7 /usr/bin/python2 + pip install --upgrade sphinx sphinx-rtd-theme + pip install sphinxcontrib.apidoc + pip install pysyncobj + pip install boto3 + fi + fi +fi + +# etcd +if [ "$COMPONENT" = "etcd" ]; then + if [ "x$OS" = "xrpm" ]; then + RHEL=$(rpm --eval %rhel) + #add_percona_yum_repo + yum clean all + if [[ "${RHEL}" -eq 10 ]]; then + yum install oracle-epel-release-el10 + else + yum -y install epel-release + fi + if [ ${RHEL} -gt 7 ]; then + #dnf -y module disable postgresql + dnf config-manager --set-enabled ol${RHEL}_codeready_builder + dnf clean all + rm -r /var/cache/dnf + dnf -y upgrade + fi + INSTALL_LIST="git vim wget go-toolset rpmdevtools python3-devel" + yum -y install ${INSTALL_LIST} + + else + apt-get update || true + export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') + apt-get -y install lsb-release wget curl gnupg2 + export DEBIAN=$(lsb_release -sc) + add_percona_apt_repo + apt-get update || true + INSTALL_LIST="git vim wget rpm dpkg-dev build-essential ccache cron debconf debhelper devscripts dh-exec curl dh-golang fakeroot golang-go" + DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST} + fi +fi diff --git a/patroni/patroni_builder.sh b/patroni/patroni_builder.sh index b31b6cb1..4348d7b5 100644 --- a/patroni/patroni_builder.sh +++ b/patroni/patroni_builder.sh @@ -1,98 +1,9 @@ #!/usr/bin/env bash - -shell_quote_string() { - echo "$1" | sed -e 's,\([^a-zA-Z0-9/_.=-]\),\\\1,g' -} - -usage () { - cat <&2 "Current directory cannot be used for building!" - exit 1 - else - if ! test -d "$WORKDIR" - then - echo >&2 "$WORKDIR is not a directory." - exit 1 - fi - fi - return -} - -switch_to_vault_repo() { - sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Linux-* - sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Linux-* -} - -add_percona_yum_repo(){ - yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm - percona-release disable all - percona-release enable ppg-${PG_VERSION} testing - return -} - -add_percona_apt_repo(){ - wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb - dpkg -i percona-release_latest.generic_all.deb - rm -f percona-release_latest.generic_all.deb - percona-release disable all - percona-release enable ppg-${PG_VERSION} testing - return -} +set -x +# Versions and other variables +source versions.sh "patroni" +# Common functions +source common-functions.sh get_sources(){ cd "${WORKDIR}" @@ -101,46 +12,44 @@ get_sources(){ echo "Sources will not be downloaded" return 0 fi - PRODUCT=percona-patroni - echo "PRODUCT=${PRODUCT}" > patroni.properties - GIT_USER=$(echo ${REPO} | awk -F'/' '{print $4}') - PRODUCT_FULL=${PRODUCT}-${VERSION} - echo "PRODUCT_FULL=${PRODUCT_FULL}" >> patroni.properties + echo "PRODUCT=${PATRONI_PRODUCT}" > patroni.properties + GIT_USER=$(echo ${PATRONI_SRC_REPO} | awk -F'/' '{print $4}') + echo "PRODUCT_FULL=${PATRONI_PRODUCT_FULL}" >> patroni.properties echo "VERSION=${PSM_VER}" >> patroni.properties echo "BUILD_NUMBER=${BUILD_NUMBER}" >> patroni.properties echo "BUILD_ID=${BUILD_ID}" >> patroni.properties -# git clone "$REPO" ${PRODUCT_FULL} - git clone https://github.com/zalando/patroni.git ${PRODUCT_FULL} + + git clone ${PATRONI_SRC_REPO} ${PATRONI_PRODUCT_FULL} retval=$? if [ $retval != 0 ] then echo "There were some issues during repo cloning from github. Please retry one more time" exit 1 fi - cd ${PRODUCT_FULL} - if [ ! -z "$BRANCH" ] + cd ${PATRONI_PRODUCT_FULL} + if [ ! -z "$PATRONI_SRC_BRANCH" ] then git reset --hard git clean -xdf - git checkout "$BRANCH" + git checkout "$PATRONI_SRC_BRANCH" fi REVISION=$(git rev-parse --short HEAD) echo "REVISION=${REVISION}" >> ${WORKDIR}/patroni.properties rm -fr debian rpm - git clone https://github.com/cybertec-postgresql/patroni-packaging.git all_packaging + git clone ${PATRONI_SRC_REPO_DEB} all_packaging cd all_packaging git reset --hard git clean -xdf - git checkout "v1.6.5-1" + git checkout "1.6.5-1" cd ../ mv all_packaging/DEB/debian ./ cd debian rm -f rules - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/patroni/rules + wget ${PKG_RAW_URL}/patroni/rules rm -f control rm -f postinst - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/patroni/control + wget ${PKG_RAW_URL}/patroni/control sed -i 's:service-info-only-in-pretty-format.patch::' patches/series sed -i 's:patronictl-reinit-wait-rebased-1.6.0.patch::' patches/series sed -i "s:'sphinx_github_style':#'sphinx_github_style':g" ../docs/conf.py @@ -151,7 +60,7 @@ get_sources(){ fi git apply patches/add-sample-config.patch - sed -i "s|9.6|${PG_MAJOR_VERSION}|g" patroni.yml.sample + sed -i "s|9.6|${PG_MAJOR}|g" patroni.yml.sample mv install percona-patroni.install sed -i 's|patroni.yml.sample|debian/patroni.yml.sample|g' percona-patroni.install echo "debian/tmp/usr/lib" >> percona-patroni.install @@ -162,7 +71,7 @@ get_sources(){ mv all_packaging/RPM/* rpm/ cd rpm rm -f patroni.spec - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/patroni/patroni.spec + wget ${PKG_RAW_URL}/patroni/patroni.spec sed -i 's:/opt/app:/opt:g' patroni.2.service sed -i 's:/opt/patroni/bin:/usr/bin:' patroni.2.service sed -i 's:/opt/patroni/etc/:/etc/patroni/:' patroni.2.service @@ -175,143 +84,18 @@ get_sources(){ source patroni.properties # - tar --owner=0 --group=0 --exclude=.* -czf ${PRODUCT_FULL}.tar.gz ${PRODUCT_FULL} + tar --owner=0 --group=0 --exclude=.* -czf ${PATRONI_PRODUCT_FULL}.tar.gz ${PATRONI_PRODUCT_FULL} DATE_TIMESTAMP=$(date +%F_%H-%M-%S) - echo "UPLOAD=UPLOAD/experimental/BUILDS/${PRODUCT}/${PRODUCT_FULL}/${BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> patroni.properties + echo "UPLOAD=UPLOAD/experimental/BUILDS/${PATRONI_PRODUCT}/${PATRONI_PRODUCT_FULL}/${PATRONI_SRC_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> patroni.properties mkdir $WORKDIR/source_tarball mkdir $CURDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $CURDIR/source_tarball + cp ${PATRONI_PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball + cp ${PATRONI_PRODUCT_FULL}.tar.gz $CURDIR/source_tarball cd $CURDIR rm -rf percona-patroni* return } -get_system(){ - if [ -f /etc/redhat-release ]; then - RHEL=$(rpm --eval %rhel) - ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - OS_NAME="el$RHEL" - OS="rpm" - else - ARCH=$(uname -m) - OS_NAME="$(lsb_release -sc)" - OS="deb" - fi - return -} - -install_deps() { - if [ $INSTALL = 0 ] - then - echo "Dependencies will not be installed" - return; - fi - if [ $( id -u ) -ne 0 ] - then - echo "It is not possible to instal dependencies. Please run as root" - exit 1 - fi - CURPLACE=$(pwd) - - if [ "x$OS" = "xrpm" ]; then - if [ x"$RHEL" = x8 ]; then - switch_to_vault_repo - fi - yum -y install wget - add_percona_yum_repo - yum clean all - if [[ "${RHEL}" -eq 10 ]]; then - yum install oracle-epel-release-el10 - else - yum -y install epel-release - fi - RHEL=$(rpm --eval %rhel) - if [ ${RHEL} -gt 7 ]; then - yum config-manager --set-enabled PowerTools || yum config-manager --set-enabled powertools || true - fi - if [ ${RHEL} = 7 ]; then - INSTALL_LIST="git wget rpm-build python36-virtualenv libyaml-devel gcc python36-psycopg2 python36-six" - yum -y install ${INSTALL_LIST} - else - dnf config-manager --set-enabled ol${RHEL}_codeready_builder - dnf clean all - rm -r /var/cache/dnf - dnf -y upgrade - INSTALL_LIST="git wget rpm-build python3-virtualenv python3-setuptools libyaml-devel gcc python3-psycopg2" - yum -y install ${INSTALL_LIST} - #ln -s /usr/bin/virtualenv-2 /usr/bin/virtualenv - fi - else - apt-get update || true - apt-get -y install lsb-release wget curl gnupg2 - export DEBIAN=$(lsb_release -sc) - export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - until apt-get -y install gnupg2; do - sleep 3 - echo "WAITING" - done - add_percona_apt_repo - apt-get update || true - INSTALL_LIST="build-essential debconf debhelper clang devscripts dh-exec git wget fakeroot devscripts python3-psycopg2 libyaml-dev python3-virtualenv python3-psycopg2 ruby ruby-dev rubygems curl golang libjs-mathjax pyflakes3 python3-dateutil python3-dnspython python3-etcd python3-flake8 python3-kazoo python3-mccabe python3-mock python3-prettytable python3-psutil python3-pycodestyle python3-pytest python3-pytest-cov python3-setuptools python3-pip python3-sphinx python3-sphinx-rtd-theme python3-tz python3-tzlocal sphinx-common python3-click python3-doc python3-cdiff dh-python " - if [ "x${DEBIAN}" = "xtrixie" ]; then - INSTALL_LIST+="python3-dev dh-virtualenv python3-boto3" - elif [ "x${DEBIAN}" != "xfocal" -a "x${DEBIAN}" != "xbullseye" -a "x${DEBIAN}" != "xjammy" -a "x${DEBIAN}" != "xbookworm" -a "x${DEBIAN}" != "xnoble" -a "x${DEBIAN}" != "xtrixie" ]; then - INSTALL_LIST+="python-setuptools python-dev dh-virtualenv python3-boto" - else - INSTALL_LIST+="python3-dev python3-boto" - fi - DEBIAN_FRONTEND=noninteractive apt-get -y install ${INSTALL_LIST} - if [ "x${DEBIAN}" = "xstretch" ]; then - DEBIAN_FRONTEND=noninteractive apt-get -y install python3-pip - pip3 install python-consul - pip3 install python-kubernetes - else - DEBIAN_FRONTEND=noninteractive apt-get -y install python3-consul python3-kubernetes python3-cdiff || true - if [ "x${DEBIAN}" = "xbookworm" -o "x${DEBIAN}" = "xnoble" -o "x${DEBIAN}" = "xtrixie" ]; then - apt-get install -y python3-sphinxcontrib.apidoc - apt-get install -y python3-pysyncobj - apt-get install -y python3-boto3 - elif [ "x${DEBIAN}" = "xjammy" -o "x${DEBIAN}" = "xbuster" -o "x${DEBIAN}" = "xbullseye" ]; then - pip3 install --upgrade sphinx sphinx-rtd-theme - pip3 install sphinxcontrib.apidoc - pip3 install pysyncobj - pip3 install boto3 - fi - fi - if [ "x${DEBIAN}" = "xfocal" ]; then - wget https://bootstrap.pypa.io/get-pip.py - python2.7 get-pip.py - rm -rf /usr/bin/python2 - ln -s /usr/bin/python2.7 /usr/bin/python2 - pip install --upgrade sphinx sphinx-rtd-theme - pip install sphinxcontrib.apidoc - pip install pysyncobj - pip install boto3 - fi - fi - return; -} - -get_tar(){ - TARBALL=$1 - TARFILE=$(basename $(find $WORKDIR/$TARBALL -name 'percona-patroni*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - TARFILE=$(basename $(find $CURDIR/$TARBALL -name 'percona-patroni*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - echo "There is no $TARBALL for build" - exit 1 - else - cp $CURDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - else - cp $WORKDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - return -} - get_deb_sources(){ param=$1 echo $param @@ -344,7 +128,7 @@ build_srpm(){ exit 1 fi cd $WORKDIR - get_tar "source_tarball" + get_tar "source_tarball" "percona-patroni" rm -fr rpmbuild ls | grep -v tar.gz | xargs rm -rf TARFILE=$(find . -name 'percona-patroni*.tar.gz' | sort | tail -n1) @@ -360,7 +144,7 @@ build_srpm(){ mv -fv ${TARFILE} ${WORKDIR}/rpmbuild/SOURCES sed -i 's:.rhel7:%{dist}:' ${WORKDIR}/rpmbuild/SPECS/patroni.spec rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .generic" \ - --define "version ${VERSION}" rpmbuild/SPECS/patroni.spec + --define "version ${PATRONI_VERSION}" rpmbuild/SPECS/patroni.spec mkdir -p ${WORKDIR}/srpm mkdir -p ${CURDIR}/srpm cp rpmbuild/SRPMS/*.src.rpm ${CURDIR}/srpm @@ -404,7 +188,7 @@ build_rpm(){ cd $WORKDIR RHEL=$(rpm --eval %rhel) ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - rpmbuild --define "_topdir ${WORKDIR}/rb" --define "dist .$OS_NAME" --define "version ${VERSION}" --rebuild rb/SRPMS/$SRC_RPM + rpmbuild --define "_topdir ${WORKDIR}/rb" --define "dist .$OS_NAME" --define "version ${PATRONI_VERSION}" --rebuild rb/SRPMS/$SRC_RPM return_code=$? if [ $return_code != 0 ]; then @@ -428,7 +212,7 @@ build_source_deb(){ exit 1 fi rm -rf percona-patroni* - get_tar "source_tarball" + get_tar "source_tarball" "percona-patroni" rm -f *.dsc *.orig.tar.gz *.debian.tar.gz *.changes # TARFILE=$(basename $(find . -name 'percona-patroni*.tar.gz' | sort | tail -n1)) @@ -438,18 +222,18 @@ build_source_deb(){ BUILDDIR=${TARFILE%.tar.gz} # - mv ${TARFILE} ${PRODUCT}_${VERSION}.orig.tar.gz + mv ${TARFILE} ${PATRONI_PRODUCT}_${PATRONI_VERSION}.orig.tar.gz cd ${BUILDDIR} cd debian rm -rf changelog - echo "percona-patroni (${VERSION}-${RELEASE}) unstable; urgency=low" >> changelog + echo "percona-patroni (${PATRONI_VERSION}-${PATRONI_RELEASE}) unstable; urgency=low" >> changelog echo " * Initial Release." >> changelog echo " -- EvgeniyPatlan $(date -R)" >> changelog cd ../ - dch -D unstable --force-distribution -v "${VERSION}-${RELEASE}" "Update to new patroni version ${VERSION}" + dch -D unstable --force-distribution -v "${PATRONI_VERSION}-${PATRONI_RELEASE}" "Update to new patroni version ${PATRONI_VERSION}" dpkg-buildpackage -S cd ../ mkdir -p $WORKDIR/source_deb @@ -493,9 +277,9 @@ build_deb(){ # dpkg-source -x ${DSC} # - cd ${PRODUCT}-${VERSION} + cd ${PATRONI_PRODUCT_FULL} sed -i 's:ExecStart=/bin/patroni /etc/patroni.yml:ExecStart=/opt/patroni/bin/patroni /etc/patroni/patroni.yml:' extras/startup-scripts/patroni.service - dch -m -D "${DEBIAN}" --force-distribution -v "1:${VERSION}-${RELEASE}.${DEBIAN}" 'Update distribution' + dch -m -D "${DEBIAN}" --force-distribution -v "1:${PATRONI_VERSION}-${PATRONI_RELEASE}.${DEBIAN}" 'Update distribution' unset $(locale|cut -d= -f1) dpkg-buildpackage -rfakeroot -us -uc -b mkdir -p $CURDIR/deb @@ -522,23 +306,18 @@ OS_NAME= ARCH= OS= INSTALL=0 -RPM_RELEASE=1 -DEB_RELEASE=1 REVISION=0 -BRANCH="v4.0.6" -REPO="https://github.com/zalando/patroni.git" -PRODUCT=percona-patroni DEBUG=0 -parse_arguments PICK-ARGS-FROM-ARGV "$@" -VERSION='4.0.6' -RELEASE='1' -PG_VERSION=17.6 -PRODUCT_FULL=${PRODUCT}-${VERSION}-${RELEASE} -PG_MAJOR_VERSION=$(echo ${PG_VERSION} | cut -f1 -d'.') +parse_arguments PICK-ARGS-FROM-ARGV "$@" check_workdir get_system -install_deps +#install_deps +if [ $INSTALL = 0 ]; then + echo "Dependencies will not be installed" +else + source install-deps.sh "patroni" +fi get_sources build_srpm build_source_deb diff --git a/pg_cron/pg_cron_builder.sh b/pg_cron/pg_cron_builder.sh index c8313df8..04b0f4fe 100755 --- a/pg_cron/pg_cron_builder.sh +++ b/pg_cron/pg_cron_builder.sh @@ -1,93 +1,9 @@ #!/usr/bin/env bash - -shell_quote_string() { - echo "$1" | sed -e 's,\([^a-zA-Z0-9/_.=-]\),\\\1,g' -} - -usage () { - cat <&2 "Current directory cannot be used for building!" - exit 1 - else - if ! test -d "$WORKDIR" - then - echo >&2 "$WORKDIR is not a directory." - exit 1 - fi - fi - return -} - -add_percona_yum_repo(){ - yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm - percona-release disable all - percona-release enable ppg-${PG_VERSION} testing - return -} - -add_percona_apt_repo(){ - wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb - dpkg -i percona-release_latest.generic_all.deb - rm -f percona-release_latest.generic_all.deb - percona-release disable all - percona-release enable ppg-${PG_VERSION} testing - return -} +set -x +# Versions and other variables +source versions.sh "pg_cron" +# Common functions +source common-functions.sh get_sources(){ cd "${WORKDIR}" @@ -96,46 +12,39 @@ get_sources(){ echo "Sources will not be downloaded" return 0 fi - PRODUCT=percona-pg-cron_${PG_MAJOR_VERSION} - - if [ "x$OS" = "xrpm" ]; then - PRODUCT=percona-pg_cron_${PG_MAJOR_VERSION} - fi - - echo "PRODUCT=${PRODUCT}" > pg_cron.properties - PRODUCT_FULL=${PRODUCT}-${VERSION} - echo "PRODUCT_FULL=${PRODUCT_FULL}" >> pg_cron.properties - #echo "VERSION=${PSM_VER}" >> pg_cron.properties - echo "VERSION=${VERSION}" >> pg_cron.properties + echo "PRODUCT=${PG_CRON_PRODUCT}" > pg_cron.properties + echo "PRODUCT_FULL=${PG_CRON_PRODUCT_FULL}" >> pg_cron.properties + echo "VERSION=${PG_CRON_VERSION}" >> pg_cron.properties echo "BUILD_NUMBER=${BUILD_NUMBER}" >> pg_cron.properties echo "BUILD_ID=${BUILD_ID}" >> pg_cron.properties - git clone "$REPO" ${PRODUCT_FULL} + + git clone "$PG_CRON_SRC_REPO" ${PG_CRON_PRODUCT_FULL} retval=$? if [ $retval != 0 ] then echo "There were some issues during repo cloning from github. Please retry one more time" exit 1 fi - cd ${PRODUCT_FULL} - if [ ! -z "$BRANCH" ] + cd ${PG_CRON_PRODUCT_FULL} + if [ ! -z "$PG_CRON_SRC_BRANCH" ] then git reset --hard git clean -xdf - git checkout "$BRANCH" + git checkout "$PG_CRON_SRC_BRANCH" fi REVISION=$(git rev-parse --short HEAD) echo "REVISION=${REVISION}" >> ${WORKDIR}/pg_cron.properties rm -fr debian rpm - git clone https://salsa.debian.org/postgresql/pg-cron.git deb_packaging + git clone ${PG_CRON_SRC_REPO_DEB} deb_packaging cd deb_packaging - git checkout debian/${VERSION}-${RELEASE} + git checkout debian/${PG_CRON_VERSION}-${PG_CRON_RELEASE} cd ../ mv deb_packaging/debian ./ - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pg_cron/control - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pg_cron/control.in - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pg_cron/rules + wget ${PKG_RAW_URL}/pg_cron/control + wget ${PKG_RAW_URL}/pg_cron/control.in + wget ${PKG_RAW_URL}/pg_cron/rules rm -rf debian/control* #rm -rf debian/source/format @@ -144,121 +53,31 @@ get_sources(){ cd debian sed -i 's:no-temp-instance::' patches/series - git apply patches/no-temp-instance - cd - - echo ${PG_MAJOR_VERSION} > debian/pgversions + cd .. + git apply debian/patches/no-temp-instance + echo ${PG_MAJOR} > debian/pgversions echo 10 > debian/compat rm -rf deb_packaging mkdir rpm cd rpm - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pg_cron/pg_cron.spec + wget ${PKG_RAW_URL}/pg_cron/pg_cron.spec cd ${WORKDIR} # source pg_cron.properties # - tar --owner=0 --group=0 --exclude=.* -czf ${PRODUCT_FULL}.tar.gz ${PRODUCT_FULL} + tar --owner=0 --group=0 --exclude=.* -czf ${PG_CRON_PRODUCT_FULL}.tar.gz ${PG_CRON_PRODUCT_FULL} DATE_TIMESTAMP=$(date +%F_%H-%M-%S) - echo "UPLOAD=UPLOAD/experimental/BUILDS/${PRODUCT}/${PRODUCT_FULL}/${BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> pg_cron.properties + echo "UPLOAD=UPLOAD/experimental/BUILDS/${PG_CRON_PRODUCT}/${PG_CRON_PRODUCT_FULL}/${PG_CRON_SRC_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> pg_cron.properties mkdir $WORKDIR/source_tarball mkdir $CURDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $CURDIR/source_tarball + cp ${PG_CRON_PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball + cp ${PG_CRON_PRODUCT_FULL}.tar.gz $CURDIR/source_tarball cd $CURDIR rm -rf pg_cron* return } -get_system(){ - if [ -f /etc/redhat-release ]; then - RHEL=$(rpm --eval %rhel) - ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - OS_NAME="el$RHEL" - OS="rpm" - else - ARCH=$(uname -m) - OS_NAME="$(lsb_release -sc)" - OS="deb" - fi - return -} - -install_deps() { - if [ $INSTALL = 0 ] - then - echo "Dependencies will not be installed" - return; - fi - if [ $( id -u ) -ne 0 ] - then - echo "It is not possible to instal dependencies. Please run as root" - exit 1 - fi - CURPLACE=$(pwd) - - if [ "x$OS" = "xrpm" ]; then - yum -y install wget - add_percona_yum_repo - yum clean all - RHEL=$(rpm --eval %rhel) - if [[ "${RHEL}" -eq 10 ]]; then - yum install oracle-epel-release-el10 - else - yum -y install epel-release - fi - if [ x"$RHEL" = x6 -o x"$RHEL" = x7 ]; then - until yum -y install centos-release-scl; do - echo "waiting" - sleep 1 - done - INSTALL_LIST="bison e2fsprogs-devel flex gettext git glibc-devel krb5-devel libicu-devel libselinux-devel libuuid-devel libxml2-devel libxslt-devel llvm5.0-devel llvm-toolset-7-clang openldap-devel openssl-devel pam-devel patch perl perl-ExtUtils-Embed perl-ExtUtils-MakeMaker python2-devel readline-devel rpmbuild percona-postgresql${PG_MAJOR_VERSION}-devel percona-postgresql${PG_MAJOR_VERSION}-server rpm-build rpmdevtools selinux-policy systemd systemd-devel systemtap-sdt-devel tcl-devel vim wget zlib-devel llvm-toolset-7-clang-devel make gcc gcc-c++" - yum -y install ${INSTALL_LIST} - source /opt/rh/devtoolset-7/enable - source /opt/rh/llvm-toolset-7/enable - else - dnf module -y disable postgresql - dnf config-manager --set-enabled ol${RHEL}_codeready_builder - - INSTALL_LIST="clang-devel clang llvm-devel python3-devel perl-generators bison e2fsprogs-devel flex gettext git glibc-devel krb5-devel libicu-devel libselinux-devel libuuid-devel libxml2-devel libxslt-devel openldap-devel openssl-devel pam-devel patch perl perl-ExtUtils-MakeMaker perl-ExtUtils-Embed readline-devel percona-postgresql${PG_MAJOR_VERSION}-devel percona-postgresql${PG_MAJOR_VERSION}-server rpm-build rpmdevtools selinux-policy systemd systemd-devel systemtap-sdt-devel tcl-devel vim wget zlib-devel " - yum -y install ${INSTALL_LIST} - yum -y install binutils gcc gcc-c++ - fi - else - apt-get -y update - apt-get -y install wget lsb-release - export DEBIAN=$(lsb_release -sc) - export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - apt-get -y update || true - apt-get -y install gnupg2 curl - add_percona_apt_repo - percona-release enable tools testing - percona-release enable ppg-${PG_VERSION} testing - apt-get update || true - INSTALL_LIST="build-essential dpkg-dev debconf debhelper clang devscripts dh-exec git wget libkrb5-dev libssl-dev percona-postgresql-common percona-postgresql-server-dev-all" - DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST} - fi - return; -} - -get_tar(){ - TARBALL=$1 - TARFILE=$(basename $(find $WORKDIR/$TARBALL -name 'percona-pg*cron*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - TARFILE=$(basename $(find $CURDIR/$TARBALL -name 'percona-pg*cron*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - echo "There is no $TARBALL for build" - exit 1 - else - cp $CURDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - else - cp $WORKDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - return -} - get_deb_sources(){ param=$1 echo $param @@ -291,7 +110,7 @@ build_srpm(){ exit 1 fi cd $WORKDIR - get_tar "source_tarball" + get_tar "source_tarball" "percona-pg_cron" rm -fr rpmbuild ls | grep -v tar.gz | xargs rm -rf TARFILE=$(find . -name 'percona-pg*cron*.tar.gz' | sort | tail -n1) @@ -306,7 +125,7 @@ build_srpm(){ # mv -fv ${TARFILE} ${WORKDIR}/rpmbuild/SOURCES rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .generic" \ - --define "version ${VERSION}" rpmbuild/SPECS/pg_cron.spec + --define "version ${PG_CRON_VERSION}" rpmbuild/SPECS/pg_cron.spec mkdir -p ${WORKDIR}/srpm mkdir -p ${CURDIR}/srpm cp rpmbuild/SRPMS/*.src.rpm ${CURDIR}/srpm @@ -357,7 +176,7 @@ build_rpm(){ if [[ "${RHEL}" -eq 10 ]]; then export QA_RPATHS=0x0002 fi - rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .$OS_NAME" --define "version ${VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM + rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .$OS_NAME" --define "version ${PG_CRON_VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM return_code=$? if [ $return_code != 0 ]; then @@ -381,7 +200,7 @@ build_source_deb(){ exit 1 fi rm -rf percona-pg-cron* - get_tar "source_tarball" + get_tar "source_tarball" "percona-pg_cron" rm -f *.dsc *.orig.tar.gz *.debian.tar.gz *.changes # TARFILE=$(basename $(find . -name 'percona-pg*cron*.tar.gz' | sort | tail -n1)) @@ -394,24 +213,20 @@ build_source_deb(){ echo "TARFILE=$TARFILE" echo "BUILDDIR=$BUILDDIR" cd /build/source_tarball - PRODUCT=percona-pg-cron - if [ "x$OS" = "xrpm" ]; then - PRODUCT=percona-pg_cron - fi - mv ${TARFILE} ${PRODUCT}_${VERSION}.orig.tar.gz - tar -xvzf ${PRODUCT}_${VERSION}.orig.tar.gz + mv ${TARFILE} ${PG_CRON_PRODUCT_DEB}_${PG_CRON_VERSION}.orig.tar.gz + tar -xvzf ${PG_CRON_PRODUCT_DEB}_${PG_CRON_VERSION}.orig.tar.gz cd ${BUILDDIR} cd debian rm -rf changelog - echo "percona-pg-cron (${VERSION}-${RELEASE}) unstable; urgency=medium" > changelog + echo "percona-pg-cron (${PG_CRON_VERSION}-${PG_CRON_RELEASE}) unstable; urgency=medium" > changelog echo "* Initial Release version 1.6.2." >> changelog echo " -- Muhammad Aqeel $(date -R)" >> changelog cd ../ - dch -D unstable --force-distribution -v "${VERSION}-${RELEASE}" "Update to new pg-cron version ${VERSION}" + dch -D unstable --force-distribution -v "${PG_CRON_VERSION}-${PG_CRON_RELEASE}" "Update to new pg-cron version ${PG_CRON_VERSION}" dpkg-buildpackage -S cd ../ mkdir -p $WORKDIR/source_deb @@ -455,9 +270,8 @@ build_deb(){ # dpkg-source -x ${DSC} # - PRODUCT=percona-pg-cron - cd ${PRODUCT}-${VERSION} - dch -m -D "${DEBIAN}" --force-distribution -v "1:${VERSION}-${RELEASE}.${DEBIAN}" 'Update distribution' + cd ${PG_CRON_PRODUCT_DEB}-${PG_CRON_VERSION} + dch -m -D "${DEBIAN}" --force-distribution -v "1:${PG_CRON_VERSION}-${PG_CRON_RELEASE}.${DEBIAN}" 'Update distribution' unset $(locale|cut -d= -f1) dpkg-buildpackage -rfakeroot -us -uc -b mkdir -p $CURDIR/deb @@ -484,23 +298,18 @@ OS_NAME= ARCH= OS= INSTALL=0 -RPM_RELEASE=2 -DEB_RELEASE=2 REVISION=0 -BRANCH="v1.6.2" -PG_VERSION="17.6" -PG_MAJOR_VERSION=$(echo $PG_VERSION | cut -f1 -d'.') -REPO="https://github.com/citusdata/pg_cron.git" -PRODUCT=percona-pg-cron_${PG_MAJOR_VERSION} DEBUG=0 -parse_arguments PICK-ARGS-FROM-ARGV "$@" -VERSION='1.6.2' -RELEASE='2' -PRODUCT_FULL=${PRODUCT}-${VERSION}-${RELEASE} +parse_arguments PICK-ARGS-FROM-ARGV "$@" check_workdir get_system -install_deps +#install_deps +if [ $INSTALL = 0 ]; then + echo "Dependencies will not be installed" +else + source install-deps.sh "pg_cron" +fi get_sources build_srpm build_source_deb diff --git a/pg_gather/pggather_builder.sh b/pg_gather/pggather_builder.sh index 463aa0b0..da3e7e2b 100644 --- a/pg_gather/pggather_builder.sh +++ b/pg_gather/pggather_builder.sh @@ -1,92 +1,9 @@ #!/usr/bin/env bash - -shell_quote_string() { - echo "$1" | sed -e 's,\([^a-zA-Z0-9/_.=-]\),\\\1,g' -} - -usage () { - cat <&2 "Current directory cannot be used for building!" - exit 1 - else - if ! test -d "$WORKDIR" - then - echo >&2 "$WORKDIR is not a directory." - exit 1 - fi - fi - return -} - -add_percona_yum_repo(){ - yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm - percona-release disable all - percona-release enable ppg-${BRANCH} testing - return -} - -add_percona_apt_repo(){ - wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb - dpkg -i percona-release_latest.generic_all.deb - percona-release disable all - percona-release enable ppg-${BRANCH} testing - return -} +set -x +# Versions and other variables +source versions.sh "pg_gather" +# Common functions +source common-functions.sh get_sources(){ cd "${WORKDIR}" @@ -95,122 +12,45 @@ get_sources(){ echo "Sources will not be downloaded" return 0 fi - PRODUCT=percona-pg_gather - echo "PRODUCT=${PRODUCT}" > pg_gather.properties - PRODUCT_FULL=${PRODUCT}-${VERSION} - echo "PRODUCT_FULL=${PRODUCT_FULL}" >> pg_gather.properties + echo "PRODUCT=${PG_GATHER_PRODUCT}" > pg_gather.properties + echo "PRODUCT_FULL=${PG_GATHER_PRODUCT_FULL}" >> pg_gather.properties echo "VERSION=${PSM_VER}" >> pg_gather.properties echo "BUILD_NUMBER=${BUILD_NUMBER}" >> pg_gather.properties echo "BUILD_ID=${BUILD_ID}" >> pg_gather.properties - mkdir ${PRODUCT_FULL} - cd ${PRODUCT_FULL} - wget https://raw.githubusercontent.com/percona/support-snippets/master/postgresql/pg_gather/gather.sql . - wget https://raw.githubusercontent.com/percona/support-snippets/master/postgresql/pg_gather/README.md . + + mkdir ${PG_GATHER_PRODUCT_FULL} + cd ${PG_GATHER_PRODUCT_FULL} + wget ${PG_GATHER_SRC_URL}/gather.sql + wget ${PG_GATHER_SRC_URL}/README.md echo "REVISION=${REVISION}" >> ${WORKDIR}/pg_gather.properties rm -fr debian rpm mkdir debian rpm cd debian - wget https://raw.githubusercontent.com/percona/postgres-packaging/${BRANCH}/pg_gather/debian/rules - wget https://raw.githubusercontent.com/percona/postgres-packaging/${BRANCH}/pg_gather/debian/control - wget https://raw.githubusercontent.com/percona/postgres-packaging/${BRANCH}/pg_gather/debian/percona-pg-gather.install + wget ${PKG_RAW_URL}/pg_gather/debian/rules + wget ${PKG_RAW_URL}/pg_gather/debian/control + wget ${PKG_RAW_URL}/pg_gather/debian/percona-pg-gather.install cd ../ echo 9 > debian/compat cd rpm - wget https://raw.githubusercontent.com/percona/postgres-packaging/${BRANCH}/pg_gather/rpm/pg_gather.spec + wget ${PKG_RAW_URL}/pg_gather/rpm/pg_gather.spec cd ${WORKDIR} # source pg_gather.properties # - tar --owner=0 --group=0 --exclude=.* -czf ${PRODUCT_FULL}.tar.gz ${PRODUCT_FULL} + tar --owner=0 --group=0 --exclude=.* -czf ${PG_GATHER_PRODUCT_FULL}.tar.gz ${PG_GATHER_PRODUCT_FULL} DATE_TIMESTAMP=$(date +%F_%H-%M-%S) - echo "UPLOAD=UPLOAD/experimental/BUILDS/${PRODUCT}/${PRODUCT_FULL}/${BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> pg_gather.properties + echo "UPLOAD=UPLOAD/experimental/BUILDS/${PG_GATHER_PRODUCT}/${PG_GATHER_PRODUCT_FULL}/${PG_GATHER_SRC_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> pg_gather.properties mkdir $WORKDIR/source_tarball mkdir $CURDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $CURDIR/source_tarball + cp ${PG_GATHER_PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball + cp ${PG_GATHER_PRODUCT_FULL}.tar.gz $CURDIR/source_tarball cd $CURDIR rm -rf percona-pg_gather* return } -get_system(){ - if [ -f /etc/redhat-release ]; then - RHEL=$(rpm --eval %rhel) - ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - OS_NAME="el$RHEL" - OS="rpm" - else - ARCH=$(uname -m) - OS_NAME="$(lsb_release -sc)" - OS="deb" - fi - return -} - -install_deps() { - if [ $INSTALL = 0 ] - then - echo "Dependencies will not be installed" - return; - fi - if [ $( id -u ) -ne 0 ] - then - echo "It is not possible to instal dependencies. Please run as root" - exit 1 - fi - CURPLACE=$(pwd) - - if [ "x$OS" = "xrpm" ]; then - yum -y install wget - #mv -f percona-dev.repo /etc/yum.repos.d/ - yum clean all - RHEL=$(rpm --eval %rhel) - if [ x"$RHEL" = x6 -o x"$RHEL" = x7 ]; then - until yum -y install centos-release-scl; do - echo "waiting" - sleep 1 - done - fi - if [[ "${RHEL}" -eq 10 ]]; then - INSTALL_LIST="git rpm-build rpmdevtools wget" - else - INSTALL_LIST="git rpm-build rpmdevtools wget rpmlint" - fi - yum -y install ${INSTALL_LIST} - else - apt-get update || true - apt-get -y install wget lsb-release - export DEBIAN=$(lsb_release -sc) - export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - apt-get -y install gnupg2 - apt-get update || true - INSTALL_LIST="debconf debhelper devscripts dh-exec git" - DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST} - fi - return; -} - -get_tar(){ - TARBALL=$1 - TARFILE=$(basename $(find $WORKDIR/$TARBALL -name '*gather*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - TARFILE=$(basename $(find $CURDIR/$TARBALL -name '*gather*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - echo "There is no $TARBALL for build" - exit 1 - else - cp $CURDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - else - cp $WORKDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - return -} - get_deb_sources(){ param=$1 echo $param @@ -243,7 +83,7 @@ build_srpm(){ exit 1 fi cd $WORKDIR - get_tar "source_tarball" + get_tar "source_tarball" "percona-pg_gather" rm -fr rpmbuild ls | grep -v tar.gz | xargs rm -rf TARFILE=$(find . -name '*gather*.tar.gz' | sort | tail -n1) @@ -257,7 +97,7 @@ build_srpm(){ # mv -fv ${TARFILE} ${WORKDIR}/rpmbuild/SOURCES rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .generic" \ - --define "version ${VERSION}" rpmbuild/SPECS/pg_gather.spec + --define "version ${PG_GATHER_VERSION}" rpmbuild/SPECS/pg_gather.spec mkdir -p ${WORKDIR}/srpm mkdir -p ${CURDIR}/srpm cp rpmbuild/SRPMS/*.src.rpm ${CURDIR}/srpm @@ -305,7 +145,7 @@ build_rpm(){ source /opt/rh/devtoolset-7/enable source /opt/rh/llvm-toolset-7/enable fi - rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .$OS_NAME" --define "version ${VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM + rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .$OS_NAME" --define "version ${PG_GATHER_VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM return_code=$? if [ $return_code != 0 ]; then @@ -329,7 +169,7 @@ build_source_deb(){ exit 1 fi rm -rf percona-pg_gather* - get_tar "source_tarball" + get_tar "source_tarball" "percona-pg_gather" rm -f *.dsc *.orig.tar.gz *.debian.tar.gz *.changes # TARFILE=$(basename $(find . -name '*gather*.tar.gz' | sort | tail -n1)) @@ -339,19 +179,19 @@ build_source_deb(){ BUILDDIR=${TARFILE%.tar.gz} # - mv ${TARFILE} percona-pg-gather_${VERSION}.orig.tar.gz - mv ${BUILDDIR} percona-pg-gather-${VERSION} - cd percona-pg-gather-${VERSION} + mv ${TARFILE} ${PG_GATHER_PRODUCT_DEB}_${PG_GATHER_VERSION}.orig.tar.gz + mv ${BUILDDIR} ${PG_GATHER_PRODUCT_DEB}-${PG_GATHER_VERSION} + cd ${PG_GATHER_PRODUCT_DEB}-${PG_GATHER_VERSION} cd debian rm -rf changelog - echo "percona-pg-gather (${VERSION}-${RELEASE}) unstable; urgency=low" >> changelog + echo "percona-pg-gather (${PG_GATHER_VERSION}-${PG_GATHER_RELEASE}) unstable; urgency=low" >> changelog echo " * Initial Release." >> changelog echo " -- SurabhiBhat $(date -R)" >> changelog cd ../ - dch -D unstable --force-distribution -v "${VERSION}-${RELEASE}" "Update to new version ${VERSION}" + dch -D unstable --force-distribution -v "${PG_GATHER_VERSION}-${PG_GATHER_RELEASE}" "Update to new version ${PG_GATHER_VERSION}" dpkg-buildpackage -S cd ../ mkdir -p $WORKDIR/source_deb @@ -395,8 +235,8 @@ build_deb(){ # dpkg-source -x ${DSC} # - cd percona-pg-gather-${VERSION} - dch -m -D "${DEBIAN}" --force-distribution -v "1:${VERSION}-${RELEASE}.${DEBIAN}" 'Update distribution' + cd ${PG_GATHER_PRODUCT_DEB}-${PG_GATHER_VERSION} + dch -m -D "${DEBIAN}" --force-distribution -v "1:${PG_GATHER_VERSION}-${PG_GATHER_RELEASE}.${DEBIAN}" 'Update distribution' unset $(locale|cut -d= -f1) dpkg-buildpackage -rfakeroot -us -uc -b mkdir -p $CURDIR/deb @@ -419,21 +259,18 @@ OS_NAME= ARCH= OS= INSTALL=0 -RPM_RELEASE=1 -DEB_RELEASE=1 REVISION=0 -BRANCH="17.6" -GIT_REPO="https://github.com/percona/postgres-packaging" -PRODUCT=percona-pg_gather DEBUG=0 -parse_arguments PICK-ARGS-FROM-ARGV "$@" -VERSION='31' -RELEASE='1' -PRODUCT_FULL=${PRODUCT}-${VERSION}-${RELEASE} +parse_arguments PICK-ARGS-FROM-ARGV "$@" check_workdir get_system -install_deps +#install_deps +if [ $INSTALL = 0 ]; then + echo "Dependencies will not be installed" +else + source install-deps.sh "pg_gather" +fi get_sources build_srpm build_source_deb diff --git a/pg_repack/pgrepack_builder.sh b/pg_repack/pgrepack_builder.sh index 10effb21..72d80235 100644 --- a/pg_repack/pgrepack_builder.sh +++ b/pg_repack/pgrepack_builder.sh @@ -1,92 +1,9 @@ #!/usr/bin/env bash - -shell_quote_string() { - echo "$1" | sed -e 's,\([^a-zA-Z0-9/_.=-]\),\\\1,g' -} - -usage () { - cat <&2 "Current directory cannot be used for building!" - exit 1 - else - if ! test -d "$WORKDIR" - then - echo >&2 "$WORKDIR is not a directory." - exit 1 - fi - fi - return -} - -add_percona_yum_repo(){ - yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm - percona-release disable all - percona-release enable ppg-${PG_VERSION} testing - return -} - -add_percona_apt_repo(){ - wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb - dpkg -i percona-release_latest.generic_all.deb - percona-release disable all - percona-release enable ppg-${PG_VERSION} testing - return -} +set -x +# Versions and other variables +source versions.sh "pg_repack" +# Common functions +source common-functions.sh get_sources(){ cd "${WORKDIR}" @@ -95,40 +12,39 @@ get_sources(){ echo "Sources will not be downloaded" return 0 fi - PRODUCT=percona-pg_repack - echo "PRODUCT=${PRODUCT}" > pg_repack.properties - PRODUCT_FULL=${PRODUCT}-${VERSION} - echo "PRODUCT_FULL=${PRODUCT_FULL}" >> pg_repack.properties + echo "PRODUCT=${PG_REPACK_PRODUCT}" > pg_repack.properties + echo "PRODUCT_FULL=${PG_REPACK_PRODUCT_FULL}" >> pg_repack.properties echo "VERSION=${PSM_VER}" >> pg_repack.properties echo "BUILD_NUMBER=${BUILD_NUMBER}" >> pg_repack.properties echo "BUILD_ID=${BUILD_ID}" >> pg_repack.properties - git clone "$REPO" ${PRODUCT_FULL} + + git clone "$PG_REPACK_SRC_REPO" ${PG_REPACK_PRODUCT_FULL} retval=$? if [ $retval != 0 ] then echo "There were some issues during repo cloning from github. Please retry one more time" exit 1 fi - cd ${PRODUCT_FULL} - if [ ! -z "$BRANCH" ] + cd ${PG_REPACK_PRODUCT_FULL} + if [ ! -z "$PG_REPACK_SRC_BRANCH" ] then git reset --hard git clean -xdf - git checkout "$BRANCH" + git checkout "$PG_REPACK_SRC_BRANCH" fi REVISION=$(git rev-parse --short HEAD) echo "REVISION=${REVISION}" >> ${WORKDIR}/pg_repack.properties rm -fr debian rpm - git clone https://salsa.debian.org/postgresql/pg-repack.git deb_packaging + git clone ${PG_REPACK_SRC_REPO_DEB} deb_packaging cd deb_packaging - git checkout -b percona-pg_repack debian/${VERSION}-${RELEASE} + git checkout -b percona-pg_repack debian/${PG_REPACK_VERSION}-${PG_REPACK_RELEASE} cd ../ mv deb_packaging/debian ./ - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pg_repack/Makefile.patch - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pg_repack/rules - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pg_repack/control - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pg_repack/control.in + wget ${PKG_RAW_URL}/pg_repack/Makefile.patch + wget ${PKG_RAW_URL}/pg_repack/rules + wget ${PKG_RAW_URL}/pg_repack/control + wget ${PKG_RAW_URL}/pg_repack/control.in patch -p0 < Makefile.patch rm -rf Makefile.patch cd debian @@ -136,15 +52,15 @@ get_sources(){ mv ../control ./ mv ../control.in ./ cd ../ - echo ${PG_MAJOR_VERSION} > debian/pgversions + echo $PG_MAJOR > debian/pgversions echo 10 > debian/compat rm -rf deb_packaging mkdir rpm cd rpm - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pg_repack/pg_repack.spec - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pg_repack/pg_repack-pg${PG_MAJOR_VERSION}-makefile-pgxs.patch + wget ${PKG_RAW_URL}/pg_repack/pg_repack.spec + wget ${PKG_RAW_URL}/pg_repack/pg_repack-pg$PG_MAJOR-makefile-pgxs.patch cd ../ - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pg_repack/make.patch + wget ${PKG_RAW_URL}/pg_repack/make.patch patch -p0 < make.patch rm -f make.patch cd ${WORKDIR} @@ -152,115 +68,18 @@ get_sources(){ source pg_repack.properties # - tar --owner=0 --group=0 --exclude=.* -czf ${PRODUCT_FULL}.tar.gz ${PRODUCT_FULL} + tar --owner=0 --group=0 --exclude=.* -czf ${PG_REPACK_PRODUCT_FULL}.tar.gz ${PG_REPACK_PRODUCT_FULL} DATE_TIMESTAMP=$(date +%F_%H-%M-%S) - echo "UPLOAD=UPLOAD/experimental/BUILDS/${PRODUCT}/${PRODUCT_FULL}/${BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> pg_repack.properties + echo "UPLOAD=UPLOAD/experimental/BUILDS/${PG_REPACK_PRODUCT}/${PG_REPACK_PRODUCT_FULL}/${PG_REPACK_SRC_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> pg_repack.properties mkdir $WORKDIR/source_tarball mkdir $CURDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $CURDIR/source_tarball + cp ${PG_REPACK_PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball + cp ${PG_REPACK_PRODUCT_FULL}.tar.gz $CURDIR/source_tarball cd $CURDIR rm -rf percona-pg_repack* return } -get_system(){ - if [ -f /etc/redhat-release ]; then - RHEL=$(rpm --eval %rhel) - ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - OS_NAME="el$RHEL" - OS="rpm" - else - ARCH=$(uname -m) - OS_NAME="$(lsb_release -sc)" - OS="deb" - fi - return -} - -install_deps() { - if [ $INSTALL = 0 ] - then - echo "Dependencies will not be installed" - return; - fi - if [ $( id -u ) -ne 0 ] - then - echo "It is not possible to instal dependencies. Please run as root" - exit 1 - fi - CURPLACE=$(pwd) - - if [ "x$OS" = "xrpm" ]; then - yum -y install wget - add_percona_yum_repo - yum clean all - RHEL=$(rpm --eval %rhel) - if [[ "${RHEL}" -eq 10 ]]; then - yum install oracle-epel-release-el10 - else - yum -y install epel-release - fi - if [ x"$RHEL" = x6 -o x"$RHEL" = x7 ]; then - until yum -y install centos-release-scl; do - echo "waiting" - sleep 1 - done - yum groupinstall -y "Development Tools" - INSTALL_LIST="percona-postgresql${PG_MAJOR_VERSION} bison e2fsprogs-devel flex gettext git glibc-devel krb5-devel libicu-devel libselinux-devel libuuid-devel libxml2-devel libxslt-devel llvm5.0-devel llvm-toolset-7-clang openldap-devel openssl-devel pam-devel patch perl perl-ExtUtils-Embed perl-ExtUtils-MakeMaker python2-devel readline-devel rpmbuild percona-postgresql${PG_MAJOR_VERSION}-devel percona-postgresql${PG_MAJOR_VERSION}-server rpm-build rpmdevtools selinux-policy systemd systemd-devel systemtap-sdt-devel tcl-devel vim wget zlib-devel libzstd-devel lz4-devel" - yum -y install ${INSTALL_LIST} - source /opt/rh/devtoolset-7/enable - source /opt/rh/llvm-toolset-7/enable - else - dnf module -y disable postgresql - dnf config-manager --enable ol${RHEL}_codeready_builder - yum install -y libcurl-devel - - if [ x"$RHEL" = x8 ]; then - INSTALL_LIST="clang-devel clang llvm-devel percona-postgresql${PG_MAJOR_VERSION} python3-devel perl-generators bison e2fsprogs-devel flex gettext git glibc-devel krb5-devel libicu-devel libselinux-devel libuuid-devel libxml2-devel libxslt-devel openldap-devel openssl-devel pam-devel patch perl perl-ExtUtils-MakeMaker perl-ExtUtils-Embed readline-devel percona-postgresql${PG_MAJOR_VERSION}-devel percona-postgresql${PG_MAJOR_VERSION}-server rpm-build rpmdevtools selinux-policy systemd systemd-devel systemtap-sdt-devel tcl-devel vim wget zlib-devel libzstd-devel lz4-devel" - yum -y install ${INSTALL_LIST} - yum -y install binutils gcc gcc-c++ - else - yum -y install percona-postgresql${PG_MAJOR_VERSION}-devel - yum -y install zlib-devel libzstd-devel readline-devel lz4-devel clang rpmdevtools git openssl-devel openssl-libs lz4-devel - fi - if [ x"$RHEL" = x9 ]; then - yum -y install gcc-toolset-14 - fi - fi - else - apt-get update - apt-get -y install wget gnupg2 lsb-release curl - export DEBIAN=$(lsb_release -sc) - export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - add_percona_apt_repo - percona-release enable tools testing - apt-get update || true - INSTALL_LIST="dpkg-dev build-essential percona-postgresql-${PG_MAJOR_VERSION} debconf debhelper devscripts dh-exec git wget libkrb5-dev libssl-dev percona-postgresql-common percona-postgresql-server-dev-all" - DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST} - fi - return; -} - -get_tar(){ - TARBALL=$1 - TARFILE=$(basename $(find $WORKDIR/$TARBALL -name '*repack*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - TARFILE=$(basename $(find $CURDIR/$TARBALL -name '*repack*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - echo "There is no $TARBALL for build" - exit 1 - else - cp $CURDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - else - cp $WORKDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - return -} - get_deb_sources(){ param=$1 echo $param @@ -293,7 +112,7 @@ build_srpm(){ exit 1 fi cd $WORKDIR - get_tar "source_tarball" + get_tar "source_tarball" "percona-pg_repack" rm -fr rpmbuild ls | grep -v tar.gz | xargs rm -rf TARFILE=$(find . -name '*repack*.tar.gz' | sort | tail -n1) @@ -307,7 +126,7 @@ build_srpm(){ # mv -fv ${TARFILE} ${WORKDIR}/rpmbuild/SOURCES rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .generic" \ - --define "version ${VERSION}" rpmbuild/SPECS/pg_repack.spec + --define "version ${PG_REPACK_VERSION}" rpmbuild/SPECS/pg_repack.spec mkdir -p ${WORKDIR}/srpm mkdir -p ${CURDIR}/srpm cp rpmbuild/SRPMS/*.src.rpm ${CURDIR}/srpm @@ -358,7 +177,7 @@ build_rpm(){ if [[ "${RHEL}" -eq 10 ]]; then export QA_RPATHS=0x0002 fi - rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .$OS_NAME" --define "version ${VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM + rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .$OS_NAME" --define "version ${PG_REPACK_VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM return_code=$? if [ $return_code != 0 ]; then @@ -382,7 +201,7 @@ build_source_deb(){ exit 1 fi rm -rf percona-pg_repack* - get_tar "source_tarball" + get_tar "source_tarball" "percona-pg_repack" rm -f *.dsc *.orig.tar.gz *.debian.tar.gz *.changes # TARFILE=$(basename $(find . -name '*repack*.tar.gz' | sort | tail -n1)) @@ -392,18 +211,18 @@ build_source_deb(){ BUILDDIR=${TARFILE%.tar.gz} # - mv ${TARFILE} percona-pg-repack_${VERSION}.orig.tar.gz + mv ${TARFILE} ${PG_REPACK_PRODUCT_DEB}_${PG_REPACK_VERSION}.orig.tar.gz cd ${BUILDDIR} cd debian rm -rf changelog - echo "percona-pg-repack (${VERSION}-${RELEASE}) unstable; urgency=low" >> changelog + echo "percona-pg-repack (${PG_REPACK_VERSION}-${PG_REPACK_RELEASE}) unstable; urgency=low" >> changelog echo " * Initial Release." >> changelog echo " -- EvgeniyPatlan $(date -R)" >> changelog cd ../ - dch -D unstable --force-distribution -v "${VERSION}-${RELEASE}" "Update to new version ${VERSION}" + dch -D unstable --force-distribution -v "${PG_REPACK_VERSION}-${PG_REPACK_RELEASE}" "Update to new version ${PG_REPACK_VERSION}" dpkg-buildpackage -S cd ../ mkdir -p $WORKDIR/source_deb @@ -447,8 +266,8 @@ build_deb(){ # dpkg-source -x ${DSC} # - cd percona-pg-repack-${VERSION} - dch -m -D "${DEBIAN}" --force-distribution -v "1:${VERSION}-${RELEASE}.${DEBIAN}" 'Update distribution' + cd ${PG_REPACK_PRODUCT_DEB}-${PG_REPACK_VERSION} + dch -m -D "${DEBIAN}" --force-distribution -v "1:${PG_REPACK_VERSION}-${PG_REPACK_RELEASE}.${DEBIAN}" 'Update distribution' unset $(locale|cut -d= -f1) dpkg-buildpackage -rfakeroot -us -uc -b mkdir -p $CURDIR/deb @@ -475,23 +294,18 @@ OS_NAME= ARCH= OS= INSTALL=0 -RPM_RELEASE=2 -DEB_RELEASE=2 REVISION=0 -BRANCH="ver_1.5.2" -REPO="https://github.com/reorg/pg_repack.git" -PRODUCT=percona-pg_repack DEBUG=0 -parse_arguments PICK-ARGS-FROM-ARGV "$@" -VERSION='1.5.2' -RELEASE='2' -PG_VERSION=17.6 -PG_MAJOR_VERSION=$(echo $PG_VERSION | cut -f1 -d'.') -PRODUCT_FULL=${PRODUCT}-${VERSION}-${RELEASE} +parse_arguments PICK-ARGS-FROM-ARGV "$@" check_workdir get_system -install_deps +#install_deps +if [ $INSTALL = 0 ]; then + echo "Dependencies will not be installed" +else + source install-deps.sh "pg_repack" +fi get_sources build_srpm build_source_deb diff --git a/pgaudit/pgaudit_builder.sh b/pgaudit/pgaudit_builder.sh index 3ed6bcce..755c4f71 100644 --- a/pgaudit/pgaudit_builder.sh +++ b/pgaudit/pgaudit_builder.sh @@ -1,94 +1,9 @@ #!/usr/bin/env bash - -shell_quote_string() { - echo "$1" | sed -e 's,\([^a-zA-Z0-9/_.=-]\),\\\1,g' -} - -usage () { - cat <&2 "Current directory cannot be used for building!" - exit 1 - else - if ! test -d "$WORKDIR" - then - echo >&2 "$WORKDIR is not a directory." - exit 1 - fi - fi - return -} - -add_percona_yum_repo(){ - yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm - percona-release disable all - percona-release enable telemetry testing - percona-release enable ppg-${PG_VERSION} testing - return -} - -add_percona_apt_repo(){ - wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb - dpkg -i percona-release_latest.generic_all.deb - rm -f percona-release_latest.generic_all.deb - percona-release disable all - percona-release enable ppg-${PG_VERSION} testing - return -} +set -x +# Versions and other variables +source versions.sh "pgaudit" +# Common functions +source common-functions.sh get_sources(){ cd "${WORKDIR}" @@ -97,160 +12,69 @@ get_sources(){ echo "Sources will not be downloaded" return 0 fi - PRODUCT=percona-pgaudit - echo "PRODUCT=${PRODUCT}" > pgaudit.properties - PRODUCT_FULL=${PRODUCT}-${VERSION} - echo "PRODUCT_FULL=${PRODUCT_FULL}" >> pgaudit.properties + echo "PRODUCT=${PGAUDIT_PRODUCT}" > pgaudit.properties + echo "PRODUCT_FULL=${PGAUDIT_PRODUCT_FULL}" >> pgaudit.properties echo "VERSION=${PSM_VER}" >> pgaudit.properties echo "BUILD_NUMBER=${BUILD_NUMBER}" >> pgaudit.properties echo "BUILD_ID=${BUILD_ID}" >> pgaudit.properties - git clone "$REPO" ${PRODUCT_FULL} + + git clone "$PGAUDIT_SRC_REPO" ${PGAUDIT_PRODUCT_FULL} retval=$? if [ $retval != 0 ] then echo "There were some issues during repo cloning from github. Please retry one more time" exit 1 fi - cd ${PRODUCT_FULL} - if [ ! -z "$BRANCH" ] + cd ${PGAUDIT_PRODUCT_FULL} + if [ ! -z "$PGAUDIT_SRC_BRANCH" ] then git reset --hard git clean -xdf - git checkout "$BRANCH" + git checkout "$PGAUDIT_SRC_BRANCH" fi REVISION=$(git rev-parse --short HEAD) echo "REVISION=${REVISION}" >> ${WORKDIR}/pgaudit.properties rm -fr debian rpm - git clone https://salsa.debian.org/postgresql/pgaudit.git deb_packaging + git clone ${PGAUDIT_SRC_REPO_DEB} deb_packaging cd deb_packaging - git checkout debian/${VERSION}-${RELEASE} + git checkout debian/${PGAUDIT_VERSION}-${PGAUDIT_RELEASE} cd ../ mv deb_packaging/debian ./ - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgaudit/control - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgaudit/control.in - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgaudit/all.patch - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgaudit/rules + wget ${PKG_RAW_URL}/pgaudit/control + wget ${PKG_RAW_URL}/pgaudit/control.in + wget ${PKG_RAW_URL}/pgaudit/all.patch + wget ${PKG_RAW_URL}/pgaudit/rules mv all.patch debian/patches/ rm -rf debian/control* echo "all.patch" > debian/patches/series echo "alternative_regression_outputs.patch" >> debian/patches/series mv control* debian/ mv rules debian/ - echo ${PG_MAJOR_VERSION} > debian/pgversions + echo $PG_MAJOR > debian/pgversions echo 9 > debian/compat rm -rf deb_packaging mkdir rpm cd rpm - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgaudit/pgaudit.spec + wget ${PKG_RAW_URL}/pgaudit/pgaudit.spec cd ${WORKDIR} # source pgaudit.properties # - tar --owner=0 --group=0 --exclude=.* -czf ${PRODUCT_FULL}.tar.gz ${PRODUCT_FULL} + tar --owner=0 --group=0 --exclude=.* -czf ${PGAUDIT_PRODUCT_FULL}.tar.gz ${PGAUDIT_PRODUCT_FULL} DATE_TIMESTAMP=$(date +%F_%H-%M-%S) - echo "UPLOAD=UPLOAD/experimental/BUILDS/${PRODUCT}/${PRODUCT_FULL}/${BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> pgaudit.properties + echo "UPLOAD=UPLOAD/experimental/BUILDS/${PGAUDIT_PRODUCT}/${PGAUDIT_PRODUCT_FULL}/${PGAUDIT_SRC_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> pgaudit.properties mkdir $WORKDIR/source_tarball mkdir $CURDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $CURDIR/source_tarball + cp ${PGAUDIT_PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball + cp ${PGAUDIT_PRODUCT_FULL}.tar.gz $CURDIR/source_tarball cd $CURDIR rm -rf pgaudit* return } -get_system(){ - if [ -f /etc/redhat-release ]; then - RHEL=$(rpm --eval %rhel) - ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - OS_NAME="el$RHEL" - OS="rpm" - else - ARCH=$(uname -m) - OS_NAME="$(lsb_release -sc)" - OS="deb" - fi - return -} - -install_deps() { - if [ $INSTALL = 0 ] - then - echo "Dependencies will not be installed" - return; - fi - if [ $( id -u ) -ne 0 ] - then - echo "It is not possible to instal dependencies. Please run as root" - exit 1 - fi - CURPLACE=$(pwd) - - if [ "x$OS" = "xrpm" ]; then - yum -y install wget - add_percona_yum_repo - yum clean all - RHEL=$(rpm --eval %rhel) - if [[ "${RHEL}" -eq 10 ]]; then - yum install oracle-epel-release-el10 - else - yum -y install epel-release - fi - if [ x"$RHEL" = x6 -o x"$RHEL" = x7 ]; then - until yum -y install centos-release-scl; do - echo "waiting" - sleep 1 - done - INSTALL_LIST="bison e2fsprogs-devel flex gettext git glibc-devel krb5-devel libicu-devel libselinux-devel libuuid-devel libxml2-devel libxslt-devel llvm5.0-devel llvm-toolset-7-clang openldap-devel openssl-devel pam-devel patch perl perl-ExtUtils-Embed perl-ExtUtils-MakeMaker python2-devel readline-devel rpmbuild percona-postgresql${PG_MAJOR_VERSION}-devel percona-postgresql${PG_MAJOR_VERSION}-server rpm-build rpmdevtools selinux-policy systemd systemd-devel systemtap-sdt-devel tcl-devel vim wget zlib-devel llvm-toolset-7-clang-devel make gcc gcc-c++" - yum -y install ${INSTALL_LIST} - source /opt/rh/devtoolset-7/enable - source /opt/rh/llvm-toolset-7/enable - else - dnf module -y disable postgresql - dnf config-manager --set-enabled ol${RHEL}_codeready_builder - - INSTALL_LIST="clang-devel clang llvm-devel python3-devel perl-generators bison e2fsprogs-devel flex gettext git glibc-devel krb5-devel libicu-devel libselinux-devel libuuid-devel libxml2-devel libxslt-devel openldap-devel openssl-devel pam-devel patch perl perl-ExtUtils-MakeMaker perl-ExtUtils-Embed readline-devel percona-postgresql${PG_MAJOR_VERSION}-devel percona-postgresql${PG_MAJOR_VERSION}-server rpm-build rpmdevtools selinux-policy systemd systemd-devel systemtap-sdt-devel tcl-devel vim wget zlib-devel " - yum -y install ${INSTALL_LIST} - yum -y install binutils gcc gcc-c++ - fi - else - apt-get -y update - apt-get -y install wget lsb-release - export DEBIAN=$(lsb_release -sc) - export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - apt-get -y update || true - apt-get -y install gnupg2 curl - add_percona_apt_repo - percona-release enable tools testing - percona-release enable ppg-${PG_VERSION} testing - apt-get update || true - INSTALL_LIST="build-essential dpkg-dev debconf debhelper clang devscripts dh-exec git wget libkrb5-dev libssl-dev percona-postgresql-common percona-postgresql-server-dev-all" - DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST} - fi - return; -} - -get_tar(){ - TARBALL=$1 - TARFILE=$(basename $(find $WORKDIR/$TARBALL -name 'percona-pgaudit*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - TARFILE=$(basename $(find $CURDIR/$TARBALL -name 'percona-pgaudit*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - echo "There is no $TARBALL for build" - exit 1 - else - cp $CURDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - else - cp $WORKDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - return -} - get_deb_sources(){ param=$1 echo $param @@ -283,7 +107,7 @@ build_srpm(){ exit 1 fi cd $WORKDIR - get_tar "source_tarball" + get_tar "source_tarball" "percona-pgaudit" rm -fr rpmbuild ls | grep -v tar.gz | xargs rm -rf TARFILE=$(find . -name 'percona-pgaudit*.tar.gz' | sort | tail -n1) @@ -294,12 +118,12 @@ build_srpm(){ # cp -av rpm/* rpmbuild/SOURCES cp -av rpm/pgaudit.spec rpmbuild/SPECS - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgaudit/all.patch + wget ${PKG_RAW_URL}/pgaudit/all.patch mv all.patch rpmbuild/SOURCES # mv -fv ${TARFILE} ${WORKDIR}/rpmbuild/SOURCES rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .generic" \ - --define "version ${VERSION}" rpmbuild/SPECS/pgaudit.spec + --define "version ${PGAUDIT_VERSION}" rpmbuild/SPECS/pgaudit.spec mkdir -p ${WORKDIR}/srpm mkdir -p ${CURDIR}/srpm cp rpmbuild/SRPMS/*.src.rpm ${CURDIR}/srpm @@ -350,7 +174,7 @@ build_rpm(){ if [[ "${RHEL}" -eq 10 ]]; then export QA_RPATHS=0x0002 fi - rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .$OS_NAME" --define "version ${VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM + rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .$OS_NAME" --define "version ${PGAUDIT_VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM return_code=$? if [ $return_code != 0 ]; then @@ -374,7 +198,7 @@ build_source_deb(){ exit 1 fi rm -rf percona-pgaudit* - get_tar "source_tarball" + get_tar "source_tarball" "percona-pgaudit" rm -f *.dsc *.orig.tar.gz *.debian.tar.gz *.changes # TARFILE=$(basename $(find . -name 'percona-pgaudit*.tar.gz' | sort | tail -n1)) @@ -384,18 +208,18 @@ build_source_deb(){ BUILDDIR=${TARFILE%.tar.gz} # - mv ${TARFILE} ${PRODUCT}_${VERSION}.orig.tar.gz + mv ${TARFILE} ${PGAUDIT_PRODUCT}_${PGAUDIT_VERSION}.orig.tar.gz cd ${BUILDDIR} cd debian rm -rf changelog - echo "percona-pgaudit (${VERSION}-${RELEASE}) unstable; urgency=low" >> changelog + echo "percona-pgaudit (${PGAUDIT_VERSION}-${PGAUDIT_RELEASE}) unstable; urgency=low" >> changelog echo " * Initial Release." >> changelog echo " -- EvgeniyPatlan $(date -R)" >> changelog cd ../ - dch -D unstable --force-distribution -v "${VERSION}-${RELEASE}" "Update to new pgaudit version ${VERSION}" + dch -D unstable --force-distribution -v "${PGAUDIT_VERSION}-${PGAUDIT_RELEASE}" "Update to new pgaudit version ${PGAUDIT_VERSION}" dpkg-buildpackage -S cd ../ mkdir -p $WORKDIR/source_deb @@ -439,8 +263,8 @@ build_deb(){ # dpkg-source -x ${DSC} # - cd ${PRODUCT}-${VERSION} - dch -m -D "${DEBIAN}" --force-distribution -v "1:${VERSION}-${RELEASE}.${DEBIAN}" 'Update distribution' + cd ${PGAUDIT_PRODUCT_FULL} + dch -m -D "${DEBIAN}" --force-distribution -v "1:${PGAUDIT_VERSION}-${PGAUDIT_RELEASE}.${DEBIAN}" 'Update distribution' unset $(locale|cut -d= -f1) dpkg-buildpackage -rfakeroot -us -uc -b mkdir -p $CURDIR/deb @@ -467,23 +291,18 @@ OS_NAME= ARCH= OS= INSTALL=0 -RPM_RELEASE=1 -DEB_RELEASE=1 REVISION=0 -BRANCH="17.1" -PG_VERSION=17.6 -REPO="https://github.com/pgaudit/pgaudit.git" -PRODUCT=percona-pgaudit DEBUG=0 -parse_arguments PICK-ARGS-FROM-ARGV "$@" -VERSION="17.1" -RELEASE='1' -PG_MAJOR_VERSION=$(echo $PG_VERSION | cut -f1 -d'.') -PRODUCT_FULL=${PRODUCT}-${VERSION}-${RELEASE} +parse_arguments PICK-ARGS-FROM-ARGV "$@" check_workdir get_system -install_deps +#install_deps +if [ $INSTALL = 0 ]; then + echo "Dependencies will not be installed" +else + source install-deps.sh "pgaudit" +fi get_sources build_srpm build_source_deb diff --git a/pgaudit_set_user/pgaudit_builder.sh b/pgaudit_set_user/pgaudit_builder.sh index 459f80c5..0fc3329a 100644 --- a/pgaudit_set_user/pgaudit_builder.sh +++ b/pgaudit_set_user/pgaudit_builder.sh @@ -1,94 +1,9 @@ #!/usr/bin/env bash - -shell_quote_string() { - echo "$1" | sed -e 's,\([^a-zA-Z0-9/_.=-]\),\\\1,g' -} - -usage () { - cat <&2 "Current directory cannot be used for building!" - exit 1 - else - if ! test -d "$WORKDIR" - then - echo >&2 "$WORKDIR is not a directory." - exit 1 - fi - fi - return -} - -add_percona_yum_repo(){ - yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm - percona-release disable all - percona-release enable telemetry testing - percona-release enable ppg-${PG_VERSION} testing - return -} - -add_percona_apt_repo(){ - wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb - dpkg -i percona-release_latest.generic_all.deb - rm -f percona-release_latest.generic_all.deb - percona-release disable all - percona-release enable ppg-${PG_VERSION} testing - return -} +set -x +# Versions and other variables +source versions.sh "pgaudit_set_user" +# Common functions +source common-functions.sh get_sources(){ cd "${WORKDIR}" @@ -97,27 +12,26 @@ get_sources(){ echo "Sources will not be downloaded" return 0 fi - PRODUCT=percona-pgaudit${PG_MAJOR_VERSION}_set_user - echo "PRODUCT=${PRODUCT}" > pgaudit.properties - PRODUCT_FULL=${PRODUCT}-${VERSION} - echo "PRODUCT_FULL=${PRODUCT_FULL}" >> pgaudit.properties + echo "PRODUCT=${SET_USER_PRODUCT}" > pgaudit.properties + echo "PRODUCT_FULL=${SET_USER_PRODUCT_FULL}" >> pgaudit.properties echo "VERSION=${PSM_VER}" >> pgaudit.properties echo "BUILD_NUMBER=${BUILD_NUMBER}" >> pgaudit.properties echo "BUILD_ID=${BUILD_ID}" >> pgaudit.properties - git clone "$REPO" ${PRODUCT_FULL} + + git clone "$SET_USER_SRC_REPO" ${SET_USER_PRODUCT_FULL} retval=$? if [ $retval != 0 ] then echo "There were some issues during repo cloning from github. Please retry one more time" exit 1 fi - cd ${PRODUCT_FULL} - if [ ! -z "$BRANCH" ] + cd ${SET_USER_PRODUCT_FULL} + if [ ! -z "$SET_USER_SRC_BRANCH" ] then git reset --hard git clean -xdf - git checkout "$BRANCH" + git checkout "$SET_USER_SRC_BRANCH" fi REVISION=$(git rev-parse --short HEAD) echo "REVISION=${REVISION}" >> ${WORKDIR}/pgaudit.properties @@ -125,125 +39,37 @@ get_sources(){ cd debian/ mkdir source echo "3.0 (quilt)" > source/format - echo ${PG_MAJOR_VERSION} > pgversions + echo $PG_MAJOR > pgversions echo 9 > compat - echo "percona-pgaudit${PG_MAJOR_VERSION}-set-user (${VERSION}-${RELEASE}) unstable; urgency=low" >> changelog + echo "percona-pgaudit$PG_MAJOR-set-user (${SET_USER_VERSION}-${SET_USER_RELEASE}) unstable; urgency=low" >> changelog echo " * Initial Release." >> changelog echo " -- EvgeniyPatlan $(date -R)" >> changelog - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgaudit_set_user/control - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgaudit_set_user/control.in - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgaudit_set_user/copyright - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgaudit_set_user/rules + wget ${PKG_RAW_URL}/pgaudit_set_user/control + wget ${PKG_RAW_URL}/pgaudit_set_user/control.in + wget ${PKG_RAW_URL}/pgaudit_set_user/copyright + wget ${PKG_RAW_URL}/pgaudit_set_user/rules cd ../ mkdir rpm cd rpm - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgaudit_set_user/percona-pgaudit${PG_MAJOR_VERSION}_set_user.spec + wget ${PKG_RAW_URL}/pgaudit_set_user/percona-pgaudit${PG_MAJOR}_set_user.spec cd ${WORKDIR} # source pgaudit.properties # - tar --owner=0 --group=0 --exclude=.* -czf ${PRODUCT_FULL}.tar.gz ${PRODUCT_FULL} + tar --owner=0 --group=0 --exclude=.* -czf ${SET_USER_PRODUCT_FULL}.tar.gz ${SET_USER_PRODUCT_FULL} DATE_TIMESTAMP=$(date +%F_%H-%M-%S) - echo "UPLOAD=UPLOAD/experimental/BUILDS/${PRODUCT}/${PRODUCT_FULL}/${BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> pgaudit.properties + echo "UPLOAD=UPLOAD/experimental/BUILDS/${SET_USER_PRODUCT}/${SET_USER_PRODUCT_FULL}/${SET_USER_SRC_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> pgaudit.properties mkdir $WORKDIR/source_tarball mkdir $CURDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $CURDIR/source_tarball + cp ${SET_USER_PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball + cp ${SET_USER_PRODUCT_FULL}.tar.gz $CURDIR/source_tarball cd $CURDIR rm -rf pgaudit* return } -get_system(){ - if [ -f /etc/redhat-release ]; then - RHEL=$(rpm --eval %rhel) - ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - OS_NAME="el$RHEL" - OS="rpm" - else - ARCH=$(uname -m) - OS_NAME="$(lsb_release -sc)" - OS="deb" - fi - return -} - -install_deps() { - if [ $INSTALL = 0 ] - then - echo "Dependencies will not be installed" - return; - fi - if [ $( id -u ) -ne 0 ] - then - echo "It is not possible to instal dependencies. Please run as root" - exit 1 - fi - CURPLACE=$(pwd) - - if [ "x$OS" = "xrpm" ]; then - yum -y install wget - add_percona_yum_repo - yum clean all - RHEL=$(rpm --eval %rhel) - if [[ "${RHEL}" -eq 10 ]]; then - yum install oracle-epel-release-el10 - else - yum -y install epel-release - fi - if [ x"$RHEL" = x6 -o x"$RHEL" = x7 ]; then - until yum -y install centos-release-scl; do - echo "waiting" - sleep 1 - done - INSTALL_LIST="bison e2fsprogs-devel flex gettext git glibc-devel krb5-devel libicu-devel libselinux-devel libuuid-devel libxml2-devel libxslt-devel llvm5.0-devel llvm-toolset-7-clang openldap-devel openssl-devel pam-devel patch perl perl-ExtUtils-Embed perl-ExtUtils-MakeMaker python2-devel readline-devel rpmbuild percona-postgresql${PG_MAJOR_VERSION}-devel percona-postgresql${PG_MAJOR_VERSION}-server rpm-build rpmdevtools selinux-policy systemd systemd-devel systemtap-sdt-devel tcl-devel vim wget zlib-devel llvm-toolset-7-clang-devel make" - yum -y install ${INSTALL_LIST} - source /opt/rh/devtoolset-7/enable - source /opt/rh/llvm-toolset-7/enable - else - dnf config-manager --set-enabled ol${RHEL}_codeready_builder - dnf module disable postgresql - - INSTALL_LIST="clang-devel clang llvm-devel python3-devel perl-generators bison e2fsprogs-devel flex gettext git glibc-devel krb5-devel libicu-devel libselinux-devel libuuid-devel libxml2-devel libxslt-devel openldap-devel openssl-devel pam-devel patch perl perl-ExtUtils-MakeMaker perl-ExtUtils-Embed readline-devel percona-postgresql${PG_MAJOR_VERSION}-devel percona-postgresql${PG_MAJOR_VERSION}-server rpm-build rpmdevtools selinux-policy systemd systemd-devel systemtap-sdt-devel tcl-devel vim wget zlib-devel " - yum -y install ${INSTALL_LIST} - yum -y install binutils gcc gcc-c++ - fi - else - export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - apt-get -y update || true - apt-get -y install lsb-release wget gnupg2 curl - export DEBIAN=$(lsb_release -sc) - add_percona_apt_repo - percona-release enable tools testing - percona-release enable ppg-${PG_VERSION} testing - apt-get update || true - INSTALL_LIST="build-essential dpkg-dev debconf debhelper clang devscripts dh-exec git wget libkrb5-dev libssl-dev percona-postgresql-common percona-postgresql-server-dev-all" - DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST} - fi - return; -} - -get_tar(){ - TARBALL=$1 - TARFILE=$(basename $(find $WORKDIR/$TARBALL -name 'percona-pgaudit*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - TARFILE=$(basename $(find $CURDIR/$TARBALL -name 'percona-pgaudit*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - echo "There is no $TARBALL for build" - exit 1 - else - cp $CURDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - else - cp $WORKDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - return -} - get_deb_sources(){ param=$1 echo $param @@ -276,7 +102,7 @@ build_srpm(){ exit 1 fi cd $WORKDIR - get_tar "source_tarball" + get_tar "source_tarball" "percona-pgaudit" rm -fr rpmbuild ls | grep -v tar.gz | xargs rm -rf TARFILE=$(find . -name 'percona-pgaudit*.tar.gz' | sort | tail -n1) @@ -286,11 +112,11 @@ build_srpm(){ tar vxzf ${WORKDIR}/${TARFILE} --wildcards '*/rpm' --strip=1 # cp -av rpm/* rpmbuild/SOURCES - cp -av rpm/percona-pgaudit${PG_MAJOR_VERSION}_set_user.spec rpmbuild/SPECS + cp -av rpm/percona-pgaudit${PG_MAJOR}_set_user.spec rpmbuild/SPECS # mv -fv ${TARFILE} ${WORKDIR}/rpmbuild/SOURCES rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .generic" \ - --define "version ${VERSION}" rpmbuild/SPECS/percona-pgaudit${PG_MAJOR_VERSION}_set_user.spec + --define "version ${SET_USER_VERSION}" rpmbuild/SPECS/percona-pgaudit${PG_MAJOR}_set_user.spec mkdir -p ${WORKDIR}/srpm mkdir -p ${CURDIR}/srpm cp rpmbuild/SRPMS/*.src.rpm ${CURDIR}/srpm @@ -341,7 +167,7 @@ build_rpm(){ if [[ "${RHEL}" -eq 10 ]]; then export QA_RPATHS=0x0002 fi - rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "pgmajorversion ${PG_MAJOR_VERSION}" --define "dist .$OS_NAME" --define "version ${VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM + rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "pgmajorversion $PG_MAJOR" --define "dist .$OS_NAME" --define "version ${SET_USER_VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM return_code=$? if [ $return_code != 0 ]; then @@ -365,7 +191,7 @@ build_source_deb(){ exit 1 fi rm -rf percona-pgaudit* - get_tar "source_tarball" + get_tar "source_tarball" "percona-pgaudit" rm -f *.dsc *.orig.tar.gz *.debian.tar.gz *.changes # TARFILE=$(basename $(find . -name 'percona-pgaudit*.tar.gz' | sort | tail -n1)) @@ -374,11 +200,11 @@ build_source_deb(){ tar zxf ${TARFILE} BUILDDIR=${TARFILE%.tar.gz} # - PRODUCT_DEB="percona-pgaudit${PG_MAJOR_VERSION}-set-user" - mv ${TARFILE} ${PRODUCT_DEB}_${VERSION}.orig.tar.gz + + mv ${TARFILE} ${SET_USER_PRODUCT_DEB}_${SET_USER_VERSION}.orig.tar.gz cd ${BUILDDIR} - dch -D unstable --force-distribution -v "${VERSION}-${RELEASE}" "Update to new pgaudit version ${VERSION}" + dch -D unstable --force-distribution -v "${SET_USER_VERSION}-${SET_USER_RELEASE}" "Update to new pgaudit version ${SET_USER_VERSION}" dpkg-buildpackage -S cd ../ mkdir -p $WORKDIR/source_deb @@ -422,8 +248,8 @@ build_deb(){ # dpkg-source -x ${DSC} # - cd percona-pgaudit${PG_MAJOR_VERSION}-set-user-${VERSION} - dch -m -D "${DEBIAN}" --force-distribution -v "1:${VERSION}-${RELEASE}.${DEBIAN}" 'Update distribution' + cd ${SET_USER_PRODUCT_DEB}-${SET_USER_VERSION} + dch -m -D "${DEBIAN}" --force-distribution -v "1:${SET_USER_VERSION}-${SET_USER_RELEASE}.${DEBIAN}" 'Update distribution' unset $(locale|cut -d= -f1) dpkg-buildpackage -rfakeroot -us -uc -b mkdir -p $CURDIR/deb @@ -450,23 +276,18 @@ OS_NAME= ARCH= OS= INSTALL=0 -RPM_RELEASE=2 -DEB_RELEASE=2 REVISION=0 -BRANCH="REL4_1_0" -REPO="https://github.com/pgaudit/set_user.git" DEBUG=0 -parse_arguments PICK-ARGS-FROM-ARGV "$@" -VERSION='4.1.0' -RELEASE='3' -PRODUCT_FULL=${PRODUCT}-${VERSION}-${RELEASE} -PG_VERSION=17.6 -PG_MAJOR_VERSION=$(echo $PG_VERSION | cut -f1 -d'.') -PRODUCT=percona-pgaudit${PG_MAJOR_VERSION}_set_user +parse_arguments PICK-ARGS-FROM-ARGV "$@" check_workdir get_system -install_deps +#install_deps +if [ $INSTALL = 0 ]; then + echo "Dependencies will not be installed" +else + source install-deps.sh "pgaudit_set_user" +fi get_sources build_srpm build_source_deb diff --git a/pgbackrest/pgbackrest_builder.sh b/pgbackrest/pgbackrest_builder.sh index 456e1830..1b72fbab 100644 --- a/pgbackrest/pgbackrest_builder.sh +++ b/pgbackrest/pgbackrest_builder.sh @@ -1,98 +1,9 @@ #!/usr/bin/env bash - -shell_quote_string() { - echo "$1" | sed -e 's,\([^a-zA-Z0-9/_.=-]\),\\\1,g' -} - -usage () { - cat <&2 "Current directory cannot be used for building!" - exit 1 - else - if ! test -d "$WORKDIR" - then - echo >&2 "$WORKDIR is not a directory." - exit 1 - fi - fi - return -} - -add_percona_yum_repo(){ - yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm - percona-release disable all - percona-release enable ppg-${PG_VERSION} testing - return -} - -add_percona_apt_repo(){ - wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb - dpkg -i percona-release_latest.generic_all.deb - rm -f percona-release_latest.generic_all.deb - percona-release disable all - percona-release enable ppg-${PG_VERSION} testing - return -} +set -x +# Versions and other variables +source versions.sh "pgbackrest" +# Common functions +source common-functions.sh get_sources(){ cd "${WORKDIR}" @@ -101,35 +12,34 @@ get_sources(){ echo "Sources will not be downloaded" return 0 fi - PRODUCT=percona-pgbackrest - echo "PRODUCT=${PRODUCT}" > pgbackrest.properties - PRODUCT_FULL=${PRODUCT}-${VERSION} - echo "PRODUCT_FULL=${PRODUCT_FULL}" >> pgbackrest.properties + echo "PRODUCT=${PG_BCKREST_PRODUCT}" > pgbackrest.properties + echo "PRODUCT_FULL=${PG_BCKREST_PRODUCT_FULL}" >> pgbackrest.properties echo "VERSION=${PSM_VER}" >> pgbackrest.properties echo "BUILD_NUMBER=${BUILD_NUMBER}" >> pgbackrest.properties echo "BUILD_ID=${BUILD_ID}" >> pgbackrest.properties - git clone "$REPO" ${PRODUCT_FULL} + + git clone "$PG_BCKREST_SRC_REPO" ${PG_BCKREST_PRODUCT_FULL} retval=$? if [ $retval != 0 ] then echo "There were some issues during repo cloning from github. Please retry one more time" exit 1 fi - cd ${PRODUCT_FULL} - if [ ! -z "$BRANCH" ] + cd ${PG_BCKREST_PRODUCT_FULL} + if [ ! -z "$PG_BCKREST_SRC_BRANCH" ] then git reset --hard git clean -xdf - git checkout "$BRANCH" + git checkout "$PG_BCKREST_SRC_BRANCH" fi REVISION=$(git rev-parse --short HEAD) echo "REVISION=${REVISION}" >> ${WORKDIR}/pgbackrest.properties rm -fr debian rpm - GIT_SSL_NO_VERIFY=true git clone https://salsa.debian.org/postgresql/pgbackrest.git deb_packaging + GIT_SSL_NO_VERIFY=true git clone ${PG_BCKREST_SRC_REPO_DEB} deb_packaging cd deb_packaging - git checkout ${DEB_PACKAGING_TAG} + git checkout ${PG_BCKREST_DEB_TAG} cd - mv deb_packaging/debian ./ @@ -138,9 +48,9 @@ get_sources(){ mv $file "percona-$file" done rm -f control - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgbackrest/control - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgbackrest/compat - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgbackrest/rules.patch + wget ${PKG_RAW_URL}/pgbackrest/control + wget ${PKG_RAW_URL}/pgbackrest/compat + wget ${PKG_RAW_URL}/pgbackrest/rules.patch patch -p0 < rules.patch rm rules.patch cd ../ @@ -150,143 +60,28 @@ get_sources(){ rm -rf deb_packaging mkdir rpm cd rpm - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgbackrest/pgbackrest.spec - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgbackrest/pgbackrest.conf - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgbackrest/pgbackrest-tmpfiles.d - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgbackrest/pgbackrest.logrotate - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgbackrest/pgbackrest.service + wget ${PKG_RAW_URL}/pgbackrest/pgbackrest.spec + wget ${PKG_RAW_URL}/pgbackrest/pgbackrest.service + wget ${PKG_RAW_URL}/pgbackrest/pgbackrest.logrotate + wget ${PKG_RAW_URL}/pgbackrest/pgbackrest-tmpfiles.d + wget ${PKG_RAW_URL}/pgbackrest/pgbackrest.conf cd ${WORKDIR} # source pgbackrest.properties # - tar --owner=0 --group=0 --exclude=.* -czf ${PRODUCT_FULL}.tar.gz ${PRODUCT_FULL} + tar --owner=0 --group=0 --exclude=.* -czf ${PG_BCKREST_PRODUCT_FULL}.tar.gz ${PG_BCKREST_PRODUCT_FULL} DATE_TIMESTAMP=$(date +%F_%H-%M-%S) - echo "UPLOAD=UPLOAD/experimental/BUILDS/${PRODUCT}/${PRODUCT_FULL}/${PSM_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> pgbackrest.properties + echo "UPLOAD=UPLOAD/experimental/BUILDS/${PG_BCKREST_PRODUCT}/${PG_BCKREST_PRODUCT_FULL}/${PSM_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> pgbackrest.properties mkdir $WORKDIR/source_tarball mkdir $CURDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $CURDIR/source_tarball + cp ${PG_BCKREST_PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball + cp ${PG_BCKREST_PRODUCT_FULL}.tar.gz $CURDIR/source_tarball cd $CURDIR rm -rf percona-pgbackrest* return } -get_system(){ - if [ -f /etc/redhat-release ]; then - RHEL=$(rpm --eval %rhel) - ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - OS_NAME="el$RHEL" - OS="rpm" - else - ARCH=$(uname -m) - OS_NAME="$(lsb_release -sc)" - OS="deb" - fi - return -} - -install_deps() { - if [ $INSTALL = 0 ] - then - echo "Dependencies will not be installed" - return; - fi - if [ $( id -u ) -ne 0 ] - then - echo "It is not possible to instal dependencies. Please run as root" - exit 1 - fi - CURPLACE=$(pwd) - - if [ "x$OS" = "xrpm" ]; then - if [ x"$RHEL" = x8 ]; then - switch_to_vault_repo - fi - yum -y install wget - add_percona_yum_repo - yum clean all - RHEL=$(rpm --eval %rhel) - if [[ "${RHEL}" -eq 10 ]]; then - yum install oracle-epel-release-el10 - else - yum -y install epel-release - fi - if [ ${RHEL} -gt 7 ]; then - dnf -y module disable postgresql - dnf config-manager --enable ol${RHEL}_codeready_builder - dnf clean all - rm -r /var/cache/dnf - dnf -y upgrade - yum -y install perl lz4-libs - yum config-manager --set-enabled powertools - yum -y install libyaml-devel - else - until yum -y install centos-release-scl; do - echo "waiting" - sleep 1 - done - yum -y install llvm-toolset-7-clang llvm5.0-devtoolset - yum -y install libyaml-devel - source /opt/rh/devtoolset-7/enable - source /opt/rh/llvm-toolset-7/enable - fi - INSTALL_LIST="percona-postgresql${PG_MAJOR_VERSION}-devel git rpm-build rpmdevtools systemd systemd-devel wget bzip2-devel libxml2-devel openssl-devel perl perl-DBD-Pg perl-Digest-SHA perl-IO-Socket-SSL perl-JSON-PP zlib-devel gcc make autoconf perl-ExtUtils-Embed libssh-devel libzstd-devel lz4-devel" - yum -y install ${INSTALL_LIST} - yum -y install lz4 || true - yum -y install perl-libxml-perl || true - yum install meson gcc make git autoconf libtool cmake - git clone https://github.com/ianlancetaylor/libbacktrace.git - cd libbacktrace/ - ./configure --prefix=/usr/local - make - make install - cd ../ - else - export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - apt-get update || true - apt-get -y install gnupg2 wget curl lsb-release - - export DEBIAN=$(lsb_release -sc) - add_percona_apt_repo - percona-release enable tools testing - percona-release enable ppg-${PG_VERSION} testing - apt-get update || true - INSTALL_LIST="build-essential pkg-config liblz4-dev debconf debhelper devscripts dh-exec git wget libxml-checker-perl libxml-libxml-perl libio-socket-ssl-perl libperl-dev libssl-dev libxml2-dev txt2man zlib1g-dev libpq-dev percona-postgresql-${PG_MAJOR_VERSION} percona-postgresql-common percona-postgresql-server-dev-all libbz2-dev libzstd-dev libyaml-dev meson python3-setuptools" - until DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST}; do - sleep 1 - echo "waiting" - done - if [ "x${DEBIAN}" != "xbullseye" ]; then - DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install dh_systemd - fi - if [ "x${DEBIAN}" = "xstretch" ]; then - wget http://ftp.us.debian.org/debian/pool/main/liby/libyaml-libyaml-perl/libyaml-libyaml-perl_0.76+repack-1~bpo9+1_amd64.deb - dpkg -i ./libyaml-libyaml-perl_0.76+repack-1~bpo9+1_amd64.deb - fi - fi - return; -} - -get_tar(){ - TARBALL=$1 - TARFILE=$(basename $(find $WORKDIR/$TARBALL -name 'percona-pgbackrest*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - TARFILE=$(basename $(find $CURDIR/$TARBALL -name 'percona-pgbackrest*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - echo "There is no $TARBALL for build" - exit 1 - else - cp $CURDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - else - cp $WORKDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - return -} - get_deb_sources(){ param=$1 echo $param @@ -319,7 +114,7 @@ build_srpm(){ exit 1 fi cd $WORKDIR - get_tar "source_tarball" + get_tar "source_tarball" "percona-pgbackrest" rm -fr rpmbuild ls | grep -v tar.gz | xargs rm -rf TARFILE=$(find . -name 'percona-pgbackrest*.tar.gz' | sort | tail -n1) @@ -332,8 +127,8 @@ build_srpm(){ cp -av rpm/pgbackrest.spec rpmbuild/SPECS # mv -fv ${TARFILE} ${WORKDIR}/rpmbuild/SOURCES - rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "pginstdir /usr/pgsql-${PG_MAJOR_VERSION}" --define "dist .generic" \ - --define "version ${VERSION}" rpmbuild/SPECS/pgbackrest.spec + rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "pginstdir /usr/pgsql-$PG_MAJOR" --define "dist .generic" \ + --define "version ${PG_BCKREST_VERSION}" rpmbuild/SPECS/pgbackrest.spec mkdir -p ${WORKDIR}/srpm mkdir -p ${CURDIR}/srpm cp rpmbuild/SRPMS/*.src.rpm ${CURDIR}/srpm @@ -381,9 +176,9 @@ build_rpm(){ source /opt/rh/devtoolset-7/enable source /opt/rh/llvm-toolset-7/enable fi - export LIBPQ_DIR=/usr/pgsql-${PG_MAJOR_VERSION}/ - export LIBRARY_PATH=/usr/pgsql-${PG_MAJOR_VERSION}/lib/:/usr/pgsql-${PG_MAJOR_VERSION}/include/ - rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "pginstdir /usr/pgsql-${PG_MAJOR_VERSION}" --define "dist .$OS_NAME" --define "version ${VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM + export LIBPQ_DIR=/usr/pgsql-${PG_MAJOR}/ + export LIBRARY_PATH=/usr/pgsql-${PG_MAJOR}/lib/:/usr/pgsql-${PG_MAJOR}/include/ + rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "pginstdir /usr/pgsql-$PG_MAJOR" --define "dist .$OS_NAME" --define "version ${PG_BCKREST_VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM return_code=$? if [ $return_code != 0 ]; then @@ -407,7 +202,7 @@ build_source_deb(){ exit 1 fi rm -rf percona-pgbackrest* - get_tar "source_tarball" + get_tar "source_tarball" "percona-pgbackrest" rm -f *.dsc *.orig.tar.gz *.debian.tar.gz *.changes # TARFILE=$(basename $(find . -name 'percona-pgbackrest*.tar.gz' | sort | tail -n1)) @@ -417,12 +212,12 @@ build_source_deb(){ BUILDDIR=${TARFILE%.tar.gz} # - mv ${TARFILE} ${PRODUCT}_${VERSION}.orig.tar.gz + mv ${TARFILE} ${PG_BCKREST_PRODUCT}_${PG_BCKREST_VERSION}.orig.tar.gz cd ${BUILDDIR} cd debian rm -rf changelog - echo "percona-pgbackrest (${VERSION}-${RELEASE}) unstable; urgency=low" >> changelog + echo "percona-pgbackrest (${PG_BCKREST_VERSION}-${PG_BCKREST_RELEASE}) unstable; urgency=low" >> changelog echo >> changelog echo " * Initial Release." >> changelog echo >> changelog @@ -430,7 +225,7 @@ build_source_deb(){ cd ../ - dch -D unstable --force-distribution -v "${VERSION}-${RELEASE}" "Update to new pgbackrest version ${VERSION}" + dch -D unstable --force-distribution -v "${PG_BCKREST_VERSION}-${PG_BCKREST_RELEASE}" "Update to new pgbackrest version ${PG_BCKREST_VERSION}" dpkg-buildpackage -S cd ../ mkdir -p $WORKDIR/source_deb @@ -474,8 +269,8 @@ build_deb(){ # dpkg-source -x ${DSC} # - cd ${PRODUCT}-${VERSION} - dch -m -D "${DEBIAN}" --force-distribution -v "1:${VERSION}-${RELEASE}.${DEBIAN}" 'Update distribution' + cd ${PG_BCKREST_PRODUCT_FULL} + dch -m -D "${DEBIAN}" --force-distribution -v "1:${PG_BCKREST_VERSION}-${PG_BCKREST_RELEASE}.${DEBIAN}" 'Update distribution' unset $(locale|cut -d= -f1) dpkg-buildpackage -rfakeroot -us -uc -b mkdir -p $CURDIR/deb @@ -502,24 +297,19 @@ OS_NAME= ARCH= OS= INSTALL=0 -RPM_RELEASE=1 -DEB_RELEASE=1 REVISION=0 -BRANCH="release/2.56.0" -DEB_PACKAGING_TAG="debian/2.56.0-1" -REPO="https://github.com/pgbackrest/pgbackrest.git" -PRODUCT=percona-pgbackrest DEBUG=0 + parse_arguments PICK-ARGS-FROM-ARGV "$@" -VERSION='2.56.0' -RELEASE='1' -PG_VERSION=17.6 -PG_MAJOR_VERSION=$(echo $PG_VERSION | cut -f1 -d'.') -PRODUCT_FULL=${PRODUCT}-${VERSION}-${RELEASE} check_workdir get_system -install_deps +#install_deps +if [ $INSTALL = 0 ]; then + echo "Dependencies will not be installed" +else + source install-deps.sh "pgbackrest" +fi get_sources build_srpm build_source_deb diff --git a/pgbadger/pgbadger_builder.sh b/pgbadger/pgbadger_builder.sh index c1ef7df8..ed305da8 100644 --- a/pgbadger/pgbadger_builder.sh +++ b/pgbadger/pgbadger_builder.sh @@ -1,93 +1,9 @@ #!/usr/bin/env bash - -shell_quote_string() { - echo "$1" | sed -e 's,\([^a-zA-Z0-9/_.=-]\),\\\1,g' -} - -usage () { - cat <&2 "Current directory cannot be used for building!" - exit 1 - else - if ! test -d "$WORKDIR" - then - echo >&2 "$WORKDIR is not a directory." - exit 1 - fi - fi - return -} - -add_percona_yum_repo(){ - yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm - percona-release disable all - percona-release enable ppg-${PG_VERSION} testing - return -} - -add_percona_apt_repo(){ - wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb - dpkg -i percona-release_latest.generic_all.deb - rm -f percona-release_latest.generic_all.deb - percona-release disable all - percona-release enable ppg-${PG_VERSION} testing - return -} +set -x +# Versions and other variables +source versions.sh "pgbadger" +# Common functions +source common-functions.sh get_sources(){ cd "${WORKDIR}" @@ -96,27 +12,26 @@ get_sources(){ echo "Sources will not be downloaded" return 0 fi - PRODUCT=percona-pgbadger - echo "PRODUCT=${PRODUCT}" > pgbadger.properties - PRODUCT_FULL=${PRODUCT}-${VERSION} - echo "PRODUCT_FULL=${PRODUCT_FULL}" >> pgbadger.properties + echo "PRODUCT=${PGBADGER_PRODUCT}" > pgbadger.properties + echo "PRODUCT_FULL=${PGBADGER_PRODUCT_FULL}" >> pgbadger.properties echo "VERSION=${PSM_VER}" >> pgbadger.properties echo "BUILD_NUMBER=${BUILD_NUMBER}" >> pgbadger.properties echo "BUILD_ID=${BUILD_ID}" >> pgbadger.properties - git clone "$REPO" ${PRODUCT_FULL} + + git clone "$PGBADGER_SRC_REPO" ${PGBADGER_PRODUCT_FULL} retval=$? if [ $retval != 0 ] then echo "There were some issues during repo cloning from github. Please retry one more time" exit 1 fi - cd ${PRODUCT_FULL} - if [ ! -z "$BRANCH" ] + cd ${PGBADGER_PRODUCT_FULL} + if [ ! -z "$PGBADGER_SRC_BRANCH" ] then git reset --hard git clean -xdf - git checkout "$BRANCH" + git checkout "$PGBADGER_SRC_BRANCH" git submodule update --init # https://github.com/darold/pgbadger/issues/773 sed -i 's:12.0:12.1:g' pgbadger @@ -126,138 +41,36 @@ get_sources(){ mkdir debian cd debian/ - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgbadger/control - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgbadger/rules + wget ${PKG_RAW_URL}/pgbadger/control + wget ${PKG_RAW_URL}/pgbadger/rules chmod +x rules - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgbadger/copyright + wget ${PKG_RAW_URL}/pgbadger/copyright echo 9 > compat - echo "percona-pgbadger (${VERSION}-${RELEASE}) unstable; urgency=low" >> changelog + echo "percona-pgbadger (${PGBADGER_VERSION}-${PGBADGER_RELEASE}) unstable; urgency=low" >> changelog echo " * Initial Release." >> changelog echo " -- EvgeniyPatlan $(date -R)" >> changelog cd ../ mkdir rpm cd rpm - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgbadger/percona-pgbadger.spec + wget ${PKG_RAW_URL}/pgbadger/percona-pgbadger.spec cd ${WORKDIR} # source pgbadger.properties # - tar --owner=0 --group=0 --exclude=.* -czf ${PRODUCT_FULL}.tar.gz ${PRODUCT_FULL} + tar --owner=0 --group=0 --exclude=.* -czf ${PGBADGER_PRODUCT_FULL}.tar.gz ${PGBADGER_PRODUCT_FULL} DATE_TIMESTAMP=$(date +%F_%H-%M-%S) - echo "UPLOAD=UPLOAD/experimental/BUILDS/${PRODUCT}/${PRODUCT_FULL}/${PSM_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> pgbadger.properties + echo "UPLOAD=UPLOAD/experimental/BUILDS/${PGBADGER_PRODUCT}/${PGBADGER_PRODUCT_FULL}/${PSM_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> pgbadger.properties mkdir $WORKDIR/source_tarball mkdir $CURDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $CURDIR/source_tarball + cp ${PGBADGER_PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball + cp ${PGBADGER_PRODUCT_FULL}.tar.gz $CURDIR/source_tarball cd $CURDIR rm -rf percona-pgbadger* return } -get_system(){ - if [ -f /etc/redhat-release ]; then - RHEL=$(rpm --eval %rhel) - ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - OS_NAME="el$RHEL" - OS="rpm" - else - ARCH=$(uname -m) - OS_NAME="$(lsb_release -sc)" - OS="deb" - fi - return -} - -switch_to_vault_repo() { - sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Linux-* - sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Linux-* -} - -install_deps() { - if [ $INSTALL = 0 ]; then - echo "Dependencies will not be installed" - return; - fi - if [ $( id -u ) -ne 0 ]; then - echo "It is not possible to instal dependencies. Please run as root" - exit 1 - fi - CURPLACE=$(pwd) - - if [ "x$OS" = "xrpm" ]; then - RHEL=$(rpm --eval %rhel) - if [ x"$RHEL" = x8 ]; then - switch_to_vault_repo - fi - yum -y install wget - add_percona_yum_repo - yum clean all - if [[ "${RHEL}" -eq 10 ]]; then - yum install oracle-epel-release-el10 - else - yum -y install epel-release - fi - - if [ ${RHEL} -gt 7 ]; then - dnf -y module disable postgresql - dnf config-manager --set-enabled ol${RHEL}_codeready_builder - dnf clean all - rm -r /var/cache/dnf - dnf -y upgrade - switch_to_vault_repo - yum -y install perl lz4-libs c-ares-devel - yum -y install rpm-build - else - until yum -y install centos-release-scl; do - echo "waiting" - sleep 1 - done - yum -y install llvm-toolset-7-clang llvm5.0-devtoolset - source /opt/rh/devtoolset-7/enable - source /opt/rh/llvm-toolset-7/enable - fi - INSTALL_LIST="pandoc libtool libevent-devel python3-psycopg2 openssl-devel pam-devel git rpm-build rpmdevtools systemd systemd-devel wget libxml2-devel perl perl-DBD-Pg perl-Digest-SHA perl-IO-Socket-SSL perl-JSON-PP zlib-devel gcc make autoconf perl-ExtUtils-Embed which perl-Pod-Markdown" - yum -y install ${INSTALL_LIST} - yum -y install lz4 || true - - else - apt-get update || true - apt-get -y install gnupg2 lsb-release wget curl - export DEBIAN=$(lsb_release -sc) - export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - add_percona_apt_repo - apt-get update || true - INSTALL_LIST="build-essential pkg-config liblz4-dev debconf debhelper devscripts dh-exec git wget libxml-libxml-perl libcontextual-return-perl libxml-checker-perl libio-socket-ssl-perl libperl-dev libssl-dev libxml2-dev txt2man zlib1g-dev libpq-dev percona-postgresql-common libbz2-dev libzstd-dev libevent-dev libssl-dev libc-ares-dev pandoc pkg-config libjson-xs-perl libpod-markdown-perl" - until DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST}; do - sleep 1 - echo "waiting" - done - DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install libpam0g-dev || DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install libpam-dev - fi - return; -} - -get_tar(){ - TARBALL=$1 - TARFILE=$(basename $(find $WORKDIR/$TARBALL -name 'percona-pgbadger*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - TARFILE=$(basename $(find $CURDIR/$TARBALL -name 'percona-pgbadger*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - echo "There is no $TARBALL for build" - exit 1 - else - cp $CURDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - else - cp $WORKDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - return -} - get_deb_sources(){ param=$1 echo $param @@ -290,7 +103,7 @@ build_srpm(){ exit 1 fi cd $WORKDIR - get_tar "source_tarball" + get_tar "source_tarball" "percona-pgbadger" rm -fr rpmbuild ls | grep -v tar.gz | xargs rm -rf TARFILE=$(find . -name 'percona-pgbadger*.tar.gz' | sort | tail -n1) @@ -303,8 +116,8 @@ build_srpm(){ cp -av rpm/percona-pgbadger.spec rpmbuild/SPECS # mv -fv ${TARFILE} ${WORKDIR}/rpmbuild/SOURCES - rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "pginstdir /usr/pgsql-${PG_MAJOR_VERSION}" --define "dist .generic" \ - --define "version ${VERSION}" rpmbuild/SPECS/percona-pgbadger.spec + rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "pginstdir /usr/pgsql-${PG_MAJOR}" --define "dist .generic" \ + --define "version ${PGBADGER_VERSION}" rpmbuild/SPECS/percona-pgbadger.spec mkdir -p ${WORKDIR}/srpm mkdir -p ${CURDIR}/srpm cp rpmbuild/SRPMS/*.src.rpm ${CURDIR}/srpm @@ -352,9 +165,9 @@ build_rpm(){ source /opt/rh/devtoolset-7/enable source /opt/rh/llvm-toolset-7/enable fi - export LIBPQ_DIR=/usr/pgsql-${PG_MAJOR_VERSION}/ - export LIBRARY_PATH=/usr/pgsql-${PG_MAJOR_VERSION}/lib/:/usr/pgsql-${PG_MAJOR_VERSION}/include/ - rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "pginstdir /usr/pgsql-${PG_MAJOR_VERSION}" --define "dist .$OS_NAME" --define "version ${VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM + export LIBPQ_DIR=/usr/pgsql-${PG_MAJOR}/ + export LIBRARY_PATH=/usr/pgsql-${PG_MAJOR}/lib/:/usr/pgsql-${PG_MAJOR}/include/ + rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "pginstdir /usr/pgsql-$PG_MAJOR" --define "dist .$OS_NAME" --define "version ${PGBADGER_VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM return_code=$? if [ $return_code != 0 ]; then @@ -378,7 +191,7 @@ build_source_deb(){ exit 1 fi rm -rf percona-pgbadger* - get_tar "source_tarball" + get_tar "source_tarball" "percona-pgbadger" rm -f *.dsc *.orig.tar.gz *.debian.tar.gz *.changes # TARFILE=$(basename $(find . -name 'percona-pgbadger*.tar.gz' | sort | tail -n1)) @@ -388,9 +201,9 @@ build_source_deb(){ BUILDDIR=${TARFILE%.tar.gz} # - mv ${TARFILE} ${PRODUCT}_${VERSION}.orig.tar.gz + mv ${TARFILE} ${PGBADGER_PRODUCT}_${PGBADGER_VERSION}.orig.tar.gz cd ${BUILDDIR} - dch -D unstable --force-distribution -v "${VERSION}-${RELEASE}" "Update to new pgbadger version ${VERSION}" + dch -D unstable --force-distribution -v "${PGBADGER_VERSION}-${PGBADGER_RELEASE}" "Update to new pgbadger version ${PGBADGER_VERSION}" dpkg-buildpackage -S cd ../ mkdir -p $WORKDIR/source_deb @@ -435,8 +248,8 @@ build_deb(){ # dpkg-source -x ${DSC} # - cd ${PRODUCT}-${VERSION} - dch -m -D "${DEBIAN}" --force-distribution -v "1:${VERSION}-${RELEASE}.${DEBIAN}" 'Update distribution' + cd ${PGBADGER_PRODUCT_FULL} + dch -m -D "${DEBIAN}" --force-distribution -v "1:${PGBADGER_VERSION}-${PGBADGER_RELEASE}.${DEBIAN}" 'Update distribution' unset $(locale|cut -d= -f1) dpkg-buildpackage -rfakeroot -us -uc -b mkdir -p $CURDIR/deb @@ -463,23 +276,18 @@ OS_NAME= ARCH= OS= INSTALL=0 -RPM_RELEASE=2 -DEB_RELEASE=2 REVISION=0 -BRANCH="v13.1" -REPO="https://github.com/darold/pgbadger.git" -PRODUCT=percona-pgbadger DEBUG=0 parse_arguments PICK-ARGS-FROM-ARGV "$@" -VERSION='13.1' -RELEASE='2' -PG_VERSION=17.6 -PRODUCT_FULL=${PRODUCT}-${VERSION}-${RELEASE} -PG_MAJOR_VERSION=$(echo $PG_VERSION | cut -f1 -d'.') check_workdir get_system -install_deps +#install_deps +if [ $INSTALL = 0 ]; then + echo "Dependencies will not be installed" +else + source install-deps.sh "pgbadger" +fi get_sources build_srpm build_source_deb diff --git a/pgbouncer/pgbouncer_builder.sh b/pgbouncer/pgbouncer_builder.sh index 82ab2d3f..949357ec 100644 --- a/pgbouncer/pgbouncer_builder.sh +++ b/pgbouncer/pgbouncer_builder.sh @@ -1,93 +1,9 @@ #!/usr/bin/env bash - -shell_quote_string() { - echo "$1" | sed -e 's,\([^a-zA-Z0-9/_.=-]\),\\\1,g' -} - -usage () { - cat <&2 "Current directory cannot be used for building!" - exit 1 - else - if ! test -d "$WORKDIR" - then - echo >&2 "$WORKDIR is not a directory." - exit 1 - fi - fi - return -} - -add_percona_yum_repo(){ - yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm - percona-release disable all - percona-release enable ppg-${PG_VERSION} testing - return -} - -add_percona_apt_repo(){ - wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb - dpkg -i percona-release_latest.generic_all.deb - rm -f percona-release_latest.generic_all.deb - percona-release disable all - percona-release enable ppg-${PG_VERSION} testing - return -} +set -x +# Versions and other variables +source versions.sh "pgbouncer" +# Common functions +source common-functions.sh get_sources(){ cd "${WORKDIR}" @@ -96,172 +12,71 @@ get_sources(){ echo "Sources will not be downloaded" return 0 fi - PRODUCT=percona-pgbouncer - echo "PRODUCT=${PRODUCT}" > pgbouncer.properties - PRODUCT_FULL=${PRODUCT}-${VERSION} - echo "PRODUCT_FULL=${PRODUCT_FULL}" >> pgbouncer.properties + echo "PRODUCT=${PGBOUNCER_PRODUCT}" > pgbouncer.properties + echo "PRODUCT_FULL=${PGBOUNCER_PRODUCT_FULL}" >> pgbouncer.properties echo "VERSION=${PSM_VER}" >> pgbouncer.properties echo "BUILD_NUMBER=${BUILD_NUMBER}" >> pgbouncer.properties echo "BUILD_ID=${BUILD_ID}" >> pgbouncer.properties - git clone "$REPO" ${PRODUCT_FULL} + + git clone "$PGBOUNCER_SRC_REPO" ${PGBOUNCER_PRODUCT_FULL} retval=$? if [ $retval != 0 ] then echo "There were some issues during repo cloning from github. Please retry one more time" exit 1 fi - cd ${PRODUCT_FULL} - if [ ! -z "$BRANCH" ] + cd ${PGBOUNCER_PRODUCT_FULL} + if [ ! -z "$PGBOUNCER_SRC_BRANCH" ] then git reset --hard git clean -xdf - git checkout "$BRANCH" + git checkout "$PGBOUNCER_SRC_BRANCH" git submodule update --init fi REVISION=$(git rev-parse --short HEAD) echo "REVISION=${REVISION}" >> ${WORKDIR}/pgbouncer.properties rm -fr debian rpm - git clone https://salsa.debian.org/postgresql/pgbouncer.git deb_packaging + git clone ${PGBOUNCER_SRC_REPO_DEB} deb_packaging mv deb_packaging/debian ./ cd debian/ for file in $(ls | grep ^pgbouncer | grep -v pgbouncer.conf | grep -v service); do mv $file "percona-$file" done rm -f control rules - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgbouncer/control - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgbouncer/rules - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgbouncer/preinst + wget ${PKG_RAW_URL}/pgbouncer/control + wget ${PKG_RAW_URL}/pgbouncer/rules + wget ${PKG_RAW_URL}/pgbouncer/preinst echo 9 > compat cd ../ rm -rf deb_packaging mkdir rpm cd rpm - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgbouncer/percona-pgbouncer.spec - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgbouncer/pgbouncer-ini.patch - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgbouncer/pgbouncer.logrotate - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgbouncer/pgbouncer.service - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgbouncer/pgbouncer.service.rhel7 - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgbouncer/pgbouncer.sysconfig - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgbouncer/pgbouncer.init + wget ${PKG_RAW_URL}/pgbouncer/percona-pgbouncer.spec + wget ${PKG_RAW_URL}/pgbouncer/pgbouncer-ini.patch + wget ${PKG_RAW_URL}/pgbouncer/pgbouncer.logrotate + wget ${PKG_RAW_URL}/pgbouncer/pgbouncer.service + wget ${PKG_RAW_URL}/pgbouncer/pgbouncer.service.rhel7 + wget ${PKG_RAW_URL}/pgbouncer/pgbouncer.sysconfig + wget ${PKG_RAW_URL}/pgbouncer/pgbouncer.init cd ${WORKDIR} # source pgbouncer.properties # - tar --owner=0 --group=0 --exclude=.* -czf ${PRODUCT_FULL}.tar.gz ${PRODUCT_FULL} + tar --owner=0 --group=0 --exclude=.* -czf ${PGBOUNCER_PRODUCT_FULL}.tar.gz ${PGBOUNCER_PRODUCT_FULL} DATE_TIMESTAMP=$(date +%F_%H-%M-%S) - echo "UPLOAD=UPLOAD/experimental/BUILDS/${PRODUCT}/${PRODUCT_FULL}/${PSM_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> pgbouncer.properties + echo "UPLOAD=UPLOAD/experimental/BUILDS/${PGBOUNCER_PRODUCT}/${PGBOUNCER_PRODUCT_FULL}/${PSM_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> pgbouncer.properties mkdir $WORKDIR/source_tarball mkdir $CURDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $CURDIR/source_tarball + cp ${PGBOUNCER_PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball + cp ${PGBOUNCER_PRODUCT_FULL}.tar.gz $CURDIR/source_tarball cd $CURDIR rm -rf percona-pgbouncer* return } -get_system(){ - if [ -f /etc/redhat-release ]; then - RHEL=$(rpm --eval %rhel) - ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - OS_NAME="el$RHEL" - OS="rpm" - else - ARCH=$(uname -m) - OS_NAME="$(lsb_release -sc)" - OS="deb" - fi - return -} - -switch_to_vault_repo() { - sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Linux-* - sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Linux-* -} - -install_deps() { - if [ $INSTALL = 0 ]; then - echo "Dependencies will not be installed" - return; - fi - if [ $( id -u ) -ne 0 ]; then - echo "It is not possible to instal dependencies. Please run as root" - exit 1 - fi - CURPLACE=$(pwd) - - if [ "x$OS" = "xrpm" ]; then - RHEL=$(rpm --eval %rhel) - if [ x"$RHEL" = x8 ]; then - switch_to_vault_repo - fi - yum -y install wget - add_percona_yum_repo - yum clean all - if [[ "${RHEL}" -eq 10 ]]; then - yum install oracle-epel-release-el10 - else - yum -y install epel-release - fi - if [ ${RHEL} -gt 7 ]; then - dnf -y module disable postgresql - dnf config-manager --set-enabled ol${RHEL}_codeready_builder - dnf clean all - rm -r /var/cache/dnf - dnf -y upgrade - switch_to_vault_repo - yum -y install perl lz4-libs c-ares-devel - else - until yum -y install centos-release-scl; do - echo "waiting" - sleep 1 - done - yum -y install llvm-toolset-7-clang llvm5.0-devtoolset - source /opt/rh/devtoolset-7/enable - source /opt/rh/llvm-toolset-7/enable - fi - INSTALL_LIST="pandoc libtool libevent-devel python3 python3-psycopg2 openssl-devel pam-devel git rpm-build rpmdevtools systemd systemd-devel wget libxml2-devel perl perl-DBD-Pg perl-Digest-SHA perl-IO-Socket-SSL perl-JSON-PP zlib-devel gcc make autoconf perl-ExtUtils-Embed libevent-devel libtool pandoc" - yum -y install ${INSTALL_LIST} - yum -y install lz4 || true - - else - apt-get update || true - export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - apt-get -y install lsb-release wget curl gnupg2 - export DEBIAN=$(lsb_release -sc) - add_percona_apt_repo - apt-get update || true - INSTALL_LIST="build-essential pkg-config liblz4-dev debconf debhelper devscripts dh-exec git wget libxml-checker-perl libxml-libxml-perl libio-socket-ssl-perl libperl-dev libssl-dev libxml2-dev txt2man zlib1g-dev libpq-dev percona-postgresql-common libbz2-dev libzstd-dev libevent-dev libssl-dev libc-ares-dev pandoc pkg-config" - until DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST}; do - sleep 1 - echo "waiting" - done - DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install libpam0g-dev || DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install libpam-dev - fi - return; -} - -get_tar(){ - TARBALL=$1 - TARFILE=$(basename $(find $WORKDIR/$TARBALL -name 'percona-pgbouncer*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - TARFILE=$(basename $(find $CURDIR/$TARBALL -name 'percona-pgbouncer*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - echo "There is no $TARBALL for build" - exit 1 - else - cp $CURDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - else - cp $WORKDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - return -} - get_deb_sources(){ param=$1 echo $param @@ -294,7 +109,7 @@ build_srpm(){ exit 1 fi cd $WORKDIR - get_tar "source_tarball" + get_tar "source_tarball" "percona-pgbouncer" rm -fr rpmbuild ls | grep -v tar.gz | xargs rm -rf TARFILE=$(find . -name 'percona-pgbouncer*.tar.gz' | sort | tail -n1) @@ -307,8 +122,8 @@ build_srpm(){ cp -av rpm/percona-pgbouncer.spec rpmbuild/SPECS # mv -fv ${TARFILE} ${WORKDIR}/rpmbuild/SOURCES - rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "pginstdir /usr/pgsql-${PG_MAJOR_VERSION}" --define "dist .generic" \ - --define "version ${VERSION}" rpmbuild/SPECS/percona-pgbouncer.spec + rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "pginstdir /usr/pgsql-$PG_MAJOR" --define "dist .generic" \ + --define "version ${PGBOUNCER_VERSION}" rpmbuild/SPECS/percona-pgbouncer.spec mkdir -p ${WORKDIR}/srpm mkdir -p ${CURDIR}/srpm cp rpmbuild/SRPMS/*.src.rpm ${CURDIR}/srpm @@ -356,9 +171,9 @@ build_rpm(){ source /opt/rh/devtoolset-7/enable source /opt/rh/llvm-toolset-7/enable fi - export LIBPQ_DIR=/usr/pgsql-${PG_MAJOR_VERSION}/ - export LIBRARY_PATH=/usr/pgsql-${PG_MAJOR_VERSION}/lib/:/usr/pgsql-${PG_MAJOR_VERSION}/include/ - rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "pginstdir /usr/pgsql-${PG_MAJOR_VERSION}" --define "dist .$OS_NAME" --define "version ${VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM + export LIBPQ_DIR=/usr/pgsql-${PG_MAJOR}/ + export LIBRARY_PATH=/usr/pgsql-${PG_MAJOR}/lib/:/usr/pgsql-${PG_MAJOR}/include/ + rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "pginstdir /usr/pgsql-$PG_MAJOR" --define "dist .$OS_NAME" --define "version ${PGBOUNCER_VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM return_code=$? if [ $return_code != 0 ]; then @@ -382,7 +197,7 @@ build_source_deb(){ exit 1 fi rm -rf percona-pgbouncer* - get_tar "source_tarball" + get_tar "source_tarball" "percona-pgbouncer" rm -f *.dsc *.orig.tar.gz *.debian.tar.gz *.changes # TARFILE=$(basename $(find . -name 'percona-pgbouncer*.tar.gz' | sort | tail -n1)) @@ -392,18 +207,18 @@ build_source_deb(){ BUILDDIR=${TARFILE%.tar.gz} # - mv ${TARFILE} ${PRODUCT}_${VERSION}.orig.tar.gz + mv ${TARFILE} ${PGBOUNCER_PRODUCT}_${PGBOUNCER_VERSION}.orig.tar.gz cd ${BUILDDIR} cd debian rm -rf changelog - echo "percona-pgbouncer (${VERSION}-${RELEASE}) unstable; urgency=low" >> changelog + echo "percona-pgbouncer (${PGBOUNCER_VERSION}-${PGBOUNCER_RELEASE}) unstable; urgency=low" >> changelog echo " * Initial Release." >> changelog echo " -- EvgeniyPatlan $(date -R)" >> changelog cd ../ - dch -D unstable --force-distribution -v "${VERSION}-${RELEASE}" "Update to new pgbouncer version ${VERSION}" + dch -D unstable --force-distribution -v "${PGBOUNCER_VERSION}-${PGBOUNCER_RELEASE}" "Update to new pgbouncer version ${PGBOUNCER_VERSION}" dpkg-buildpackage -S cd ../ mkdir -p $WORKDIR/source_deb @@ -447,8 +262,8 @@ build_deb(){ # dpkg-source -x ${DSC} # - cd ${PRODUCT}-${VERSION} - dch -m -D "${DEBIAN}" --force-distribution -v "1:${VERSION}-${RELEASE}.${DEBIAN}" 'Update distribution' + cd ${PGBOUNCER_PRODUCT_FULL} + dch -m -D "${DEBIAN}" --force-distribution -v "1:${PGBOUNCER_VERSION}-${PGBOUNCER_RELEASE}.${DEBIAN}" 'Update distribution' unset $(locale|cut -d= -f1) dpkg-buildpackage -rfakeroot -us -uc -b mkdir -p $CURDIR/deb @@ -475,23 +290,19 @@ OS_NAME= ARCH= OS= INSTALL=0 -RPM_RELEASE=2 -DEB_RELEASE=2 REVISION=0 -BRANCH="pgbouncer_1_24_1" -REPO="https://github.com/pgbouncer/pgbouncer.git" -PRODUCT=percona-pgbouncer DEBUG=0 + parse_arguments PICK-ARGS-FROM-ARGV "$@" -VERSION='1.24.1' -RELEASE='2' -PRODUCT_FULL=${PRODUCT}-${VERSION}-${RELEASE} -PG_VERSION=17.6 -PG_MAJOR_VERSION=$(echo $PG_VERSION | cut -f1 -d'.') check_workdir get_system -install_deps +#install_deps +if [ $INSTALL = 0 ]; then + echo "Dependencies will not be installed" +else + source install-deps.sh "pgbouncer" +fi get_sources build_srpm build_source_deb diff --git a/pgpool2/pgpool2_builder.sh b/pgpool2/pgpool2_builder.sh index 7f6e96ae..60e88566 100644 --- a/pgpool2/pgpool2_builder.sh +++ b/pgpool2/pgpool2_builder.sh @@ -1,93 +1,9 @@ #!/usr/bin/env bash - -shell_quote_string() { - echo "$1" | sed -e 's,\([^a-zA-Z0-9/_.=-]\),\\\1,g' -} - -usage () { - cat <&2 "Current directory cannot be used for building!" - exit 1 - else - if ! test -d "$WORKDIR" - then - echo >&2 "$WORKDIR is not a directory." - exit 1 - fi - fi - return -} - +set -x +# Versions and other variables +source versions.sh "pgpool2" +# Common functions +source common-functions.sh set_changelog(){ if [ -z $1 ] @@ -104,8 +20,8 @@ set_changelog(){ echo "$start_line" current_date=$(date +"%a %b %d %Y") sed -i "$start_line,$ d" $1 - echo "* $current_date Percona Build/Release Team - ${VERSION}-${RPM_RELEASE}" >> $1 - echo "- Release ${VERSION}-${RPM_RELEASE}" >> $1 + echo "* $current_date Percona Build/Release Team - ${PGPOOL2_VERSION}-${PGPOOL2_RPM_RELEASE}" >> $1 + echo "- Release ${PGPOOL2_VERSION}-${PGPOOL2_RPM_RELEASE}" >> $1 echo >> $1 return fi @@ -121,26 +37,25 @@ get_sources(){ return 0 fi - PRODUCT=percona-pgpool-II-pg${PG_RELEASE} - PRODUCT_CUT=percona-pgpool-II-${VERSION} - PRODUCT_FULL=${PRODUCT}-${VERSION} + PRODUCT=percona-pgpool-II-pg${PG_VERSION} + PRODUCT_CUT=percona-pgpool-II-${PGPOOL2_VERSION} + PRODUCT_FULL=${PRODUCT}-${PGPOOL2_VERSION} echo "PRODUCT=${PRODUCT}" > pgpool2.properties echo "PRODUCT_FULL=${PRODUCT_FULL}" >> pgpool2.properties echo "PRODUCT_CUT=${PRODUCT_CUT}" >> pgpool2.properties - echo "VERSION=${VERSION}" >> pgpool2.properties - echo "BRANCH_NAME=$(echo ${BRANCH} | awk -F '/' '{print $(NF)}')" >> pgpool2.properties - echo "BUILD_BRANCH=$(echo ${BUILD_BRANCH} | awk -F '/' '{print $(NF)}')" >> pgpool2.properties + echo "VERSION=${PGPOOL2_VERSION}" >> pgpool2.properties + echo "BRANCH_NAME=$(echo ${PGPOOL2_SRC_BRANCH} | awk -F '/' '{print $(NF)}')" >> pgpool2.properties + echo "BUILD_BRANCH=$(echo ${PGPOOL2_BUILD_BRANCH} | awk -F '/' '{print $(NF)}')" >> pgpool2.properties echo "BUILD_NUMBER=${BUILD_NUMBER}" >> pgpool2.properties echo "BUILD_ID=${BUILD_ID}" >> pgpool2.properties - echo "BRANCH_NAME=$(echo ${BRANCH} | awk -F '/' '{print $(NF)}')" >> pgpool2.properties - echo "PG_RELEASE=${PG_RELEASE}" >> pgpool2.properties - echo "RPM_RELEASE=${RPM_RELEASE}" >> pgpool2.properties - echo "DEB_RELEASE=${DEB_RELEASE}" >> pgpool2.properties + echo "PG_RELEASE=${PG_VERSION}" >> pgpool2.properties + echo "RPM_RELEASE=${PGPOOL2_RPM_RELEASE}" >> pgpool2.properties + echo "DEB_RELEASE=${PGPOOL2_DEB_RELEASE}" >> pgpool2.properties cat pgpool2.properties - git clone "$REPO" ${PRODUCT_CUT} + git clone "$PGPOOL2_SRC_REPO" ${PRODUCT_CUT} retval=$? if [ $retval != 0 ] then @@ -148,21 +63,21 @@ get_sources(){ exit 1 fi cd ${PRODUCT_CUT} - if [ ! -z "$BRANCH" ] + if [ ! -z "$PGPOOL2_SRC_BRANCH" ] then git reset --hard git clean -xdf - git checkout "$BRANCH" + git checkout "$PGPOOL2_SRC_BRANCH" fi REVISION=$(git rev-parse --short HEAD) echo "REVISION=${REVISION}" >> ${WORKDIR}/pgpool2.properties # get files for deb - GIT_SSL_NO_VERIFY=true git clone https://salsa.debian.org/postgresql/pgpool2.git ../pgpool2 + GIT_SSL_NO_VERIFY=true git clone ${PGPOOL2_SRC_REPO_DEB} ../pgpool2 mv ../pgpool2/debian/ . - wget $(echo ${GIT_BUILD_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\.git$||')/${BUILD_BRANCH}/pgpool2/pgpool2-debian-config.patch -O debian/patches/pgpool2-debian-config.patch + wget $(echo ${PKG_GIT_REPO} | sed -re 's|github.com|raw.githubusercontent.com|; s|\.git$||')/${PGPOOL2_BUILD_BRANCH}/pgpool2/pgpool2-debian-config.patch -O debian/patches/pgpool2-debian-config.patch - sed -i "s:PGVERSION:${PG_VER}:g" debian/control.in + sed -i "s:PGVERSION:${PG_MAJOR}:g" debian/control.in sed -i "s:Source\: pgpool2:Source\: percona-pgpool2:g" debian/control.in sed -i "s:Package\: pgpool2:Package\: percona-pgpool2:g" debian/control.in sed -i '/architecture-is-64-bit/d' debian/control.in @@ -171,11 +86,11 @@ get_sources(){ sed -i "/Vcs-Browser/d" debian/control.in sed -i "s:Debian PostgreSQL Maintainers :Percona Development Team :g" debian/control.in sed -i '/Uploaders/{N;N;N;d;}' debian/control.in - sed -i "0,/pgpool2/ s/pgpool2.*/percona-pgpool2 (${VERSION}-${DEB_RELEASE}) stable; urgency=medium/" debian/changelog - sed -i "84s:${PG_RELEASE}:${PG_VER}:" debian/control.in - sed -i "90s:${PG_RELEASE}:${PG_VER}:" debian/control - sed -i "84s:postgresql-${PG_VER}:postgresql-${PG_VER}|percona-postgresql-${PG_VER}:" debian/control.in - sed -i "90s:postgresql-${PG_VER}:postgresql-${PG_VER}|percona-postgresql-${PG_VER}:" debian/control + sed -i "0,/pgpool2/ s/pgpool2.*/percona-pgpool2 (${PGPOOL2_VERSION}-${PGPOOL2_DEB_RELEASE}) stable; urgency=medium/" debian/changelog + sed -i "84s:${PG_VERSION}:${PG_MAJOR}:" debian/control.in + sed -i "90s:${PG_VERSION}:${PG_MAJOR}:" debian/control + sed -i "84s:postgresql-${PG_MAJOR}:postgresql-${PG_MAJOR}|percona-postgresql-${PG_MAJOR}:" debian/control.in + sed -i "90s:postgresql-${PG_MAJOR}:postgresql-${PG_MAJOR}|percona-postgresql-${PG_MAJOR}:" debian/control #sed -i 's:debhelper-compat (= 13):debhelper-compat:' debian/control #sed -i 's:debhelper-compat (= 13):debhelper-compat:' debian/control.in @@ -236,7 +151,7 @@ EOT # tar --owner=0 --group=0 --exclude=.* -czf ${PRODUCT_CUT}.tar.gz ${PRODUCT_CUT} DATE_TIMESTAMP=$(date +%F_%H-%M-%S) - echo "UPLOAD=UPLOAD/experimental/BUILDS/${PRODUCT}/${PRODUCT_FULL}/${BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> pgpool2.properties + echo "UPLOAD=UPLOAD/experimental/BUILDS/${PRODUCT}/${PRODUCT_FULL}/${PGPOOL2_SRC_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> pgpool2.properties mkdir $WORKDIR/source_tarball mkdir $CURDIR/source_tarball cp percona-pgpool-II-*.tar.gz $WORKDIR/source_tarball @@ -246,22 +161,6 @@ EOT return } -get_system(){ - if [ -f /etc/redhat-release ]; then - GLIBC_VER_TMP="$(rpm glibc -qa --qf %{VERSION})" - export RHEL=$(rpm --eval %rhel) - export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - export OS_NAME="el$RHEL" - export OS="rpm" - else - GLIBC_VER_TMP="$(dpkg-query -W -f='${Version}' libc6 | awk -F'-' '{print $1}')" - export ARCH=$(uname -m) - export OS_NAME="$(lsb_release -sc)" - export OS="deb" - fi - return -} - get_openjade_devel() { pushd /tmp apt-get update @@ -283,133 +182,6 @@ get_openjade_devel() { popd } -install_deps() { - if [ $INSTALL = 0 ] - then - echo "Dependencies will not be installed" - return; - fi - if [ $( id -u ) -ne 0 ] - then - echo "It is not possible to instal dependencies. Please run as root" - exit 1 - fi - CURPLACE=$(pwd) - if [ "$OS" == "rpm" ] - then - if [[ "${RHEL}" -eq 10 ]]; then - yum install oracle-epel-release-el10 - dnf config-manager --set-enabled ol${RHEL}_codeready_builder - else - yum -y install epel-release - fi - yum -y install wget - yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm - percona-release enable ppg-${PG_RELEASE} testing - yum -y install git libtool bison flex byacc - - PKGLIST="clang-devel clang llvm-devel percona-postgresql${PG_VER}-devel" - PKGLIST+=" git rpmdevtools vim wget" - PKGLIST+=" perl binutils gcc gcc-c++" - PKGLIST+=" git rpmdevtools wget gcc make autoconf" - PKGLIST+=" jade pam-devel openssl-devel docbook-dtds docbook-style-xsl openldap-devel docbook-style-dsssl libmemcached-devel libxslt" - - if [[ "${RHEL}" -eq 8 ]]; then - dnf config-manager --set-enabled powertools - dnf config-manager --set-enabled ol${RHEL}_codeready_builder - fi - if [ $RHEL -eq 9 ]; then - dnf config-manager --set-enabled ol${RHEL}_codeready_builder - sed -i 's/enabled=0/enabled=1/g' /etc/yum.repos.d/oracle-linux-ol9.repo - fi - if [[ "${RHEL}" -eq 8 ]]; then - dnf -y module disable postgresql - elif [[ "${RHEL}" -eq 7 ]]; then - PKGLIST+=" llvm-toolset-7-clang llvm-toolset-7 llvm5.0-devel llvm-toolset-7-llvm-devel" - until yum -y install epel-release centos-release-scl; do - yum clean all - sleep 1 - echo "waiting" - done - until yum -y makecache; do - yum clean all - sleep 1 - echo "waiting" - done - fi - until yum -y install ${PKGLIST}; do - echo "waiting" - sleep 5 - done - else - apt-get update - DEBIAN_FRONTEND=noninteractive apt-get -y install lsb-release gnupg git wget curl - export DEBIAN=$(lsb_release -sc) - wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb - dpkg -i percona-release_latest.generic_all.deb - rm -f percona-release_latest.generic_all.deb - percona-release enable ppg-${PG_RELEASE} testing - - PKGLIST="percona-postgresql-${PG_VER} percona-postgresql-common percona-postgresql-server-dev-all" - - # ---- using a community version of postgresql - # wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - - # echo "deb http://apt.postgresql.org/pub/repos/apt/ ${PG_RELEASE}"-pgdg main | sudo tee /etc/apt/sources.list.d/pgdg.list - # PKGLIST="postgresql-${PG_RELEASE} postgresql-common postgresql-server-dev-all" - - apt-get update - - if [[ "${DEBIAN}" != "focal" ]]; then - #LLVM_EXISTS=$(grep -c "apt.llvm.org" /etc/apt/sources.list) - #if [ "${LLVM_EXISTS}" == 0 ]; then - #wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - - #echo "deb http://apt.llvm.org/${OS_NAME}/ llvm-toolchain-${OS_NAME}-7 main" >> /etc/apt/sources.list - #echo "deb-src http://apt.llvm.org/${OS_NAME}/ llvm-toolchain-${OS_NAME}-7 main" >> /etc/apt/sources.list - #apt-get update - #fi - wget http://mirrors.kernel.org/ubuntu/pool/universe/l/llvm-toolchain-7/llvm-7_7.0.1-12_amd64.deb http://mirrors.kernel.org/ubuntu/pool/universe/l/llvm-toolchain-7/libllvm7_7.0.1-12_amd64.deb http://mirrors.kernel.org/ubuntu/pool/universe/l/llvm-toolchain-7/llvm-7-runtime_7.0.1-12_amd64.deb - apt install ./libllvm7_7.0.1-12_amd64.deb ./llvm-7_7.0.1-12_amd64.deb ./llvm-7-runtime_7.0.1-12_amd64.deb - fi - - PKGLIST+=" debconf devscripts dh-exec git wget libkrb5-dev libssl-dev" - PKGLIST+=" build-essential debconf debhelper devscripts dh-exec libxml-checker-perl" - # PKGLIST+=" libxml-libxml-perl libio-socket-ssl-perl libperl-dev libssl-dev libxml2-dev txt2man zlib1g-dev libpq-dev" - PKGLIST+=" chrpath docbook docbook-dsssl docbook-xml docbook-xsl flex libmemcached-dev libxml2-utils openjade opensp xsltproc" - PKGLIST+=" bison libldap-dev libpam0g-dev" - - until DEBIAN_FRONTEND=noninteractive apt-get -y install ${PKGLIST}; do - sleep 5 - echo "waiting" - done - - cat /etc/apt/sources.list | grep ${DEBIAN}-backports - apt list --all-versions debhelper - apt-get -y install -t ${DEBIAN}-backports debhelper - - get_openjade_devel - fi - return; -} - -get_tar(){ - TARBALL=$1 - TARFILE=$(basename $(find $WORKDIR/$TARBALL -name 'percona-pgpool-II*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - TARFILE=$(basename $(find $CURDIR/$TARBALL -name 'percona-pgpool-II*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - echo "There is no $TARBALL for build" - exit 1 - else - cp $CURDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - else - cp $WORKDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - return -} - get_deb_sources(){ param=$1 echo $param @@ -442,7 +214,7 @@ build_srpm(){ exit 1 fi cd $WORKDIR - get_tar "source_tarball" + get_tar "source_tarball" "percona-pgpool-II" rm -fr rpmbuild ls | grep -v tar.gz | xargs rm -rf TARFILE=$(find . -name 'percona-pgpool-II*.tar.gz' | sort | tail -n1) @@ -457,8 +229,8 @@ build_srpm(){ # mv -fv ${TARFILE} ${WORKDIR}/rpmbuild/SOURCES QA_RPATHS=$(( 0x0001|0x0002|0x0010 )) rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .generic" \ - --define "pgpool_version ${VERSION}" --define "pg_version ${PG_VER}" --define "pghome /usr/pgsql-${PG_VER}" \ - --define "pgsql_ver ${PG_VER}0" --define "with-pgsql-includedir /usr/pgsql-${PG_VER}/include/" ${WORKDIR}/rpmbuild/SPECS/pgpool.spec + --define "pgpool_version ${PGPOOL2_VERSION}" --define "pg_version ${PG_MAJOR}" --define "pghome /usr/pgsql-${PG_MAJOR}" \ + --define "pgsql_ver ${PG_MAJOR}0" --define "with-pgsql-includedir /usr/pgsql-${PG_MAJOR}/include/" ${WORKDIR}/rpmbuild/SPECS/pgpool.spec mkdir -p ${WORKDIR}/srpm mkdir -p ${CURDIR}/srpm cp rpmbuild/SRPMS/*.src.rpm ${CURDIR}/srpm @@ -506,14 +278,14 @@ build_rpm(){ source /opt/rh/devtoolset-7/enable source /opt/rh/llvm-toolset-7/enable fi - export LIBPQ_DIR=/usr/pgsql-${PG_RELEASE}/ - export LIBRARY_PATH=/usr/pgsql-${PG_RELEASE}/lib/:/usr/pgsql-${PG_RELEASE}/include/ + export LIBPQ_DIR=/usr/pgsql-${PG_VERSION}/ + export LIBRARY_PATH=/usr/pgsql-${PG_VERSION}/lib/:/usr/pgsql-${PG_VERSION}/include/ if [[ "${RHEL}" -eq 10 ]]; then export QA_RPATHS=$(( 0x0001 | 0x0002 )) fi - rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .$OS_NAME" --define "version ${VERSION}" \ - --define "pgpool_version ${VERSION}" --define "pg_version ${PG_VER}" --define "pghome /usr/pgsql-${PG_VER}" \ - --define "pgsql_ver ${PG_VER}0" --define "with-pgsql-includedir /usr/pgsql-${PG_VER}/include/" \ + rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .$OS_NAME" --define "version ${PGPOOL2_VERSION}" \ + --define "pgpool_version ${PGPOOL2_VERSION}" --define "pg_version ${PG_MAJOR}" --define "pghome /usr/pgsql-${PG_MAJOR}" \ + --define "pgsql_ver ${PG_MAJOR}0" --define "with-pgsql-includedir /usr/pgsql-${PG_MAJOR}/include/" \ --rebuild rpmbuild/SRPMS/$SRC_RPM return_code=$? @@ -538,7 +310,7 @@ build_source_deb(){ exit 1 fi rm -rf percona-pgpool2* - get_tar "source_tarball" + get_tar "source_tarball" "percona-pgpool-II" rm -f *.dsc *.orig.tar.gz *.debian.tar.gz *.changes # TARFILE=$(basename $(find . -name 'percona-pgpool-II*.tar.gz' | sort | tail -n1)) @@ -548,13 +320,13 @@ build_source_deb(){ BUILDDIR=${TARFILE%.tar.gz} # - mv ${TARFILE} percona-pgpool2_${VERSION}.orig.tar.gz + mv ${TARFILE} percona-pgpool2_${PGPOOL2_VERSION}.orig.tar.gz cd ${BUILDDIR} sed -i '/architecture-is-64-bit/d' debian/control sed -i '/architecture-is-64-bit/d' debian/control.in rm -rf .pc DEBEMAIL="info@percona.com" - dch -D unstable --force-distribution -v "${VERSION}-${DEB_RELEASE}" "Update to new percona-pgpool2 pg${PG_RELEASE} version ${VERSION}" + dch -D unstable --force-distribution -v "${PGPOOL2_VERSION}-${PGPOOL2_DEB_RELEASE}" "Update to new percona-pgpool2 pg${PG_VERSION} version ${PGPOOL2_VERSION}" pg_buildext updatecontrol dpkg-buildpackage -S cd ../ @@ -597,9 +369,9 @@ build_deb(){ # dpkg-source -x ${DSC} # - cd percona-pgpool2-${VERSION} - sed -i "s:\. :${WORKDIR}/percona-pgpool2-${VERSION} :g" debian/rules - dch -m -D "${OS_NAME}" --force-distribution -v "1:${VERSION}-${DEB_RELEASE}.${OS_NAME}" 'Update distribution' + cd percona-pgpool2-${PGPOOL2_VERSION} + sed -i "s:\. :${WORKDIR}/percona-pgpool2-${PGPOOL2_VERSION} :g" debian/rules + dch -m -D "${OS_NAME}" --force-distribution -v "1:${PGPOOL2_VERSION}-${PGPOOL2_DEB_RELEASE}.${OS_NAME}" 'Update distribution' unset $(locale|cut -d= -f1) pg_buildext updatecontrol dpkg-buildpackage -rfakeroot -us -uc -b @@ -627,20 +399,17 @@ OS_NAME= ARCH= OS= REVISION=0 -BRANCH="V4_6_2" INSTALL=0 -RPM_RELEASE=1 -DEB_RELEASE=1 -REPO="https://git.postgresql.org/git/pgpool2.git" -VERSION="4.6.2" -PG_RELEASE=17.6 -GIT_BUILD_REPO="https://github.com/percona/postgres-packaging.git" -BUILD_BRANCH=${PG_RELEASE} + parse_arguments PICK-ARGS-FROM-ARGV "$@" -PG_VER=$(echo ${PG_RELEASE} | awk -F'.' '{print $1}') check_workdir -get_system -install_deps +get_system "pgpool2" +#install_deps +if [ $INSTALL = 0 ]; then + echo "Dependencies will not be installed" +else + source install-deps.sh "pgpool2" +fi get_sources build_srpm build_source_deb diff --git a/pgvector/pgvector_builder.sh b/pgvector/pgvector_builder.sh index 76d29d3a..8f62df44 100755 --- a/pgvector/pgvector_builder.sh +++ b/pgvector/pgvector_builder.sh @@ -1,94 +1,9 @@ #!/usr/bin/env bash - -shell_quote_string() { - echo "$1" | sed -e 's,\([^a-zA-Z0-9/_.=-]\),\\\1,g' -} - -usage () { - cat <&2 "Current directory cannot be used for building!" - exit 1 - else - if ! test -d "$WORKDIR" - then - echo >&2 "$WORKDIR is not a directory." - exit 1 - fi - fi - return -} - -add_percona_yum_repo(){ - yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm - percona-release disable all - percona-release enable telemetry testing - percona-release enable ppg-${PG_VERSION} testing - return -} - -add_percona_apt_repo(){ - wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb - dpkg -i percona-release_latest.generic_all.deb - rm -f percona-release_latest.generic_all.deb - percona-release disable all - percona-release enable ppg-${PG_VERSION} testing - return -} +set -x +# Versions and other variables +source versions.sh "pgvector" +# Common functions +source common-functions.sh get_sources(){ cd "${WORKDIR}" @@ -97,41 +12,39 @@ get_sources(){ echo "Sources will not be downloaded" return 0 fi - PRODUCT=percona-pgvector_${PG_MAJOR_VERSION} - echo "PRODUCT=${PRODUCT}" > pgvector.properties - PRODUCT_FULL=${PRODUCT}-${VERSION} - echo "PRODUCT_FULL=${PRODUCT_FULL}" >> pgvector.properties - #echo "VERSION=${PSM_VER}" >> pgvector.properties - echo "VERSION=${VERSION}" >> pgvector.properties + echo "PRODUCT=${PGVECTOR_PRODUCT}" > pgvector.properties + + echo "PRODUCT_FULL=${PGVECTOR_PRODUCT_FULL}" >> pgvector.properties + echo "VERSION=${PGVECTOR_VERSION}" >> pgvector.properties echo "BUILD_NUMBER=${BUILD_NUMBER}" >> pgvector.properties echo "BUILD_ID=${BUILD_ID}" >> pgvector.properties - git clone "$REPO" ${PRODUCT_FULL} + git clone "$PGVECTOR_SRC_REPO" ${PGVECTOR_PRODUCT_FULL} retval=$? if [ $retval != 0 ] then echo "There were some issues during repo cloning from github. Please retry one more time" exit 1 fi - cd ${PRODUCT_FULL} - if [ ! -z "$BRANCH" ] + cd ${PGVECTOR_PRODUCT_FULL} + if [ ! -z "$PGVECTOR_SRC_BRANCH" ] then git reset --hard git clean -xdf - git checkout "$BRANCH" + git checkout "$PGVECTOR_SRC_BRANCH" fi REVISION=$(git rev-parse --short HEAD) echo "REVISION=${REVISION}" >> ${WORKDIR}/pgvector.properties rm -fr debian rpm - git clone https://salsa.debian.org/postgresql/pgvector.git deb_packaging + git clone ${PGVECTOR_SRC_REPO_DEB} deb_packaging cd deb_packaging - git checkout debian/${VERSION}-${RELEASE} + git checkout debian/${PGVECTOR_VERSION}-${PGVECTOR_RELEASE} cd ../ mv deb_packaging/debian ./ - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgvector/control - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgvector/control.in - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgvector/rules + wget ${PKG_RAW_URL}/pgvector/control + wget ${PKG_RAW_URL}/pgvector/control.in + wget ${PKG_RAW_URL}/pgvector/rules patch -p1 debian/pgversions + echo ${PG_MAJOR} > debian/pgversions echo 10 > debian/compat rm -rf deb_packaging mkdir rpm cd rpm - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pgvector/pgvector.spec + wget ${PKG_RAW_URL}/pgvector/pgvector.spec cd ${WORKDIR} # source pgvector.properties # - tar --owner=0 --group=0 --exclude=.* -czf ${PRODUCT_FULL}.tar.gz ${PRODUCT_FULL} + tar --owner=0 --group=0 --exclude=.* -czf ${PGVECTOR_PRODUCT_FULL}.tar.gz ${PGVECTOR_PRODUCT_FULL} DATE_TIMESTAMP=$(date +%F_%H-%M-%S) - echo "UPLOAD=UPLOAD/experimental/BUILDS/${PRODUCT}/${PRODUCT_FULL}/${BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> pgvector.properties + echo "UPLOAD=UPLOAD/experimental/BUILDS/${PGVECTOR_PRODUCT}/${PGVECTOR_PRODUCT_FULL}/${PGVECTOR_SRC_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> pgvector.properties mkdir $WORKDIR/source_tarball mkdir $CURDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $CURDIR/source_tarball + cp ${PGVECTOR_PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball + cp ${PGVECTOR_PRODUCT_FULL}.tar.gz $CURDIR/source_tarball cd $CURDIR rm -rf pgvector* return } -get_system(){ - if [ -f /etc/redhat-release ]; then - RHEL=$(rpm --eval %rhel) - ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - OS_NAME="el$RHEL" - OS="rpm" - else - ARCH=$(uname -m) - OS_NAME="$(lsb_release -sc)" - OS="deb" - fi - return -} - -install_deps() { - if [ $INSTALL = 0 ] - then - echo "Dependencies will not be installed" - return; - fi - if [ $( id -u ) -ne 0 ] - then - echo "It is not possible to instal dependencies. Please run as root" - exit 1 - fi - CURPLACE=$(pwd) - - if [ "x$OS" = "xrpm" ]; then - yum -y install wget - add_percona_yum_repo - yum clean all - RHEL=$(rpm --eval %rhel) - if [[ "${RHEL}" -eq 10 ]]; then - yum install oracle-epel-release-el10 - else - yum -y install epel-release - fi - if [ x"$RHEL" = x6 -o x"$RHEL" = x7 ]; then - until yum -y install centos-release-scl; do - echo "waiting" - sleep 1 - done - INSTALL_LIST="bison e2fsprogs-devel flex gettext git glibc-devel krb5-devel libicu-devel libselinux-devel libuuid-devel libxml2-devel libxslt-devel llvm5.0-devel llvm-toolset-7-clang openldap-devel openssl-devel pam-devel patch perl perl-ExtUtils-Embed perl-ExtUtils-MakeMaker python2-devel readline-devel rpmbuild percona-postgresql${PG_MAJOR_VERSION}-devel percona-postgresql${PG_MAJOR_VERSION}-server rpm-build rpmdevtools selinux-policy systemd systemd-devel systemtap-sdt-devel tcl-devel vim wget zlib-devel llvm-toolset-7-clang-devel make gcc gcc-c++" - yum -y install ${INSTALL_LIST} - source /opt/rh/devtoolset-7/enable - source /opt/rh/llvm-toolset-7/enable - else - dnf module -y disable postgresql - dnf config-manager --set-enabled ol${RHEL}_codeready_builder - - INSTALL_LIST="clang-devel clang llvm-devel python3-devel perl-generators bison e2fsprogs-devel flex gettext git glibc-devel krb5-devel libicu-devel libselinux-devel libuuid-devel libxml2-devel libxslt-devel openldap-devel openssl-devel pam-devel patch perl perl-ExtUtils-MakeMaker perl-ExtUtils-Embed readline-devel percona-postgresql${PG_MAJOR_VERSION}-devel percona-postgresql${PG_MAJOR_VERSION}-server rpm-build rpmdevtools selinux-policy systemd systemd-devel systemtap-sdt-devel tcl-devel vim wget zlib-devel " - yum -y install ${INSTALL_LIST} - yum -y install binutils gcc gcc-c++ - fi - else - apt-get -y update - apt-get -y install wget lsb-release - export DEBIAN=$(lsb_release -sc) - export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - apt-get -y update || true - apt-get -y install gnupg2 curl - add_percona_apt_repo - apt-get update || true - INSTALL_LIST="build-essential dpkg-dev debconf debhelper clang devscripts dh-exec git wget libkrb5-dev libssl-dev percona-postgresql-common percona-postgresql-server-dev-all" - DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST} - fi - return; -} - -get_tar(){ - TARBALL=$1 - TARFILE=$(basename $(find $WORKDIR/$TARBALL -name 'percona-pgvector*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - TARFILE=$(basename $(find $CURDIR/$TARBALL -name 'percona-pgvector*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - echo "There is no $TARBALL for build" - exit 1 - else - cp $CURDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - else - cp $WORKDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - return -} - get_deb_sources(){ param=$1 @@ -282,7 +107,7 @@ build_srpm(){ exit 1 fi cd $WORKDIR - get_tar "source_tarball" + get_tar "source_tarball" "percona-pgvector" rm -fr rpmbuild ls | grep -v tar.gz | xargs rm -rf TARFILE=$(find . -name 'percona-pgvector*.tar.gz' | sort | tail -n1) @@ -296,7 +121,7 @@ build_srpm(){ # mv -fv ${TARFILE} ${WORKDIR}/rpmbuild/SOURCES rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .generic" \ - --define "version ${VERSION}" rpmbuild/SPECS/pgvector.spec + --define "version ${PGVECTOR_VERSION}" rpmbuild/SPECS/pgvector.spec mkdir -p ${WORKDIR}/srpm mkdir -p ${CURDIR}/srpm cp rpmbuild/SRPMS/*.src.rpm ${CURDIR}/srpm @@ -347,7 +172,7 @@ build_rpm(){ if [[ "${RHEL}" -eq 10 ]]; then export QA_RPATHS=0x0002 fi - rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .$OS_NAME" --define "version ${VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM + rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .$OS_NAME" --define "version ${PGVECTOR_VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM return_code=$? if [ $return_code != 0 ]; then @@ -371,7 +196,7 @@ build_source_deb(){ exit 1 fi rm -rf percona-pgvector* - get_tar "source_tarball" + get_tar "source_tarball" "percona-pgvector" rm -f *.dsc *.orig.tar.gz *.debian.tar.gz *.changes # TARFILE=$(basename $(find . -name 'percona-pgvector*.tar.gz' | sort | tail -n1)) @@ -380,19 +205,19 @@ build_source_deb(){ tar zxf ${TARFILE} BUILDDIR=${TARFILE%.tar.gz} # - PRODUCT=percona-pgvector - mv ${TARFILE} ${PRODUCT}_${VERSION}.orig.tar.gz + + mv ${TARFILE} ${PGVECTOR_PRODUCT_DEB}_${PGVECTOR_VERSION}.orig.tar.gz cd ${BUILDDIR} cd debian rm -rf changelog - echo "percona-pgvector (${VERSION}-${RELEASE}) unstable; urgency=low" > changelog + echo "percona-pgvector (${PGVECTOR_VERSION}-${PGVECTOR_RELEASE}) unstable; urgency=low" > changelog echo " * Initial Release." >> changelog echo " -- Muhammad Aqeel $(date -R)" >> changelog cd ../ - dch -D unstable --force-distribution -v "${VERSION}-${RELEASE}" "Update to new pgvector version ${VERSION}" + dch -D unstable --force-distribution -v "${PGVECTOR_VERSION}-${PGVECTOR_RELEASE}" "Update to new pgvector version ${PGVECTOR_VERSION}" dpkg-buildpackage -S cd ../ mkdir -p $WORKDIR/source_deb @@ -436,9 +261,9 @@ build_deb(){ # dpkg-source -x ${DSC} # - PRODUCT=percona-pgvector - cd ${PRODUCT}-${VERSION} - dch -m -D "${DEBIAN}" --force-distribution -v "1:${VERSION}-${RELEASE}.${DEBIAN}" 'Update distribution' + + cd ${PGVECTOR_PRODUCT_DEB}-${PGVECTOR_VERSION} + dch -m -D "${DEBIAN}" --force-distribution -v "1:${PGVECTOR_VERSION}-${PGVECTOR_RELEASE}.${DEBIAN}" 'Update distribution' unset $(locale|cut -d= -f1) dpkg-buildpackage -rfakeroot -us -uc -b mkdir -p $CURDIR/deb @@ -465,23 +290,18 @@ OS_NAME= ARCH= OS= INSTALL=0 -RPM_RELEASE=3 -DEB_RELEASE=3 REVISION=0 -BRANCH="v0.8.0" -PG_VERSION="17.6" -PG_MAJOR_VERSION=$(echo $PG_VERSION | cut -f1 -d'.') -REPO="https://github.com/pgvector/pgvector.git" -PRODUCT=percona-pgvector_${PG_MAJOR_VERSION} DEBUG=0 parse_arguments PICK-ARGS-FROM-ARGV "$@" -VERSION='0.8.0' -RELEASE='3' -PRODUCT_FULL=${PRODUCT}-${VERSION}-${RELEASE} check_workdir get_system -install_deps +#install_deps +if [ $INSTALL = 0 ]; then + echo "Dependencies will not be installed" +else + source install-deps.sh "pgvector" +fi get_sources build_srpm build_source_deb diff --git a/postgis/postgis_builder.sh b/postgis/postgis_builder.sh index 0bbc83f9..c13870ed 100755 --- a/postgis/postgis_builder.sh +++ b/postgis/postgis_builder.sh @@ -1,87 +1,9 @@ #!/usr/bin/env bash - -shell_quote_string() { - echo "$1" | sed -e 's,\([^a-zA-Z0-9/_.=-]\),\\\1,g' -} - -usage () { - cat <&2 "Current directory cannot be used for building!" - exit 1 - else - if ! test -d "$WORKDIR" - then - echo >&2 "$WORKDIR is not a directory." - exit 1 - fi - fi - return -} - -add_percona_yum_repo(){ - yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm - percona-release disable all - percona-release enable ppg-${PPG_VERSION} testing - return -} +set -x +# Versions and other variables +source versions.sh "postgis" +# Common functions +source common-functions.sh get_sources(){ cd "${WORKDIR}" @@ -90,35 +12,33 @@ get_sources(){ echo "Sources will not be downloaded" return 0 fi - PRODUCT=percona-postgis - VERSION=${POSTGIS_VERSION} - echo "PRODUCT=${PRODUCT}" > percona-postgis.properties - PRODUCT_FULL=${PRODUCT}-${VERSION}.${RELEASE} - echo "PRODUCT_FULL=${PRODUCT_FULL}" >> percona-postgis.properties + echo "PRODUCT=${POSTGIS_PRODUCT}" > percona-postgis.properties + + echo "PRODUCT_FULL=${POSTGIS_PRODUCT_FULL}" >> percona-postgis.properties echo "VERSION=${POSTGIS_VERSION}" >> percona-postgis.properties echo "BUILD_NUMBER=${BUILD_NUMBER}" >> percona-postgis.properties echo "BUILD_ID=${BUILD_ID}" >> percona-postgis.properties - git clone "$POSTGIS_GITREPO" + git clone "$POSTGIS_SRC_REPO" retval=$? if [ $retval != 0 ] then echo "There were some issues during repo cloning from github. Please retry one more time" exit 1 fi - mv postgis ${PRODUCT_FULL} - cd ${PRODUCT_FULL} - if [ ! -z "$POSTGIS_BRANCH" ] + mv postgis ${POSTGIS_PRODUCT_FULL} + cd ${POSTGIS_PRODUCT_FULL} + if [ ! -z "$POSTGIS_SRC_BRANCH" ] then git reset --hard git clean -xdf - git checkout "$POSTGIS_BRANCH" + git checkout "$POSTGIS_SRC_BRANCH" fi REVISION=$(git rev-parse --short HEAD) echo "REVISION=${REVISION}" >> ${WORKDIR}/percona-postgis.properties rm -fr debian rpm - git clone https://salsa.debian.org/debian-gis-team/postgis.git deb_packaging + git clone ${POSTGIS_SRC_REPO_DEB} deb_packaging cd deb_packaging #git checkout -b 12 debian/12.9-1 cd ../ @@ -129,15 +49,15 @@ get_sources(){ mv $file "percona-$file" done rm -f rules* control* percona-postgis.install patches/sfcgal* - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PPG_VERSION}/postgis/debian/rules - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PPG_VERSION}/postgis/debian/control - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PPG_VERSION}/postgis/debian/percona-postgresql-${PG_MAJOR_VERSION}-postgis-3-scripts.install - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PPG_VERSION}/postgis/debian/percona-postgresql-${PG_MAJOR_VERSION}-postgis-3-scripts.lintian-overrides - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PPG_VERSION}/postgis/debian/percona-postgresql-${PG_MAJOR_VERSION}-postgis-3-scripts.postinst - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PPG_VERSION}/postgis/debian/percona-postgresql-${PG_MAJOR_VERSION}-postgis-3-scripts.prerm - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PPG_VERSION}/postgis/debian/percona-postgresql-${PG_MAJOR_VERSION}-postgis-3.install - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PPG_VERSION}/postgis/debian/percona-postgis.install - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PPG_VERSION}/postgis/debian/percona-postgresql-${PG_MAJOR_VERSION}-postgis-3.lintian-overrides + wget ${PKG_RAW_URL}/postgis/debian/rules + wget ${PKG_RAW_URL}/postgis/debian/control + wget ${PKG_RAW_URL}/postgis/debian/percona-postgis.install + wget ${PKG_RAW_URL}/postgis/debian/percona-postgresql-$PG_MAJOR-postgis-3-scripts.install + wget ${PKG_RAW_URL}/postgis/debian/percona-postgresql-$PG_MAJOR-postgis-3-scripts.lintian-overrides + wget ${PKG_RAW_URL}/postgis/debian/percona-postgresql-$PG_MAJOR-postgis-3-scripts.postinst + wget ${PKG_RAW_URL}/postgis/debian/percona-postgresql-$PG_MAJOR-postgis-3-scripts.prerm + wget ${PKG_RAW_URL}/postgis/debian/percona-postgresql-$PG_MAJOR-postgis-3.install + wget ${PKG_RAW_URL}/postgis/debian/percona-postgresql-$PG_MAJOR-postgis-3.lintian-overrides cp control control.in # Remove the sfcgal patch entry from patches/series sed -i '/sfcgal/d' patches/series @@ -150,45 +70,32 @@ get_sources(){ sed -i 's:200:500:g' regress/core/interrupt_buffer.sql sed -i '1d' debian/patches/series #relax-test-timing-constraints.patch} - git clone https://git.postgresql.org/git/pgrpms.git + git clone ${PGRPMS_GIT_REPO} mkdir rpm mv pgrpms/rpm/redhat/main/non-common/postgis33/main/* rpm/ rm -rf pgrpms cd rpm rm -f postgis33.spec postgis33-3.3.0-gdalfpic.patch - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PPG_VERSION}/postgis/rpm/percona-postgis33.spec - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PPG_VERSION}/postgis/rpm/postgis33-3.3.0-gdalfpic.patch + wget ${PKG_RAW_URL}/postgis/rpm/percona-postgis33.spec + wget ${PKG_RAW_URL}/postgis/rpm/postgis33-3.3.0-gdalfpic.patch cd ../ cd ${WORKDIR} # source percona-postgis.properties # - tar --owner=0 --group=0 --exclude=.* -czf ${PRODUCT_FULL}.tar.gz ${PRODUCT_FULL} + tar --owner=0 --group=0 --exclude=.* -czf ${POSTGIS_PRODUCT_FULL}.tar.gz ${POSTGIS_PRODUCT_FULL} DATE_TIMESTAMP=$(date +%F_%H-%M-%S) - echo "UPLOAD=UPLOAD/experimental/BUILDS/${PRODUCT}/${PRODUCT_FULL}/${PSM_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> percona-postgis.properties + echo "UPLOAD=UPLOAD/experimental/BUILDS/${POSTGIS_PRODUCT}/${POSTGIS_PRODUCT_FULL}/${PSM_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> percona-postgis.properties mkdir $WORKDIR/source_tarball mkdir $CURDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $CURDIR/source_tarball + cp ${POSTGIS_PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball + cp ${POSTGIS_PRODUCT_FULL}.tar.gz $CURDIR/source_tarball cd $CURDIR rm -rf percona-postgis* return } -get_system(){ - if [ -f /etc/redhat-release ]; then - RHEL=$(rpm --eval %rhel) - ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - OS_NAME="el$RHEL" - OS="rpm" - else - ARCH=$(uname -m) - OS_NAME="$(lsb_release -sc)" - OS="deb" - fi - return -} install_gdal(){ wget http://download.osgeo.org/gdal/3.5.3/gdal-3.5.3.tar.gz -O $CURDIR/gdal-3.5.3.tar.gz tar xvf $CURDIR/gdal-3.5.3.tar.gz -C $CURDIR @@ -224,132 +131,11 @@ install_sfcgal(){ cd $CURDIR/SFCGAL-v1.3.10 cmake . && make && make install chmod 777 /usr/local/lib/libSFCGAL.* - cp /usr/local/lib/libSFCGAL.* /usr/lib/postgresql/${PG_MAJOR_VERSION}/lib + cp /usr/local/lib/libSFCGAL.* /usr/lib/postgresql/$PG_MAJOR/lib ldconfig -v | grep -i sfcgal ln /usr/local/bin/sfcgal-config /usr/bin/sfcgal-config } -install_deps() { - if [ $INSTALL = 0 ] - then - echo "Dependencies will not be installed" - return; - fi - if [ $( id -u ) -ne 0 ] - then - echo "It is not possible to instal dependencies. Please run as root" - exit 1 - fi - CURPLACE=$(pwd) - - if [ "x$OS" = "xrpm" ]; then - yum -y install wget - add_percona_yum_repo - yum clean all - RHEL=$(rpm --eval %rhel) - ARCH=$(uname -m) - if [[ "${RHEL}" -eq 10 ]]; then - yum install oracle-epel-release-el10 - dnf config-manager --set-enabled ol${RHEL}_codeready_builder - else - yum -y install epel-release - fi - if [ x"$RHEL" = x6 -o x"$RHEL" = x7 ]; then - until yum -y install centos-release-scl; do - echo "waiting" - sleep 1 - done - wget --no-check-certificate https://download.postgresql.org/pub/repos/yum/reporpms/EL-${RHEL}-${ARCH}/pgdg-redhat-repo-latest.noarch.rpm - yum -y install pgdg-redhat-repo-latest.noarch.rpm - yum -y install pgdg-srpm-macros - INSTALL_LIST="git rpm-build autoconf libtool flex rpmdevtools wget llvm-toolset-7 devtoolset-7 rpmlint percona-postgresql${PG_MAJOR_VERSION}-devel gcc make geos geos-devel proj libgeotiff-devel pcre-devel gmp-devel SFCGAL SFCGAL-devel gdal33-devel gdal34-devel geos311-devel gmp-devel gtk2-devel json-c-devel libgeotiff17-devel proj72-devel protobuf-c-devel pkg-config" - yum -y install ${INSTALL_LIST} - source /opt/rh/devtoolset-7/enable - source /opt/rh/llvm-toolset-7/enable - else - yum config-manager --enable PowerTools AppStream BaseOS *epel - dnf module -y disable postgresql - dnf config-manager --set-enabled ol${RHEL}_codeready_builder - yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-${RHEL}.noarch.rpm - wget --no-check-certificate https://download.postgresql.org/pub/repos/yum/reporpms/EL-${RHEL}-${ARCH}/pgdg-redhat-repo-latest.noarch.rpm - yum -y install pgdg-redhat-repo-latest.noarch.rpm - yum -y install pgdg-srpm-macros - if [ x"$RHEL" = x9 ]; then - yum -y install SFCGAL SFCGAL-devel gdal311-devel proj95-devel - elif [ x"$RHEL" = x10 ]; then - yum -y install SFCGAL SFCGAL-devel gdal311-devel proj96-devel - else - yum -y install SFCGAL SFCGAL-devel gdal38-devel proj95-devel - fi - if [ x"$RHEL" = x10 ]; then - yum -y install geos313-devel pcre2-devel which - else - yum -y install geos311-devel pcre-devel - fi - INSTALL_LIST="xerces-c-devel clang-devel clang llvm-devel git rpm-build autoconf libtool flex rpmdevtools wget rpmlint percona-postgresql17-devel gcc make geos geos-devel libgeotiff-devel gmp-devel gmp-devel gtk2-devel json-c-devel libgeotiff17-devel protobuf-c-devel pkg-config" - yum -y install ${INSTALL_LIST} - yum -y install binutils gcc gcc-c++ - yum clean all - if [ ! -f /usr/bin/llvm-config ]; then - ln -s /usr/bin/llvm-config-64 /usr/bin/llvm-config - fi - fi - yum -y install docbook-xsl libxslt-devel - else - apt-get -y update - apt-get -y install curl wget lsb-release - export DEBIAN=$(lsb_release -sc) - export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - apt-get -y install gnupg2 - apt-get update || true - ENV export DEBIAN_FRONTEND=noninteractive - DEBIAN_FRONTEND=noninteractive apt-get -y install tzdata - ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime - dpkg-reconfigure --frontend noninteractive tzdata - wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb - dpkg -i percona-release_latest.generic_all.deb - rm -f percona-release_latest.generic_all.deb - percona-release enable-only ppg-${PPG_VERSION} testing - percona-release enable telemetry testing - apt-get update - if [ "x${DEBIAN}" = "xbionic" ]; then - INSTALL_LIST="bison build-essential debconf debhelper devscripts dh-exec dpkg-dev flex gcc git cmake vim wget dctrl-tools docbook docbook-xsl imagemagick libcunit1-dev libgdal-dev libgeos-dev libjson-c-dev libpcre2-dev libproj-dev libprotobuf-c-dev libcgal-dev libxml2-dev pkg-config po-debconf percona-postgresql-all percona-postgresql-common percona-postgresql-server-dev-all percona-postgresql-${PG_MAJOR_VERSION} protobuf-c-compiler rdfind xsltproc" - else - INSTALL_LIST="bison build-essential debconf debhelper devscripts dh-exec dpkg-dev flex gcc git vim wget dctrl-tools docbook docbook-xsl imagemagick libcunit1-dev libgdal-dev libgeos-dev libjson-c-dev libpcre2-dev libproj-dev libprotobuf-c-dev libsfcgal-dev libxml2-dev pkg-config po-debconf percona-postgresql-all percona-postgresql-common percona-postgresql-server-dev-all percona-postgresql-${PG_MAJOR_VERSION} protobuf-c-compiler rdfind xsltproc" - fi - - until DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST}; do - sleep 1 - echo "waiting" - done - apt-get install -y dblatex || true - - if [ "x${DEBIAN}" = "xbionic" ]; then - install_sfcgal - fi - fi - return; -} - -get_tar(){ - TARBALL=$1 - TARFILE=$(basename $(find $WORKDIR/$TARBALL -name 'percona-postgis*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - TARFILE=$(basename $(find $CURDIR/$TARBALL -name 'percona-postgis*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - echo "There is no $TARBALL for build" - exit 1 - else - cp $CURDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - else - cp $WORKDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - return -} - get_deb_sources(){ param=$1 echo $param @@ -382,7 +168,7 @@ build_srpm(){ exit 1 fi cd $WORKDIR - get_tar "source_tarball" + get_tar "source_tarball" "percona-postgis" rm -fr rpmbuild ls | grep -v tar.gz | xargs rm -rf TARFILE=$(find . -name 'percona-postgis*.tar.gz' | sort | tail -n1) @@ -393,7 +179,7 @@ build_srpm(){ # cp -av rpm/* rpmbuild/SOURCES cd rpmbuild/SOURCES - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PPG_VERSION}/postgis/postgis-3.3.8.pdf + wget ${PKG_RAW_URL}/postgis/postgis-3.3.8.pdf #wget --no-check-certificate https://download.osgeo.org/postgis/docs/postgis-3.3.8.pdf #wget --no-check-certificate https://www.postgresql.org/files/documentation/pdf/12/postgresql-12-A4.pdf cd ../../ @@ -405,7 +191,7 @@ build_srpm(){ source /opt/rh/llvm-toolset-7/enable fi rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .generic" \ - --define "version ${VERSION}" --define "pginstdir /usr/pgsql-${PG_MAJOR_VERSION}" \ + --define "version ${POSTGIS_VERSION}" --define "pginstdir /usr/pgsql-$PG_MAJOR" \ rpmbuild/SPECS/percona-postgis33.spec mkdir -p ${WORKDIR}/srpm mkdir -p ${CURDIR}/srpm @@ -457,7 +243,7 @@ build_rpm(){ if [[ "${RHEL}" -eq 10 ]]; then export QA_RPATHS=0x0002 fi - rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .$OS_NAME" --define "version ${VERSION}" --define "pginstdir /usr/pgsql-${PG_MAJOR_VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM + rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .$OS_NAME" --define "version ${POSTGIS_VERSION}" --define "pginstdir /usr/pgsql-$PG_MAJOR" --rebuild rpmbuild/SRPMS/$SRC_RPM return_code=$? if [ $return_code != 0 ]; then @@ -481,7 +267,7 @@ build_source_deb(){ exit 1 fi rm -rf percona-postgis* - get_tar "source_tarball" + get_tar "source_tarball" "percona-postgis" rm -f *.dsc *.orig.tar.gz *.debian.tar.gz *.changes # TARFILE=$(basename $(find . -name 'percona-postgis*.tar.gz' | sort | tail -n1)) @@ -491,18 +277,18 @@ build_source_deb(){ BUILDDIR=${TARFILE%.tar.gz} # - mv ${TARFILE} ${PRODUCT}_${VERSION}.${RELEASE}.orig.tar.gz + mv ${TARFILE} ${POSTGIS_PRODUCT}_${POSTGIS_VERSION}.${POSTGIS_RELEASE}.orig.tar.gz cd ${BUILDDIR} cd debian rm -rf changelog - echo "percona-postgis (${VERSION}.${RELEASE}) unstable; urgency=low" >> changelog + echo "percona-postgis (${POSTGIS_VERSION}.${POSTGIS_RELEASE}) unstable; urgency=low" >> changelog echo " * Initial Release." >> changelog echo " -- SurabhiBhat $(date -R)" >> changelog cd ../ - dch -D unstable --force-distribution -v "${VERSION}.${RELEASE}-${DEB_RELEASE}" "Update to new Percona Platform for PostgreSQL version ${VERSION}.${RELEASE}-${DEB_RELEASE}" + dch -D unstable --force-distribution -v "${POSTGIS_VERSION}.${POSTGIS_RELEASE}-${POSTGIS_DEB_RELEASE}" "Update to new Percona Platform for PostgreSQL version ${POSTGIS_VERSION}.${POSTGIS_RELEASE}-${POSTGIS_DEB_RELEASE}" dpkg-buildpackage -S cd ../ mkdir -p $WORKDIR/source_deb @@ -546,8 +332,8 @@ build_deb(){ # dpkg-source -x ${DSC} # - cd ${PRODUCT}-${VERSION}.${RELEASE} - dch -m -D "${DEBIAN}" --force-distribution -v "2:${VERSION}.${RELEASE}-${DEB_RELEASE}.${DEBIAN}" 'Update distribution' + cd ${POSTGIS_PRODUCT_FULL} + dch -m -D "${DEBIAN}" --force-distribution -v "2:${POSTGIS_VERSION}.${POSTGIS_RELEASE}-${POSTGIS_DEB_RELEASE}.${DEBIAN}" 'Update distribution' unset $(locale|cut -d= -f1) # if [ "x${DEBIAN}" = "xjammy" -o "x${DEBIAN}" = "xbionic" ] # then @@ -560,7 +346,7 @@ build_deb(){ cp debian/control debian/control.in sed -i "248i override_dh_shlibdeps:\n\tdh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info" debian/rules fi - sed -i '67i\LIBTOOLIZE_MAJOR_VER=`echo ${LIBTOOLIZE_MAJOR_VER} | awk -F'\''-'\'' '\''{print $NF}'\''`' autogen.sh + sed -i '67i\LIBTOOLIZE_MAJOR_VER=`echo ${LIBTOOLIZE_MAJOR_VER} | awk -F'\''-'\'' '\''{print $NF}'\''`' autogen.sh dpkg-buildpackage -rfakeroot -us -uc -b mkdir -p $CURDIR/deb mkdir -p $WORKDIR/deb @@ -586,23 +372,18 @@ OS_NAME= ARCH= OS= INSTALL=0 -RPM_RELEASE=${RPM_RELEASE} -DEB_RELEASE=${DEB_RELEASE} REVISION=0 -POSTGIS_BRANCH=${POSTGIS_BRANCH} -POSTGIS_GITREPO=${POSTGIS_GITREPO} -PRODUCT=percona-postgis DEBUG=0 parse_arguments PICK-ARGS-FROM-ARGV "$@" -VERSION=${POSTGIS_VERSION} -RELEASE='8' -PRODUCT_FULL=${PRODUCT}-${VERSION}-${RELEASE} -PPG_VERSION=17.6 -PG_MAJOR_VERSION=$(echo $PPG_VERSION | cut -f1 -d'.') check_workdir get_system -install_deps +#install_deps +if [ $INSTALL = 0 ]; then + echo "Dependencies will not be installed" +else + source install-deps.sh "postgis" +fi get_sources build_srpm build_source_deb diff --git a/postgres-common/ppg-common_builder.sh b/postgres-common/ppg-common_builder.sh index 12b20710..9b06cb33 100755 --- a/postgres-common/ppg-common_builder.sh +++ b/postgres-common/ppg-common_builder.sh @@ -1,77 +1,10 @@ #!/usr/bin/env bash +set -x -shell_quote_string() { - echo "$1" | sed -e 's,\([^a-zA-Z0-9/_.=-]\),\\\1,g' -} - -usage () { - cat <&2 "Current directory cannot be used for building!" - exit 1 - else - if ! test -d "$WORKDIR" - then - echo >&2 "$WORKDIR is not a directory." - exit 1 - fi - fi - return -} +# Versions and other variables +source versions.sh "postgresql-common" +# Common functions +source common-functions.sh get_sources(){ cd "${WORKDIR}" @@ -80,28 +13,26 @@ get_sources(){ echo "Sources will not be downloaded" return 0 fi - PRODUCT=percona-postgresql-common - echo "PRODUCT=${PRODUCT}" > percona-postgresql.properties - PRODUCT_FULL=${PRODUCT}-${VERSION} - echo "PRODUCT_FULL=${PRODUCT_FULL}" >> percona-postgresql.properties - echo "VERSION=${VERSION}" >> percona-postgresql.properties + echo "PRODUCT=${PPG_COMMON_PRODUCT}" > percona-postgresql.properties + echo "PRODUCT_FULL=${PPG_COMMON_PRODUCT_FULL}" >> percona-postgresql.properties + echo "VERSION=${PPG_COMMON_MAJOR}" >> percona-postgresql.properties echo "BUILD_NUMBER=${BUILD_NUMBER}" >> percona-postgresql.properties echo "BUILD_ID=${BUILD_ID}" >> percona-postgresql.properties - git clone "$REPO" + git clone "$PPG_COMMON_SRC_REPO" retval=$? if [ $retval != 0 ] then echo "There were some issues during repo cloning from github. Please retry one more time" exit 1 fi - mv postgresql-common ${PRODUCT_FULL} - cd ${PRODUCT_FULL} - if [ ! -z "$BRANCH" ] + mv postgresql-common ${PPG_COMMON_PRODUCT_FULL} + cd ${PPG_COMMON_PRODUCT_FULL} + if [ ! -z "$PPG_COMMON_SRC_BRANCH" ] then git reset --hard git clean -xdf - git checkout "$BRANCH" + git checkout "$PPG_COMMON_SRC_BRANCH" fi REVISION=$(git rev-parse --short HEAD) echo "REVISION=${REVISION}" >> ${WORKDIR}/percona-postgresql.properties @@ -118,21 +49,21 @@ get_sources(){ mv $file $newname; done rm -rf rules control supported-versions - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/postgres-common/control - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/postgres-common/maintscripts-functions.patch - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/postgres-common/percona-postgresql-common.templates.patch - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/postgres-common/rules - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/postgres-common/supported-versions - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/postgres-common/postgresql-common.install - wget https://raw.githubusercontent.com/percona/postgres-packaging/refs/heads/${PG_VERSION}/postgres-common/percona-postgresql-common-dev.install - wget https://raw.githubusercontent.com/percona/postgres-packaging/refs/heads/${PG_VERSION}/postgres-common/percona-postgresql-server-dev-all.install + wget ${PKG_RAW_URL}/postgres-common/control + wget ${PKG_RAW_URL}/postgres-common/maintscripts-functions.patch + wget ${PKG_RAW_URL}/postgres-common/percona-postgresql-common.templates.patch + wget ${PKG_RAW_URL}/postgres-common/rules + wget ${PKG_RAW_URL}/postgres-common/supported-versions + wget ${PKG_RAW_URL}/postgres-common/postgresql-common.install + wget ${PKG_RAW_URL}/postgres-common/percona-postgresql-common-dev.install + wget ${PKG_RAW_URL}/postgres-common/percona-postgresql-server-dev-all.install cp postgresql-common.tmpfiles postgresql-common.conf sudo chmod +x supported-versions patch -p0 < maintscripts-functions.patch patch -p0 < percona-postgresql-common.templates.patch rm -rf maintscripts-functions.patch percona-postgresql-common.templates.patch rm -rf changelog - echo "percona-postgresql-common (${VERSION}) unstable; urgency=low" >> changelog + echo "percona-postgresql-common (${PPG_COMMON_MAJOR}) unstable; urgency=low" >> changelog echo " * Initial Release." >> changelog echo " -- EvgeniyPatlan $(date -R)" >> changelog sed -i 's:percona-postgresql-plpython-$v,::' rules @@ -150,108 +81,34 @@ get_sources(){ echo "dh_make_pgxs/dh_make_pgxs.1" >> percona-postgresql-server-dev-all.manpages echo "debhelper/dh_pgxs_test.1" >> percona-postgresql-server-dev-all.manpages cd ../ - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/postgres-common/pgcommon.sh + wget ${PKG_RAW_URL}/postgres-common/pgcommon.sh sudo chmod +x pgcommon.sh cd rpm for file in $(ls | grep postgresql); do mv $file "percona-$file" done rm -rf percona-postgresql-common.spec - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/postgres-common/percona-postgresql-common.spec + wget ${PKG_RAW_URL}/postgres-common/percona-postgresql-common.spec if [ ${ARCH} = "aarch64" ]; then sed -e '4d' percona-postgresql-common.spec fi cd ../ cd ${WORKDIR} - # + source percona-postgresql.properties - # - tar --owner=0 --group=0 --exclude=.* -czf ${PRODUCT_FULL}.tar.gz ${PRODUCT_FULL} + tar --owner=0 --group=0 --exclude=.* -czf ${PPG_COMMON_PRODUCT_FULL}.tar.gz ${PPG_COMMON_PRODUCT_FULL} DATE_TIMESTAMP=$(date +%F_%H-%M-%S) - echo "UPLOAD=UPLOAD/experimental/BUILDS/${PRODUCT}-${PG_MAJOR_VERSION}/${PRODUCT_FULL}/${BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> percona-postgresql.properties + echo "UPLOAD=UPLOAD/experimental/BUILDS/${PPG_COMMON_PRODUCT}-$PG_MAJOR/${PPG_COMMON_PRODUCT_FULL}/${PPG_COMMON_SRC_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> percona-postgresql.properties mkdir $WORKDIR/source_tarball mkdir $CURDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $CURDIR/source_tarball + cp ${PPG_COMMON_PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball + cp ${PPG_COMMON_PRODUCT_FULL}.tar.gz $CURDIR/source_tarball cd $CURDIR rm -rf percona-postgresql* return } -get_system(){ - if [ -f /etc/redhat-release ]; then - RHEL=$(rpm --eval %rhel) - ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - OS_NAME="el$RHEL" - OS="rpm" - else - ARCH=$(uname -m) - OS_NAME="$(lsb_release -sc)" - OS="deb" - fi - return -} - -install_deps() { - if [ $INSTALL = 0 ] - then - echo "Dependencies will not be installed" - return; - fi - if [ $( id -u ) -ne 0 ] - then - echo "It is not possible to instal dependencies. Please run as root" - exit 1 - fi - CURPLACE=$(pwd) - - if [ "x$OS" = "xrpm" ]; then - yum -y install wget - yum clean all - RHEL=$(rpm --eval %rhel) - if [[ "${RHEL}" -eq 10 ]]; then - yum install oracle-epel-release-el10 - else - yum -y install epel-release - fi - INSTALL_LIST="git patch perl perl-ExtUtils-MakeMaker perl-ExtUtils-Embed rpmdevtools wget perl-podlators sudo make" - yum -y install ${INSTALL_LIST} - else - apt-get update || true - apt-get -y install lsb-release - export DEBIAN=$(lsb_release -sc) - export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - apt-get -y install gnupg2 - apt-get update || true - INSTALL_LIST="git wget debhelper libreadline-dev lsb-release rename devscripts sudo" - until DEBIAN_FRONTEND=noninteractive apt-get -y install ${INSTALL_LIST}; do - sleep 1 - echo "waiting" - done - fi - return; -} - -get_tar(){ - TARBALL=$1 - TARFILE=$(basename $(find $WORKDIR/$TARBALL -name 'percona-postgresql-common*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - TARFILE=$(basename $(find $CURDIR/$TARBALL -name 'percona-postgresql-common*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - echo "There is no $TARBALL for build" - exit 1 - else - cp $CURDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - else - cp $WORKDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - return -} - get_deb_sources(){ param=$1 echo $param @@ -284,22 +141,22 @@ build_srpm(){ exit 1 fi cd $WORKDIR - get_tar "source_tarball" + get_tar "source_tarball" "percona-postgresql-common" rm -fr rpmbuild ls | grep -v tar.gz | xargs rm -rf TARFILE=$(find . -name 'percona-postgresql*.tar.gz' | sort | tail -n1) SRC_DIR=${TARFILE%.tar.gz} - # + mkdir -vp rpmbuild/{SOURCES,SPECS,BUILD,SRPMS,RPMS} tar vxzf ${WORKDIR}/${TARFILE} --wildcards '*/rpm' --strip=1 - # + cp -av rpm/* rpmbuild/SOURCES cd rpmbuild/SOURCES cd ../../ cp -av rpmbuild/SOURCES/*.spec rpmbuild/SPECS - # + mv -fv ${TARFILE} ${WORKDIR}/rpmbuild/SOURCES - rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .generic" --define "version ${VERSION}"\ + rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .generic" --define "version ${PPG_COMMON_MAJOR}"\ rpmbuild/SPECS/percona-postgresql-common.spec mkdir -p ${WORKDIR}/srpm mkdir -p ${CURDIR}/srpm @@ -340,11 +197,11 @@ build_rpm(){ cp $SRC_RPM rpmbuild/SRPMS/ cd rpmbuild/SRPMS/ - # + cd $WORKDIR RHEL=$(rpm --eval %rhel) ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "version ${VERSION}" --define "dist .$OS_NAME" --rebuild rpmbuild/SRPMS/$SRC_RPM + rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "version ${PPG_COMMON_MAJOR}" --define "dist .$OS_NAME" --rebuild rpmbuild/SRPMS/$SRC_RPM return_code=$? if [ $return_code != 0 ]; then @@ -369,19 +226,19 @@ build_source_deb(){ fi rm -rf percona-postgresql-common* rm -f *.dsc *.orig.tar.gz *.tar.* *.changes - get_tar "source_tarball" - # + get_tar "source_tarball" "percona-postgresql-common" + TARFILE=$(basename $(find . -name 'percona-postgresql-common*.tar.gz' | sort | tail -n1)) DEBIAN=$(lsb_release -sc) ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') tar zxf ${TARFILE} BUILDDIR=${TARFILE%.tar.gz} - # + - mv ${TARFILE} ${PRODUCT}_${VERSION}.orig.tar.gz + mv ${TARFILE} ${PPG_COMMON_PRODUCT}_${PPG_COMMON_MAJOR}.orig.tar.gz cd ${BUILDDIR} - dch -D unstable --force-distribution -v "${VERSION}" "Update to new Percona Platform for PostgreSQL version ${VERSION}" + dch -D unstable --force-distribution -v "${PPG_COMMON_MAJOR}" "Update to new Percona Platform for PostgreSQL version ${PPG_COMMON_MAJOR}" dpkg-buildpackage -S cd ../ mkdir -p $WORKDIR/source_deb @@ -413,23 +270,23 @@ build_deb(){ done cd $WORKDIR rm -fv *.deb - # + export DEBIAN=$(lsb_release -sc) export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - # + echo "DEBIAN=${DEBIAN}" >> percona-postgresql.properties echo "ARCH=${ARCH}" >> percona-postgresql.properties - # + DSC=$(basename $(find . -name '*.dsc' | sort | tail -n1)) - # + dpkg-source -x ${DSC} - # - cd ${PRODUCT}-common-${VERSION} + + cd ${PPG_COMMON_PRODUCT_FULL} if [ ${DEBIAN} = "stretch" ]; then sed -i 's:12:11:' debian/compat fi - dch -m -D "${DEBIAN}" --force-distribution -v "1:${VERSION}-${RELEASE}.${DEBIAN}" 'Update distribution' + dch -m -D "${DEBIAN}" --force-distribution -v "1:${PPG_COMMON_MAJOR}-${PPG_COMMON_MINOR}.${DEBIAN}" 'Update distribution' unset $(locale|cut -d= -f1) sed -i '38,55d' Makefile dpkg-buildpackage -rfakeroot -us -uc -b @@ -457,23 +314,19 @@ OS_NAME= ARCH= OS= INSTALL=0 -RPM_RELEASE=1 -DEB_RELEASE=1 REVISION=0 -BRANCH="debian/280" -REPO="https://salsa.debian.org/postgresql/postgresql-common.git" -PRODUCT=percona-postgresql DEBUG=0 parse_arguments PICK-ARGS-FROM-ARGV "$@" -VERSION='280' -RELEASE='1' -PRODUCT_FULL=${PRODUCT}-${VERSION} -PG_VERSION=17.6 -PG_MAJOR_VERSION=$(echo $PG_VERSION | cut -f1 -d'.') check_workdir get_system -install_deps + +#install_deps +if [ $INSTALL = 0 ]; then + echo "Dependencies will not be installed" +else + source install-deps.sh "postgresql-common" +fi get_sources build_srpm build_source_deb diff --git a/postgres/ppg_builder.sh b/postgres/ppg_builder.sh index 83c35800..3bb48bbc 100755 --- a/postgres/ppg_builder.sh +++ b/postgres/ppg_builder.sh @@ -1,80 +1,9 @@ #!/usr/bin/env bash - -shell_quote_string() { - echo "$1" | sed -e 's,\([^a-zA-Z0-9/_.=-]\),\\\1,g' -} - -usage () { - cat <&2 "Current directory cannot be used for building!" - exit 1 - else - if ! test -d "$WORKDIR" - then - echo >&2 "$WORKDIR is not a directory." - exit 1 - fi - fi - return -} - +set -x +# Versions and other variables +source versions.sh "postgresql" +# Common functions +source common-functions.sh get_sources(){ cd "${WORKDIR}" @@ -83,29 +12,26 @@ get_sources(){ echo "Sources will not be downloaded" return 0 fi - PRODUCT=percona-postgresql - echo "PRODUCT=${PRODUCT}" > percona-postgresql.properties - PRODUCT_FULL=${PRODUCT}-${VERSION}.${RELEASE} - echo "PRODUCT_FULL=${PRODUCT_FULL}" >> percona-postgresql.properties + echo "PRODUCT=${PPG_PRODUCT}" > percona-postgresql.properties + echo "PRODUCT_FULL=${PPG_PRODUCT_FULL}" >> percona-postgresql.properties echo "VERSION=${PSM_VER}" >> percona-postgresql.properties echo "BUILD_NUMBER=${BUILD_NUMBER}" >> percona-postgresql.properties echo "BUILD_ID=${BUILD_ID}" >> percona-postgresql.properties - git clone "$REPO" postgresql + git clone "$PG_SRC_REPO" retval=$? if [ $retval != 0 ] then echo "There were some issues during repo cloning from github. Please retry one more time" exit 1 fi - mv postgresql ${PRODUCT_FULL} - cd ${PRODUCT_FULL} - if [ ! -z "$BRANCH" ] + mv postgresql ${PPG_PRODUCT_FULL} + cd ${PPG_PRODUCT_FULL} + if [ ! -z "$PG_SRC_BRANCH" ] then git reset --hard git clean -xdf - git checkout "$BRANCH" - git submodule update --init --recursive + git checkout "$PG_SRC_BRANCH" sed -i "s|#shared_preload_libraries = ''|shared_preload_libraries = 'percona_pg_telemetry'|g" src/backend/utils/misc/postgresql.conf.sample sed -i 's:enable_tap_tests=no:enable_tap_tests=yes:' configure fi @@ -113,9 +39,9 @@ get_sources(){ echo "REVISION=${REVISION}" >> ${WORKDIR}/percona-postgresql.properties rm -fr debian rpm - git clone https://salsa.debian.org/postgresql/postgresql.git deb_packaging + git clone $PG_SRC_REPO_DEB deb_packaging cd deb_packaging - git checkout -b ${VERSION} remotes/origin/${VERSION} + git checkout -b $PG_MAJOR remotes/origin/$PG_MAJOR cd ../ # Add pg_tde binaries to package. @@ -130,153 +56,35 @@ get_sources(){ mv $file "percona-$file" done rm -f rules control - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/postgres/rules - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/postgres/control - sed -i "s/postgresql-${VERSION}/percona-postgresql-${VERSION}/" percona-postgresql-${VERSION}.templates + wget ${PKG_RAW_URL}/postgres/rules + wget ${PKG_RAW_URL}/postgres/control + sed -i "s/postgresql-$PG_MAJOR/percona-postgresql-$PG_MAJOR/" percona-postgresql-$PG_MAJOR.templates echo "10" > compat sed -i '14d' patches/series cd ../ - git clone https://git.postgresql.org/git/pgrpms.git + git clone $PGRPMS_GIT_REPO mkdir rpm - mv pgrpms/rpm/redhat/main/non-common/postgresql-${VERSION}/main/* rpm/ + mv pgrpms/rpm/redhat/main/non-common/postgresql-$PG_MAJOR/main/* rpm/ rm -rf pgrpms cd rpm - rm postgresql-${VERSION}.spec - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/postgres/percona-postgresql-${VERSION}.spec + rm postgresql-$PG_MAJOR.spec + wget ${PKG_RAW_URL}/postgres/percona-postgresql-${PG_MAJOR}.spec cd ../ cd ${WORKDIR} - # source percona-postgresql.properties - # - tar --owner=0 --group=0 --exclude=.* -czf ${PRODUCT_FULL}.tar.gz ${PRODUCT_FULL} + tar --owner=0 --group=0 --exclude=.* -czf ${PPG_PRODUCT_FULL}.tar.gz ${PPG_PRODUCT_FULL} DATE_TIMESTAMP=$(date +%F_%H-%M-%S) - echo "UPLOAD=UPLOAD/experimental/BUILDS/${PRODUCT}-${VERSION}/${PRODUCT_FULL}/${PSM_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> percona-postgresql.properties + echo "UPLOAD=UPLOAD/experimental/BUILDS/${PPG_PRODUCT}-$PG_MAJOR/${PPG_PRODUCT_FULL}/${PSM_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> percona-postgresql.properties mkdir $WORKDIR/source_tarball mkdir $CURDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $CURDIR/source_tarball + cp ${PPG_PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball + cp ${PPG_PRODUCT_FULL}.tar.gz $CURDIR/source_tarball cd $CURDIR rm -rf percona-postgresql* return } -get_system(){ - if [ -f /etc/redhat-release ]; then - RHEL=$(rpm --eval %rhel) - ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - OS_NAME="el$RHEL" - OS="rpm" - else - ARCH=$(uname -m) - OS_NAME="$(lsb_release -sc)" - OS="deb" - fi - return -} - -install_deps() { - if [ $INSTALL = 0 ] - then - echo "Dependencies will not be installed" - return; - fi - if [ $( id -u ) -ne 0 ] - then - echo "It is not possible to instal dependencies. Please run as root" - exit 1 - fi - CURPLACE=$(pwd) - - if [ "x$OS" = "xrpm" ]; then - yum -y install wget - yum clean all - RHEL=$(rpm --eval %rhel) - if [ x"$RHEL" = x6 -o x"$RHEL" = x7 ]; then - until yum -y install centos-release-scl; do - echo "waiting" - sleep 1 - done - yum -y install epel-release - INSTALL_LIST="bison e2fsprogs-devel flex gettext git glibc-devel krb5-devel libicu-devel libselinux-devel libuuid-devel libxml2-devel libxslt-devel llvm-toolset-7-clang llvm5.0-devel openldap-devel openssl-devel pam-devel patch perl perl-ExtUtils-MakeMaker perl-ExtUtils-Embed python2-devel readline-devel rpm-build rpmdevtools selinux-policy systemd systemd-devel systemtap-sdt-devel tcl-devel vim wget zlib-devel python3-devel lz4-devel libzstd-devel perl-IPC-Run perl-Test-Simple rpmdevtools" - yum -y install ${INSTALL_LIST} - source /opt/rh/devtoolset-7/enable - source /opt/rh/llvm-toolset-7/enable - else - dnf config-manager --set-enabled ol${RHEL}_codeready_builder - - INSTALL_LIST="chrpath clang-devel clang llvm-devel python3-devel perl-generators bison e2fsprogs-devel flex gettext git glibc-devel krb5-devel libicu-devel libselinux-devel libuuid-devel libxml2-devel libxslt-devel openldap-devel openssl-devel pam-devel patch perl perl-ExtUtils-MakeMaker perl-ExtUtils-Embed readline-devel rpmdevtools selinux-policy systemd systemd-devel systemtap-sdt-devel tcl-devel vim wget zlib-devel lz4-devel libzstd-devel perl-IPC-Run perl-Test-Simple rpmdevtools" - yum -y install rpmbuild || yum -y install rpm-build || true - yum -y install ${INSTALL_LIST} - yum -y install binutils gcc gcc-c++ - if [ x"$RHEL" = x8 ]; then - yum -y install python2-devel - else - yum -y install python-devel - fi - yum clean all - if [ ! -f /usr/bin/llvm-config ]; then - ln -s /usr/bin/llvm-config-64 /usr/bin/llvm-config - fi - - fi - yum -y install bzip2-devel gcc gcc-c++ rpm-build || true - yum -y install cmake cyrus-sasl-devel make openssl-devel zlib-devel libcurl-devel || true - yum -y install perl-IPC-Run perl-Test-Simple - yum -y install docbook-xsl libxslt-devel - - if [ x"$RHEL" = x9 ]; then - yum -y install gcc-toolset-14 - fi - else - apt-get update || true - DEBIAN_FRONTEND=noninteractive apt-get -y install gnupg2 curl wget lsb-release quilt - apt-get update || true - export DEBIAN=$(lsb_release -sc) - export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - ENV export DEBIAN_FRONTEND=noninteractive - DEBIAN_FRONTEND=noninteractive apt-get -y install tzdata - ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime - dpkg-reconfigure --frontend noninteractive tzdata - wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb - dpkg -i percona-release_latest.generic_all.deb - rm -f percona-release_latest.generic_all.deb - percona-release disable all - percona-release enable ppg-${PG_VERSION} testing - apt-get update - if [ "x${DEBIAN}" != "xfocal" -a "x${DEBIAN}" != "xbullseye" -a "x${DEBIAN}" != "xjammy" -a "x${DEBIAN}" != "xbookworm" -a "x${DEBIAN}" != "xnoble" -a "x${DEBIAN}" != "xtrixie" ]; then - INSTALL_LIST="bison build-essential ccache cron debconf debhelper devscripts dh-exec dh-systemd docbook-xml docbook-xsl dpkg-dev flex gcc gettext git krb5-multidev libbsd-resource-perl libedit-dev libicu-dev libipc-run-perl libkrb5-dev libldap-dev libldap2-dev libmemchan-tcl-dev libpam0g-dev libperl-dev libpython-dev libreadline-dev libselinux1-dev libssl-dev libsystemd-dev libwww-perl libxml2-dev libxml2-utils libxslt-dev libxslt1-dev llvm-dev perl pkg-config python python-dev python3-dev systemtap-sdt-dev tcl-dev tcl8.6-dev uuid-dev vim wget xsltproc zlib1g-dev rename clang gdb liblz4-dev libipc-run-perl libcurl4-openssl-dev libzstd-dev" - else - INSTALL_LIST="bison build-essential ccache cron debconf debhelper devscripts dh-exec docbook-xml docbook-xsl dpkg-dev flex gcc gettext git krb5-multidev libbsd-resource-perl libedit-dev libicu-dev libipc-run-perl libkrb5-dev libldap-dev libldap2-dev libmemchan-tcl-dev libpam0g-dev libperl-dev libpython3-dev libreadline-dev libselinux1-dev libssl-dev libsystemd-dev libwww-perl libxml2-dev libxml2-utils libxslt-dev libxslt1-dev llvm-dev perl pkg-config python3 python3-dev systemtap-sdt-dev tcl-dev tcl8.6-dev uuid-dev vim wget xsltproc zlib1g-dev rename clang gdb liblz4-dev libipc-run-perl libcurl4-openssl-dev libzstd-dev" - fi - - until DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST}; do - sleep 1 - echo "waiting" - done - fi - return; -} - -get_tar(){ - TARBALL=$1 - TARFILE=$(basename $(find $WORKDIR/$TARBALL -name 'percona-postgresql*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - TARFILE=$(basename $(find $CURDIR/$TARBALL -name 'percona-postgresql*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - echo "There is no $TARBALL for build" - exit 1 - else - cp $CURDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - else - cp $WORKDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - return -} - get_deb_sources(){ param=$1 echo $param @@ -309,43 +117,43 @@ build_srpm(){ exit 1 fi cd $WORKDIR - get_tar "source_tarball" + get_tar "source_tarball" "percona-postgresql" rm -fr rpmbuild ls | grep -v tar.gz | xargs rm -rf TARFILE=$(find . -name 'percona-postgresql*.tar.gz' | sort | tail -n1) SRC_DIR=${TARFILE%.tar.gz} - # + mkdir -vp rpmbuild/{SOURCES,SPECS,BUILD,SRPMS,RPMS} tar vxzf ${WORKDIR}/${TARFILE} --wildcards '*/rpm' --strip=1 - # + cp -av rpm/* rpmbuild/SOURCES cd rpmbuild/SOURCES - wget --no-check-certificate https://www.postgresql.org/files/documentation/pdf/${VERSION}/postgresql-${VERSION}-A4.pdf + wget --no-check-certificate "${PG_DOC}" cd ../../ - cp -av rpmbuild/SOURCES/percona-postgresql-${VERSION}.spec rpmbuild/SPECS - # + cp -av rpmbuild/SOURCES/percona-postgresql-$PG_MAJOR.spec rpmbuild/SPECS + mv -fv ${TARFILE} ${WORKDIR}/rpmbuild/SOURCES if [ -f /opt/rh/devtoolset-7/enable ]; then source /opt/rh/devtoolset-7/enable source /opt/rh/llvm-toolset-7/enable fi - wget https://raw.githubusercontent.com/Percona-Lab/telemetry-agent/phase-0/call-home.sh + wget "${TELEMETRY_AGENT}" mv call-home.sh rpmbuild/SOURCES cd ${WORKDIR}/rpmbuild/SPECS - line_number=$(grep -n SOURCE999 percona-postgresql-${VERSION}.spec | awk -F ':' '{print $1}') + line_number=$(grep -n SOURCE999 percona-postgresql-$PG_MAJOR.spec | awk -F ':' '{print $1}') cp ../SOURCES/call-home.sh ./ - awk -v n=$line_number 'NR <= n {print > "part1.txt"} NR > n {print > "part2.txt"}' percona-postgresql-${VERSION}.spec + awk -v n=$line_number 'NR <= n {print > "part1.txt"} NR > n {print > "part2.txt"}' percona-postgresql-$PG_MAJOR.spec head -n -1 part1.txt > temp && mv temp part1.txt echo "cat <<'CALLHOME' > /tmp/call-home.sh" >> part1.txt cat call-home.sh >> part1.txt echo "CALLHOME" >> part1.txt cat part2.txt >> part1.txt rm -f call-home.sh part2.txt - mv part1.txt percona-postgresql-${VERSION}.spec + mv part1.txt percona-postgresql-$PG_MAJOR.spec cd ${WORKDIR} rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .generic" \ - --define "pgmajorversion ${VERSION}" --define "pginstdir /usr/pgsql-${VERSION}" --define "pgpackageversion ${VERSION}" \ - --define "release ${BUILD_RELEASE}" rpmbuild/SPECS/percona-postgresql-${VERSION}.spec + --define "pgmajorversion ${PG_MAJOR}" --define "pginstdir /usr/pgsql-${PG_MAJOR}" --define "pgpackageversion ${PG_MAJOR}" \ + --define "release ${BUILD_RELEASE}" rpmbuild/SPECS/percona-postgresql-${PG_MAJOR}.spec mkdir -p ${WORKDIR}/srpm mkdir -p ${CURDIR}/srpm cp rpmbuild/SRPMS/*.src.rpm ${CURDIR}/srpm @@ -385,7 +193,7 @@ build_rpm(){ cp $SRC_RPM rpmbuild/SRPMS/ cd rpmbuild/SRPMS/ - # + cd $WORKDIR RHEL=$(rpm --eval %rhel) ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') @@ -393,7 +201,7 @@ build_rpm(){ source /opt/rh/devtoolset-7/enable source /opt/rh/llvm-toolset-7/enable fi - rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .$OS_NAME" --define "pgmajorversion ${VERSION}" --define "pginstdir /usr/pgsql-${VERSION}" --define "pgpackageversion ${VERSION}" \ + rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .$OS_NAME" --define "pgmajorversion ${PG_MAJOR}" --define "pginstdir /usr/pgsql-${PG_MAJOR}" --define "pgpackageversion ${PG_MAJOR}" \ --define "release ${BUILD_RELEASE}" --rebuild rpmbuild/SRPMS/$SRC_RPM return_code=$? @@ -418,28 +226,28 @@ build_source_deb(){ exit 1 fi rm -rf percona-postgresql* - get_tar "source_tarball" + get_tar "source_tarball" "percona-postgresql" rm -f *.dsc *.orig.tar.gz *.debian.tar.gz *.changes - # + TARFILE=$(basename $(find . -name 'percona-postgresql*.tar.gz' | sort | tail -n1)) DEBIAN=$(lsb_release -sc) ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') tar zxf ${TARFILE} BUILDDIR=${TARFILE%.tar.gz} - # + - mv ${TARFILE} ${PRODUCT}-${VERSION}_${VERSION}.${RELEASE}.orig.tar.gz + mv ${TARFILE} ${PPG_PRODUCT}-${PG_MAJOR}_${PG_VERSION}.orig.tar.gz cd ${BUILDDIR} cd debian rm -rf changelog - echo "percona-postgresql-${VERSION} (${VERSION}.${RELEASE}) unstable; urgency=low" >> changelog + echo "percona-postgresql-${PG_MAJOR} (${PG_VERSION}) unstable; urgency=low" >> changelog echo " * Initial Release." >> changelog echo " -- EvgeniyPatlan $(date -R)" >> changelog cd ../ quilt refresh - dch -D unstable --force-distribution -v "${VERSION}.${RELEASE}-${BUILD_RELEASE}" "Update to new Percona Platform for PostgreSQL version ${VERSION}.${RELEASE}-${BUILD_RELEASE}" + dch -D unstable --force-distribution -v "${PG_VERSION}-${BUILD_RELEASE}" "Update to new Percona Platform for PostgreSQL version ${PG_VERSION}-${BUILD_RELEASE}" dpkg-buildpackage -S cd ../ mkdir -p $WORKDIR/source_deb @@ -471,32 +279,32 @@ build_deb(){ done cd $WORKDIR rm -fv *.deb - # + export DEBIAN=$(lsb_release -sc) export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - # + echo "DEBIAN=${DEBIAN}" >> percona-postgresql.properties echo "ARCH=${ARCH}" >> percona-postgresql.properties - # + DSC=$(basename $(find . -name '*.dsc' | sort | tail -n1)) - # + dpkg-source -x ${DSC} - # - cd ${PRODUCT}-${VERSION}-${VERSION}.${RELEASE} - dch -m -D "${DEBIAN}" --force-distribution -v "2:${VERSION}.${RELEASE}-${BUILD_RELEASE}.${DEBIAN}" 'Update distribution' + + cd ${PPG_PRODUCT}-${PG_MAJOR}-${PG_VERSION} + dch -m -D "${DEBIAN}" --force-distribution -v "2:${PG_VERSION}-${BUILD_RELEASE}.${DEBIAN}" 'Update distribution' unset $(locale|cut -d= -f1) cd debian/ - wget https://raw.githubusercontent.com/Percona-Lab/telemetry-agent/phase-0/call-home.sh - sed -i 's:exit 0::' percona-postgresql-${VERSION}.postinst - echo "cat <<'CALLHOME' > /tmp/call-home.sh" >> percona-postgresql-${VERSION}.postinst - cat call-home.sh >> percona-postgresql-${VERSION}.postinst - echo "CALLHOME" >> percona-postgresql-${VERSION}.postinst - echo "bash +x /tmp/call-home.sh -f \"PRODUCT_FAMILY_POSTGRESQL\" -v \"${PG_VERSION}-${DEB_RELEASE}\" -d \"PACKAGE\" || :" >> percona-postgresql-${VERSION}.postinst - echo "chgrp percona-telemetry /usr/local/percona/telemetry_uuid &>/dev/null || :" >> percona-postgresql-17.postinst - echo "chmod 664 /usr/local/percona/telemetry_uuid &>/dev/null || :" >> percona-postgresql-17.postinst - echo "rm -rf /tmp/call-home.sh" >> percona-postgresql-${VERSION}.postinst - echo "exit 0" >> percona-postgresql-${VERSION}.postinst + wget "${TELEMETRY_AGENT}" + sed -i 's:exit 0::' percona-postgresql-$PG_MAJOR.postinst + echo "cat <<'CALLHOME' > /tmp/call-home.sh" >> percona-postgresql-$PG_MAJOR.postinst + cat call-home.sh >> percona-postgresql-$PG_MAJOR.postinst + echo "CALLHOME" >> percona-postgresql-$PG_MAJOR.postinst + echo "bash +x /tmp/call-home.sh -f \"PRODUCT_FAMILY_POSTGRESQL\" -v \"${PG_VERSION}-${PG_DEB_RELEASE}\" -d \"PACKAGE\" || :" >> percona-postgresql-$PG_MAJOR.postinst + echo "chgrp percona-telemetry /usr/local/percona/telemetry_uuid &>/dev/null || :" >> percona-postgresql-$PG_MAJOR.postinst + echo "chmod 664 /usr/local/percona/telemetry_uuid &>/dev/null || :" >> percona-postgresql-$PG_MAJOR.postinst + echo "rm -rf /tmp/call-home.sh" >> percona-postgresql-$PG_MAJOR.postinst + echo "exit 0" >> percona-postgresql-$PG_MAJOR.postinst rm -f call-home.sh cd ../ dpkg-buildpackage -rfakeroot -us -uc -b @@ -524,39 +332,35 @@ OS_NAME= ARCH= OS= INSTALL=0 -RPM_RELEASE=1 -DEB_RELEASE=1 REVISION=0 -BRANCH="release-17.6.1" -REPO="https://github.com/Percona-Lab/postgres.git" -#BRANCH="REL_17_5" -#REPO="git://git.postgresql.org/git/postgresql.git" -PRODUCT=percona-postgresql DEBUG=0 parse_arguments PICK-ARGS-FROM-ARGV "$@" -VERSION='17' -RELEASE='6' -PG_VERSION=${VERSION}.${RELEASE} -PRODUCT_FULL=${PRODUCT}-${VERSION}-${RELEASE} if [ ${NIGHTLY} = 1 ]; then NIGHTLY_TIMESTAMP=$(date +%Y%m%d%H%M%S) if [ "x$OS" = "xrpm" ]; then - BUILD_RELEASE=${NIGHTLY_TIMESTAMP}.${RPM_RELEASE} + BUILD_RELEASE=${NIGHTLY_TIMESTAMP}.${PG_RPM_RELEASE} else - BUILD_RELEASE=${NIGHTLY_TIMESTAMP}.${DEB_RELEASE} + BUILD_RELEASE=${NIGHTLY_TIMESTAMP}.${PG_DEB_RELEASE} fi else if [ "x$OS" = "xrpm" ]; then - BUILD_RELEASE=${RPM_RELEASE} + BUILD_RELEASE=${PG_RPM_RELEASE} else - BUILD_RELEASE=${DEB_RELEASE} + BUILD_RELEASE=${PG_DEB_RELEASE} fi fi check_workdir get_system -install_deps + +#install_deps +if [ $INSTALL = 0 ]; then + echo "Dependencies will not be installed" +else + source install-deps.sh "postgresql" +fi + get_sources build_srpm build_source_deb diff --git a/ppg-server-ha/ppg-server-ha_builder.sh b/ppg-server-ha/ppg-server-ha_builder.sh index 91f91556..d753bf8d 100755 --- a/ppg-server-ha/ppg-server-ha_builder.sh +++ b/ppg-server-ha/ppg-server-ha_builder.sh @@ -1,95 +1,9 @@ #!/usr/bin/env bash - -shell_quote_string() { - echo "$1" | sed -e 's,\([^a-zA-Z0-9/_.=-]\),\\\1,g' -} - -usage () { - cat <&2 "Current directory cannot be used for building!" - exit 1 - else - if ! test -d "$WORKDIR" - then - echo >&2 "$WORKDIR is not a directory." - exit 1 - fi - fi - return -} - -add_percona_yum_repo(){ - yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm - percona-release disable all - percona-release enable ppg-${PG_VERSION} testing - return -} - -add_percona_apt_repo(){ - wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb - dpkg -i percona-release_latest.generic_all.deb - rm -f percona-release_latest.generic_all.deb - percona-release disable all - percona-release enable ppg-${PG_VERSION} testing - return -} +set -x +# Versions and other variables +source versions.sh "ppg-server-ha" +# Common functions +source common-functions.sh get_sources(){ cd "${WORKDIR}" @@ -98,27 +12,26 @@ get_sources(){ echo "Sources will not be downloaded" return 0 fi - PRODUCT=percona-ppg-server-ha-${PG_MAJOR_VERSION} - echo "PRODUCT=${PRODUCT}" > ppg-server-ha.properties - PRODUCT_FULL=${PRODUCT}-${VERSION} - echo "PRODUCT_FULL=${PRODUCT_FULL}" >> ppg-server-ha.properties + echo "PRODUCT=${PPG_SERVER_HA_PRODUCT}" > ppg-server-ha.properties + + echo "PRODUCT_FULL=${PPG_SERVER_HA_PRODUCT_FULL}" >> ppg-server-ha.properties echo "VERSION=${PSM_VER}" >> ppg-server-ha.properties echo "BUILD_NUMBER=${BUILD_NUMBER}" >> ppg-server-ha.properties echo "BUILD_ID=${BUILD_ID}" >> ppg-server-ha.properties - git clone "$REPO" ${PRODUCT_FULL} + git clone "$PPG_SERVER_HA_SRC_REPO" ${PPG_SERVER_HA_PRODUCT_FULL} retval=$? if [ $retval != 0 ] then echo "There were some issues during repo cloning from github. Please retry one more time" exit 1 fi - cd ${PRODUCT_FULL} - if [ ! -z "$BRANCH" ] + cd ${PPG_SERVER_HA_PRODUCT_FULL} + if [ ! -z "$PPG_SERVER_HA_SRC_BRANCH" ] then git reset --hard git clean -xdf - git checkout "$BRANCH" + git checkout "$PPG_SERVER_HA_SRC_BRANCH" git submodule update --init fi REVISION=$(git rev-parse --short HEAD) @@ -126,123 +39,34 @@ get_sources(){ mkdir debian cd debian/ - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/ppg-server-ha/control - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/ppg-server-ha/rules + wget ${PKG_RAW_URL}/ppg-server-ha/control + wget ${PKG_RAW_URL}/ppg-server-ha/rules echo 9 > compat - echo "percona-ppg-server-ha-${PG_MAJOR_VERSION} (${PG_VERSION}-${RELEASE}) unstable; urgency=low" >> changelog + echo "percona-ppg-server-ha-$PG_MAJOR (${PG_VERSION}-${PPG_SERVER_HA_RELEASE}) unstable; urgency=low" >> changelog echo " * Initial Release." >> changelog echo " -- SurabhiBhat $(date -R)" >> changelog cd ../ mkdir rpm cd rpm - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/ppg-server-ha/ppg-server-ha.spec + wget ${PKG_RAW_URL}/ppg-server-ha/ppg-server-ha.spec cd ${WORKDIR} # source ppg-server-ha.properties # - tar --owner=0 --group=0 --exclude=.* -czf ${PRODUCT_FULL}.tar.gz ${PRODUCT_FULL} + tar --owner=0 --group=0 --exclude=.* -czf ${PPG_SERVER_HA_PRODUCT_FULL}.tar.gz ${PPG_SERVER_HA_PRODUCT_FULL} DATE_TIMESTAMP=$(date +%F_%H-%M-%S) - echo "UPLOAD=UPLOAD/experimental/BUILDS/${PRODUCT}/${PRODUCT_FULL}/${PSM_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> ppg-server-ha.properties + echo "UPLOAD=UPLOAD/experimental/BUILDS/${PPG_SERVER_HA_PRODUCT}/${PPG_SERVER_HA_PRODUCT_FULL}/${PSM_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> ppg-server-ha.properties mkdir $WORKDIR/source_tarball mkdir $CURDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $CURDIR/source_tarball + cp ${PPG_SERVER_HA_PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball + cp ${PPG_SERVER_HA_PRODUCT_FULL}.tar.gz $CURDIR/source_tarball cd $CURDIR rm -rf percona-ppg-server-ha* return } -get_system(){ - if [ -f /etc/redhat-release ]; then - RHEL=$(rpm --eval %rhel) - ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - OS_NAME="el$RHEL" - OS="rpm" - else - ARCH=$(uname -m) - apt-get -y update - apt-get -y install lsb-release - OS_NAME="$(lsb_release -sc)" - OS="deb" - fi - return -} - -switch_to_vault_repo() { - sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Linux-* - sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Linux-* -} - -install_deps() { - if [ $INSTALL = 0 ]; then - echo "Dependencies will not be installed" - return; - fi - if [ $( id -u ) -ne 0 ]; then - echo "It is not possible to instal dependencies. Please run as root" - exit 1 - fi - CURPLACE=$(pwd) - - if [ "x$OS" = "xrpm" ]; then - RHEL=$(rpm --eval %rhel) - yum -y install wget - #add_percona_yum_repo - yum clean all - - if [ ${RHEL} = 8 ]; then - dnf -y module disable postgresql - dnf config-manager --set-enabled codeready-builder-for-rhel-8-x86_64-rpms - dnf clean all - rm -r /var/cache/dnf - dnf -y upgrade - yum -y install perl lz4-libs c-ares-devel - fi - if [[ "${RHEL}" -eq 10 ]]; then - INSTALL_LIST="git rpm-build rpmdevtools wget" - else - INSTALL_LIST="git rpm-build rpmdevtools wget rpmlint" - fi - yum -y install ${INSTALL_LIST} - yum -y install lz4 || true - - else - export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - apt-get -y update - apt-get -y install wget curl lsb-release gnupg2 - export DEBIAN=$(lsb_release -sc) - add_percona_apt_repo - apt-get update || true - INSTALL_LIST="debconf debhelper devscripts dh-exec git" - until DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST}; do - sleep 1 - echo "waiting" - done - fi - return; -} - -get_tar(){ - TARBALL=$1 - TARFILE=$(basename $(find $WORKDIR/$TARBALL -name 'percona-ppg-server-ha*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - TARFILE=$(basename $(find $CURDIR/$TARBALL -name 'percona-ppg-server-ha*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - echo "There is no $TARBALL for build" - exit 1 - else - cp $CURDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - else - cp $WORKDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - return -} - get_deb_sources(){ param=$1 echo $param @@ -275,7 +99,7 @@ build_srpm(){ exit 1 fi cd $WORKDIR - get_tar "source_tarball" + get_tar "source_tarball" "percona-ppg-server-ha" rm -fr rpmbuild ls | grep -v tar.gz | xargs rm -rf TARFILE=$(find . -name 'percona-ppg-server-ha*.tar.gz' | sort | tail -n1) @@ -289,7 +113,7 @@ build_srpm(){ # mv -fv ${TARFILE} ${WORKDIR}/rpmbuild/SOURCES rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .generic" \ - --define "version ${VERSION}" rpmbuild/SPECS/ppg-server-ha.spec + --define "version ${PPG_SERVER_HA_VERSION}" rpmbuild/SPECS/ppg-server-ha.spec mkdir -p ${WORKDIR}/srpm mkdir -p ${CURDIR}/srpm cp rpmbuild/SRPMS/*.src.rpm ${CURDIR}/srpm @@ -333,9 +157,9 @@ build_rpm(){ cd $WORKDIR RHEL=$(rpm --eval %rhel) ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - export LIBPQ_DIR=/usr/pgsql-${PG_MAJOR_VERSION}/ - export LIBRARY_PATH=/usr/pgsql-${PG_MAJOR_VERSION}/lib/:/usr/pgsql-${PG_MAJOR_VERSION}/include/ - rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .$OS_NAME" --define "version ${VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM + export LIBPQ_DIR=/usr/pgsql-${PG_MAJOR}/ + export LIBRARY_PATH=/usr/pgsql-${PG_MAJOR}/lib/:/usr/pgsql-${PG_MAJOR}/include/ + rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .$OS_NAME" --define "version ${PPG_SERVER_HA_VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM return_code=$? if [ $return_code != 0 ]; then @@ -359,7 +183,7 @@ build_source_deb(){ exit 1 fi #rm -rf percona-ppg-server-ha* - get_tar "source_tarball" + get_tar "source_tarball" "percona-ppg-server-ha" rm -f *.dsc *.orig.tar.gz *.debian.tar.gz *.changes # TARFILE=$(basename $(find . -name 'percona-ppg-server-ha*.tar.gz' | sort | tail -n1)) @@ -370,9 +194,9 @@ build_source_deb(){ # - mv ${TARFILE} ${PRODUCT}_${VERSION}.orig.tar.gz + mv ${TARFILE} ${PPG_SERVER_HA_PRODUCT}_${PPG_SERVER_HA_VERSION}.orig.tar.gz cd ${BUILDDIR} - dch -D unstable --force-distribution -v "${VERSION}-${RELEASE}" "Update to new ppg-server-ha version ${VERSION}" + dch -D unstable --force-distribution -v "${PPG_SERVER_HA_VERSION}-${PPG_SERVER_HA_RELEASE}" "Update to new ppg-server-ha version ${PPG_SERVER_HA_VERSION}" dpkg-buildpackage -S cd ../ mkdir -p $WORKDIR/source_deb @@ -417,8 +241,8 @@ build_deb(){ # dpkg-source -x ${DSC} # - cd ${PRODUCT}-${VERSION} - dch -m -D "${DEBIAN}" --force-distribution -v "1:${VERSION}-${RELEASE}.${DEBIAN}" 'Update distribution' + cd ${PPG_SERVER_HA_PRODUCT_FULL} + dch -m -D "${DEBIAN}" --force-distribution -v "1:${PPG_SERVER_HA_VERSION}-${PPG_SERVER_HA_RELEASE}.${DEBIAN}" 'Update distribution' unset $(locale|cut -d= -f1) dpkg-buildpackage -rfakeroot -us -uc -b mkdir -p $CURDIR/deb @@ -441,23 +265,18 @@ OS_NAME= ARCH= OS= INSTALL=0 -RPM_RELEASE=1 -DEB_RELEASE=1 REVISION=0 -PG_VERSION=17.6 -BRANCH="v${PG_VERSION}" -REPO="https://github.com/percona/postgres-packaging.git" DEBUG=0 -VERSION="ppg-${PG_VERSION}" parse_arguments PICK-ARGS-FROM-ARGV "$@" -RELEASE='1' -PG_MAJOR_VERSION=$(echo $PG_VERSION | cut -f1 -d'.') -PRODUCT=percona-ppg-server-ha-${PG_MAJOR_VERSION} -PRODUCT_FULL=${PRODUCT}-${VERSION}-${RELEASE} check_workdir get_system -install_deps +#install_deps +if [ $INSTALL = 0 ]; then + echo "Dependencies will not be installed" +else + source install-deps.sh "ppg-server-ha" +fi get_sources build_srpm build_source_deb diff --git a/ppg-server/ppg-server_builder.sh b/ppg-server/ppg-server_builder.sh index ce1a9d71..d8caed63 100755 --- a/ppg-server/ppg-server_builder.sh +++ b/ppg-server/ppg-server_builder.sh @@ -1,95 +1,9 @@ #!/usr/bin/env bash - -shell_quote_string() { - echo "$1" | sed -e 's,\([^a-zA-Z0-9/_.=-]\),\\\1,g' -} - -usage () { - cat <&2 "Current directory cannot be used for building!" - exit 1 - else - if ! test -d "$WORKDIR" - then - echo >&2 "$WORKDIR is not a directory." - exit 1 - fi - fi - return -} - -add_percona_yum_repo(){ - yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm - percona-release disable all - percona-release enable ppg-${PG_VERSION} testing - return -} - -add_percona_apt_repo(){ - wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb - dpkg -i percona-release_latest.generic_all.deb - rm -f percona-release_latest.generic_all.deb - percona-release disable all - percona-release enable ppg-${PG_VERSION} testing - return -} +set -x +# Versions and other variables +source versions.sh "ppg-server" +# Common functions +source common-functions.sh get_sources(){ cd "${WORKDIR}" @@ -98,27 +12,26 @@ get_sources(){ echo "Sources will not be downloaded" return 0 fi - PRODUCT=percona-ppg-server-${PG_MAJOR_VERSION} - echo "PRODUCT=${PRODUCT}" > ppg-server.properties - PRODUCT_FULL=${PRODUCT}-${VERSION} - echo "PRODUCT_FULL=${PRODUCT_FULL}" >> ppg-server.properties + echo "PRODUCT=${PPG_SERVER_PRODUCT}" > ppg-server.properties + + echo "PRODUCT_FULL=${PPG_SERVER_PRODUCT_FULL}" >> ppg-server.properties echo "VERSION=${PSM_VER}" >> ppg-server.properties echo "BUILD_NUMBER=${BUILD_NUMBER}" >> ppg-server.properties echo "BUILD_ID=${BUILD_ID}" >> ppg-server.properties - git clone "$REPO" ${PRODUCT_FULL} + git clone "$PPG_SERVER_SRC_REPO" ${PPG_SERVER_PRODUCT_FULL} retval=$? if [ $retval != 0 ] then echo "There were some issues during repo cloning from github. Please retry one more time" exit 1 fi - cd ${PRODUCT_FULL} - if [ ! -z "$BRANCH" ] + cd ${PPG_SERVER_PRODUCT_FULL} + if [ ! -z "$PPG_SERVER_SRC_BRANCH" ] then git reset --hard git clean -xdf - git checkout "$BRANCH" + git checkout "$PPG_SERVER_SRC_BRANCH" git submodule update --init fi REVISION=$(git rev-parse --short HEAD) @@ -126,123 +39,34 @@ get_sources(){ mkdir debian cd debian/ - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/ppg-server/control - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/ppg-server/rules + wget ${PKG_RAW_URL}/ppg-server/control + wget ${PKG_RAW_URL}/ppg-server/rules echo 9 > compat - echo "percona-ppg-server-${PG_MAJOR_VERSION} (${PG_VERSION}-${RELEASE}) unstable; urgency=low" >> changelog + echo "percona-ppg-server-$PG_MAJOR (${PG_VERSION}-${PPG_SERVER_RELEASE}) unstable; urgency=low" >> changelog echo " * Initial Release." >> changelog echo " -- SurabhiBhat $(date -R)" >> changelog cd ../ mkdir rpm cd rpm - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/ppg-server/ppg-server.spec + wget ${PKG_RAW_URL}/ppg-server/ppg-server.spec cd ${WORKDIR} # source ppg-server.properties # - tar --owner=0 --group=0 --exclude=.* -czf ${PRODUCT_FULL}.tar.gz ${PRODUCT_FULL} + tar --owner=0 --group=0 --exclude=.* -czf ${PPG_SERVER_PRODUCT_FULL}.tar.gz ${PPG_SERVER_PRODUCT_FULL} DATE_TIMESTAMP=$(date +%F_%H-%M-%S) - echo "UPLOAD=UPLOAD/experimental/BUILDS/${PRODUCT}/${PRODUCT_FULL}/${PSM_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> ppg-server.properties + echo "UPLOAD=UPLOAD/experimental/BUILDS/${PPG_SERVER_PRODUCT}/${PPG_SERVER_PRODUCT_FULL}/${PSM_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> ppg-server.properties mkdir $WORKDIR/source_tarball mkdir $CURDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $CURDIR/source_tarball + cp ${PPG_SERVER_PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball + cp ${PPG_SERVER_PRODUCT_FULL}.tar.gz $CURDIR/source_tarball cd $CURDIR rm -rf percona-ppg-server* return } -get_system(){ - if [ -f /etc/redhat-release ]; then - RHEL=$(rpm --eval %rhel) - ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - OS_NAME="el$RHEL" - OS="rpm" - else - ARCH=$(uname -m) - apt-get -y update - apt-get -y install lsb-release - OS_NAME="$(lsb_release -sc)" - OS="deb" - fi - return -} - -switch_to_vault_repo() { - sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Linux-* - sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Linux-* -} - -install_deps() { - if [ $INSTALL = 0 ]; then - echo "Dependencies will not be installed" - return; - fi - if [ $( id -u ) -ne 0 ]; then - echo "It is not possible to instal dependencies. Please run as root" - exit 1 - fi - CURPLACE=$(pwd) - - if [ "x$OS" = "xrpm" ]; then - RHEL=$(rpm --eval %rhel) - yum -y install wget - #add_percona_yum_repo - yum clean all - - if [ ${RHEL} = 8 ]; then - dnf -y module disable postgresql - dnf config-manager --set-enabled codeready-builder-for-rhel-8-x86_64-rpms - dnf clean all - rm -r /var/cache/dnf - dnf -y upgrade - yum -y install perl lz4-libs c-ares-devel - fi - if [[ "${RHEL}" -eq 10 ]]; then - INSTALL_LIST="git rpm-build rpmdevtools wget" - else - INSTALL_LIST="git rpm-build rpmdevtools wget rpmlint" - fi - yum -y install ${INSTALL_LIST} - yum -y install lz4 || true - - else - export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - apt-get -y update - apt-get -y install wget curl lsb-release gnupg2 - export DEBIAN=$(lsb_release -sc) - add_percona_apt_repo - apt-get update || true - INSTALL_LIST="debconf debhelper devscripts dh-exec git" - until DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST}; do - sleep 1 - echo "waiting" - done - fi - return; -} - -get_tar(){ - TARBALL=$1 - TARFILE=$(basename $(find $WORKDIR/$TARBALL -name 'percona-ppg-server*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - TARFILE=$(basename $(find $CURDIR/$TARBALL -name 'percona-ppg-server*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - echo "There is no $TARBALL for build" - exit 1 - else - cp $CURDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - else - cp $WORKDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - return -} - get_deb_sources(){ param=$1 echo $param @@ -275,7 +99,7 @@ build_srpm(){ exit 1 fi cd $WORKDIR - get_tar "source_tarball" + get_tar "source_tarball" "percona-ppg-server" rm -fr rpmbuild ls | grep -v tar.gz | xargs rm -rf TARFILE=$(find . -name 'percona-ppg-server*.tar.gz' | sort | tail -n1) @@ -289,7 +113,7 @@ build_srpm(){ # mv -fv ${TARFILE} ${WORKDIR}/rpmbuild/SOURCES rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .generic" \ - --define "version ${VERSION}" rpmbuild/SPECS/ppg-server.spec + --define "version ${PPG_SERVER_VERSION}" rpmbuild/SPECS/ppg-server.spec mkdir -p ${WORKDIR}/srpm mkdir -p ${CURDIR}/srpm cp rpmbuild/SRPMS/*.src.rpm ${CURDIR}/srpm @@ -333,9 +157,9 @@ build_rpm(){ cd $WORKDIR RHEL=$(rpm --eval %rhel) ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - export LIBPQ_DIR=/usr/pgsql-${PG_MAJOR_VERSION}/ - export LIBRARY_PATH=/usr/pgsql-${PG_MAJOR_VERSION}/lib/:/usr/pgsql-${PG_MAJOR_VERSION}/include/ - rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .$OS_NAME" --define "version ${VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM + export LIBPQ_DIR=/usr/pgsql-${PG_MAJOR}/ + export LIBRARY_PATH=/usr/pgsql-${PG_MAJOR}/lib/:/usr/pgsql-${PG_MAJOR}/include/ + rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .$OS_NAME" --define "version ${PPG_SERVER_VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM return_code=$? if [ $return_code != 0 ]; then @@ -359,7 +183,7 @@ build_source_deb(){ exit 1 fi #rm -rf percona-ppg-server* - get_tar "source_tarball" + get_tar "source_tarball" "percona-ppg-server" rm -f *.dsc *.orig.tar.gz *.debian.tar.gz *.changes # TARFILE=$(basename $(find . -name 'percona-ppg-server*.tar.gz' | sort | tail -n1)) @@ -369,9 +193,9 @@ build_source_deb(){ BUILDDIR=${TARFILE%.tar.gz} # - mv ${TARFILE} ${PRODUCT}_${VERSION}.orig.tar.gz + mv ${TARFILE} ${PPG_SERVER_PRODUCT}_${PPG_SERVER_VERSION}.orig.tar.gz cd ${BUILDDIR} - dch -D unstable --force-distribution -v "${VERSION}-${RELEASE}" "Update to new ppg-server version ${VERSION}" + dch -D unstable --force-distribution -v "${PPG_SERVER_VERSION}-${PPG_SERVER_RELEASE}" "Update to new ppg-server version ${PPG_SERVER_VERSION}" dpkg-buildpackage -S cd ../ mkdir -p $WORKDIR/source_deb @@ -419,8 +243,8 @@ build_deb(){ # dpkg-source -x ${DSC} # - cd ${PRODUCT}-${VERSION} - dch -m -D "${DEBIAN}" --force-distribution -v "1:${VERSION}-${RELEASE}.${DEBIAN}" 'Update distribution' + cd ${PPG_SERVER_PRODUCT_FULL} + dch -m -D "${DEBIAN}" --force-distribution -v "1:${PPG_SERVER_VERSION}-${PPG_SERVER_RELEASE}.${DEBIAN}" 'Update distribution' unset $(locale|cut -d= -f1) dpkg-buildpackage -rfakeroot -us -uc -b mkdir -p $CURDIR/deb @@ -443,23 +267,18 @@ OS_NAME= ARCH= OS= INSTALL=0 -RPM_RELEASE=1 -DEB_RELEASE=1 REVISION=0 -PG_VERSION=17.6 -BRANCH="v${PG_VERSION}" -REPO="https://github.com/percona/postgres-packaging.git" DEBUG=0 -VERSION="ppg-${PG_VERSION}" parse_arguments PICK-ARGS-FROM-ARGV "$@" -RELEASE='1' -PG_MAJOR_VERSION=$(echo $PG_VERSION | cut -f1 -d'.') -PRODUCT=percona-ppg-server-${PG_MAJOR_VERSION} -PRODUCT_FULL=${PRODUCT}-${VERSION}-${RELEASE} check_workdir get_system -install_deps +#install_deps +if [ $INSTALL = 0 ]; then + echo "Dependencies will not be installed" +else + source install-deps.sh "ppg-server" +fi get_sources build_srpm build_source_deb diff --git a/pysyncobj/pysyncobj_builder.sh b/pysyncobj/pysyncobj_builder.sh index 1379d8b5..5b90c70e 100755 --- a/pysyncobj/pysyncobj_builder.sh +++ b/pysyncobj/pysyncobj_builder.sh @@ -1,82 +1,9 @@ #!/usr/bin/env bash - -shell_quote_string() { - echo "$1" | sed -e 's,\([^a-zA-Z0-9/_.=-]\),\\\1,g' -} - -usage () { - cat <&2 "Current directory cannot be used for building!" - exit 1 - else - if ! test -d "$WORKDIR" - then - echo >&2 "$WORKDIR is not a directory." - exit 1 - fi - fi - return -} - -switch_to_vault_repo() { - sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Linux-* - sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Linux-* -} +set -x +# Versions and other variables +source versions.sh "pysyncobj" +# Common functions +source common-functions.sh get_sources(){ cd "${WORKDIR}" @@ -85,152 +12,56 @@ get_sources(){ echo "Sources will not be downloaded" return 0 fi - PRODUCT=python3-pysyncobj - echo "PRODUCT=${PRODUCT}" > pysyncobj.properties - GIT_USER=$(echo ${REPO} | awk -F'/' '{print $4}') - PRODUCT_FULL=${PRODUCT}-${VERSION} - echo "PRODUCT_FULL=${PRODUCT_FULL}" >> pysyncobj.properties - echo "VERSION=${VERSION}" >> pysyncobj.properties + echo "PRODUCT=${PYSYNCOBJ_PRODUCT}" > pysyncobj.properties + GIT_USER=$(echo ${PYSYNCOBJ_SRC_REPO} | awk -F'/' '{print $4}') + echo "PRODUCT_FULL=${PYSYNCOBJ_PRODUCT_FULL}" >> pysyncobj.properties + echo "VERSION=${PYSYNCOBJ_VERSION}" >> pysyncobj.properties echo "BUILD_NUMBER=${BUILD_NUMBER}" >> pysyncobj.properties echo "BUILD_ID=${BUILD_ID}" >> pysyncobj.properties - git clone "$REPO" ${PRODUCT}-${VERSION} + git clone "$PYSYNCOBJ_SRC_REPO" ${PYSYNCOBJ_PRODUCT_FULL} retval=$? if [ $retval != 0 ] then echo "There were some issues during repo cloning from github. Please retry one more time" exit 1 fi - cd ${PRODUCT}-${VERSION} - if [ ! -z "$BRANCH" ] + cd ${PYSYNCOBJ_PRODUCT_FULL} + if [ ! -z "$PYSYNCOBJ_SRC_BRANCH" ] then git reset --hard git clean -xdf - git checkout "$BRANCH" + git checkout "$PYSYNCOBJ_SRC_BRANCH" fi REVISION=$(git rev-parse --short HEAD) echo "REVISION=${REVISION}" >> ${WORKDIR}/pysyncobj.properties rm -fr debian rpm - git clone https://github.com/Percona-Lab/python3-pysyncobj.git + git clone ${PYSYNCOBJ_PERCONA_REPO} mv python3-pysyncobj/debian ./ mkdir rpm cd rpm - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/pysyncobj/python3-pysyncobj.spec + wget ${PKG_RAW_URL}/pysyncobj/python3-pysyncobj.spec cd ../ rm -rf python3-pysyncobj cd ../ export DEBIAN=$(lsb_release -sc) cd ${WORKDIR} - # + source pysyncobj.properties - # - tar --owner=0 --group=0 --exclude=.* -czf ${PRODUCT}-${VERSION}.tar.gz ${PRODUCT}-${VERSION} + tar --owner=0 --group=0 --exclude=.* -czf ${PYSYNCOBJ_PRODUCT_FULL}.tar.gz ${PYSYNCOBJ_PRODUCT_FULL} DATE_TIMESTAMP=$(date +%F_%H-%M-%S) - echo "UPLOAD=UPLOAD/experimental/BUILDS/${PRODUCT}/${PRODUCT_FULL}/${BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> pysyncobj.properties + echo "UPLOAD=UPLOAD/experimental/BUILDS/${PYSYNCOBJ_PRODUCT}/${PYSYNCOBJ_PRODUCT_FULL}/${PYSYNCOBJ_SRC_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> pysyncobj.properties mkdir $WORKDIR/source_tarball mkdir $CURDIR/source_tarball - cp ${PRODUCT}-${VERSION}.tar.gz $WORKDIR/source_tarball - cp ${PRODUCT}-${VERSION}.tar.gz $CURDIR/source_tarball + cp ${PYSYNCOBJ_PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball + cp ${PYSYNCOBJ_PRODUCT_FULL}.tar.gz $CURDIR/source_tarball cd $CURDIR rm -rf python3-pysyncobj* return } -get_system(){ - if [ -f /etc/redhat-release ]; then - RHEL=$(rpm --eval %rhel) - ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - OS_NAME="el$RHEL" - OS="rpm" - else - ARCH=$(uname -m) - OS_NAME="$(lsb_release -sc)" - OS="deb" - fi - return -} - -install_deps() { - if [ $INSTALL = 0 ] - then - echo "Dependencies will not be installed" - return; - fi - if [ $( id -u ) -ne 0 ] - then - echo "It is not possible to instal dependencies. Please run as root" - exit 1 - fi - CURPLACE=$(pwd) - - if [ "x$OS" = "xrpm" ]; then - if [ x"$RHEL" = x8 ]; then - switch_to_vault_repo - fi - yum -y install wget - yum clean all - if [[ "${RHEL}" -eq 10 ]]; then - yum install oracle-epel-release-el10 - else - yum -y install epel-release - fi - RHEL=$(rpm --eval %rhel) - if [ ${RHEL} = 7 ]; then - INSTALL_LIST="git rpm-build python3-devel rpmdevtools rpmlint" - yum -y install ${INSTALL_LIST} - else - dnf config-manager --set-enabled ol${RHEL}_codeready_builder - dnf clean all - rm -r /var/cache/dnf - dnf -y upgrade - INSTALL_LIST="git rpm-build python3-devel python3-setuptools rpmdevtools rpmlint" - yum -y install ${INSTALL_LIST} - fi - else - apt-get update || true - apt-get -y install lsb-release wget curl gnupg2 - export DEBIAN=$(lsb_release -sc) - export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - until apt-get -y install gnupg2; do - sleep 3 - echo "WAITING" - done - apt-get update || true - - INSTALL_LIST="build-essential debconf debhelper devscripts dh-exec git wget fakeroot devscripts python3-psycopg2 python3-setuptools libyaml-dev python3-virtualenv python3-psycopg2 ruby ruby-dev rubygems curl golang dh-python libjs-mathjax pyflakes3 python3-dateutil python3-dnspython python3-etcd python3-flake8 python3-kazoo python3-mccabe python3-mock python3-prettytable python3-psutil python3-pycodestyle python3-pytest python3-pytest-cov python3-sphinx python3-sphinx-rtd-theme python3-tz python3-tzlocal sphinx-common python3-click python3-doc python3-all " - if [ "x${DEBIAN}" = "xtrixie" ]; then - INSTALL_LIST+="python3-dev dh-virtualenv python3-boto3" - elif [ "x${DEBIAN}" != "xfocal" ]; then - INSTALL_LIST+="python3-dev dh-virtualenv python3-boto" - else - INSTALL_LIST+="python2-dev python3-boto" - fi - DEBIAN_FRONTEND=noninteractive apt-get -y install ${INSTALL_LIST} - fi - return; -} - -get_tar(){ - TARBALL=$1 - TARFILE=$(basename $(find $WORKDIR/$TARBALL -name 'python3-pysyncobj*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - TARFILE=$(basename $(find $CURDIR/$TARBALL -name 'python3-pysyncobj*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - echo "There is no $TARBALL for build" - exit 1 - else - cp $CURDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - else - cp $WORKDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - return -} - get_deb_sources(){ param=$1 echo $param @@ -263,22 +94,22 @@ build_srpm(){ exit 1 fi cd $WORKDIR - get_tar "source_tarball" + get_tar "source_tarball" "python3-pysyncobj" rm -fr rpmbuild ls | grep -v tar.gz | xargs rm -rf TARFILE=$(find . -name 'python3-pysyncobj*.tar.gz' | sort | tail -n1) SRC_DIR=${TARFILE%.tar.gz} - # + mkdir -vp rpmbuild/{SOURCES,SPECS,BUILD,SRPMS,RPMS} tar vxzf ${WORKDIR}/${TARFILE} --wildcards '*/rpm' --strip=1 - # + cp -av rpm/* rpmbuild/SOURCES cp -av rpm/python3-pysyncobj.spec rpmbuild/SPECS - # + mv -fv ${TARFILE} ${WORKDIR}/rpmbuild/SOURCES sed -i 's:.rhel7:%{dist}:' ${WORKDIR}/rpmbuild/SPECS/python3-pysyncobj.spec rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .generic" \ - --define "version ${VERSION}" rpmbuild/SPECS/python3-pysyncobj.spec + --define "version ${PYSYNCOBJ_VERSION}" rpmbuild/SPECS/python3-pysyncobj.spec mkdir -p ${WORKDIR}/srpm mkdir -p ${CURDIR}/srpm cp rpmbuild/SRPMS/*.src.rpm ${CURDIR}/srpm @@ -318,11 +149,11 @@ build_rpm(){ cp $SRC_RPM rb/SRPMS/ cd rb/SRPMS/ - # + cd $WORKDIR RHEL=$(rpm --eval %rhel) ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - rpmbuild --define "_topdir ${WORKDIR}/rb" --define "dist .$OS_NAME" --define "version ${VERSION}" --rebuild rb/SRPMS/$SRC_RPM + rpmbuild --define "_topdir ${WORKDIR}/rb" --define "dist .$OS_NAME" --define "version ${PYSYNCOBJ_VERSION}" --rebuild rb/SRPMS/$SRC_RPM return_code=$? if [ $return_code != 0 ]; then @@ -346,20 +177,20 @@ build_source_deb(){ exit 1 fi rm -rf python3-pysyncobj* - get_tar "source_tarball" + get_tar "source_tarball" "python3-pysyncobj" rm -f *.dsc *.orig.tar.gz *.debian.tar.gz *.changes - # + TARFILE=$(basename $(find . -name 'python3-pysyncobj*.tar.gz' | sort | tail -n1)) DEBIAN=$(lsb_release -sc) ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') tar zxf ${TARFILE} BUILDDIR=${TARFILE%.tar.gz} - # + - mv ${TARFILE} python3-pysyncobj_${VERSION}.orig.tar.gz + mv ${TARFILE} python3-pysyncobj_${PYSYNCOBJ_VERSION}.orig.tar.gz cd ${BUILDDIR} - dch -D unstable --force-distribution -v "${VERSION}-${RELEASE}" "Update to new pysyncobj version ${VERSION}" + dch -D unstable --force-distribution -v "${PYSYNCOBJ_VERSION}-${PYSYNCOBJ_RELEASE}" "Update to new pysyncobj version ${PYSYNCOBJ_VERSION}" dpkg-buildpackage -S || true cd ../ mkdir -p $WORKDIR/source_deb @@ -391,20 +222,19 @@ build_deb(){ done cd $WORKDIR rm -fv *.deb - # + export DEBIAN=$(lsb_release -sc) export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - # + echo "DEBIAN=${DEBIAN}" >> pysyncobj.properties echo "ARCH=${ARCH}" >> pysyncobj.properties - # DSC=$(basename $(find . -name '*.dsc' | sort | tail -n1)) - # + dpkg-source -x ${DSC} - # - cd ${PRODUCT}-${VERSION} - dch -m -D "${DEBIAN}" --force-distribution -v "1:${VERSION}-${RELEASE}.${DEBIAN}" 'Update distribution' + + cd ${PYSYNCOBJ_PRODUCT_FULL} + dch -m -D "${DEBIAN}" --force-distribution -v "1:${PYSYNCOBJ_VERSION}-${PYSYNCOBJ_RELEASE}.${DEBIAN}" 'Update distribution' unset $(locale|cut -d= -f1) dpkg-buildpackage -rfakeroot -us -uc -b mkdir -p $CURDIR/deb @@ -431,23 +261,18 @@ OS_NAME= ARCH= OS= INSTALL=0 -RPM_RELEASE=1 -DEB_RELEASE=1 REVISION=0 -BRANCH="0.3.10" -REPO="https://github.com/bakwc/PySyncObj.git" -PRODUCT=python3-pysyncobj DEBUG=0 parse_arguments PICK-ARGS-FROM-ARGV "$@" -VERSION='0.3.10' -RELEASE='2' -PG_VERSION=17.6 -PRODUCT_FULL=${PRODUCT}-${VERSION}-${RELEASE} -PG_MAJOR_VERSION=$(echo ${PG_VERSION} | cut -f1 -d'.') check_workdir get_system -install_deps +#install_deps +if [ $INSTALL = 0 ]; then + echo "Dependencies will not be installed" +else + source install-deps.sh "pysyncobj" +fi get_sources build_srpm build_source_deb diff --git a/versions.sh b/versions.sh new file mode 100644 index 00000000..23a02754 --- /dev/null +++ b/versions.sh @@ -0,0 +1,337 @@ +#!/usr/bin/env bash + +PG_MAJOR=17 +PG_MINOR=6 +PG_VERSION=${PG_MAJOR}.${PG_MINOR} + +#-------------------------------------- COMMON URLs -------------------------------------- + +# Github Packaging Repo +PKG_GIT_REPO="https://github.com/percona/postgres-packaging.git" +PKG_GIT_BRANCH=${PG_VERSION} +PGRPMS_GIT_REPO="https://git.postgresql.org/git/pgrpms.git" + +# Raw files URLs +PKG_RAW_URL="https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}" + +# Percona Repos +YUM_REPO="https://repo.percona.com/yum/percona-release-latest.noarch.rpm" +APT_REPO="https://repo.percona.com/apt/percona-release_latest.generic_all.deb" + +case "$1" in + postgresql) + # versions + PPG_PRODUCT=percona-postgresql + PPG_PRODUCT_FULL=${PPG_PRODUCT}-${PG_VERSION} + PG_RELEASE='1' + PG_SRC_BRANCH="release-${PG_MAJOR}.${PG_MINOR}.${PG_RELEASE}" + PG_RPM_RELEASE='1' + PG_DEB_RELEASE='1' + + # urls + PG_SRC_REPO="https://github.com/Percona-Lab/postgres.git" + PG_SRC_REPO_DEB="https://salsa.debian.org/postgresql/postgresql.git" + PG_DOC="https://www.postgresql.org/files/documentation/pdf/${PG_MAJOR}/postgresql-${PG_MAJOR}-A4.pdf" + TELEMETRY_AGENT="https://raw.githubusercontent.com/Percona-Lab/telemetry-agent/phase-0/call-home.sh" + ;; + + postgresql-common) + # versions + PPG_COMMON_PRODUCT=percona-postgresql-common + PPG_COMMON_MAJOR=280 + PPG_COMMON_MINOR='1' + PPG_COMMON_PRODUCT_FULL=${PPG_COMMON_PRODUCT}-${PPG_COMMON_MAJOR} + PPG_COMMON_SRC_BRANCH="debian/${PPG_COMMON_MAJOR}" + PPG_COMMON_RPM_RELEASE='1' + PPG_COMMON_DEB_RELEASE='1' + + # urls + PPG_COMMON_SRC_REPO="https://salsa.debian.org/postgresql/postgresql-common.git" + ;; + + + etcd) + # versions + ETCD_PRODUCT=etcd + ETCD_VERSION=3.5.21 + ETCD_PRODUCT_FULL=${ETCD_PRODUCT}-${ETCD_VERSION} + ETCD_RPM_RELEASE='1' + ETCD_DEB_RELEASE='1' + ETCD_RELEASE='1' + + # urls + ETCD_SRC_REPO="https://github.com/etcd-io/etcd/releases/download/v${ETCD_VERSION}" + ETCD_SRC_REPO_DEB="https://github.com/EvgeniyPatlan/etcd-packaging.git" + ;; + + + patroni) + # versions + PATRONI_PRODUCT=percona-patroni + PATRONI_VERSION=4.0.6 + PATRONI_PRODUCT_FULL=${PATRONI_PRODUCT}-${PATRONI_VERSION} + PATRONI_SRC_BRANCH="v${PATRONI_VERSION}" + PATRONI_RPM_RELEASE='1' + PATRONI_DEB_RELEASE='1' + PATRONI_RELEASE='1' + + # urls + PATRONI_SRC_REPO="https://github.com/zalando/patroni.git" + PATRONI_SRC_REPO_DEB="https://github.com/cybertec-postgresql/patroni-packaging.git" + ;; + + + pg_cron) + # versions + PG_CRON_PRODUCT=percona-pg_cron_${PG_MAJOR} + PG_CRON_PRODUCT_DEB=percona-pg-cron_${PG_MAJOR} + PG_CRON_VERSION=1.6.2 + PG_CRON_PRODUCT_FULL=${PG_CRON_PRODUCT}-${PG_CRON_VERSION} + PG_CRON_SRC_BRANCH="v${PG_CRON_VERSION}" + PG_CRON_RPM_RELEASE='2' + PG_CRON_DEB_RELEASE='2' + PG_CRON_RELEASE='2' + + # urls + PG_CRON_SRC_REPO="https://github.com/citusdata/pg_cron.git" + PG_CRON_SRC_REPO_DEB="https://salsa.debian.org/postgresql/pg-cron.git" + ;; + + + pg_gather) + # versions + PG_GATHER_PRODUCT=percona-pg_gather + PG_GATHER_PRODUCT_DEB=percona-pg-gather + PG_GATHER_VERSION=31 + PG_GATHER_PRODUCT_FULL=${PG_GATHER_PRODUCT}-${PG_GATHER_VERSION} + PG_GATHER_SRC_BRANCH=${PG_VERSION} + PG_GATHER_RPM_RELEASE='1' + PG_GATHER_RELEASE='1' + + # urls + PG_GATHER_SRC_URL="https://raw.githubusercontent.com/percona/support-snippets/master/postgresql/pg_gather" + ;; + + + pg_repack) + # versions + PG_REPACK_PRODUCT=percona-pg_repack + PG_REPACK_PRODUCT_DEB=percona-pg-repack + PG_REPACK_VERSION=1.5.2 + PG_REPACK_PRODUCT_FULL=${PG_REPACK_PRODUCT}-${PG_REPACK_VERSION} + PG_REPACK_SRC_BRANCH="ver_${PG_REPACK_VERSION}" + PG_REPACK_RPM_RELEASE='2' + PG_REPACK_DEB_RELEASE='2' + PG_REPACK_RELEASE='2' + + # urls + PG_REPACK_SRC_REPO="https://github.com/reorg/pg_repack.git" + PG_REPACK_SRC_REPO_DEB="https://salsa.debian.org/postgresql/pg-repack.git" + ;; + + + pgaudit) + # versions + PGAUDIT_PRODUCT=percona-pgaudit + PGAUDIT_VERSION=17.1 + PGAUDIT_PRODUCT_FULL=${PGAUDIT_PRODUCT}-${PGAUDIT_VERSION} + PGAUDIT_SRC_BRANCH=${PGAUDIT_VERSION} + PGAUDIT_RPM_RELEASE='1' + PGAUDIT_DEB_RELEASE='1' + PGAUDIT_RELEASE='1' + + # urls + PGAUDIT_SRC_REPO="https://github.com/pgaudit/pgaudit.git" + PGAUDIT_SRC_REPO_DEB="https://salsa.debian.org/postgresql/pgaudit.git" + ;; + + + pgaudit_set_user) + # versions + SET_USER_PRODUCT="percona-pgaudit${PG_MAJOR}_set_user" + SET_USER_PRODUCT_DEB="percona-pgaudit${PG_MAJOR}-set-user" + SET_USER_VERSION=4.1.0 + SET_USER_PRODUCT_FULL=${SET_USER_PRODUCT}-${SET_USER_VERSION} + SET_USER_SRC_BRANCH="REL${SET_USER_VERSION//./_}" + SET_USER_RPM_RELEASE='2' + SET_USER_DEB_RELEASE='2' + SET_USER_RELEASE='3' + + # urls + SET_USER_SRC_REPO="https://github.com/pgaudit/set_user.git" + ;; + + + pgbackrest) + # versions + PG_BCKREST_PRODUCT=percona-pgbackrest + PG_BCKREST_VERSION=2.56.0 + PG_BCKREST_PRODUCT_FULL=${PG_BCKREST_PRODUCT}-${PG_BCKREST_VERSION} + PG_BCKREST_SRC_BRANCH="release/${PG_BCKREST_VERSION}" + PG_BCKREST_DEB_TAG="debian/${PG_BCKREST_VERSION}-1" + PG_BCKREST_RPM_RELEASE='1' + PG_BCKREST_DEB_RELEASE='1' + PG_BCKREST_RELEASE='1' + + # urls + PG_BCKREST_SRC_REPO="https://github.com/pgbackrest/pgbackrest.git" + PG_BCKREST_SRC_REPO_DEB="https://salsa.debian.org/postgresql/pgbackrest.git" + ;; + + + pgbadger) + # versions + PGBADGER_PRODUCT=percona-pgbadger + PGBADGER_VERSION=13.1 + PGBADGER_PRODUCT_FULL=${PGBADGER_PRODUCT}-${PGBADGER_VERSION} + PGBADGER_SRC_BRANCH="v${PGBADGER_VERSION}" + PGBADGER_RPM_RELEASE='2' + PGBADGER_DEB_RELEASE='2' + PGBADGER_RELEASE='2' + + # urls + PGBADGER_SRC_REPO="https://github.com/darold/pgbadger.git" + ;; + + + pgbouncer) + # versions + PGBOUNCER_PRODUCT=percona-pgbouncer + PGBOUNCER_VERSION=1.24.1 + PGBOUNCER_PRODUCT_FULL=${PGBOUNCER_PRODUCT}-${PGBOUNCER_VERSION} + PGBOUNCER_SRC_BRANCH="pgbouncer_${PGBOUNCER_VERSION//./_}" + PGBOUNCER_RPM_RELEASE='2' + PGBOUNCER_DEB_RELEASE='2' + PGBOUNCER_RELEASE='2' + + # urls + PGBOUNCER_SRC_REPO="https://github.com/pgbouncer/pgbouncer.git" + PGBOUNCER_SRC_REPO_DEB="https://salsa.debian.org/postgresql/pgbouncer.git" + ;; + + + pgpool2) + # versions + PGPOOL2_PRODUCT=percona-pgpool-II-pg${PG_VERSION} + PGPOOL2_VERSION=4.6.2 + PGPOOL2_PRODUCT_FULL=${PGPOOL2_PRODUCT}-${PGPOOL2_VERSION} + PGPOOL2_SRC_BRANCH="V${PGPOOL2_VERSION//./_}" + PGPOOL2_BUILD_BRANCH=${PG_VERSION} + PGPOOL2_RPM_RELEASE='1' + PGPOOL2_DEB_RELEASE='1' + + # urls + PGPOOL2_SRC_REPO="https://git.postgresql.org/git/pgpool2.git" + PGPOOL2_SRC_REPO_DEB="https://salsa.debian.org/postgresql/pgpool2.git" + ;; + + + pgvector) + # versions + PGVECTOR_PRODUCT=percona-pgvector_${PG_MAJOR} + PGVECTOR_PRODUCT_DEB=percona-pgvector + PGVECTOR_VERSION=0.8.0 + PGVECTOR_PRODUCT_FULL=${PGVECTOR_PRODUCT}-${PGVECTOR_VERSION} + PGVECTOR_SRC_BRANCH="v${PGVECTOR_VERSION}" + PGVECTOR_RPM_RELEASE='3' + PGVECTOR_DEB_RELEASE='3' + PGVECTOR_RELEASE='3' + + # urls + PGVECTOR_SRC_REPO="https://github.com/pgvector/pgvector.git" + PGVECTOR_SRC_REPO_DEB="https://salsa.debian.org/postgresql/pgvector.git" + ;; + + + postgis) + # versions + POSTGIS_PRODUCT=percona-postgis + POSTGIS_VERSION=3.3 + POSTGIS_RELEASE=8 + POSTGIS_PRODUCT_FULL=${POSTGIS_PRODUCT}-${POSTGIS_VERSION}.${POSTGIS_RELEASE} + POSTGIS_SRC_BRANCH="${POSTGIS_VERSION}.${POSTGIS_RELEASE}" + POSTGIS_RPM_RELEASE='1' + POSTGIS_DEB_RELEASE='1' + + # urls + POSTGIS_SRC_REPO="https://github.com/postgis/postgis.git" + POSTGIS_SRC_REPO_DEB="https://salsa.debian.org/debian-gis-team/postgis.git" + ;; + + + ppg-server) + # versions + PPG_SERVER_PRODUCT=percona-ppg-server-${PG_MAJOR} + PPG_SERVER_VERSION=${PG_VERSION} + PPG_SERVER_PRODUCT_FULL=${PPG_SERVER_PRODUCT}-${PPG_SERVER_VERSION} + PPG_SERVER_SRC_BRANCH=${PG_VERSION} + PPG_SERVER_RPM_RELEASE='1' + PPG_SERVER_DEB_RELEASE='1' + PPG_SERVER_RELEASE='1' + + # urls + PPG_SERVER_SRC_REPO=${PKG_GIT_REPO} + ;; + + + ppg-server-ha) + # versions + PPG_SERVER_HA_PRODUCT=percona-ppg-server-ha-${PG_MAJOR} + PPG_SERVER_HA_VERSION=${PG_VERSION} + PPG_SERVER_HA_PRODUCT_FULL=${PPG_SERVER_HA_PRODUCT}-${PPG_SERVER_HA_VERSION} + PPG_SERVER_HA_SRC_BRANCH=${PG_VERSION} + PPG_SERVER_HA_RPM_RELEASE='1' + PPG_SERVER_HA_DEB_RELEASE='1' + PPG_SERVER_HA_RELEASE='1' + + # urls + PPG_SERVER_HA_SRC_REPO=${PKG_GIT_REPO} + ;; + + + pysyncobj) + # versions + PYSYNCOBJ_PRODUCT=python3-pysyncobj + PYSYNCOBJ_VERSION=0.3.10 + PYSYNCOBJ_PRODUCT_FULL=${PYSYNCOBJ_PRODUCT}-${PYSYNCOBJ_VERSION} + PYSYNCOBJ_SRC_BRANCH="${PYSYNCOBJ_VERSION}" + PYSYNCOBJ_RPM_RELEASE='1' + PYSYNCOBJ_DEB_RELEASE='1' + PYSYNCOBJ_RELEASE='2' + + # urls + PYSYNCOBJ_SRC_REPO="https://github.com/bakwc/PySyncObj.git" + PYSYNCOBJ_PERCONA_REPO="https://github.com/Percona-Lab/python3-pysyncobj.git" + ;; + + + wal2json) + # versions + WAL2JSON_PRODUCT=percona-wal2json + WAL2JSON_VERSION=2.6 + WAL2JSON_PRODUCT_FULL=${WAL2JSON_PRODUCT}-${WAL2JSON_VERSION} + WAL2JSON_SRC_BRANCH="wal2json_${WAL2JSON_VERSION//./_}" + WAL2JSON_RPM_RELEASE='1' + WAL2JSON_DEB_RELEASE='1' + WAL2JSON_RELEASE='2' + + # urls + WAL2JSON_SRC_REPO="https://github.com/eulerto/wal2json.git" + WAL2JSON_SRC_REPO_DEB="https://salsa.debian.org/postgresql/wal2json.git" + ;; + + + ydiff) + # versions + YDIFF_PRODUCT=python3-ydiff + YDIFF_VERSION=1.2 + YDIFF_PRODUCT_FULL=${YDIFF_PRODUCT}-${YDIFF_VERSION} + YDIFF_SRC_BRANCH="${YDIFF_VERSION}" + YDIFF_RPM_RELEASE='1' + YDIFF_DEB_RELEASE='1' + YDIFF_RELEASE='2' + + # urls + YDIFF_SRC_REPO="https://github.com/ymattw/ydiff.git" + ;; +esac diff --git a/wal2json/wal2json_builder.sh b/wal2json/wal2json_builder.sh index c9374ca0..18bec13d 100644 --- a/wal2json/wal2json_builder.sh +++ b/wal2json/wal2json_builder.sh @@ -1,93 +1,9 @@ #!/usr/bin/env bash - -shell_quote_string() { - echo "$1" | sed -e 's,\([^a-zA-Z0-9/_.=-]\),\\\1,g' -} - -usage () { - cat <&2 "Current directory cannot be used for building!" - exit 1 - else - if ! test -d "$WORKDIR" - then - echo >&2 "$WORKDIR is not a directory." - exit 1 - fi - fi - return -} - -add_percona_yum_repo(){ - yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm - percona-release disable all - percona-release enable ppg-${PG_VERSION} testing - return -} - -add_percona_apt_repo(){ - wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb - dpkg -i percona-release_latest.generic_all.deb - rm -f percona-release_latest.generic_all.deb - percona-release disable all - percona-release enable ppg-${PG_VERSION} testing - return -} +set -x +# Versions and other variables +source versions.sh "wal2json" +# Common functions +source common-functions.sh get_sources(){ cd "${WORKDIR}" @@ -96,174 +12,70 @@ get_sources(){ echo "Sources will not be downloaded" return 0 fi - PRODUCT=percona-wal2json - echo "PRODUCT=${PRODUCT}" > wal2json.properties - PRODUCT_FULL=${PRODUCT}-${VERSION} - echo "PRODUCT_FULL=${PRODUCT_FULL}" >> wal2json.properties + echo "PRODUCT=${WAL2JSON_PRODUCT}" > wal2json.properties + echo "PRODUCT_FULL=${WAL2JSON_PRODUCT_FULL}" >> wal2json.properties echo "VERSION=${PSM_VER}" >> wal2json.properties echo "BUILD_NUMBER=${BUILD_NUMBER}" >> wal2json.properties echo "BUILD_ID=${BUILD_ID}" >> wal2json.properties - git clone "$REPO" ${PRODUCT_FULL} + git clone "$WAL2JSON_SRC_REPO" ${WAL2JSON_PRODUCT_FULL} retval=$? if [ $retval != 0 ] then echo "There were some issues during repo cloning from github. Please retry one more time" exit 1 fi - cd ${PRODUCT_FULL} - if [ ! -z "$BRANCH" ] + cd ${WAL2JSON_PRODUCT_FULL} + if [ ! -z "$WAL2JSON_SRC_BRANCH" ] then git reset --hard git clean -xdf - git checkout "$BRANCH" + git checkout "$WAL2JSON_SRC_BRANCH" git submodule update --init fi REVISION=$(git rev-parse --short HEAD) echo "REVISION=${REVISION}" >> ${WORKDIR}/wal2json.properties rm -fr debian rpm - git clone https://salsa.debian.org/postgresql/wal2json.git deb_packaging + git clone ${WAL2JSON_SRC_REPO_DEB} deb_packaging mv deb_packaging/debian ./ cd debian/ for file in $(ls | grep ^wal2json | grep -v wal2json.conf); do mv $file "percona-$file" done rm -rf changelog - echo "percona-wal2json (${VERSION}-${RELEASE}) unstable; urgency=low" >> changelog + echo "percona-wal2json (${WAL2JSON_VERSION}-${WAL2JSON_RELEASE}) unstable; urgency=low" >> changelog echo " * Initial Release." >> changelog echo " -- EvgeniyPatlan $(date -R)" >> changelog rm -f control rules - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/wal2json/control - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/wal2json/control.in - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/wal2json/rules - echo ${PG_MAJOR_VERSION} > pgversions + wget ${PKG_RAW_URL}/wal2json/control + wget ${PKG_RAW_URL}/wal2json/control.in + wget ${PKG_RAW_URL}/wal2json/rules + echo ${PG_MAJOR} > pgversions echo 9 > compat cd ../ rm -rf deb_packaging mkdir rpm cd rpm - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/wal2json/percona-wal2json.spec - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/wal2json/wal2json-pg${PG_MAJOR_VERSION}-makefile-pgxs.patch + wget ${PKG_RAW_URL}/wal2json/percona-wal2json.spec + wget ${PKG_RAW_URL}/wal2json/wal2json-pg${PG_MAJOR}-makefile-pgxs.patch cd ${WORKDIR} # source wal2json.properties # - tar --owner=0 --group=0 --exclude=.* -czf ${PRODUCT_FULL}.tar.gz ${PRODUCT_FULL} + tar --owner=0 --group=0 --exclude=.* -czf ${WAL2JSON_PRODUCT_FULL}.tar.gz ${WAL2JSON_PRODUCT_FULL} DATE_TIMESTAMP=$(date +%F_%H-%M-%S) - echo "UPLOAD=UPLOAD/experimental/BUILDS/${PRODUCT}/${PRODUCT_FULL}/${PSM_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> wal2json.properties + echo "UPLOAD=UPLOAD/experimental/BUILDS/${WAL2JSON_PRODUCT_FULL}/${WAL2JSON_PRODUCT_FULL}/${PSM_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> wal2json.properties mkdir $WORKDIR/source_tarball mkdir $CURDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball - cp ${PRODUCT_FULL}.tar.gz $CURDIR/source_tarball + cp ${WAL2JSON_PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball + cp ${WAL2JSON_PRODUCT_FULL}.tar.gz $CURDIR/source_tarball cd $CURDIR rm -rf percona-wal2json* return } -get_system(){ - if [ -f /etc/redhat-release ]; then - RHEL=$(rpm --eval %rhel) - ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - OS_NAME="el$RHEL" - OS="rpm" - else - ARCH=$(uname -m) - OS_NAME="$(lsb_release -sc)" - OS="deb" - fi - return -} -switch_to_vault_repo() { - sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Linux-* - sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Linux-* -} - -install_deps() { - if [ $INSTALL = 0 ] - then - echo "Dependencies will not be installed" - return; - fi - if [ $( id -u ) -ne 0 ] - then - echo "It is not possible to instal dependencies. Please run as root" - exit 1 - fi - CURPLACE=$(pwd) - - if [ "x$OS" = "xrpm" ]; then - RHEL=$(rpm --eval %rhel) - if [ x"$RHEL" = x8 ]; then - switch_to_vault_repo - fi - yum -y install wget - add_percona_yum_repo - yum clean all - if [[ "${RHEL}" -eq 10 ]]; then - yum install oracle-epel-release-el10 - else - yum -y install epel-release - fi - if [ ${RHEL} -gt 7 ]; then - dnf -y module disable postgresql - dnf config-manager --set-enabled ol${RHEL}_codeready_builder - dnf clean all - rm -r /var/cache/dnf - dnf -y upgrade - switch_to_vault_repo - - yum -y install clang-devel clang llvm-devel perl lz4-libs c-ares-devel - else - until yum -y install centos-release-scl; do - echo "waiting" - sleep 1 - done - yum -y install llvm-toolset-7-clang llvm5.0-devtoolset - source /opt/rh/devtoolset-7/enable - source /opt/rh/llvm-toolset-7/enable - fi - INSTALL_LIST="pandoc libtool libevent-devel python3-psycopg2 openssl-devel pam-devel percona-postgresql${PG_MAJOR_VERSION}-devel git rpmdevtools systemd systemd-devel wget libxml2-devel perl perl-DBD-Pg perl-Digest-SHA perl-IO-Socket-SSL perl-JSON-PP zlib-devel gcc make autoconf perl-ExtUtils-Embed" - yum -y install ${INSTALL_LIST} - yum -y install lz4 || true - - else - export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - apt-get update || true - apt-get -y install lsb-release wget gnupg2 curl - export DEBIAN=$(lsb_release -sc) - add_percona_apt_repo - apt-get update || true - INSTALL_LIST="build-essential pkg-config liblz4-dev debconf debhelper devscripts dh-exec git wget libxml-checker-perl libxml-libxml-perl libio-socket-ssl-perl libperl-dev libssl-dev libxml2-dev txt2man zlib1g-dev libpq-dev percona-postgresql-${PG_MAJOR_VERSION} percona-postgresql-common percona-postgresql-server-dev-all percona-postgresql-all libbz2-dev libzstd-dev libevent-dev libssl-dev libc-ares-dev pandoc pkg-config" - until DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install ${INSTALL_LIST}; do - sleep 1 - echo "waiting" - done - DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install libpam0g-dev || DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install libpam-dev - fi - return; -} - -get_tar(){ - TARBALL=$1 - TARFILE=$(basename $(find $WORKDIR/$TARBALL -name 'percona-wal2json*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - TARFILE=$(basename $(find $CURDIR/$TARBALL -name 'percona-wal2json*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - echo "There is no $TARBALL for build" - exit 1 - else - cp $CURDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - else - cp $WORKDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - return -} - get_deb_sources(){ param=$1 echo $param @@ -296,7 +108,7 @@ build_srpm(){ exit 1 fi cd $WORKDIR - get_tar "source_tarball" + get_tar "source_tarball" "percona-wal2json" rm -fr rpmbuild ls | grep -v tar.gz | xargs rm -rf TARFILE=$(find . -name 'percona-wal2json*.tar.gz' | sort | tail -n1) @@ -309,8 +121,8 @@ build_srpm(){ cp -av rpm/percona-wal2json.spec rpmbuild/SPECS # mv -fv ${TARFILE} ${WORKDIR}/rpmbuild/SOURCES - rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "pginstdir /usr/pgsql-${PG_MAJOR_VERSION}" --define "dist .generic" \ - --define "version ${VERSION}" rpmbuild/SPECS/percona-wal2json.spec + rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "pginstdir /usr/pgsql-$PG_MAJOR" --define "dist .generic" \ + --define "version ${WAL2JSON_VERSION}" rpmbuild/SPECS/percona-wal2json.spec mkdir -p ${WORKDIR}/srpm mkdir -p ${CURDIR}/srpm cp rpmbuild/SRPMS/*.src.rpm ${CURDIR}/srpm @@ -358,12 +170,12 @@ build_rpm(){ source /opt/rh/devtoolset-7/enable source /opt/rh/llvm-toolset-7/enable fi - export LIBPQ_DIR=/usr/pgsql-${PG_MAJOR_VERSION}/ - export LIBRARY_PATH=/usr/pgsql-${PG_MAJOR_VERSION}/lib/:/usr/pgsql-${PG_MAJOR_VERSION}/include/ + export LIBPQ_DIR=/usr/pgsql-${PG_MAJOR}/ + export LIBRARY_PATH=/usr/pgsql-${PG_MAJOR}/lib/:/usr/pgsql-${PG_MAJOR}/include/ if [[ "${RHEL}" -eq 10 ]]; then export QA_RPATHS=0x0002 fi - rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "pginstdir /usr/pgsql-${PG_MAJOR_VERSION}" --define "dist .$OS_NAME" --define "version ${VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM + rpmbuild --define "_topdir ${WORKDIR}/rpmbuild" --define "pginstdir /usr/pgsql-$PG_MAJOR" --define "dist .$OS_NAME" --define "version ${WAL2JSON_VERSION}" --rebuild rpmbuild/SRPMS/$SRC_RPM return_code=$? if [ $return_code != 0 ]; then @@ -387,7 +199,7 @@ build_source_deb(){ exit 1 fi rm -rf percona-wal2json* - get_tar "source_tarball" + get_tar "source_tarball" "percona-wal2json" rm -f *.dsc *.orig.tar.gz *.debian.tar.gz *.changes # TARFILE=$(basename $(find . -name 'percona-*wal2json*.tar.gz' | sort | tail -n1)) @@ -397,10 +209,10 @@ build_source_deb(){ BUILDDIR=${TARFILE%.tar.gz} # - mv ${TARFILE} ${PRODUCT}_${VERSION}.orig.tar.gz + mv ${TARFILE} ${WAL2JSON_PRODUCT}_${WAL2JSON_VERSION}.orig.tar.gz cd ${BUILDDIR} - dch -D unstable --force-distribution -v "${VERSION}-${RELEASE}" "Update to new wal2json version ${VERSION}" + dch -D unstable --force-distribution -v "${WAL2JSON_VERSION}-${WAL2JSON_RELEASE}" "Update to new wal2json version ${WAL2JSON_VERSION}" dpkg-buildpackage -S cd ../ mkdir -p $WORKDIR/source_deb @@ -444,8 +256,8 @@ build_deb(){ # dpkg-source -x ${DSC} # - cd ${PRODUCT}-${VERSION} - dch -m -D "${DEBIAN}" --force-distribution -v "1:${VERSION}-${RELEASE}.${DEBIAN}" 'Update distribution' + cd ${WAL2JSON_PRODUCT_FULL} + dch -m -D "${DEBIAN}" --force-distribution -v "1:${WAL2JSON_VERSION}-${WAL2JSON_RELEASE}.${DEBIAN}" 'Update distribution' unset $(locale|cut -d= -f1) dpkg-buildpackage -rfakeroot -us -uc -b mkdir -p $CURDIR/deb @@ -472,23 +284,18 @@ OS_NAME= ARCH= OS= INSTALL=0 -RPM_RELEASE=1 -DEB_RELEASE=1 REVISION=0 -BRANCH="wal2json_2_6" -REPO="https://github.com/eulerto/wal2json.git" -PRODUCT=percona-wal2json DEBUG=0 parse_arguments PICK-ARGS-FROM-ARGV "$@" -VERSION='2.6' -RELEASE='2' -PRODUCT_FULL=${PRODUCT}-${VERSION}-${RELEASE} -PG_VERSION=17.6 -PG_MAJOR_VERSION=$(echo $PG_VERSION | cut -f1 -d'.') check_workdir get_system -install_deps +#install_deps +if [ $INSTALL = 0 ]; then + echo "Dependencies will not be installed" +else + source install-deps.sh "wal2json" +fi get_sources build_srpm build_source_deb diff --git a/ydiff/ydiff_builder.sh b/ydiff/ydiff_builder.sh index c078c2e1..c2de98fe 100755 --- a/ydiff/ydiff_builder.sh +++ b/ydiff/ydiff_builder.sh @@ -1,82 +1,9 @@ #!/usr/bin/env bash - -shell_quote_string() { - echo "$1" | sed -e 's,\([^a-zA-Z0-9/_.=-]\),\\\1,g' -} - -usage () { - cat <&2 "Current directory cannot be used for building!" - exit 1 - else - if ! test -d "$WORKDIR" - then - echo >&2 "$WORKDIR is not a directory." - exit 1 - fi - fi - return -} - -switch_to_vault_repo() { - sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Linux-* - sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Linux-* -} +set -x +# Versions and other variables +source versions.sh "ydiff" +# Common functions +source common-functions.sh get_sources(){ cd "${WORKDIR}" @@ -85,163 +12,65 @@ get_sources(){ echo "Sources will not be downloaded" return 0 fi - PRODUCT=python3-ydiff - echo "PRODUCT=${PRODUCT}" > ydiff.properties - GIT_USER=$(echo ${REPO} | awk -F'/' '{print $4}') - PRODUCT_FULL=${PRODUCT}-${VERSION} - echo "PRODUCT_FULL=${PRODUCT_FULL}" >> ydiff.properties - echo "VERSION=${VERSION}" >> ydiff.properties + echo "PRODUCT=${YDIFF_PRODUCT}" > ydiff.properties + GIT_USER=$(echo ${YDIFF_SRC_REPO} | awk -F'/' '{print $4}') + echo "PRODUCT_FULL=${YDIFF_PRODUCT_FULL}" >> ydiff.properties + echo "VERSION=${YDIFF_VERSION}" >> ydiff.properties echo "BUILD_NUMBER=${BUILD_NUMBER}" >> ydiff.properties echo "BUILD_ID=${BUILD_ID}" >> ydiff.properties - git clone "$REPO" ydiff-${VERSION} + git clone "$YDIFF_SRC_REPO" ydiff-${YDIFF_VERSION} retval=$? if [ $retval != 0 ] then echo "There were some issues during repo cloning from github. Please retry one more time" exit 1 fi - cd ydiff-${VERSION} - if [ ! -z "$BRANCH" ] + cd ydiff-${YDIFF_VERSION} + if [ ! -z "$YDIFF_SRC_BRANCH" ] then git reset --hard git clean -xdf - git checkout "$BRANCH" + git checkout "$YDIFF_SRC_BRANCH" fi REVISION=$(git rev-parse --short HEAD) echo "REVISION=${REVISION}" >> ${WORKDIR}/ydiff.properties rm -fr debian rpm mkdir -p debian/source cd debian - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/ydiff/debian/rules - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/ydiff/debian/changelog - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/ydiff/debian/compat - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/ydiff/debian/control - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/ydiff/debian/copyright - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/ydiff/debian/docs - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/ydiff/debian/watch + wget ${PKG_RAW_URL}/ydiff/debian/rules + wget ${PKG_RAW_URL}/ydiff/debian/changelog + wget ${PKG_RAW_URL}/ydiff/debian/compat + wget ${PKG_RAW_URL}/ydiff/debian/control + wget ${PKG_RAW_URL}/ydiff/debian/copyright + wget ${PKG_RAW_URL}/ydiff/debian/docs + wget ${PKG_RAW_URL}/ydiff/debian/watch cd source - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/ydiff/debian/source/format + wget ${PKG_RAW_URL}/ydiff/debian/source/format cd ../../ export DEBIAN=$(lsb_release -sc) mkdir rpm cd rpm - wget https://raw.githubusercontent.com/percona/postgres-packaging/${PG_VERSION}/ydiff/rpm/ydiff.spec + wget ${PKG_RAW_URL}/ydiff/rpm/ydiff.spec cd ../ cd ${WORKDIR} - # + source ydiff.properties - # - tar --owner=0 --group=0 --exclude=.* -czf ydiff-${VERSION}.tar.gz ydiff-${VERSION} + + tar --owner=0 --group=0 --exclude=.* -czf ydiff-${YDIFF_VERSION}.tar.gz ydiff-${YDIFF_VERSION} DATE_TIMESTAMP=$(date +%F_%H-%M-%S) - echo "UPLOAD=UPLOAD/experimental/BUILDS/${PRODUCT}/${PRODUCT_FULL}/${BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> ydiff.properties + echo "UPLOAD=UPLOAD/experimental/BUILDS/${YDIFF_PRODUCT}/${YDIFF_PRODUCT_FULL}/${YDIFF_SRC_BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> ydiff.properties mkdir $WORKDIR/source_tarball mkdir $CURDIR/source_tarball - cp ydiff-${VERSION}.tar.gz $WORKDIR/source_tarball - cp ydiff-${VERSION}.tar.gz $CURDIR/source_tarball + cp ydiff-${YDIFF_VERSION}.tar.gz $WORKDIR/source_tarball + cp ydiff-${YDIFF_VERSION}.tar.gz $CURDIR/source_tarball cd $CURDIR rm -rf python3-ydiff* return } -get_system(){ - if [ -f /etc/redhat-release ]; then - RHEL=$(rpm --eval %rhel) - ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - OS_NAME="el$RHEL" - OS="rpm" - else - ARCH=$(uname -m) - OS_NAME="$(lsb_release -sc)" - OS="deb" - fi - return -} - -install_deps() { - if [ $INSTALL = 0 ] - then - echo "Dependencies will not be installed" - return; - fi - if [ $( id -u ) -ne 0 ] - then - echo "It is not possible to instal dependencies. Please run as root" - exit 1 - fi - CURPLACE=$(pwd) - - if [ "x$OS" = "xrpm" ]; then - if [ x"$RHEL" = x8 ]; then - switch_to_vault_repo - fi - yum -y install wget - yum clean all - if [[ "${RHEL}" -eq 10 ]]; then - yum install oracle-epel-release-el10 - else - yum -y install epel-release - fi - RHEL=$(rpm --eval %rhel) - if [ ${RHEL} -gt 7 ]; then - yum config-manager --set-enabled PowerTools || yum config-manager --set-enabled powertools || true - fi - if [ ${RHEL} = 7 ]; then - INSTALL_LIST="git wget rpm-build python3-devel rpmdevtools" - yum -y install ${INSTALL_LIST} - else - dnf config-manager --set-enabled ol${RHEL}_codeready_builder - dnf clean all - rm -r /var/cache/dnf - dnf -y upgrade - INSTALL_LIST="git wget rpm-build python3-devel python3-setuptools rpmdevtools" - yum -y install ${INSTALL_LIST} - fi - else - apt-get update || true - apt-get -y install lsb-release wget curl gnupg2 - export DEBIAN=$(lsb_release -sc) - export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - until apt-get -y install gnupg2; do - sleep 3 - echo "WAITING" - done - apt-get update || true - - INSTALL_LIST="build-essential debconf debhelper devscripts dh-exec git wget fakeroot devscripts python3-psycopg2 python3-setuptools libyaml-dev python3-virtualenv ruby ruby-dev rubygems curl golang dh-python libjs-mathjax pyflakes3 python3-dateutil python3-dnspython python3-etcd python3-flake8 python3-kazoo python3-mccabe python3-mock python3-prettytable python3-psutil python3-pycodestyle python3-pytest python3-pytest-cov python3-sphinx python3-sphinx-rtd-theme python3-tz python3-tzlocal sphinx-common python3-click python3-doc python3-all " - if [ "x${DEBIAN}" = "xtrixie" ]; then - INSTALL_LIST+="python3-dev dh-virtualenv python3-boto3" - elif [ "x${DEBIAN}" != "xfocal" ]; then - INSTALL_LIST+="python3-dev dh-virtualenv python3-boto" - else - INSTALL_LIST+="python2-dev python3-boto" - fi - DEBIAN_FRONTEND=noninteractive apt-get -y install ${INSTALL_LIST} - fi - return; -} - -get_tar(){ - TARBALL=$1 - TARFILE=$(basename $(find $WORKDIR/$TARBALL -name 'ydiff*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - TARFILE=$(basename $(find $CURDIR/$TARBALL -name 'ydiff*.tar.gz' | sort | tail -n1)) - if [ -z $TARFILE ] - then - echo "There is no $TARBALL for build" - exit 1 - else - cp $CURDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - else - cp $WORKDIR/$TARBALL/$TARFILE $WORKDIR/$TARFILE - fi - return -} - get_deb_sources(){ param=$1 echo $param @@ -274,22 +103,22 @@ build_srpm(){ exit 1 fi cd $WORKDIR - get_tar "source_tarball" + get_tar "source_tarball" "ydiff" rm -fr rpmbuild ls | grep -v tar.gz | xargs rm -rf TARFILE=$(find . -name 'ydiff*.tar.gz' | sort | tail -n1) SRC_DIR=${TARFILE%.tar.gz} - # + mkdir -vp rpmbuild/{SOURCES,SPECS,BUILD,SRPMS,RPMS} tar vxzf ${WORKDIR}/${TARFILE} --wildcards '*/rpm' --strip=1 - # + cp -av rpm/* rpmbuild/SOURCES cp -av rpm/ydiff.spec rpmbuild/SPECS - # + mv -fv ${TARFILE} ${WORKDIR}/rpmbuild/SOURCES sed -i 's:.rhel7:%{dist}:' ${WORKDIR}/rpmbuild/SPECS/ydiff.spec rpmbuild -bs --define "_topdir ${WORKDIR}/rpmbuild" --define "dist .generic" \ - --define "version ${VERSION}" rpmbuild/SPECS/ydiff.spec + --define "version ${YDIFF_VERSION}" rpmbuild/SPECS/ydiff.spec mkdir -p ${WORKDIR}/srpm mkdir -p ${CURDIR}/srpm cp rpmbuild/SRPMS/*.src.rpm ${CURDIR}/srpm @@ -329,11 +158,11 @@ build_rpm(){ cp $SRC_RPM rb/SRPMS/ cd rb/SRPMS/ - # + cd $WORKDIR RHEL=$(rpm --eval %rhel) ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - rpmbuild --define "_topdir ${WORKDIR}/rb" --define "dist .$OS_NAME" --define "version ${VERSION}" --rebuild rb/SRPMS/$SRC_RPM + rpmbuild --define "_topdir ${WORKDIR}/rb" --define "dist .$OS_NAME" --define "version ${YDIFF_VERSION}" --rebuild rb/SRPMS/$SRC_RPM return_code=$? if [ $return_code != 0 ]; then @@ -357,21 +186,21 @@ build_source_deb(){ exit 1 fi rm -rf python3-ydiff* - get_tar "source_tarball" + get_tar "source_tarball" "ydiff" rm -f *.dsc *.orig.tar.gz *.debian.tar.gz *.changes - # + TARFILE=$(basename $(find . -name 'ydiff*.tar.gz' | sort | tail -n1)) DEBIAN=$(lsb_release -sc) ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') tar zxf ${TARFILE} - rm -f ydiff-${VERSION}/.travis.yml + rm -f ydiff-${YDIFF_VERSION}/.travis.yml BUILDDIR=${TARFILE%.tar.gz} - # + - mv ${TARFILE} ydiff_${VERSION}.orig.tar.gz + mv ${TARFILE} ydiff_${YDIFF_VERSION}.orig.tar.gz cd ${BUILDDIR} - dch -D unstable --force-distribution -v "${VERSION}-${RELEASE}" "Update to new ydiff version ${VERSION}" + dch -D unstable --force-distribution -v "${YDIFF_VERSION}-${YDIFF_RELEASE}" "Update to new ydiff version ${YDIFF_VERSION}" dpkg-buildpackage -S || true cd ../ mkdir -p $WORKDIR/source_deb @@ -403,20 +232,20 @@ build_deb(){ done cd $WORKDIR rm -fv *.deb - # + export DEBIAN=$(lsb_release -sc) export ARCH=$(echo $(uname -m) | sed -e 's:i686:i386:g') - # + echo "DEBIAN=${DEBIAN}" >> ydiff.properties echo "ARCH=${ARCH}" >> ydiff.properties - # + DSC=$(basename $(find . -name '*.dsc' | sort | tail -n1)) - # + dpkg-source -x ${DSC} - # - cd ydiff-${VERSION} - dch -m -D "${DEBIAN}" --force-distribution -v "1:${VERSION}-${RELEASE}.${DEBIAN}" 'Update distribution' + + cd ydiff-${YDIFF_VERSION} + dch -m -D "${DEBIAN}" --force-distribution -v "1:${YDIFF_VERSION}-${YDIFF_RELEASE}.${DEBIAN}" 'Update distribution' unset $(locale|cut -d= -f1) dpkg-buildpackage -rfakeroot -us -uc -b mkdir -p $CURDIR/deb @@ -443,23 +272,19 @@ OS_NAME= ARCH= OS= INSTALL=0 -RPM_RELEASE=1 -DEB_RELEASE=1 REVISION=0 -BRANCH="1.2" -REPO="https://github.com/ymattw/ydiff.git" -PRODUCT=python3-ydiff DEBUG=0 parse_arguments PICK-ARGS-FROM-ARGV "$@" -VERSION='1.2' -RELEASE='2' -PG_VERSION=17.6 -PRODUCT_FULL=${PRODUCT}-${VERSION}-${RELEASE} -PG_MAJOR_VERSION=$(echo ${PG_VERSION} | cut -f1 -d'.') + check_workdir get_system -install_deps +#install_deps +if [ $INSTALL = 0 ]; then + echo "Dependencies will not be installed" +else + source install-deps.sh "ydiff" +fi get_sources build_srpm build_source_deb