diff --git a/src/backend/Makefile b/src/backend/Makefile index 7cf55de5a4..e08cc57533 100644 --- a/src/backend/Makefile +++ b/src/backend/Makefile @@ -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 ############################################################################# diff --git a/src/backend/catalog/Makefile.inc b/src/backend/catalog/Makefile.inc index b29a0bfad2..1ee43d766b 100644 --- a/src/backend/catalog/Makefile.inc +++ b/src/backend/catalog/Makefile.inc @@ -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} diff --git a/src/interfaces/libpq/pg_hba b/src/backend/libpq/pg_hba.sample similarity index 100% rename from src/interfaces/libpq/pg_hba rename to src/backend/libpq/pg_hba.sample diff --git a/src/bin/cleardbdir/cleardbdir.sh b/src/bin/cleardbdir/cleardbdir.sh index d9c03ab75c..39bdce18ef 100644 --- a/src/bin/cleardbdir/cleardbdir.sh +++ b/src/bin/cleardbdir/cleardbdir.sh @@ -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." diff --git a/src/bin/initdb/initdb.sh b/src/bin/initdb/initdb.sh index 1e22e99b02..6c32050f38 100644 --- a/src/bin/initdb/initdb.sh +++ b/src/bin/initdb/initdb.sh @@ -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.$$ + diff --git a/src/interfaces/libpq/Makefile b/src/interfaces/libpq/Makefile index bef510b4b3..4a2d689a6e 100644 --- a/src/interfaces/libpq/Makefile +++ b/src/interfaces/libpq/Makefile @@ -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 + diff --git a/src/mk/postgres.mk b/src/mk/postgres.mk index 61e44f51d5..a925e07d83 100644 --- a/src/mk/postgres.mk +++ b/src/mk/postgres.mk @@ -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 diff --git a/src/mk/postgres.shell.mk b/src/mk/postgres.shell.mk index 398c3fd813..65eeff2916 100644 --- a/src/mk/postgres.shell.mk +++ b/src/mk/postgres.shell.mk @@ -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