Here's a patch that I discussed recently on pg95-dev that changes the

way one creates a database system.  Parts that were in "make install"
are not either in "make all" or initdb.  Nothing goes in the PGDATA
directory besides user data.  Creating multiple database systems is
easier.

In addition to applying the patch, it is necessary to move the file
libpq/pg_hba to backend/libpq/pg_hba.sample.

Submitted by: Bryan Henderson <bryanh@giraffe.netgate.net>
This commit is contained in:
Marc G. Fournier 1996-09-23 08:24:13 +00:00
parent e7c3adcd94
commit ff4d0d435e
8 changed files with 321 additions and 302 deletions

View File

@ -7,7 +7,7 @@
#
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/backend/Makefile,v 1.6 1996/09/21 06:27:11 scrappy Exp $
# $Header: /cvsroot/pgsql/src/backend/Makefile,v 1.7 1996/09/23 08:21:52 scrappy Exp $
#
#-------------------------------------------------------------------------
@ -17,13 +17,11 @@
# in your custom makefile, ../Makefile.custom.)
BIGOBJS= true
PROG= postgres
PROG= postgres global1.bki.source local1_template1.bki.source
MKDIR= ../mk
include $(MKDIR)/postgres.mk
include $(CURDIR)/access/Makefile.inc
include $(CURDIR)/bootstrap/Makefile.inc
include $(CURDIR)/catalog/Makefile.inc
@ -60,6 +58,7 @@ OBJS:= $(subst .s,.o,$(SRCS:%.c=$(objdir)/%.o))
CLEANFILES+= $(notdir $(OBJS))
endif
#############################################################################
#
# TIOGA stuff
@ -86,7 +85,7 @@ CFLAGS+= -DPOSTGRESDIR='"$(POSTGRESDIR)"' \
-I$(CURDIR)/$(objdir) \
-I$(CURDIR)/include \
-I$(CURDIR)/port/$(PORTNAME) \
-I$(SRCDIR)/include
-I../include
# turn this on if you prefer European style dates instead of American
# style dates
@ -192,52 +191,33 @@ endif
#
# Installation.
#
# Install the bki files to the data directory. We also copy a version
# of them that has "PGUID" intact, so one can change the value of the
# postgres userid before running initdb in the case of customizing the
# binary release (i.e., fixing up PGUID w/o recompiling the system).
# Those files are copied out as foo.source. The program newbki(1) can
# be run later to reset the postgres login id (but it must be run before
# initdb is run, or after clearing the data directory with
# cleardbdir(1)). [newbki distributed with v4r2 but not with Postgres95.]
# Install the backend program (postgres) to the binary directory and
# make a link as "postmaster". Install the bki files templates and sample
# files to the library directory.
#
# (History: Before Release 2, make install generated a bki.source file
# and then used build parameters to convert it to a bki file, then installed
# that bki file in the /files subdirectory of the default data directory.
# Initdb then used the bki file to generate the database catalog classes.
# That had to change because (1) there can be more than one database system,
# and (2) the parameters of a database system should be set at initdb time,
# not at postgres build time.
# NAMEDATALEN=`egrep "^#define NAMEDATALEN" $(CURDIR)/include/postgres.h | awk '{print $$3}'`; \
# OIDNAMELEN=`egrep "^#define OIDNAMELEN" $(CURDIR)/include/postgres.h | awk '{print $$3}'`; \
install: beforeinstall pg_id $(BKIFILES) postgres
$(INSTALL) $(INSTL_EXE_OPTS) $(objdir)/postgres $(DESTDIR)$(BINDIR)/postgres
install: beforeinstall postgres fmgr.h\
global1.bki.source local1_template1.bki.source \
libpq/pg_hba.sample
$(INSTALL) $(INSTL_EXE_OPTS) $(objdir)/postgres \
$(DESTDIR)$(BINDIR)/postgres
@rm -f $(DESTDIR)$(BINDIR)/postmaster
cd $(DESTDIR)$(BINDIR); ln -s postgres postmaster
@cd $(objdir); \
PG_UID=`./pg_id $(POSTGRESLOGIN)`; \
POSTGRESLOGIN=$(POSTGRESLOGIN);\
echo "NAMEDATALEN = $(NAMEDATALEN)"; \
echo "OIDNAMELEN = $(OIDNAMELEN)"; \
case $$PG_UID in "NOUSER") \
echo "Warning: no account named $(POSTGRESLOGIN), using yours";\
POSTGRESLOGIN=`whoami`; \
PG_UID=`./pg_id`;; \
esac ;\
for bki in $(BKIFILES); do \
sed \
-e "s/postgres PGUID/$$POSTGRESLOGIN $$PG_UID/" \
-e "s/NAMEDATALEN/$(NAMEDATALEN)/g" \
-e "s/OIDNAMELEN/$(OIDNAMELEN)/g" \
-e "s/PGUID/$$PG_UID/" \
< $$bki > $$bki.sed ; \
echo "Installing $(DESTDIR)$(DATADIR)/files/$$bki."; \
$(INSTALL) $(INSTLOPTS) \
$$bki.sed $(DESTDIR)$(DATADIR)/files/$$bki; \
rm -f $$bki.sed; \
echo "Installing $(DESTDIR)$(DATADIR)/files/$$bki.source."; \
$(INSTALL) $(INSTLOPTS) \
$$bki $(DESTDIR)$(DATADIR)/files/$$bki.source; \
done;
@echo "Installing $(DATADIR)/pg_hba";
@cp $(srcdir)/libpq/pg_hba $(DATADIR)
@chmod 644 $(DATADIR)/pg_hba
$(INSTALL) $(INSTLOPTS) $(objdir)/fmgr.h $(HEADERDIR)/fmgr.h
$(INSTALL) $(INSTLOPTS) $(objdir)/global1.bki.source \
$(DESTDIR)$(LIBDIR)/global1.bki.source
$(INSTALL) $(INSTLOPTS) $(objdir)/local1_template1.bki.source \
$(DESTDIR)$(LIBDIR)/local1_template1.bki.source
$(INSTALL) $(INSTLOPTS) libpq/pg_hba.sample \
$(DESTDIR)$(LIBDIR)/pg_hba.sample
# so we can get the UID of the postgres owner (w/o moving pg_id to
# src/tools). We just want the vanilla LDFLAGS for pg_id
@ -247,10 +227,8 @@ ifeq ($(CC), cc)
IDLDFLAGS+= -Aa -D_HPUX_SOURCE
endif
endif
pg_id: $(srcdir)/bin/pg_id/pg_id.c
$(CC) $(IDLDFLAGS) -o $(objdir)/$(@F) $<
CLEANFILES+= pg_id postgres
CLEANFILES+= postgres
#############################################################################

View File

@ -7,13 +7,14 @@
#
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/backend/catalog/Attic/Makefile.inc,v 1.1.1.1 1996/07/09 06:21:14 scrappy Exp $
# $Header: /cvsroot/pgsql/src/backend/catalog/Attic/Makefile.inc,v 1.2 1996/09/23 08:22:04 scrappy Exp $
#
#-------------------------------------------------------------------------
catdir=$(CURDIR)/catalog
VPATH:=$(VPATH):$(catdir)
cat_hdr_dir= ../include/catalog
SRCS_CATALOG= catalog.c heap.c index.c indexing.c \
pg_aggregate.c pg_operator.c pg_proc.c pg_type.c
@ -28,7 +29,7 @@ HEADERS+= catalog.h catname.h heap.h index.h indexing.h pg_aggregate.h \
pg_user.h pg_variable.h pg_version.h
#
# The following is to create the .bki files.
# The following is to create the .bki.source files.
# TODO: sort headers, (figure some automatic way of of determining
# the bki sources?)
#
@ -41,29 +42,27 @@ BKIOPTS= -DALLOW_PG_GROUP
endif
GENBKI= $(catdir)/genbki.sh
BKIFILES= global1.bki local1_template1.bki
GLOBALBKI_SRCS= pg_database.h pg_demon.h pg_magic.h pg_defaults.h \
pg_variable.h pg_server.h pg_user.h pg_hosts.h \
pg_group.h pg_log.h pg_time.h
GLOBALBKI_SRCS= $(addprefix $(cat_hdr_dir)/, \
pg_database.h pg_demon.h pg_magic.h pg_defaults.h \
pg_variable.h pg_server.h pg_user.h pg_hosts.h \
pg_group.h pg_log.h pg_time.h \
)
LOCALBKI_SRCS= pg_proc.h pg_type.h pg_attribute.h pg_class.h \
pg_inherits.h pg_index.h pg_version.h pg_statistic.h pg_operator.h \
pg_opclass.h pg_am.h pg_amop.h pg_amproc.h pg_language.h pg_parg.h \
pg_aggregate.h pg_ipl.h pg_inheritproc.h \
pg_rewrite.h pg_listener.h indexing.h
LOCALBKI_SRCS= $(addprefix $(cat_hdr_dir)/, \
pg_proc.h pg_type.h pg_attribute.h pg_class.h \
pg_inherits.h pg_index.h pg_version.h pg_statistic.h \
pg_operator.h pg_opclass.h pg_am.h pg_amop.h pg_amproc.h \
pg_language.h pg_parg.h \
pg_aggregate.h pg_ipl.h pg_inheritproc.h \
pg_rewrite.h pg_listener.h indexing.h \
)
global1.bki: $(GENBKI) $(GLOBALBKI_SRCS)
sh $(SHOPTS) $(GENBKI) $(BKIOPTS) \
$(patsubst $(GENBKI),,$^) > $(objdir)/$(@F)
global1.bki.source: $(GENBKI) $(GLOBALBKI_SRCS)
sh $(SHOPTS) $(GENBKI) $(BKIOPTS) $(GLOBALBKI_SRCS) > $(objdir)/$(@F)
local1_template1.bki.source: $(GENBKI) $(LOCALBKI_SRCS)
sh $(SHOPTS) $(GENBKI) $(BKIOPTS) $(LOCALBKI_SRCS) > $(objdir)/$(@F)
local1_template1.bki: $(GENBKI) $(LOCALBKI_SRCS)
sh $(SHOPTS) $(GENBKI) $(BKIOPTS) \
$(patsubst $(GENBKI),,$^) > $(objdir)/$(@F)
CLEANFILES+= global.bki.source local1_template1.bki.source
#${PROG}: ${BKIFILES}
#
CLEANFILES+= ${BKIFILES}

View File

@ -4,34 +4,24 @@
# cleardbdir.sh--
# completely clear out the database directory
#
# this program clears out the database directory, but leaves the .bki
# files so that initdb(1) can be run again.
# A program by this name used to be necessary because the database
# files were mixed in with postgres program files. Now, the database
# files are in their own directory so you can just rm it.
#
# We have to ship this program, which now just tells the user there's
# no such program, to make sure that the old program from
# a prior release gets deleted. If it hung around, it could confuse
# the user.
#
# Copyright (c) 1994, Regents of the University of California
#
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/bin/cleardbdir/Attic/cleardbdir.sh,v 1.1.1.1 1996/07/09 06:22:11 scrappy Exp $
# $Header: /cvsroot/pgsql/src/bin/cleardbdir/Attic/cleardbdir.sh,v 1.2 1996/09/23 08:23:03 scrappy Exp $
#
#-------------------------------------------------------------------------
[ -z "$PGDATA" ] && PGDATA=_fUnKy_DATADIR_sTuFf_
echo "This program completely destroys all the databases in the directory"
echo "$PGDATA"
echo _fUnKy_DASH_N_sTuFf_ "Are you sure you want to do this (y/n) [n]? "_fUnKy_BACKSLASH_C_sTuFf_
read resp || exit
case $resp in
y*) : ;;
*) exit ;;
esac
cd $PGDATA || exit
for i in *
do
if [ $i != "files" -a $i != "pg_hba" ]
then
/bin/rm -rf $i
fi
done
echo "The cleardbir program no longer exists. To remove an old database"
echo "system, simply wipe out the whole directory that contains it."
echo
echo "You can create a new database system with initdb."

View File

@ -2,221 +2,266 @@
#-------------------------------------------------------------------------
#
# initdb.sh--
# create a postgres template database
# Create (initialize) a Postgres database system.
#
# A database system is a collection of Postgres databases all managed
# by the same postmaster.
#
# this program feeds the proper input to the ``postgres'' program
# to create a postgres database and register it in the
# shared ``pg_database'' database.
# To create the database system, we create the directory that contains
# all its data, create the files that hold the global classes, create
# a few other control files for it, and create one database: the
# template database.
#
# The template database is an ordinary Postgres database. Its data
# never changes, though. It exists to make it easy for Postgres to
# create other databases -- it just copies.
#
# Optionally, we can skip creating the database system and just create
# (or replace) the template database.
#
# To create all those classes, we run the postgres (backend) program and
# feed it data from bki files that are in the Postgres library directory.
#
# Copyright (c) 1994, Regents of the University of California
#
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.5 1996/09/21 06:24:41 scrappy Exp $
# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.6 1996/09/23 08:23:17 scrappy Exp $
#
#-------------------------------------------------------------------------
# ----------------
# Set paths from environment or default values.
# The _fUnKy_..._sTuFf_ gets set when the script is installed
# from the default value for this build.
# Currently the only thing wee look for from the environment is
# PGDATA, PGHOST, and PGPORT
# The _fUnKy_..._sTuFf_ gets set when the script is built (with make)
# from parameters set in the make file.
# Currently the only thing we look for from the environment is
# PGDATA, PGHOST, and PGPORT. However, we should have environment
# variables for all the paths.
#
# ----------------
[ -z "$PGDATA" ] && { PGDATA=_fUnKy_DATADIR_sTuFf_; export PGDATA; }
[ -z "$PGPORT" ] && { PGPORT=_fUnKy_POSTPORT_sTuFf_; export PGPORT; }
[ -z "$PGHOST" ] && { PGHOST=localhost; export PGHOST; }
POSTGRESDIR=_fUnKy_POSTGRESDIR_sTuFf_
BINDIR=_fUnKy_BINDIR_sTuFf_
FILESDIR=$PGDATA/files
LIBDIR=_fUnKy_LIBDIR_sTuFf_
NAMEDATALEN=_fUnKy_NAMEDATALEN_sTuFf_
OIDNAMELEN=_fUnKy_OIDNAMELEN_sTuFf_
PATH=$BINDIR:$PATH
export PATH
CMDNAME=`basename $0`
# ----------------
# check arguments:
# -d indicates debug mode.
# -n means don't clean up on error (so your cores don't go away)
# ----------------
# Set defaults:
debug=0
noclean=0
verbose=0
template_only=0
POSTGRES_SUPERUSERNAME=$USER
for ARG
do
case "$ARG" in
-d) debug=1; echo "$CMDNAME: debug mode on";;
-n) noclean=1; echo "$CMDNAME: noclean mode on";;
-v) verbose=1; echo "$CMDNAME: verbose mode on";;
*) echo "initdb [-d][-n][-v]\n -d : debug mode\n -n : noclean mode, leaves temp files around \n -v : verbose mode"; exit 0;
esac
for ARG ; do
if [ $ARG = "--debug" -o $ARG = "-d" ]; then
debug=1
echo "Running with debug mode on."
elif [ $ARG = "--noclean" -o $ARG = "-n" ]; then
noclean=1
echo "Running with noclean mode on. Mistakes will not be cleaned up."
elif [ $ARG = "--template" ]; then
template_only=1
echo "updating template1 database only."
elif [ ${ARG#--username=} != $ARG ]; then
POSTGRES_SUPERUSERNAME=${ARG,"--username="}
elif [ ${ARG#--pgdata=} != $ARG ]; then
PGDATA=${ARG#--pgdata=}
else
echo "initdb [--template] [--debug] [--noclean]" \
"[--username=SUPERUSER] [--pgdata=DATADIR]"
fi
done
# ----------------
# if the debug flag is set, then
# ----------------
if test "$debug" -eq 1
then
if [ "$debug" -eq 1 ]; then
BACKENDARGS="-boot -C -F -d"
else
BACKENDARGS="-boot -C -F -Q"
fi
TEMPLATE=$LIBDIR/local1_template1.bki.source
GLOBAL=$LIBDIR/global1.bki.source
PG_HBA_SAMPLE=$LIBDIR/pg_hba.sample
TEMPLATE=$FILESDIR/local1_template1.bki
GLOBAL=$FILESDIR/global1.bki
if [ ! -f $TEMPLATE -o ! -f $GLOBAL ]
then
echo "$CMDNAME: error: database initialization files not found."
echo "$CMDNAME: either gmake install has not been run or you're trying to"
echo "$CMDNAME: run this program on a machine that does not store the"
echo "$CMDNAME: database (PGHOST doesn't work for this)."
#-------------------------------------------------------------------------
# Find the input files
#-------------------------------------------------------------------------
for PREREQ_FILE in $TEMPLATE $GLOBAL $PG_HBA_SAMPLE; do
if [ ! -f $PREREQ_FILE ]; then
echo "$CMDNAME does not find the file '$PREREQ_FILE'."
echo "This means Postgres95 is incorrectly installed."
exit 1
fi
done
echo "$CMDNAME: using $TEMPLATE as input to create the template database."
if [ $template_only -eq 0 ]; then
echo "$CMDNAME: using $GLOBAL as input to create the global classes."
echo "$CMDNAME: using $PG_HBA_SAMPLE as the host-based authentication" \
"control file."
fi
#---------------------------------------------------------------------------
# Figure out who the Postgres superuser for the new database system will be.
#---------------------------------------------------------------------------
if [ -z $POSTGRES_SUPERUSERNAME ]; then
echo "Can't tell what username to use. You don't have the USER"
echo "environment variable set to your username and didn't specify the "
echo "--username option"
exit 1
fi
if test "$verbose" -eq 1
then
echo "$CMDNAME: using $TEMPLATE"
echo "$CMDNAME: using $GLOBAL"
POSTGRES_SUPERUID=`pg_id $POSTGRES_SUPERUSERNAME`
if [ $POSTGRES_SUPERUID = NOUSER ]; then
echo "Valid username not given. You must specify the username for "
echo "the Postgres superuser for the database system you are "
echo "initializing, either with the --username option or by default "
echo "to the USER environment variable."
exit 10
fi
#
# Figure out who I am...
#
PG_UID=`pg_id`
if test $PG_UID -eq 0
then
echo "$CMDNAME: do not install POSTGRES as root"
exit 1
if [ $POSTGRES_SUPERUID -ne `pg_id` -a `pg_id` -ne 0 ]; then
echo "Only the unix superuser may initialize a database with a different"
echo "Postgres superuser. (You must be able to create files that belong"
echo "to the specified Postgres userid)."
exit 2
fi
# ----------------
# create the template database if necessary
# the first we do is create data/base, so we'll check for that.
# ----------------
echo "We are initializing the database system with username" \
"$POSTGRES_SUPERUSERNAME (uid=$POSTGRES_SUPERUID)."
echo "Please be aware that Postgres is not secure. Anyone who can connect"
echo "to the database can act as user $POSTGRES_SUPERUSERNAME " \
"with very little effort."
if test -d "$PGDATA/base"
then
echo "$CMDNAME: error: it looks like initdb has already been run. You must"
echo "clean out the database directory first with the cleardbdir program"
exit 1
fi
# -----------------------------------------------------------------------
# Create the data directory if necessary
# -----------------------------------------------------------------------
# umask must disallow access to group, other for files and dirs
umask 077
mkdir $PGDATA/base $PGDATA/base/template1
if test "$verbose" -eq 1
then
echo "$CMDNAME: creating SHARED relations in $PGDATA"
echo "$CMDNAME: creating template database in $PGDATA/base/template1"
echo "postgres $BACKENDARGS template1 < $TEMPLATE "
if [ -d "$PGDATA" ]; then
if [ $template_only -eq 0 ]; then
echo "$CMDNAME: error: Directory $PGDATA already exists."
echo "This probably means initdb has already been run and the "
echo "database system already exists."
echo
echo "If you want to create a new database system, either remove "
echo "the $PGDATA directory or run initdb with environment variable"
echo "PGDATA set to something other than $PGDATA."
exit 1
fi
else
if [ ! -d $PGDATA ]; then
echo "Creating Postgres database system directory $PGDATA"
mkdir $PGDATA
if [ $? -ne 0 ]; then exit 5; fi
fi
if [ ! -d $PGDATA/base ]; then
echo "Creating Postgres database system directory $PGDATA/base"
mkdir $PGDATA/base
if [ $? -ne 0 ]; then exit 5; fi
fi
fi
postgres $BACKENDARGS template1 < $TEMPLATE
#----------------------------------------------------------------------------
# Create the template1 database
#----------------------------------------------------------------------------
rm -rf $PGDATA/base/template1
mkdir $PGDATA/base/template1
if test $? -ne 0
then
echo "$CMDNAME: creating template database in $PGDATA/base/template1"
echo "Running: postgres $BACKENDARGS template1"
cat $TEMPLATE \
| sed -e "s/postgres PGUID/$POSTGRES_SUPERUSERNAME $POSTGRES_SUPERUID/" \
-e "s/NAMEDATALEN/$NAMEDATALEN/g" \
-e "s/OIDNAMELEN/$OIDNAMELEN/g" \
-e "s/PGUID/$POSTGRES_SUPERUID/" \
| postgres $BACKENDARGS template1
if [ $? -ne 0 ]; then
echo "$CMDNAME: could not create template database"
if test $noclean -eq 0
then
echo "$CMDNAME: cleaning up."
cd $PGDATA
for i in *
do
if [ $i != "files" -a $i != "pg_hba" ]
then
/bin/rm -rf $i
fi
done
else
echo "$CMDNAME: cleanup not done (noclean mode set)."
if [ $noclean -eq 0 ]; then
echo "$CMDNAME: cleaning up by wiping out $PGDATA/base/template1"
rm -rf $PGDATA/base/template1
else
echo "$CMDNAME: cleanup not done because noclean options was used."
fi
exit 1;
exit 1;
fi
pg_version $PGDATA/base/template1
#
# Add the template database to pg_database
#
#----------------------------------------------------------------------------
# Create the global classes, if requested.
#----------------------------------------------------------------------------
echo "open pg_database" > /tmp/create.$$
echo "insert (template1 $PG_UID template1)" >> /tmp/create.$$
#echo "show" >> /tmp/create.$$
echo "close pg_database" >> /tmp/create.$$
if [ $template_only -eq 0 ]; then
echo "$CMDNAME: creating global classes in $PGDATA"
if test "$verbose" -eq 1
then
echo "postgres $BACKENDARGS template1 < $GLOBAL"
fi
echo "Creating global classes in $PG_DATA/base"
echo "Running: postgres $BACKENDARGS template1"
postgres $BACKENDARGS template1 < $GLOBAL
cat $GLOBAL \
| sed -e "s/postgres PGUID/$POSTGRES_SUPERUSERNAME $POSTGRES_SUPERUID/" \
-e "s/NAMEDATALEN/$NAMEDATALEN/g" \
-e "s/OIDNAMELEN/$OIDNAMELEN/g" \
-e "s/PGUID/$POSTGRES_SUPERUID/" \
| postgres $BACKENDARGS template1
if (test $? -ne 0)
then
echo "$CMDNAME: could create shared relations"
if (test $noclean -eq 0)
if (test $? -ne 0)
then
echo "$CMDNAME: cleaning up."
cd $PGDATA
for i in *
do
if [ $i != "files" ]
then
/bin/rm -rf $i
fi
done
else
echo "$CMDNAME: cleanup not done (noclean mode set)."
echo "$CMDNAME: could not create global classes."
if (test $noclean -eq 0); then
echo "$CMDNAME: cleaning up."
rm -rf $PGDATA
else
echo "$CMDNAME: cleanup not done (noclean mode set)."
fi
exit 1;
fi
exit 1;
fi
pg_version $PGDATA
pg_version $PGDATA
if test "$verbose" -eq 1
then
echo "postgres $BACKENDARGS template1 < /tmp/create.$$"
fi
cp $PG_HBA_SAMPLE $PGDATA/pg_hba
postgres $BACKENDARGS template1 < /tmp/create.$$
echo "Adding template1 database to pg_database..."
if test $? -ne 0
then
echo "$CMDNAME: could not log template database"
if (test $noclean -eq 0)
then
echo "$CMDNAME: cleaning up."
cd $PGDATA
for i in *
do
if [ $i != "files" ]
then
/bin/rm -rf $i
fi
done
else
echo "$CMDNAME: cleanup not done (noclean mode set)."
echo "open pg_database" > /tmp/create.$$
echo "insert (template1 $POSTGRES_SUPERUID template1)" >> /tmp/create.$$
#echo "show" >> /tmp/create.$$
echo "close pg_database" >> /tmp/create.$$
echo "Running: postgres $BACKENDARGS template1 < /tmp/create.$$"
postgres $BACKENDARGS template1 < /tmp/create.$$
if [ $? -ne 0 ]; then
echo "$CMDNAME: could not log template database"
if [ $noclean -eq 0 ]; then
echo "$CMDNAME: cleaning up."
rm -rf $PGDATA
else
echo "$CMDNAME: cleanup not done (noclean mode set)."
fi
exit 1;
fi
exit 1;
rm -f /tmp/create.$$
fi
if test $debug -eq 0
then
if test "$verbose" -eq 1
then
if [ $debug -eq 0 ]; then
echo "vacuuming template1"
fi
echo "vacuum" | postgres -F -Q template1 > /dev/null
fi
rm -f /tmp/create.$$

View File

@ -7,94 +7,98 @@
#
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/interfaces/libpq/Makefile,v 1.4 1996/08/28 23:02:43 scrappy Exp $
# $Header: /cvsroot/pgsql/src/interfaces/libpq/Makefile,v 1.5 1996/09/23 08:23:33 scrappy Exp $
#
#-------------------------------------------------------------------------
LIB= pq
MKDIR= ../mk
include $(MKDIR)/postgres.mk
CFLAGS+= -I$(srcdir)/backend/include \
-I$(srcdir)/include \
-I$(srcdir)/backend \
-I$(CURDIR) \
CFLAGS+= -I../backend/include \
-I$../include \
-I$../backend \
-I. \
ifdef KRBVERS
CFLAGS+= $(KRBFLAGS)
endif
# dllist.c is found in backend/lib
VPATH:= $(VPATH):$(srcdir)/backend/lib
VPATH:= $(VPATH):../backend/lib
LIBSRCS= fe-auth.c fe-connect.c fe-exec.c fe-misc.c fe-lobj.c \
dllist.c pqsignal.c
ifeq ($(PORTNAME), next)
VPATH:=$(VPATH):$(srcdir)/backend/port/$(PORTNAME)
VPATH:=$(VPATH):../backend/port/$(PORTNAME)
LIBSRCS+= getcwd.c putenv.c
endif
all:: libpq.a postgres.h c.h
postgres.h: ../backend/include/postgres.h
# Note: ../backend/include/postgres.h needs to be named something different
# to avoid confusion with this thing we're building now.
#
# hardwire NAMEDATALEN and OIDNAMELEN into the postgres.h for this installation
rm -f obj/postgres.h
echo "#define NAMEDATALEN $(NAMEDATALEN)" >> obj/postgres.h
echo "#define OIDNAMELEN $(OIDNAMELEN)" >> obj/postgres.h
cat ../backend/include/postgres.h >> obj/postgres.h
c.h: ../backend/include/c.h
rm -f obj/c.h
echo "#undef PORTNAME" > obj/c.h
echo "#define PORTNAME $(PORTNAME)" >> obj/c.h
echo "#undef PORTNAME_$(PORTNAME)" >> obj/c.h
echo "#define PORTNAME_$(PORTNAME)" >> obj/c.h
cat ../backend/include/c.h >> obj/c.h
.PHONY: beforeinstall-headers install-headers
ifndef NO_BEFOREINSTL
beforeinstall-headers:
@-if [ ! -d $(HEADERDIR) ]; then mkdir $(HEADERDIR); fi
@-if [ ! -d $(HEADERDIR)/port ]; then mkdir $(HEADERDIR)/port; fi
@-if [ ! -d $(HEADERDIR)/port/$(PORTNAME) ]; \
@if [ ! -d $(HEADERDIR) ]; then mkdir $(HEADERDIR); fi
@if [ ! -d $(HEADERDIR)/port ]; then mkdir $(HEADERDIR)/port; fi
@if [ ! -d $(HEADERDIR)/port/$(PORTNAME) ]; \
then mkdir $(HEADERDIR)/port/$(PORTNAME); fi
@-if [ ! -d $(HEADERDIR)/include ]; \
@if [ ! -d $(HEADERDIR)/include ]; \
then mkdir $(HEADERDIR)/include; fi
@-if [ ! -d $(HEADERDIR)/lib ]; \
@if [ ! -d $(HEADERDIR)/lib ]; \
then mkdir $(HEADERDIR)/lib; fi
@-if [ ! -d $(HEADERDIR)/libpq ]; \
@if [ ! -d $(HEADERDIR)/libpq ]; \
then mkdir $(HEADERDIR)/libpq; fi
@-if [ ! -d $(HEADERDIR)/utils ]; \
@if [ ! -d $(HEADERDIR)/utils ]; \
then mkdir $(HEADERDIR)/utils; fi
else
beforeinstall-headers: .dosomething
endif
HEADERFILES = include/postgres.h \
libpq/pqcomm.h \
libpq/libpq-fs.h \
lib/dllist.h \
utils/geo-decls.h
ifeq ($(PORTNAME), hpux)
HEADERFILES += port/hpux/fixade.h
endif
TEMPDIR=obj
install-headers: beforeinstall-headers
@for i in ${HEADERFILES}; do \
echo "Installing $(HEADERDIR)/$$i."; \
$(INSTALL) $(INSTLOPTS) $(srcdir)/backend/$$i $(HEADERDIR)/$$i; \
done
install-headers: beforeinstall-headers postgres.h c.h
$(INSTALL) $(INSTLOPTS) ../backend/include/postgres.h \
$(HEADERDIR)/postgres.h
$(INSTALL) $(INSTLOPTS) ../include/libpq/pqcomm.h \
$(HEADERDIR)/libpq/pqcomm.h
$(INSTALL) $(INSTLOPTS) ../include/libpq/libpq-fs.h \
$(HEADERDIR)/libpq/libpq-fs.h
$(INSTALL) $(INSTLOPTS) ../include/lib/dllist.h \
$(HEADERDIR)/libpq/dllist.h
$(INSTALL) $(INSTLOPTS) ../include/utils/geo-decls.h \
$(HEADERDIR)/utils/geo-decls.h
$(INSTALL) $(INSTLOPTS) libpq-fe.h $(HEADERDIR)/libpq-fe.h
@mv -f $(HEADERDIR)/include/* $(HEADERDIR)
@rmdir $(HEADERDIR)/include
# XXX - installing fmgr.h depends on the backend being built
$(INSTALL) $(INSTLOPTS) $(srcdir)/backend/$(objdir)/fmgr.h $(HEADERDIR)/fmgr.h
@rm -f $(TEMPDIR)/c.h
@echo "#undef PORTNAME" > $(TEMPDIR)/c.h
@echo "#define PORTNAME $(PORTNAME)" >> $(TEMPDIR)/c.h
@echo "#undef PORTNAME_$(PORTNAME)" >> $(TEMPDIR)/c.h
@echo "#define PORTNAME_$(PORTNAME)" >> $(TEMPDIR)/c.h
@cat $(srcdir)/backend/include/c.h >> $(TEMPDIR)/c.h
$(INSTALL) $(INSTLOPTS) $(TEMPDIR)/c.h $(HEADERDIR)/c.h
@rm -f $(TEMPDIR)/postgres.h
# hardwire NAMEDATALEN and OIDNAMELEN into the postgres.h for this installation
@echo "#define NAMEDATALEN $(NAMEDATALEN)" >> $(TEMPDIR)/postgres.h
@echo "#define OIDNAMELEN $(OIDNAMELEN)" >> $(TEMPDIR)/postgres.h
@cat $(srcdir)/backend/include/postgres.h >> $(TEMPDIR)/postgres.h
$(INSTALL) $(INSTLOPTS) $(TEMPDIR)/postgres.h $(HEADERDIR)/postgres.h
@rm -f $(TEMPDIR)/c.h $(TEMPDIR)/postgres.h
ifeq ($(PORTNAME), hpux)
$(INSTALL) $(INSTLOPTS) ../backend/port/hpux/fixade.h \
$(HEADERDIR)/port/hpux/fixade.h
endif
$(INSTALL) $(INSTLOPTS) obj/c.h $(HEADERDIR)/c.h
$(INSTALL) $(INSTLOPTS) obj/postgres.h $(HEADERDIR)/postgres.h
install:: install-headers
CLEANFILES+= c.h postgres.h
LIB= pq
include $(MKDIR)/postgres.lib.mk

View File

@ -9,7 +9,7 @@
#
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/mk/Attic/postgres.mk,v 1.2 1996/07/27 02:04:12 scrappy Exp $
# $Header: /cvsroot/pgsql/src/mk/Attic/postgres.mk,v 1.3 1996/09/23 08:24:11 scrappy Exp $
#
#-------------------------------------------------------------------------
@ -123,10 +123,8 @@ beforeinstall: localobj
then mkdir $(DESTDIR)$(LIBDIR); fi
@-if test ! -d $(DESTDIR)$(BINDIR); \
then mkdir $(DESTDIR)$(BINDIR); fi
@-if test ! -d $(DESTDIR)$(DATADIR); \
then mkdir $(DESTDIR)$(DATADIR); fi
@-if test ! -d $(DESTDIR)$(DATADIR)/files; \
then mkdir $(DESTDIR)$(DATADIR)/files; fi
@-if test ! -d $(HEADERDIR); \
then mkdir $(HEADERDIR); fi
else
beforeinstall: localobj
endif

View File

@ -11,28 +11,33 @@
#
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/mk/Attic/postgres.shell.mk,v 1.1.1.1 1996/07/09 06:22:19 scrappy Exp $
# $Header: /cvsroot/pgsql/src/mk/Attic/postgres.shell.mk,v 1.2 1996/09/23 08:24:13 scrappy Exp $
#
# NOTES
# the shell script you write might include the following strings which
# will be turned into the values listed below:
#
# _fUnKy_BINDIR_sTuFf_ - location of installed binaries
# _fUnKy_DATADIR_sTuFf_ - location of the data directory
# _fUnKy_LIBDIR_sTuFf_ - location of installed library stuff
# _fUnKy_DATADIR_sTuFf_ - location of the default data directory
# _fUnKy_POSTGRESDIR_sTuFf_ - location of the postgres "home" directory
# _fUnKy_NAMEDATALEN_sTuFf_ - length of a datum of type "name"
# _fUnKy_OIDNAMELEN_sTuFf_ - ?
# _fUnKy_IPCCLEANPATH_sTuFf_ - location of the ipcs and ipcrm programs
# _fUnKy_DASH_N_sTuFf_ - -n flag used in echo
# _fUnKy_BACKSLASH_C_sTuFf_ - continuation (echo)
#-------------------------------------------------------------------------
#
# And all the shell scripts here get stuffed with the default
# values for BINDIR, DATADIR, and POSTGRESDIR
# Insert installation-dependent filepaths into the shell script
#
SEDSCRIPT= -e "s^_fUnKy_BINDIR_sTuFf_^$(BINDIR)^g" \
-e "s^_fUnKy_DATADIR_sTuFf_^$(DATADIR)^g" \
-e "s^_fUnKy_IPCCLEANPATH_sTuFf_^$(IPCSDIR)^g" \
-e "s^_fUnKy_POSTGRESDIR_sTuFf_^$(POSTGRESDIR)^g"
SEDSCRIPT= \
-e "s^_fUnKy_BINDIR_sTuFf_^$(BINDIR)^g" \
-e "s^_fUnKy_LIBDIR_sTuFf_^$(LIBDIR)^g" \
-e "s^_fUnKy_DATADIR_sTuFf_^$(DATADIR)^g" \
-e "s^_fUnKy_IPCCLEANPATH_sTuFf_^$(IPCSDIR)^g" \
-e "s^_fUnKy_NAMEDATALEN_sTuFf_^$(NAMEDATALEN)^g" \
-e "s^_fUnKy_OIDNAMELEN_sTuFf_^$(OIDNAMELEN)^g"
#
# We also need to fix up the scripts to deal with the lack of installed