Skip to content

Commit 6fb9d2e

Browse files
committed
Version number now set in configure, available through Makefile.global
and config.h. Adjusted all referring code. Scrapped pg_version and changed initdb accordingly. Integrated src/utils/version.c into src/backend/utils/init/miscinit.c. Changed all callers. Set version number to `7.1devel'. (Non-numeric version suffixes now allowed.)
1 parent 07dfe97 commit 6fb9d2e

23 files changed

+629
-859
lines changed

configure

Lines changed: 481 additions & 473 deletions
Large diffs are not rendered by default.

configure.in

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ AC_CONFIG_HEADER(src/include/config.h)
66
AC_PREREQ(2.13)
77
AC_CONFIG_AUX_DIR(`pwd`/config)
88

9+
VERSION='7.1devel'
10+
AC_SUBST(VERSION)
11+
AC_DEFINE_UNQUOTED(PG_VERSION, "$VERSION")
12+
913
mkinstalldirs="\$(SHELL) \$(top_srcdir)/config/mkinstalldirs"
1014
AC_SUBST(mkinstalldirs)
1115

@@ -309,13 +313,13 @@ AC_PROG_CPP
309313
AC_PROG_GCC_TRADITIONAL
310314
AC_SUBST(GCC)
311315

312-
if test "$CC" = "gcc"
313-
then
314-
CC_VERSION=`${CC} --version`
316+
if test x"$GCC" = x"yes" ; then
317+
cc_string="GCC `${CC} --version`"
315318
else
316-
CC_VERSION=""
319+
cc_string=$CC
317320
fi
318-
AC_SUBST(CC_VERSION)
321+
AC_DEFINE_UNQUOTED(PG_VERSION_STR, ["PostgreSQL $VERSION on $host, compiled by $cc_string"], [A canonical string containing the version number, platform, and C compiler])
322+
319323

320324

321325
dnl We exclude tcl support unless user says --with-tcl
@@ -1198,6 +1202,5 @@ AC_OUTPUT(
11981202
src/Makefile.global
11991203
src/backend/port/Makefile
12001204
src/backend/catalog/genbki.sh
1201-
src/include/version.h
12021205
src/test/regress/GNUmakefile
12031206
)

src/GNUmakefile.in

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
#
88
#
99
# IDENTIFICATION
10-
# $Header: /cvsroot/pgsql/src/Attic/GNUmakefile.in,v 1.55 2000/07/01 21:16:42 petere Exp $
10+
# $Header: /cvsroot/pgsql/src/Attic/GNUmakefile.in,v 1.56 2000/07/02 15:20:41 petere Exp $
1111
#
1212
#-------------------------------------------------------------------------
1313

@@ -24,14 +24,12 @@ ETAGS = @etags@
2424
XARGS = @xargs@
2525

2626
all:
27-
$(MAKE) -C utils all
2827
$(MAKE) -C backend all
2928
$(MAKE) -C interfaces all
3029
$(MAKE) -C bin all
3130
$(MAKE) -C pl all
3231

3332
install: installdirs
34-
$(MAKE) -C utils install
3533
$(MAKE) -C backend install
3634
$(MAKE) -C interfaces install
3735
$(MAKE) -C bin install

src/Makefile.global.in

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
#
88
#
99
# IDENTIFICATION
10-
# $Header: /cvsroot/pgsql/src/Makefile.global.in,v 1.84 2000/07/01 21:16:42 petere Exp $
10+
# $Header: /cvsroot/pgsql/src/Makefile.global.in,v 1.85 2000/07/02 15:20:41 petere Exp $
1111
#
1212
# NOTES
1313
# Essentially all Postgres make files include this file and use the
@@ -35,6 +35,9 @@
3535
#
3636
#-------------------------------------------------------------------------
3737

38+
# PostgreSQL version number
39+
VERSION = @VERSION@
40+
3841
ifndef SRCDIR
3942
# This should be changed once we have separate build dirs.
4043
top_srcdir = $(top_builddir)

src/backend/Makefile

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
#
3535
#
3636
# IDENTIFICATION
37-
# $Header: /cvsroot/pgsql/src/backend/Makefile,v 1.56 2000/06/28 03:30:57 tgl Exp $
37+
# $Header: /cvsroot/pgsql/src/backend/Makefile,v 1.57 2000/07/02 15:20:44 petere Exp $
3838
#
3939
#-------------------------------------------------------------------------
4040

@@ -57,10 +57,8 @@ ifeq ($(PORTNAME), qnx4)
5757
OBJS+= bootstrap/bootstrap.o
5858
endif
5959

60-
VERSIONOBJ = $(SRCDIR)/utils/version.o
61-
6260
ifeq ($(MAKE_DLL), true)
63-
DLLOBJS= $(OBJS) $(VERSIONOBJ)
61+
DLLOBJS= $(OBJS)
6462
DLLLIBS= -L/usr/local/lib -lcygipc -lcrypt -lcygwin -lkernel32
6563

6664
postgres.def: $(DLLOBJS)
@@ -74,8 +72,8 @@ all: prebuildheaders postgres $(POSTGRES_IMP)
7472

7573
ifneq ($(PORTNAME), win)
7674

77-
postgres: $(OBJS) $(VERSIONOBJ)
78-
$(CC) $(CFLAGS) -o postgres $(OBJS) $(VERSIONOBJ) $(LDFLAGS)
75+
postgres: $(OBJS)
76+
$(CC) $(CFLAGS) -o postgres $(OBJS) $(LDFLAGS)
7977

8078
else
8179

@@ -93,9 +91,6 @@ $(OBJS): $(DIRS:%=%.dir)
9391
$(DIRS:%=%.dir):
9492
$(MAKE) -C $(subst .dir,,$@) all
9593

96-
$(VERSIONOBJ): $(SRCDIR)/utils/version.c $(SRCDIR)/include/version.h
97-
$(MAKE) -C $(SRCDIR)/utils version.o
98-
9994
$(SRCDIR)/utils/dllinit.o: $(SRCDIR)/utils/dllinit.c
10095
$(MAKE) -C $(SRCDIR)/utils dllinit.o
10196

src/backend/postmaster/postmaster.c

Lines changed: 22 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
*
1212
*
1313
* IDENTIFICATION
14-
* $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.150 2000/06/28 03:31:52 tgl Exp $
14+
* $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.151 2000/07/02 15:20:48 petere Exp $
1515
*
1616
* NOTES
1717
*
@@ -84,7 +84,6 @@
8484
#include "access/xlog.h"
8585
#include "tcop/tcopprot.h"
8686
#include "utils/guc.h"
87-
#include "version.h"
8887

8988
/*
9089
* "postmaster.opts" is a file containing options for postmaser.
@@ -300,68 +299,47 @@ int assert_enabled = 1;
300299
#endif
301300

302301
static void
303-
checkDataDir(const char *DataDir, bool *DataDirOK)
302+
checkDataDir(const char *DataDir)
304303
{
304+
char path[MAXPGPATH];
305+
FILE *fp;
306+
305307
if (DataDir == NULL)
306308
{
307309
fprintf(stderr, "%s does not know where to find the database system "
308310
"data. You must specify the directory that contains the "
309311
"database system either by specifying the -D invocation "
310312
"option or by setting the PGDATA environment variable.\n\n",
311313
progname);
312-
*DataDirOK = false;
314+
exit(2);
313315
}
314-
else
315-
{
316-
char path[MAXPGPATH];
317-
FILE *fp;
318316

319-
snprintf(path, sizeof(path), "%s%cbase%ctemplate1%cpg_class",
320-
DataDir, SEP_CHAR, SEP_CHAR, SEP_CHAR);
321-
fp = AllocateFile(path, PG_BINARY_R);
322-
if (fp == NULL)
323-
{
324-
fprintf(stderr, "%s does not find the database system. "
325-
"Expected to find it "
326-
"in the PGDATA directory \"%s\", but unable to open file "
327-
"with pathname \"%s\".\n\n",
328-
progname, DataDir, path);
329-
*DataDirOK = false;
330-
}
331-
else
332-
{
333-
char *reason;
317+
snprintf(path, sizeof(path), "%s%cbase%ctemplate1%cpg_class",
318+
DataDir, SEP_CHAR, SEP_CHAR, SEP_CHAR);
334319

335-
/* reason ValidatePgVersion failed. NULL if didn't */
320+
fp = AllocateFile(path, PG_BINARY_R);
321+
if (fp == NULL)
322+
{
323+
fprintf(stderr, "%s does not find the database system. "
324+
"Expected to find it "
325+
"in the PGDATA directory \"%s\", but unable to open file "
326+
"with pathname \"%s\".\n\n",
327+
progname, DataDir, path);
328+
exit(2);
329+
}
336330

337-
FreeFile(fp);
331+
FreeFile(fp);
338332

339-
ValidatePgVersion(DataDir, &reason);
340-
if (reason)
341-
{
342-
fprintf(stderr,
343-
"Database system in directory %s "
344-
"is not compatible with this version of "
345-
"Postgres, or we are unable to read the "
346-
"PG_VERSION file. "
347-
"Explanation from ValidatePgVersion: %s\n\n",
348-
DataDir, reason);
349-
free(reason);
350-
*DataDirOK = false;
351-
}
352-
else
353-
*DataDirOK = true;
354-
}
355-
}
333+
ValidatePgVersion(DataDir);
356334
}
357335

336+
358337
int
359338
PostmasterMain(int argc, char *argv[])
360339
{
361340
int opt;
362341
int status;
363342
int silentflag = 0;
364-
bool DataDirOK; /* We have a usable PGDATA value */
365343
char original_extraoptions[MAXPGPATH];
366344

367345
IsUnderPostmaster = true; /* so that backends know this */
@@ -435,12 +413,7 @@ PostmasterMain(int argc, char *argv[])
435413
}
436414

437415
optind = 1; /* start over */
438-
checkDataDir(DataDir, &DataDirOK); /* issues error messages */
439-
if (!DataDirOK)
440-
{
441-
fprintf(stderr, "No data directory -- can't proceed.\n");
442-
exit(2);
443-
}
416+
checkDataDir(DataDir); /* issues error messages */
444417

445418
ProcessConfigFile(PGC_POSTMASTER);
446419

src/backend/utils/adt/version.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,13 @@
55
*
66
* IDENTIFICATION
77
*
8-
* $Header: /cvsroot/pgsql/src/backend/utils/adt/version.c,v 1.9 1999/07/17 20:18:00 momjian Exp $
8+
* $Header: /cvsroot/pgsql/src/backend/utils/adt/version.c,v 1.10 2000/07/02 15:20:51 petere Exp $
99
*
1010
*-------------------------------------------------------------------------
1111
*/
1212

1313

1414
#include "postgres.h"
15-
#include "version.h"
1615

1716

1817
text *version(void);

src/backend/utils/init/miscinit.c

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.50 2000/06/14 18:17:46 petere Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.51 2000/07/02 15:20:56 petere Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -24,6 +24,7 @@
2424
#include <grp.h>
2525
#include <pwd.h>
2626
#include <stdlib.h>
27+
#include <errno.h>
2728

2829
#include "catalog/catname.h"
2930
#include "catalog/pg_shadow.h"
@@ -520,3 +521,51 @@ SetPidFile(pid_t pid)
520521

521522
return (0);
522523
}
524+
525+
526+
527+
/*
528+
* Determine whether the PG_VERSION file in directory `path' indicates
529+
* a data version compatible with the version of this program.
530+
*
531+
* If compatible, return. Otherwise, elog(FATAL).
532+
*/
533+
void
534+
ValidatePgVersion(const char *path)
535+
{
536+
char full_path[MAXPGPATH];
537+
FILE *file;
538+
int ret;
539+
long file_major, file_minor;
540+
long my_major = 0, my_minor = 0;
541+
char *endptr;
542+
const char *version_string = PG_VERSION;
543+
544+
my_major = strtol(version_string, &endptr, 10);
545+
if (*endptr == '.')
546+
my_minor = strtol(endptr+1, NULL, 10);
547+
548+
snprintf(full_path, MAXPGPATH, "%s/PG_VERSION", path);
549+
550+
file = AllocateFile(full_path, "r");
551+
if (!file)
552+
{
553+
if (errno == ENOENT)
554+
elog(FATAL, "File %s is missing. This is not a valid data directory.", full_path);
555+
else
556+
elog(FATAL, "cannot open %s: %s", full_path, strerror(errno));
557+
}
558+
559+
ret = fscanf(file, "%ld.%ld", &file_major, &file_minor);
560+
if (ret == EOF)
561+
elog(FATAL, "cannot read %s: %s", full_path, strerror(errno));
562+
else if (ret != 2)
563+
elog(FATAL, "`%s' does not have a valid format. You need to initdb.", full_path);
564+
565+
FreeFile(file);
566+
567+
if (my_major != file_major || my_minor != file_minor)
568+
elog(FATAL, "The data directory was initalized by PostgreSQL version %ld.%ld, "
569+
"which is not compatible with this verion %s.",
570+
file_major, file_minor, version_string);
571+
}

src/backend/utils/init/postinit.c

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/utils/init/postinit.c,v 1.60 2000/06/28 03:32:43 tgl Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/utils/init/postinit.c,v 1.61 2000/07/02 15:20:56 petere Exp $
1212
*
1313
*
1414
*-------------------------------------------------------------------------
@@ -34,7 +34,6 @@
3434
#include "utils/portal.h"
3535
#include "utils/relcache.h"
3636
#include "utils/syscache.h"
37-
#include "version.h"
3837

3938
#ifdef MULTIBYTE
4039
#include "mb/pg_wchar.h"
@@ -267,9 +266,7 @@ InitPostgres(const char *dbname)
267266
elog(FATAL, "Database system not found. Data directory '%s' does not exist.",
268267
DataDir);
269268

270-
ValidatePgVersion(DataDir, &reason);
271-
if (reason != NULL)
272-
elog(FATAL, reason);
269+
ValidatePgVersion(DataDir);
273270

274271
/*-----------------
275272
* Find oid and path of the database we're about to open. Since we're
@@ -300,9 +297,7 @@ InitPostgres(const char *dbname)
300297
elog(FATAL, "Database \"%s\" does not exist. The data directory '%s' is missing.",
301298
dbname, fullpath);
302299

303-
ValidatePgVersion(fullpath, &reason);
304-
if (reason != NULL)
305-
elog(FATAL, "%s", reason);
300+
ValidatePgVersion(fullpath);
306301

307302
if (chdir(fullpath) == -1)
308303
elog(FATAL, "Unable to change directory to '%s': %s", fullpath, strerror(errno));

src/bin/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#
55
# Copyright (c) 1994, Regents of the University of California
66
#
7-
# $Header: /cvsroot/pgsql/src/bin/Makefile,v 1.27 2000/07/01 15:02:19 petere Exp $
7+
# $Header: /cvsroot/pgsql/src/bin/Makefile,v 1.28 2000/07/02 15:20:56 petere Exp $
88
#
99
#-------------------------------------------------------------------------
1010

@@ -13,7 +13,7 @@ top_builddir = ../..
1313
include ../Makefile.global
1414

1515
DIRS := initdb initlocation ipcclean pg_ctl pg_dump pg_id \
16-
pg_passwd pg_version psql scripts
16+
pg_passwd psql scripts
1717

1818
ifdef MULTIBYTE
1919
DIRS += pg_encoding

0 commit comments

Comments
 (0)