137 lines
3.5 KiB
Bash
137 lines
3.5 KiB
Bash
#!/bin/bash
|
|
#--------------------------------------------------------------------
|
|
#
|
|
# make_signature
|
|
#
|
|
# Bash script building module of pgxc_ctl.
|
|
#
|
|
# Copyright (c) 2012 Postgres-XC Development Group
|
|
#
|
|
#---------------------------------------------------------------------
|
|
#
|
|
# This module is used to create signature.h and pgxc_ctl_bash.c files.
|
|
#
|
|
# pgxc_ctl_bash.c files contains two information,
|
|
# 1. Bash script to read pgxc_ctl configuration information and write
|
|
# it back to pgxc_ctl. This way, users can use their familiar bash
|
|
# script to configure postgres-xc cluster.
|
|
# This includes typical (test) configuration so that pgxc_ctl
|
|
# can run even with incomplete configuration.
|
|
# 2. Template postgres-xc cluster configuration used by pgxc_ctl.
|
|
# You can get this template by typing "prepare configu" command.
|
|
#
|
|
# signature.h contains signature information which is useful in
|
|
# checking the bash script and pgxc_ctl binary build.
|
|
#
|
|
# At present, the bash script is installed each time pgxc_ctl is invoked
|
|
# and uninstalled, this has no significant role. In the future,
|
|
# when we need to maintain this bash script, it will work to enforce
|
|
# the integrity between the two.
|
|
#------------------------------------------------------------------------
|
|
|
|
sig=`date +%y%m%d_%H%M_%N`
|
|
cat > signature.h <<EOF
|
|
/*-------------------------------------------------------------------------
|
|
*
|
|
* signature.h
|
|
*
|
|
* Signature of module of Postgres-XC configuration and operation tool.
|
|
*
|
|
* Copyright (c) 2013 Postgres-XC Development Group
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef SIGNATURE_H
|
|
#define SIGNATURE_H
|
|
/* Signature file to identify the make */
|
|
EOF
|
|
echo '#'define signature \"$sig\" >> signature.h
|
|
cat >> signature.h <<EOF
|
|
#endif /* SIGNATURE_H */
|
|
EOF
|
|
|
|
|
|
|
|
cp pgxc_ctl_bash_2 pgxc_ctl_bash.c.wk
|
|
ex pgxc_ctl_bash.c.wk <<EOF
|
|
%s/"/\\\"/g
|
|
w
|
|
%s/^\(.*\)$/"\1",/
|
|
wq
|
|
EOF
|
|
|
|
cat > pgxc_ctl_bash.c <<EOF
|
|
/*
|
|
*-----------------------------------------------------------------------
|
|
*
|
|
* pgxc_ctl_bash.c
|
|
*
|
|
* Bash script body for Postrgres-XC configuration and operation tool.
|
|
*
|
|
* Copyright (c) 2013 Postgres-XC Development Group
|
|
*
|
|
*------------------------------------------------------------------------
|
|
*
|
|
* This file was created by make_signature utility when pgxc_ctl was built.
|
|
*
|
|
* pgxc_ctl uses this bash script to configure postgres-xc and read
|
|
* configuration.
|
|
*
|
|
* This provides users very flexible way to configure their own
|
|
* postgres-xc cluster. For example, by using extra variables and script,
|
|
* you can save most of your specific hours typing same (or similar)
|
|
* variable values again and again.
|
|
*/
|
|
|
|
#include <stddef.h>
|
|
|
|
/*
|
|
* Bash script to read pgxc_ctl configuration parameters and write
|
|
* back to itself.
|
|
*
|
|
* This part is written to pgxc_ctl work directory and reads
|
|
* configuration file, which is also written in bash script.
|
|
*/
|
|
|
|
char *pgxc_ctl_bash_script[] = {
|
|
EOF
|
|
|
|
cat pgxc_ctl_bash.c.wk >> pgxc_ctl_bash.c
|
|
|
|
cat >> pgxc_ctl_bash.c <<EOF
|
|
NULL
|
|
};
|
|
|
|
EOF
|
|
|
|
rm pgxc_ctl_bash.c.wk
|
|
|
|
cp pgxc_ctl_conf_part pgxc_ctl_conf_part.wk
|
|
|
|
ex pgxc_ctl_conf_part.wk <<EOF
|
|
%s/"/\\\"/g
|
|
w
|
|
%s/^\(.*\)$/"\1",/
|
|
wq
|
|
EOF
|
|
|
|
cat >> pgxc_ctl_bash.c <<EOF
|
|
/*
|
|
* Prototype of pgxc_ctl configuration file.
|
|
*
|
|
* It should be self descripting. Can be extracted to your pgxc_ctl
|
|
* work directory with 'prepare config' command.
|
|
*/
|
|
|
|
char *pgxc_ctl_conf_prototype[] = {
|
|
EOF
|
|
|
|
cat pgxc_ctl_conf_part.wk >> pgxc_ctl_bash.c
|
|
|
|
cat >> pgxc_ctl_bash.c <<EOF
|
|
NULL
|
|
};
|
|
EOF
|
|
|
|
rm pgxc_ctl_conf_part.wk
|