mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-01-06 14:56:51 +08:00
06c7d8fbbf
Changes since 19990615 ---------------------- ./README Version number synchronized with library. ./bin/h5vers If the version number of the library is changed then the first line of the README file is also changed to something like This is hdf5-1.2.3 currently under development The `release' script (which also gets run by `snapshot') changes that line to include the release date but keeps the version number the same. The net effect is that the version numbers in README and H5public.h should now always stay synchronized. ./bin/snapshot The CVS checkin comment includes the version number for the snapshot that was just made. ./tools/testh5toh4 Changed `*-SKIP-*' to `-SKIP-' to be consistent with the other tests.
203 lines
6.2 KiB
Perl
Executable File
203 lines
6.2 KiB
Perl
Executable File
#!/usr/bin/perl -w
|
|
require 5.003;
|
|
|
|
### Copyright © 1998 NCSA.
|
|
# Robb Matzke <matzke@llnl.gov>
|
|
# 17 July 1998
|
|
|
|
### Purpose
|
|
# Increments the hdf5 version number by changing the value of
|
|
# constants in the src/H5public.h file. The new version number is
|
|
# printed on the standard output. An alternate source file name can be
|
|
# specified as an argument. In any case, the original file is saved
|
|
# by appending a tilde `~' to the name.
|
|
|
|
### Usage:
|
|
# h5vers [OPTIONS] [FILE]
|
|
|
|
# Without options this program only displays the current version and
|
|
# doesn't modify any files or create backups. The default is to print
|
|
# the version number as a dotted triple like `1.0.24' but with the
|
|
# `-v' option the version will be printed as `version 1.0 release 24'.
|
|
#
|
|
# The `-s VERSION' switch will set the version as specified. If the
|
|
# string contains a dotted triple then it will be used as the version
|
|
# number, otherwise up to three numbers will be read from the end of
|
|
# the string and used as the major version, minor version, and release
|
|
# number. If any numbers are missing then zero is assumed. This
|
|
# allows versions to be specified like `-s "version 2.1 release 8"' or
|
|
# `-s hdf5-2.1.8.tar.bz2'. If the new version is less than the old
|
|
# version then a warning message is generated on standard error.
|
|
#
|
|
# The `-i [major|minor|release]' option increments the major, minor,
|
|
# or release (the default) number. If the minor number is incremented
|
|
# then the release number is set to zero; if the major number is
|
|
# incremented then the minor and release numbers are set to zero.
|
|
#
|
|
# If a file is specified then that file is used instead of
|
|
# ./H5public.h or ./src/H5public.h.
|
|
#
|
|
# If the version number is changed (either `-s' or `-i' was used on
|
|
# the command line) then the first line of the README file one
|
|
# directory above the H5public.h file is also modified so it looks
|
|
# something like: This is hdf5-1.2.3 currently under development.
|
|
##############################################################################
|
|
|
|
sub getvers {
|
|
local ($_) = @_;
|
|
my (@vers);
|
|
|
|
($vers[0]) = /^\#\s*define\s+H5_VERS_MAJOR\s+(\d+)/m;
|
|
($vers[1]) = /^\#\s*define\s+H5_VERS_MINOR\s+(\d+)/m;
|
|
($vers[2]) = /^\#\s*define\s+H5_VERS_RELEASE\s+(\d+)/m;
|
|
return @vers;
|
|
}
|
|
|
|
sub setvers {
|
|
my ($contents, @vers) = @_;
|
|
$_[0] =~ s/^(\#\s*define\s+H5_VERS_MAJOR\s+)\d+/$1$vers[0]/m;
|
|
$_[0] =~ s/^(\#\s*define\s+H5_VERS_MINOR\s+)\d+/$1$vers[1]/m;
|
|
$_[0] =~ s/^(\#\s*define\s+H5_VERS_RELEASE\s+)\d+/$1$vers[2]/m;
|
|
}
|
|
|
|
sub usage {
|
|
my ($prog) = $0 =~ /([^\/]+)$/;
|
|
print STDERR <<EOF;
|
|
Usage: $prog [OPTS] [FILE]
|
|
-i major|minor|release
|
|
Increment specified version component and set following components
|
|
to zero.
|
|
-s VERSION
|
|
Set the version as specified. The version number can be embedded in
|
|
some other string such as \"hdf5-1.1.0.tar.bz2\" or even \"this is
|
|
hdf5 version 1.1 release 0\" for convenience.
|
|
-v
|
|
Instead of displaying only a dotted triple version number a line such
|
|
as \"version 1.1 release 0\" will be printed.
|
|
FILE
|
|
The name of the file that contains version information. This is
|
|
seldom necessary since files H5public.h, src/H5public.h and
|
|
../src/H5public.h are automatically checked.
|
|
EOF
|
|
exit 1;
|
|
}
|
|
|
|
# Parse arguments
|
|
my ($verbose, $set, $inc, $file);
|
|
my (@files) = ("H5public.h", "src/H5public.h", "../src/H5public.h");
|
|
while ($_ = shift) {
|
|
$_ eq "-s" && do {
|
|
die "-s switch needs a version number\n" unless @ARGV;
|
|
$set = shift;
|
|
next;
|
|
};
|
|
|
|
$_ eq "-i" && do {
|
|
if (@ARGV && $ARGV[1]=~/^(major|minor|release)$/) {
|
|
$inc = shift;
|
|
} else {
|
|
$inc = "release";
|
|
}
|
|
next;
|
|
};
|
|
|
|
$_ eq "-v" && do {
|
|
$verbose = 1;
|
|
next;
|
|
};
|
|
|
|
/^-(h|\?|-?help)$/ && usage;
|
|
/^-/ && die "unrecognized option: $_\n";
|
|
die "only one file name can be specified\n" if $file;
|
|
$file = $_;
|
|
}
|
|
die "mutually exclusive options given\n" if $set && $inc;
|
|
|
|
# Determine file to use as H5public.h and README. The README file is
|
|
# always in the directory above H5public.h
|
|
unless ($file) {
|
|
for (@files) {
|
|
($file=$_,last) if -f $_;
|
|
}
|
|
}
|
|
die "unable to read file: $file\n" unless -r $file;
|
|
$README = $file;
|
|
$README =~ s/[^\/]*$/..\/README/;
|
|
die "unable to read file: $README\n" unless -r $file;
|
|
|
|
# Get the current version number.
|
|
open FILE, $file or die "unable to open $file: $!\n";
|
|
my ($contents) = join "", <FILE>;
|
|
close FILE;
|
|
my (@curver) = getvers $contents;
|
|
|
|
# Determine the new version number.
|
|
if ($set) {
|
|
if ($set =~ /(\d+)\.(\d+)\.(\d+)/) {
|
|
@newver = ($1, $2, $3);
|
|
} elsif ($set =~ /(\d+)\D+(\d+)\D+(\d+)\D*$/) {
|
|
@newver = ($1, $2, $3);
|
|
} elsif ($set =~ /(\d+)\D+(\d+)\D*$/) {
|
|
@newver = ($1, $2, 0);
|
|
} elsif ($set =~ /(\d+)\D*$/) {
|
|
@newver = ($1, 0, 0);
|
|
} else {
|
|
die "illegal version number specified: $set\n";
|
|
}
|
|
} elsif ($inc && $inc eq "major") {
|
|
$newver[0] = $curver[0]+1;
|
|
@newver[1,2] = (0,0);
|
|
} elsif ($inc && $inc eq "minor") {
|
|
$newver[0] = $curver[0];
|
|
$newver[1] = $curver[1]+1;
|
|
$newver[2] = 0;
|
|
} elsif ($inc && $inc eq "release") {
|
|
@newver[0,1] = @curver[0,1];
|
|
$newver[2] = $curver[2]+1;
|
|
} elsif ($inc) {
|
|
die "unknown increment field: $inc\n";
|
|
} else {
|
|
# Nothing to do but print result
|
|
$README = "";
|
|
@newver = @curver;
|
|
}
|
|
|
|
# Print a warning if the version got smaller.
|
|
if ($newver[0]*1000000 + $newver[1]*1000 + $newver[2] <
|
|
$curver[0]*1000000 + $curver[1]*1000 + $curver[2]) {
|
|
printf STDERR "Warning: version decreased from %d.%d.%d to %d.%d.%d\n",
|
|
@curver, @newver;
|
|
}
|
|
|
|
# Update the version number if it changed.
|
|
if ($newver[0]!=$curver[0] ||
|
|
$newver[1]!=$curver[1] ||
|
|
$newver[2]!=$curver[2]) {
|
|
setvers $contents, @newver or die "unable to set version\n";
|
|
rename $file, "$file~" or die "unable to save backup file\n";
|
|
open FILE, ">$file" or die "unable to open $file but backup saved!\n";
|
|
print FILE $contents;
|
|
close FILE;
|
|
}
|
|
|
|
# Update the README file
|
|
if ($README) {
|
|
open FILE, $README or die "$README: $!\n";
|
|
@contents = <FILE>;
|
|
close FILE;
|
|
$contents[0] = sprintf("This is hdf5-%d.%d.%d currently under development\n",
|
|
@newver);
|
|
open FILE, ">$README" or die "$README: $!\n";
|
|
print FILE @contents;
|
|
close FILE;
|
|
}
|
|
|
|
# Print the new version number
|
|
if ($verbose) {
|
|
printf "version %d.%d release %d\n", @newver;
|
|
} else {
|
|
printf "%d.%d.%d\n", @newver;
|
|
}
|
|
|
|
exit 0;
|