From e6237cc81aa88c15b0534977deebe0b1d19c3c66 Mon Sep 17 00:00:00 2001 From: Ian Barwick Date: Tue, 18 Apr 2017 11:26:51 +0900 Subject: [PATCH] Makefiles and placeholder code --- .gitignore | 4 +- Makefile.global.in | 27 + Makefile.in | 51 ++ configure | 1187 +++++++++++++++++++++++++++++++++++++++++++- configure.in | 7 +- repmgr | Bin 0 -> 88176 bytes repmgr-client.c | 21 + repmgr.c | 46 ++ repmgr.control | 7 + repmgr.h | 16 + repmgr_version.h | 6 + repmgrd.c | 16 + 12 files changed, 1380 insertions(+), 8 deletions(-) create mode 100644 Makefile.global.in create mode 100644 Makefile.in create mode 100755 repmgr create mode 100644 repmgr-client.c create mode 100644 repmgr.c create mode 100644 repmgr.control create mode 100644 repmgr.h create mode 100644 repmgr_version.h create mode 100644 repmgrd.c diff --git a/.gitignore b/.gitignore index 2fd22d0a..5a93f1d8 100644 --- a/.gitignore +++ b/.gitignore @@ -31,9 +31,9 @@ lib*.pc # configure output /Makefile -/run_tests +/Makefile.global /config.log /config.status # other -/.lineno \ No newline at end of file +/.lineno diff --git a/Makefile.global.in b/Makefile.global.in new file mode 100644 index 00000000..49904cb6 --- /dev/null +++ b/Makefile.global.in @@ -0,0 +1,27 @@ +# -*-makefile-*- +# Makefile.global.in +# @configure_input@ + +# Can only be built using pgxs +USE_PGXS=1 + +repmgr_abs_srcdir := @abs_srcdir@ +PG_CONFIG :=@PG_CONFIG@ +PGXS := $(shell $(PG_CONFIG) --pgxs) + +vpath_build=@vpath_build@ +ifeq ($(vpath_build),yes) + VPATH := $(repmgr_abs_srcdir)/$(repmgr_subdir) + USE_VPATH :=$(VPATH) +endif +GIT_WORK_TREE=${repmgr_abs_srcdir} +GIT_DIR=${repmgr_abs_srcdir}/.git +export GIT_DIR +export GIT_WORK_TREE + +include $(PGXS) + +-include ${repmgr_abs_srcdir}/Makefile.custom + +REPMGR_VERSION=$(shell awk '/^\#define REPMGR_VERSION / { print $3; }' ${repmgr_abs_srcdir}/repmgr_version.h.in | cut -d '"' -f 2) + diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 00000000..f0f986ce --- /dev/null +++ b/Makefile.in @@ -0,0 +1,51 @@ +# -*-makefile-*- +# Makefile.in +# @configure_input@ + +repmgr_subdir = . +repmgr_top_builddir = . + +MODULE_big = repmgr + +EXTENSION = repmgr + +# Hacky workaround to install the binaries +SCRIPTS_built = repmgr + + +# When in development add -Werror +PG_CPPFLAGS = -std=gnu89 -I$(libpq_srcdir) -Wall -Wmissing-prototypes -Wmissing-declarations $(EXTRA_CFLAGS) +SHLIB_LINK = $(libpq) + +OBJS = \ + repmgr.o + +include Makefile.global + +$(info Building against PostgreSQL $(MAJORVERSION)) + +REPMGR_CLIENT_OBJS = repmgr-client.o + +repmgr: $(REPMGR_CLIENT_OBJS) + $(CC) $(CFLAGS) $(REPMGR_CLIENT_OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) + + +# Ensure Makefiles are up-to-date (should we move this to Makefile.global?) +Makefile: Makefile.in config.status configure + ./config.status $@ + +Makefile.global: Makefile.global.in config.status configure + ./config.status $@ + +clean: additional-clean + +maintainer-clean: additional-maintainer-clean + +additional-clean: + rm -f repmgr-client.o + +maintainer-additional-clean: clean + rm -f configure + rm -f config.status config.log + rm -f Makefile + @rm -rf autom4te.cache/ diff --git a/configure b/configure index 2a791e80..c7b35565 100755 --- a/configure +++ b/configure @@ -11,7 +11,7 @@ # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. # -# Copyright (c) 2017-2017, 2ndQuadrant, Inc. +# Copyright (c) 2010-2017, 2ndQuadrant Ltd. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## @@ -587,7 +587,10 @@ PACKAGE_STRING='repmgr4 4.0' PACKAGE_BUGREPORT='pgsql-bugs@postgresql.org' PACKAGE_URL='https://2ndquadrant.com/en/resources/repmgr/' -ac_subst_vars='SED +ac_subst_vars='LTLIBOBJS +LIBOBJS +vpath_build +SED PG_CONFIG target_alias host_alias @@ -1241,7 +1244,7 @@ if test -n "$ac_init_help"; then cat <<\_ACEOF Some influential environment variables: - PG_CONFIG Location to find pg_config for target PostgresQL (default PATH) + PG_CONFIG Location to find pg_config for target PostgreSQL (default PATH) Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -1317,7 +1320,7 @@ Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. -Copyright (c) 2017-2017, 2ndQuadrant, Inc. +Copyright (c) 2010-2017, 2ndQuadrant Ltd. _ACEOF exit fi @@ -1811,8 +1814,1182 @@ version_num_int=$(echo "$version_num"| $SED -e 's/^\([0-9]*\)\.\([0-9]*\)$/\1\2/') if test "$version_num_int" -lt '93'; then - as_fn_error $? "repmgr is not compatible with detected postgres version: $version_num" "$LINENO" 5 + as_fn_error $? "repmgr is not compatible with detected PostgreSQL version: $version_num" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: building against PostgreSQL $version_num" >&5 $as_echo "$as_me: building against PostgreSQL $version_num" >&6;} fi + +# add includedir to prerequisites, so tests for headers can succeed +CPPFLAGS="-I$($PG_CONFIG --includedir-server) $CFLAGS" + +# check whether we're building inside the source tree. +if test "$srcdir" -ef '.' ; then + vpath_build=no +else + vpath_build=yes +fi + + +ac_config_files="$ac_config_files Makefile" + +ac_config_files="$ac_config_files Makefile.global" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +ac_script=' +:mline +/\\$/{ + N + s,\\\n,, + b mline +} +t clear +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g +t quote +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g +t quote +b any +:quote +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` + + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by repmgr4 $as_me 4.0, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Report bugs to . +repmgr4 home page: ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +repmgr4 config.status 4.0 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "Makefile.global") CONFIG_FILES="$CONFIG_FILES Makefile.global" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + + +eval set X " :F $CONFIG_FILES " +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + + + + esac + +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + diff --git a/configure.in b/configure.in index 636aa574..e2c8aa05 100644 --- a/configure.in +++ b/configure.in @@ -23,7 +23,7 @@ if test -z "$version_num"; then fi version_num_int=$(echo "$version_num"| - $SED -e 's/^\([[0-9]]*\)\([[0-9]]*\)$/\1\2/') + $SED -e 's/^\([[0-9]]*\)\.\([[0-9]]*\)$/\1\2/') if test "$version_num_int" -lt '93'; then AC_MSG_ERROR([repmgr is not compatible with detected PostgreSQL version: $version_num]) @@ -41,3 +41,8 @@ else vpath_build=yes fi AC_SUBST(vpath_build) + +AC_CONFIG_FILES([Makefile]) +AC_CONFIG_FILES([Makefile.global]) +AC_OUTPUT + diff --git a/repmgr b/repmgr new file mode 100755 index 0000000000000000000000000000000000000000..f397ded2d34e7f5ba8db4d186fcf3b0ac0176d48 GIT binary patch literal 88176 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

8yCmG(e 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 literal 0 HcmV?d00001 diff --git a/repmgr-client.c b/repmgr-client.c new file mode 100644 index 00000000..fe5cd330 --- /dev/null +++ b/repmgr-client.c @@ -0,0 +1,21 @@ +/* + * repmgr.c - Command interpreter for the repmgr package + * + * Copyright (c) 2ndQuadrant, 2010-2017 + * + * This module is a command-line utility to easily setup a cluster of + * hot standby servers for an HA environment + * + */ + +#include +#include + +#include "repmgr.h" + +int +main(int argc, char **argv) +{ + puts("repmgr"); + return 0; +} diff --git a/repmgr.c b/repmgr.c new file mode 100644 index 00000000..14a92305 --- /dev/null +++ b/repmgr.c @@ -0,0 +1,46 @@ +/* + * repmgr.c - repmgr extension + * + * Copyright (c) 2ndQuadrant, 2010-2017 + * + * This is the actual extension code; see repmgr-client.c for the code which + * generates the repmgr binary + */ + +#include "postgres.h" +#include "fmgr.h" +#include "access/xlog.h" +#include "miscadmin.h" +#include "replication/walreceiver.h" +#include "storage/ipc.h" +#include "storage/lwlock.h" +#include "storage/procarray.h" +#include "storage/shmem.h" +#include "storage/spin.h" +#include "utils/builtins.h" +#include "utils/timestamp.h" + +#define MAXFNAMELEN 64 + +PG_MODULE_MAGIC; + + +void _PG_init(void); +void _PG_fini(void); + +/* + * Module load callback + */ +void +_PG_init(void) +{ + elog(INFO, "repmgr init"); +} +/* + * Module unload callback + */ +void +_PG_fini(void) +{ + elog(INFO, "repmgr fini"); +} diff --git a/repmgr.control b/repmgr.control new file mode 100644 index 00000000..90831a19 --- /dev/null +++ b/repmgr.control @@ -0,0 +1,7 @@ +# repmgr extension +comment = 'Replication manager for PostgreSQL' +default_version = '4.0.0.0' +module_pathname = '$libdir/repmgr' +relocatable = false +schema = pg_catalog + diff --git a/repmgr.h b/repmgr.h new file mode 100644 index 00000000..81daf4a5 --- /dev/null +++ b/repmgr.h @@ -0,0 +1,16 @@ +/* + * repmgr.h + * Copyright (c) 2ndQuadrant, 2010-2017 + */ +#ifndef _REPMGR_H_ +#define _REPMGR_H_ + +#include +#include +#include +#include + +#define MIN_SUPPORTED_VERSION "9.3" +#define MIN_SUPPORTED_VERSION_NUM 90300 + +#endif diff --git a/repmgr_version.h b/repmgr_version.h new file mode 100644 index 00000000..d73e0ec1 --- /dev/null +++ b/repmgr_version.h @@ -0,0 +1,6 @@ +#ifndef _VERSION_H_ +#define _VERSION_H_ + +#define REPMGR_VERSION "4.0dev" + +#endif diff --git a/repmgrd.c b/repmgrd.c new file mode 100644 index 00000000..a9b1b11b --- /dev/null +++ b/repmgrd.c @@ -0,0 +1,16 @@ +/* + * repmgrd.c - Replication manager daemon + * + * Copyright (c) 2ndQuadrant, 2010-2017 + */ + +#include "repmgr.h" + +#include + +int +main(int argc, char **argv) +{ + puts("repmgr"); + return 0; +}