1
0
mirror of https://github.com/postgrespro/pg_probackup.git synced 2025-12-26 02:28:16 +02:00
Files

149 lines
5.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# Copyright Notice:
# © (C) Postgres Professional 2015-2016 http://www.postgrespro.ru/
# Distributed under Apache License 2.0
# Распространяется по лицензии Apache 2.0
set -xe
set -o pipefail
# fix https://github.com/moby/moby/issues/23137
ulimit -n 1024
# There is no std/ent packages for PG 9.5
if [[ ${PG_VERSION} == '9.5' ]] && [[ ${PBK_EDITION} != '' ]] ; then
exit 0
fi
# PACKAGES NEEDED
apt-get --allow-releaseinfo-change update -y && apt-get install -y git wget bzip2 devscripts equivs
# Prepare
export DEBIAN_FRONTEND=noninteractive
echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
if [ ${CODENAME} == 'jessie' ]; then
printf "deb http://archive.debian.org/debian/ jessie main\ndeb-src http://archive.debian.org/debian/ jessie main\ndeb http://security.debian.org jessie/updates main\ndeb-src http://security.debian.org jessie/updates main" > /etc/apt/sources.list
fi
apt-get -qq update -y
# download PKG_URL if PKG_HASH is omitted
mkdir /root/build
cd /root/build
# clone pbk repo
git clone $PKG_URL ${PKG_NAME}_${PKG_VERSION}
cd ${PKG_NAME}_${PKG_VERSION}
git checkout ${PKG_HASH}
cd ..
PG_TOC=$(echo ${PG_VERSION} | sed 's|\.||g')
# Download PostgreSQL source if building for vanilla
if [[ ${PBK_EDITION} == '' ]] ; then
wget -q http://ftp.postgresql.org/pub/source/v${PG_FULL_VERSION}/postgresql-${PG_FULL_VERSION}.tar.bz2
fi
cd /root/build/${PKG_NAME}_${PKG_VERSION}
cp -av /app/in/specs/deb/pg_probackup/debian ./
if [[ ${PBK_EDITION} == '' ]] ; then
sed -i "s/@PKG_NAME@/${PKG_NAME}/g" debian/changelog
sed -i "s/@PKG_VERSION@/${PKG_VERSION}/g" debian/changelog
sed -i "s/@PKG_RELEASE@/${PKG_RELEASE}/g" debian/changelog
sed -i "s/@PKG_HASH@/${PKG_HASH}/g" debian/changelog
sed -i "s/@CODENAME@/${CODENAME}/g" debian/changelog
sed -i "s/@PKG_NAME@/${PKG_NAME}/g" debian/control
sed -i "s/@PG_VERSION@/${PG_VERSION}/g" debian/control
sed -i "s/@PG_VERSION@/${PG_VERSION}/" debian/pg_probackup.install
mv debian/pg_probackup.install debian/${PKG_NAME}.install
sed -i "s/@PKG_NAME@/${PKG_NAME}/g" debian/rules
sed -i "s/@PG_TOC@/${PG_TOC}/g" debian/rules
sed -i "s/@PG_VERSION@/${PG_VERSION}/g" debian/rules
sed -i "s/@PG_FULL_VERSION@/${PG_FULL_VERSION}/g" debian/rules
sed -i "s|@PREFIX@|/stump|g" debian/rules
else
sed -i "s/@PKG_NAME@/pg-probackup-${PBK_EDITION}-${PG_VERSION}/g" debian/changelog
sed -i "s/@PKG_VERSION@/${PKG_VERSION}/g" debian/changelog
sed -i "s/@PKG_RELEASE@/${PKG_RELEASE}/g" debian/changelog
sed -i "s/@PKG_HASH@/${PKG_HASH}/g" debian/changelog
sed -i "s/@CODENAME@/${CODENAME}/g" debian/changelog
sed -i "s/@PKG_NAME@/pg-probackup-${PBK_EDITION}-${PG_VERSION}/g" debian/control
sed -i "s/pg-probackup-@PG_VERSION@/pg-probackup-${PBK_EDITION}-${PG_VERSION}/g" debian/control
sed -i "s/@PG_VERSION@/${PG_VERSION}/g" debian/control
sed -i "s/PostgreSQL/PostgresPro ${PBK_EDITION_FULL}/g" debian/control
sed -i "s/pg_probackup-@PG_VERSION@/pg_probackup-${PBK_EDITION}-${PG_VERSION}/" debian/pg_probackup.install
mv debian/pg_probackup.install debian/pg-probackup-${PBK_EDITION}-${PG_VERSION}.install
sed -i "s/@PKG_NAME@/pg-probackup-${PBK_EDITION}-${PG_VERSION}/g" debian/rules
sed -i "s/@PG_TOC@/${PG_TOC}/g" debian/rules
sed -i "s/pg_probackup-@PG_VERSION@/pg_probackup-${PBK_EDITION}-${PG_VERSION}/g" debian/rules
sed -i "s/postgresql-@PG_FULL_VERSION@/postgrespro-${PBK_EDITION}-${PG_FULL_VERSION}/g" debian/rules
if [ ${PG_VERSION} == '9.6' ]; then
sed -i "s|@PREFIX@|/stump|g" debian/rules
else
sed -i "s|@PREFIX@|/opt/pgpro/${PBK_EDITION}-${PG_VERSION}|g" debian/rules
fi
fi
# Build dependencies
mk-build-deps --install --remove --tool 'apt-get --no-install-recommends --yes' debian/control
rm -rf ./*.deb
# Pack source to orig.tar.gz
mkdir -p /root/build/dsc
if [[ ${PBK_EDITION} == '' ]] ; then
mv /root/build/postgresql-${PG_FULL_VERSION}.tar.bz2 \
/root/build/dsc/${PKG_NAME}_${PKG_VERSION}.orig-postgresql${PG_TOC}.tar.bz2
cd /root/build/${PKG_NAME}_${PKG_VERSION}
tar -xf /root/build/dsc/${PKG_NAME}_${PKG_VERSION}.orig-postgresql${PG_TOC}.tar.bz2
cd /root/build
tar -czf ${PKG_NAME}_${PKG_VERSION}.orig.tar.gz \
${PKG_NAME}_${PKG_VERSION}
mv /root/build/${PKG_NAME}_${PKG_VERSION}.orig.tar.gz /root/build/dsc
cd /root/build/${PKG_NAME}_${PKG_VERSION}
tar -xf /root/build/dsc/${PKG_NAME}_${PKG_VERSION}.orig-postgresql${PG_TOC}.tar.bz2
else
tar -xf /app/in/tarballs/pgpro.tar.bz2 -C /root/build/dsc/
cd /root/build/dsc/pgpro
PGPRO_TOC=$(echo ${PG_FULL_VERSION} | sed 's|\.|_|g')
if [[ ${PBK_EDITION} == 'std' ]] ; then
git checkout "PGPRO${PGPRO_TOC}_1"
else
git checkout "PGPROEE${PGPRO_TOC}_1"
fi
mv /root/build/dsc/pgpro /root/build/${PKG_NAME}_${PKG_VERSION}/postgrespro-${PBK_EDITION}-${PG_FULL_VERSION}
fi
# BUILD: SOURCE PKG
if [[ ${PBK_EDITION} == '' ]] ; then
cd /root/build/dsc
dpkg-source -b /root/build/${PKG_NAME}_${PKG_VERSION}
fi
# BUILD: DEB PKG
cd /root/build/${PKG_NAME}_${PKG_VERSION}
dpkg-buildpackage -b #&> /app/out/build.log
# COPY ARTEFACTS
rm -rf /app/out/*
cd /root/build
cp -v *.deb /app/out
cp -v *.changes /app/out
if [[ ${PBK_EDITION} == '' ]] ; then
cp -arv dsc /app/out
fi