Add support for commitfest testing setup
Update / fix README
This commit is contained in:
parent
a82a004366
commit
b2627558b7
2 changed files with 132 additions and 17 deletions
22
README.md
22
README.md
|
@ -18,7 +18,7 @@
|
||||||
| PG_INST_NAME | <PG_DEV_NAME>-INST | Name of the install folder |
|
| PG_INST_NAME | <PG_DEV_NAME>-INST | Name of the install folder |
|
||||||
| PG_ENV_CFLAGS | | Extra CFLAGS |
|
| PG_ENV_CFLAGS | | Extra CFLAGS |
|
||||||
|
|
||||||
PostgreSQL extra configs shall be store in `${GIT_DIR}/pgconfigs/` in this naming convention:
|
PostgreSQL extra configs shall be stored in `${GIT_DIR}/pgconfigs/` in this naming convention:
|
||||||
```
|
```
|
||||||
pg${PGV}.conf
|
pg${PGV}.conf
|
||||||
pg${PGV}-<Cluster #>.conf
|
pg${PGV}-<Cluster #>.conf
|
||||||
|
@ -28,7 +28,7 @@ pg${PGV}-<Cluster #>.conf
|
||||||
|
|
||||||
| Config | Defaults | Description |
|
| Config | Defaults | Description |
|
||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
| PG_ENV_DEBUG | | Set this var to non empoty to print some debug info |
|
| PG_ENV_DEBUG | | Set this var to non empty to print some debug info |
|
||||||
|
|
||||||
## Setting up environment
|
## Setting up environment
|
||||||
|
|
||||||
|
@ -47,7 +47,23 @@ Note: Max 1 - 5 Clusters are allowed.
|
||||||
- Clone
|
- Clone
|
||||||
- Symlink `ln -s <Clone Dir>/pg-env ~/bin/pg-env`
|
- Symlink `ln -s <Clone Dir>/pg-env ~/bin/pg-env`
|
||||||
|
|
||||||
## Activate PostgreSQL Developmnent ENvironment
|
## Setup commitfest Patch testing
|
||||||
|
|
||||||
|
Visit https://commitfest.postgresql.org/ and click on active commitfest and from the URL record CommitFest ID
|
||||||
|
Now click on a commitfest entry and from the URL record commitfest Entry ID
|
||||||
|
Ex: https://commitfest.postgresql.org/48/4962/ commitfest IS is 48 and Entry ID is 4962
|
||||||
|
|
||||||
|
chdir to folder where PostgreSQL source is cloned
|
||||||
|
|
||||||
|
For testing against development HEAD
|
||||||
|
|
||||||
|
`pg-env commitfest 48 4962`
|
||||||
|
|
||||||
|
For testing against a stable branch ex: release 12
|
||||||
|
|
||||||
|
`pg-env commitfest 48 4962 REL_12_STABLE`
|
||||||
|
|
||||||
|
## Activate PostgreSQL Development Environment
|
||||||
`source ~/bin/pg-env`
|
`source ~/bin/pg-env`
|
||||||
|
|
||||||
## Run distclean on PostgreSQL source
|
## Run distclean on PostgreSQL source
|
||||||
|
|
127
pg-env
127
pg-env
|
@ -11,10 +11,62 @@
|
||||||
# PG_INST_NAME
|
# PG_INST_NAME
|
||||||
#
|
#
|
||||||
|
|
||||||
|
create_pgenv() {
|
||||||
|
cat >../${2}/.pg-env <<EOF
|
||||||
|
export PGV=${1}
|
||||||
|
PG_DEV_NAME=${2}
|
||||||
|
export SKIP_MESON_BUILD=1
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
commitfest() {
|
||||||
|
shift
|
||||||
|
FestID=$1
|
||||||
|
EntryID=$2
|
||||||
|
echo "CommitFest Testing https://commitfest.postgresql.org/$FestID/$EntryID"
|
||||||
|
EXIT_VALUE=0
|
||||||
|
if [ $# -ne 2 ] && [ $# -ne 3 ]; then
|
||||||
|
EXIT_VALUE=1
|
||||||
|
echo "Usage: $0 commitfest CommitFestID EntryID"
|
||||||
|
echo "or"
|
||||||
|
echo "Usage: $0 commitfest CommitFestID EntryID <PG_RELEASED_BRANCH_NAME>"
|
||||||
|
fi
|
||||||
|
if [ ! -f src/include/postgres.h ] || [ ! -d .git ] ; then
|
||||||
|
EXIT_VALUE=1
|
||||||
|
echo "Run this command from PostgreSQL git checkout"
|
||||||
|
fi
|
||||||
|
if [ $# -eq 2 ]; then
|
||||||
|
IsBranchPreset=$( git worktree list | grep '\[CF_${FestID}_${EntryID}\]' )
|
||||||
|
else
|
||||||
|
IsBranchPreset=$( git worktree list | grep '\[${3}_CF_${FestID}_${EntryID}\]' )
|
||||||
|
fi
|
||||||
|
if [ ! -z "${IsBranchPreset}" ]; then
|
||||||
|
EXIT_VALUE=1
|
||||||
|
echo "Worktree already present, to remove it use following"
|
||||||
|
echo "git worktree remove --force <worktree dir>"
|
||||||
|
echo "git branch -d <branch name>"
|
||||||
|
fi
|
||||||
|
if [ $EXIT_VALUE -eq 0 ]; then
|
||||||
|
if [ $# -eq 2 ]; then
|
||||||
|
git worktree add --track -b CF_${FestID}_${EntryID} ../postgresql-CF_${FestID}_${EntryID}
|
||||||
|
create_pgenv HEAD postgresql-CF_${FestID}_${EntryID}
|
||||||
|
else
|
||||||
|
git worktree add --track -b CF_${FestID}_${EntryID}_${3} ../postgresql-CF_${FestID}_${EntryID}_${3} origin/$3
|
||||||
|
create_pgenv $(grep PACKAGE_VERSION ../postgresql-CF_${FestID}_${EntryID}_${3}/configure | grep -o '[0-9]*' | head -1) postgresql-CF_${FestID}_${EntryID}_${3}
|
||||||
|
fi
|
||||||
|
EXIT_VALUE=$?
|
||||||
|
fi
|
||||||
|
exit $EXIT_VALUE
|
||||||
|
}
|
||||||
|
|
||||||
if [ "$0" = "$BASH_SOURCE" ]; then
|
if [ "$0" = "$BASH_SOURCE" ]; then
|
||||||
|
if [ "$1" = "commitfest" ]; then
|
||||||
|
commitfest $@
|
||||||
|
fi
|
||||||
echo "source $0"
|
echo "source $0"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
SAVED_PGV=${PGV}
|
||||||
if [[ -f ~/.pg-env ]]; then
|
if [[ -f ~/.pg-env ]]; then
|
||||||
[ ! -z "$PG_ENV_DEBUG" ] && echo "Loading ~/.pg-env"
|
[ ! -z "$PG_ENV_DEBUG" ] && echo "Loading ~/.pg-env"
|
||||||
source ~/.pg-env
|
source ~/.pg-env
|
||||||
|
@ -62,7 +114,7 @@ else
|
||||||
echo "mkdir -p ${PG_DEV_INST}"
|
echo "mkdir -p ${PG_DEV_INST}"
|
||||||
else
|
else
|
||||||
if [ -f ${PG_DEV_SRC}/meson.build ]; then
|
if [ -f ${PG_DEV_SRC}/meson.build ]; then
|
||||||
export MESON_BUILD_PRESENT=1
|
[ -z "$SKIP_MESON_BUILD" ] && export MESON_BUILD_PRESENT=1
|
||||||
fi
|
fi
|
||||||
export PG_ENV_VENV=1
|
export PG_ENV_VENV=1
|
||||||
export SAVED_LD_LIBRARY_PATH=${LD_LIBRARY_PATH}
|
export SAVED_LD_LIBRARY_PATH=${LD_LIBRARY_PATH}
|
||||||
|
@ -79,7 +131,7 @@ else
|
||||||
export PGDATABASE=postgres
|
export PGDATABASE=postgres
|
||||||
export LD_LIBRARY_PATH=${PG_DEV_INST}/lib
|
export LD_LIBRARY_PATH=${PG_DEV_INST}/lib
|
||||||
export PATH=${PG_BIN}:${SAVED_PATH}
|
export PATH=${PG_BIN}:${SAVED_PATH}
|
||||||
if [[ "$PGV" =~ '^[0-9]+$' ]]; then
|
if [[ $PGV =~ ^[0-9]+$ ]]; then
|
||||||
export PGPORT=54${PGV}
|
export PGPORT=54${PGV}
|
||||||
else
|
else
|
||||||
export PGPORT=5432
|
export PGPORT=5432
|
||||||
|
@ -87,7 +139,9 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
distclean() {
|
distclean() {
|
||||||
|
resetinst "$@"
|
||||||
pushd ${PG_DEV_SRC}
|
pushd ${PG_DEV_SRC}
|
||||||
|
make clean
|
||||||
make distclean
|
make distclean
|
||||||
if [ -z ${MESON_BUILD_PRESENT} ]; then
|
if [ -z ${MESON_BUILD_PRESENT} ]; then
|
||||||
(cd build; ninja clean)
|
(cd build; ninja clean)
|
||||||
|
@ -98,9 +152,9 @@ distclean() {
|
||||||
compile() {
|
compile() {
|
||||||
pushd ${PG_DEV_SRC}
|
pushd ${PG_DEV_SRC}
|
||||||
if [ -z ${MESON_BUILD_PRESENT} ]; then
|
if [ -z ${MESON_BUILD_PRESENT} ]; then
|
||||||
./configure --prefix=${PG_DEV_INST} --enable-debug --with-pgport=${PGPORT} --with-lz4 --with-ssl=openssl --with-python --with-perl --enable-debug --enable-cassert --enable-tap-tests CFLAGS="-ggdb -O0 -g3 -ggdb3 -fno-omit-frame-pointer ${PG_ENV_CFLAGS}"
|
time ./configure --prefix=${PG_DEV_INST} --enable-debug --with-pgport=${PGPORT} --with-lz4 --with-ssl=openssl --with-python --with-perl --enable-debug --enable-cassert --enable-tap-tests CFLAGS="-ggdb -O0 -g3 -ggdb3 -fno-omit-frame-pointer ${PG_ENV_CFLAGS}" | tee /tmp/pg_compile.log
|
||||||
else
|
else
|
||||||
meson setup build --prefix=${PG_DEV_INST} -Dpgport=${PGPORT} -Dlz4=enabled -Dssl=openssl -Dplpython=enabled -Dplperl=enabled -Ddebug=true -Dcassert=true -Dtap_tests=enabled -Dc_args="-ggdb -O0 -g3 -ggdb3 -fno-omit-frame-pointer ${PG_ENV_CFLAGS}"
|
time meson setup build --prefix=${PG_DEV_INST} -Dpgport=${PGPORT} -Dlz4=enabled -Dssl=openssl -Dplpython=enabled -Dplperl=enabled -Ddebug=true -Dcassert=true -Dtap_tests=enabled -Dc_args="-ggdb -O0 -g3 -ggdb3 -fno-omit-frame-pointer ${PG_ENV_CFLAGS}" | tee /tmp/pg_compile.log
|
||||||
fi
|
fi
|
||||||
if [ $? -gt 0 ]; then
|
if [ $? -gt 0 ]; then
|
||||||
if [ -z ${MESON_BUILD_PRESENT} ]; then
|
if [ -z ${MESON_BUILD_PRESENT} ]; then
|
||||||
|
@ -110,9 +164,9 @@ compile() {
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if [ -z ${MESON_BUILD_PRESENT} ]; then
|
if [ -z ${MESON_BUILD_PRESENT} ]; then
|
||||||
make install
|
make install | tee -a /tmp/pg_compile.log
|
||||||
else
|
else
|
||||||
(cd build; ninja -v install)
|
(cd build; ninja -v install) | tee -a /tmp/pg_compile.log
|
||||||
fi
|
fi
|
||||||
if [ $? -gt 0 ]; then
|
if [ $? -gt 0 ]; then
|
||||||
echo "make install failed"
|
echo "make install failed"
|
||||||
|
@ -124,7 +178,7 @@ compile() {
|
||||||
compile_contrib() {
|
compile_contrib() {
|
||||||
if [ -z ${MESON_BUILD_PRESENT} ]; then
|
if [ -z ${MESON_BUILD_PRESENT} ]; then
|
||||||
pushd ${PG_DEV_SRC}/contrib
|
pushd ${PG_DEV_SRC}/contrib
|
||||||
make install
|
time make install | tee -a /tmp/pg_compile.log
|
||||||
if [ $? -gt 0 ]; then
|
if [ $? -gt 0 ]; then
|
||||||
echo "make install failed"
|
echo "make install failed"
|
||||||
fi
|
fi
|
||||||
|
@ -136,8 +190,9 @@ startdb(){
|
||||||
if [ -z "$1" ]; then
|
if [ -z "$1" ]; then
|
||||||
[ -d "${PGDATA}" ] && pg_ctl start
|
[ -d "${PGDATA}" ] && pg_ctl start
|
||||||
else
|
else
|
||||||
for NodeN in "$@"
|
for NodeN in $@
|
||||||
do
|
do
|
||||||
|
echo "Starting pg_ctl start -D ${PGDATA}-${NodeN}"
|
||||||
[ -d "${PGDATA}-${NodeN}" ] && pg_ctl start -D ${PGDATA}-${NodeN}
|
[ -d "${PGDATA}-${NodeN}" ] && pg_ctl start -D ${PGDATA}-${NodeN}
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
@ -146,7 +201,7 @@ stopdb(){
|
||||||
if [ -z "$1" ]; then
|
if [ -z "$1" ]; then
|
||||||
[ -d "${PGDATA}" ] && pg_ctl stop
|
[ -d "${PGDATA}" ] && pg_ctl stop
|
||||||
else
|
else
|
||||||
for NodeN in "$@"
|
for NodeN in $@
|
||||||
do
|
do
|
||||||
[ -d "${PGDATA}-${NodeN}" ] && pg_ctl stop -D ${PGDATA}-${NodeN}
|
[ -d "${PGDATA}-${NodeN}" ] && pg_ctl stop -D ${PGDATA}-${NodeN}
|
||||||
done
|
done
|
||||||
|
@ -163,21 +218,52 @@ cleandb(){
|
||||||
[ -n "$ZSH_VERSION" ] && setopt localoptions rmstarsilent
|
[ -n "$ZSH_VERSION" ] && setopt localoptions rmstarsilent
|
||||||
rm -rf $PGDATA/*
|
rm -rf $PGDATA/*
|
||||||
else
|
else
|
||||||
for NodeN in "$@"
|
for NodeN in $@
|
||||||
do
|
do
|
||||||
[ -n "$ZSH_VERSION" ] && setopt localoptions rmstarsilent
|
[ -n "$ZSH_VERSION" ] && setopt localoptions rmstarsilent
|
||||||
rm -rf ${PGDATA}-${NodeN}/*
|
rm -rf ${PGDATA}-${NodeN}/*
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
### TODO ###
|
||||||
|
pexec(){
|
||||||
|
args=""
|
||||||
|
while [ $# -gt 0 ]
|
||||||
|
do
|
||||||
|
case "$1" in
|
||||||
|
--PEXEC_CMD=*|PEXEC_CMD=*)
|
||||||
|
PEXEC_CMD=${1#*=}
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
args="$args $1"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
set -- "$@" "$args"
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
echo psql -U ${USER} ${PEXEC_CMD}
|
||||||
|
psql -U ${USER} ${PEXEC_CMD}
|
||||||
|
else
|
||||||
|
for NodeN in $@
|
||||||
|
do
|
||||||
|
cmd="psql -U ${USER} -p ${NodeN}${PGPORT} ${PEXEC_CMD}"
|
||||||
|
echo $cmd
|
||||||
|
$cmd
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
setupdb(){
|
setupdb(){
|
||||||
if [ -z "$1" ]; then
|
if [ -z "$1" ]; then
|
||||||
initdb --data-checksums --username=sharyogi
|
initdb --data-checksums --username=${USER}
|
||||||
echo "include = '${GIT_DIR}/pgconfigs/pg${PGV}.conf'" >> ${PGDATA}-${NodeN}/postgresql.conf
|
echo "include = '${GIT_DIR}/pgconfigs/pg${PGV}.conf'" >> ${PGDATA}-${NodeN}/postgresql.conf
|
||||||
else
|
else
|
||||||
for NodeN in "$@"
|
for NodeN in $@
|
||||||
do
|
do
|
||||||
initdb --data-checksums --username=sharyogi -D ${PGDATA}-${NodeN}
|
initdb --data-checksums --username=${USER} -D ${PGDATA}-${NodeN}
|
||||||
echo "include = '${GIT_DIR}/pgconfigs/pg${PGV}-${NodeN}.conf'" >> ${PGDATA}-${NodeN}/postgresql.conf
|
echo "include = '${GIT_DIR}/pgconfigs/pg${PGV}-${NodeN}.conf'" >> ${PGDATA}-${NodeN}/postgresql.conf
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
@ -190,10 +276,13 @@ resetdb() {
|
||||||
startdb "$@"
|
startdb "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
resetall() {
|
resetinst() {
|
||||||
stopdb "$@"
|
stopdb "$@"
|
||||||
[ -n "$ZSH_VERSION" ] && setopt localoptions rmstarsilent
|
[ -n "$ZSH_VERSION" ] && setopt localoptions rmstarsilent
|
||||||
rm -rf $PG_DEV_INST/*
|
rm -rf $PG_DEV_INST/*
|
||||||
|
}
|
||||||
|
|
||||||
|
resetall() {
|
||||||
distclean
|
distclean
|
||||||
compile
|
compile
|
||||||
compile_contrib
|
compile_contrib
|
||||||
|
@ -228,6 +317,11 @@ deactivate() {
|
||||||
else
|
else
|
||||||
unset PGDATABASE
|
unset PGDATABASE
|
||||||
fi
|
fi
|
||||||
|
if [ ! -z "$SAVED_PGV" ]; then
|
||||||
|
export PGV=${SAVED_PGV}
|
||||||
|
else
|
||||||
|
unset PGV
|
||||||
|
fi
|
||||||
unset -f distclean
|
unset -f distclean
|
||||||
unset -f compile
|
unset -f compile
|
||||||
unset -f compile_contrib
|
unset -f compile_contrib
|
||||||
|
@ -239,7 +333,9 @@ deactivate() {
|
||||||
unset -f resetdb
|
unset -f resetdb
|
||||||
unset -f resetall
|
unset -f resetall
|
||||||
unset -f deactivate
|
unset -f deactivate
|
||||||
|
unset -f pexec
|
||||||
unset MESON_BUILD_PRESENT
|
unset MESON_BUILD_PRESENT
|
||||||
|
unset PG_INST_NAME
|
||||||
unset PG_DEV_SRC
|
unset PG_DEV_SRC
|
||||||
unset PG_DEV_INST
|
unset PG_DEV_INST
|
||||||
unset PG_BIN
|
unset PG_BIN
|
||||||
|
@ -251,6 +347,9 @@ deactivate() {
|
||||||
unset SAVED_PS1
|
unset SAVED_PS1
|
||||||
unset SAVED_VIRTUAL_ENV
|
unset SAVED_VIRTUAL_ENV
|
||||||
unset PG_ENV_VENV
|
unset PG_ENV_VENV
|
||||||
|
unset SAVED_PGV
|
||||||
|
unset PG_DEV_NAME
|
||||||
|
unset GIT_DIR
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
echo "Already in pg-env VENV"
|
echo "Already in pg-env VENV"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue