Commit ff4d0d43 authored by Marc G. Fournier's avatar Marc G. Fournier

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>
parent e7c3adcd
......@@ -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.
#
# 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
# (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.
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
#############################################################################
......
......@@ -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 \
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
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 \
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
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}
......@@ -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."
This diff is collapsed.
......@@ -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
......@@ -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
......
......@@ -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" \
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_POSTGRESDIR_sTuFf_^$(POSTGRESDIR)^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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment