diff --git a/configure b/configure index 45dbeb4d198..d6d3f26d03d 100755 --- a/configure +++ b/configure @@ -2805,6 +2805,8 @@ _ACEOF PG_MAJORVERSION=`expr "$PACKAGE_VERSION" : '\([0-9][0-9]*\)'` +PG_MINORVERSION=`expr "$PACKAGE_VERSION" : '.*\.\([0-9][0-9]*\)'` +test -n "$PG_MINORVERSION" || PG_MINORVERSION=0 cat >>confdefs.h <<_ACEOF @@ -2812,6 +2814,16 @@ cat >>confdefs.h <<_ACEOF _ACEOF +cat >>confdefs.h <<_ACEOF +#define PG_MAJORVERSION_NUM $PG_MAJORVERSION +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PG_MINORVERSION_NUM $PG_MINORVERSION +_ACEOF + + @@ -18875,8 +18887,7 @@ _ACEOF # Supply a numeric version string for use by 3rd party add-ons # awk -F is a regex on some platforms, and not on others, so make "." a tab -PG_VERSION_NUM="`echo "$PACKAGE_VERSION" | sed 's/[A-Za-z].*$//' | -tr '.' ' ' | +PG_VERSION_NUM="`echo "$PG_MAJORVERSION $PG_MINORVERSION" | $AWK '{printf "%d%04d", $1, $2}'`" cat >>confdefs.h <<_ACEOF diff --git a/configure.in b/configure.in index 22f096a5ac7..78902fb60db 100644 --- a/configure.in +++ b/configure.in @@ -30,8 +30,12 @@ AC_PREFIX_DEFAULT(/usr/local/pgsql) AC_DEFINE_UNQUOTED(CONFIGURE_ARGS, ["$ac_configure_args"], [Saved arguments from configure]) [PG_MAJORVERSION=`expr "$PACKAGE_VERSION" : '\([0-9][0-9]*\)'`] +[PG_MINORVERSION=`expr "$PACKAGE_VERSION" : '.*\.\([0-9][0-9]*\)'`] +test -n "$PG_MINORVERSION" || PG_MINORVERSION=0 AC_SUBST(PG_MAJORVERSION) AC_DEFINE_UNQUOTED(PG_MAJORVERSION, "$PG_MAJORVERSION", [PostgreSQL major version as a string]) +AC_DEFINE_UNQUOTED(PG_MAJORVERSION_NUM, $PG_MAJORVERSION, [PostgreSQL major version number]) +AC_DEFINE_UNQUOTED(PG_MINORVERSION_NUM, $PG_MINORVERSION, [PostgreSQL minor version number]) PGAC_ARG_REQ(with, extra-version, [STRING], [append STRING to version], [PG_VERSION="$PACKAGE_VERSION$withval"], @@ -2318,8 +2322,7 @@ AC_DEFINE_UNQUOTED(PG_VERSION_STR, # Supply a numeric version string for use by 3rd party add-ons # awk -F is a regex on some platforms, and not on others, so make "." a tab -[PG_VERSION_NUM="`echo "$PACKAGE_VERSION" | sed 's/[A-Za-z].*$//' | -tr '.' ' ' | +[PG_VERSION_NUM="`echo "$PG_MAJORVERSION $PG_MINORVERSION" | $AWK '{printf "%d%04d", $1, $2}'`"] AC_DEFINE_UNQUOTED(PG_VERSION_NUM, $PG_VERSION_NUM, [PostgreSQL version as a number]) AC_SUBST(PG_VERSION_NUM) diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in index d758dfd36ee..41ad2093806 100644 --- a/src/include/pg_config.h.in +++ b/src/include/pg_config.h.in @@ -780,6 +780,12 @@ /* PostgreSQL major version as a string */ #undef PG_MAJORVERSION +/* PostgreSQL major version number */ +#undef PG_MAJORVERSION_NUM + +/* PostgreSQL minor version number */ +#undef PG_MINORVERSION_NUM + /* Define to best printf format archetype, usually gnu_printf if available. */ #undef PG_PRINTF_ATTRIBUTE diff --git a/src/port/win32ver.rc b/src/port/win32ver.rc index 7b88d4b36f6..5834b31ddcc 100644 --- a/src/port/win32ver.rc +++ b/src/port/win32ver.rc @@ -4,8 +4,8 @@ // https://docs.microsoft.com/en-us/windows/win32/menurc/versioninfo-resource VS_VERSION_INFO VERSIONINFO - FILEVERSION 13,0,0,0 - PRODUCTVERSION 13,0,0,0 + FILEVERSION PG_MAJORVERSION_NUM,0,PG_MINORVERSION_NUM,0 + PRODUCTVERSION PG_MAJORVERSION_NUM,0,PG_MINORVERSION_NUM,0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK FILEFLAGS 0x0L FILEOS VOS_NT_WINDOWS32 diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm index 4244a4a8ac1..34d1f61dbaa 100644 --- a/src/tools/msvc/Solution.pm +++ b/src/tools/msvc/Solution.pm @@ -19,7 +19,6 @@ sub _new my $self = { projects => {}, options => $options, - numver => '', VisualStudioVersion => undef, MinimumVisualStudioVersion => undef, vcver => undef, @@ -151,6 +150,7 @@ sub GenerateFiles my $package_version; my $package_bugreport; my $package_url; + my ($majorver, $minorver); # Parse configure.in to get version numbers open(my $c, '<', "configure.in") @@ -171,8 +171,8 @@ sub GenerateFiles { confess "Bad format of version: $self->{strver}\n"; } - $self->{numver} = sprintf("%d%04d", $1, $2 ? $2 : 0); - $self->{majorver} = sprintf("%d", $1); + $majorver = sprintf("%d", $1); + $minorver = sprintf("%d", $2 ? $2 : 0); } } close($c); @@ -440,11 +440,13 @@ sub GenerateFiles PG_INT128_TYPE => undef, PG_INT64_TYPE => 'long long int', PG_KRB_SRVNAM => qq{"postgres"}, - PG_MAJORVERSION => qq{"$self->{majorver}"}, + PG_MAJORVERSION => qq{"$majorver"}, + PG_MAJORVERSION_NUM => $majorver, + PG_MINORVERSION_NUM => $minorver, PG_PRINTF_ATTRIBUTE => undef, PG_USE_STDBOOL => 1, PG_VERSION => qq{"$package_version$extraver"}, - PG_VERSION_NUM => $self->{numver}, + PG_VERSION_NUM => sprintf("%d%04d", $majorver, $minorver), PG_VERSION_STR => qq{"PostgreSQL $package_version$extraver, compiled by Visual C++ build " CppAsString2(_MSC_VER) ", $bits-bit"}, PROFILE_PID_DIR => undef, @@ -778,7 +780,7 @@ EOF chdir('src/backend/catalog'); my $bki_srcs = join(' ../../../src/include/catalog/', @bki_srcs); system( - "perl genbki.pl --include-path ../../../src/include/ --set-version=$self->{majorver} $bki_srcs" + "perl genbki.pl --include-path ../../../src/include/ --set-version=$majorver $bki_srcs" ); open(my $f, '>', 'bki-stamp') || confess "Could not touch bki-stamp"; @@ -813,7 +815,7 @@ EOF || croak "Could not write to version.sgml\n"; print $o < -{majorver}"> + EOF close($o); return; diff --git a/src/tools/version_stamp.pl b/src/tools/version_stamp.pl index d8ab8d9de8f..cb59ad234ab 100755 --- a/src/tools/version_stamp.pl +++ b/src/tools/version_stamp.pl @@ -30,32 +30,27 @@ my $majorversion = 13; my $minor = shift; defined($minor) || die "$0: missing required argument: minor-version\n"; -my ($dotneeded, $numericminor); +my ($dotneeded); if ($minor =~ m/^\d+$/) { $dotneeded = 1; - $numericminor = $minor; } elsif ($minor eq "devel") { $dotneeded = 0; - $numericminor = 0; } elsif ($minor =~ m/^alpha\d+$/) { $dotneeded = 0; - $numericminor = 0; } elsif ($minor =~ m/^beta\d+$/) { $dotneeded = 0; - $numericminor = 0; } elsif ($minor =~ m/^rc\d+$/) { $dotneeded = 0; - $numericminor = 0; } else { @@ -73,8 +68,6 @@ else { $fullversion = $majorversion . $minor; } -my $numericversion = $majorversion . "." . $numericminor; -my $padnumericversion = sprintf("%d%04d", $majorversion, $numericminor); # Get the autoconf version number for eventual nag message # (this also ensures we're in the right directory) @@ -102,11 +95,6 @@ sed_file("configure.in", "-e 's/AC_INIT(\\[PostgreSQL\\], \\[[0-9a-z.]*\\]/AC_INIT([PostgreSQL], [$fullversion]/'" ); -sed_file("src/port/win32ver.rc", - "-e 's/FILEVERSION [0-9]*,[0-9]*,[0-9]*,0/FILEVERSION $majorversion,0,$numericminor,0/' " - . "-e 's/PRODUCTVERSION [0-9]*,[0-9]*,[0-9]*,0/PRODUCTVERSION $majorversion,0,$numericminor,0/'" -); - print "Stamped these files with version number $fullversion:\n$fixedfiles"; print "Don't forget to run autoconf $aconfver before committing.\n";