Latest update.
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
Auxilliary files for dev/release.sh
|
||||
===================================
|
||||
|
||||
- release-state-fn.sh
|
||||
|
||||
This is the main version and state update logic... you could say
|
||||
that it's the innermost engine for the release mechanism. It
|
||||
tries to be agnostic of versioning schemes, and relies on
|
||||
release-version-fn.sh to supply necessary functions that are
|
||||
specific for versioning schemes.
|
||||
|
||||
- release-version-fn.sh
|
||||
|
||||
Supplies functions that are specific to versioning schemes:
|
||||
|
||||
get_version() gets the version data from appropriate files.
|
||||
|
||||
set_version() writes the version data to appropriate files.
|
||||
|
||||
fixup_version() updates the version data, given a first argument
|
||||
that instructs it what update to do.
|
||||
|
||||
- openssl-announce-pre-release.tmpl and openssl-announce-release.tmpl
|
||||
|
||||
Templates for announcements
|
||||
|
||||
- fixup-*-release.pl and fixup-*-postrelease.pl
|
||||
|
||||
Fixup scripts for specific files, to be done for the release
|
||||
commit and for the post-release commit.
|
||||
@@ -0,0 +1,6 @@
|
||||
#! /usr/bin/perl
|
||||
|
||||
BEGIN { my $prev }
|
||||
($_ = $prev) =~ s|^( *)(.*)$|"$1" . '=' x length($2)|e
|
||||
if m|==========|;
|
||||
$prev = $_;
|
||||
@@ -0,0 +1,28 @@
|
||||
#! /usr/bin/env perl -pi
|
||||
|
||||
BEGIN {
|
||||
our $count = 1; # Only the first one
|
||||
our $RELEASE = $ENV{RELEASE};
|
||||
our $RELEASE_TEXT = $ENV{RELEASE_TEXT};
|
||||
our $PREV_RELEASE_DATE = $ENV{PREV_RELEASE_DATE} || 'xx XXX xxxx';
|
||||
our $PREV_RELEASE_TEXT = $ENV{PREV_RELEASE_TEXT};
|
||||
|
||||
$RELEASE =~ s/-dev//;
|
||||
}
|
||||
|
||||
if (/^### Changes between (\S+) and (\S+) \[xx XXX xxxx\]/
|
||||
&& $count-- > 0) {
|
||||
my $v1 = $1;
|
||||
my $v2 = $PREV_RELEASE_TEXT || $2;
|
||||
|
||||
# If this is a pre-release, we do nothing
|
||||
if ($RELEASE !~ /^\d+\.\d+\.\d+-(?:alpha|beta)/) {
|
||||
$_ = <<_____
|
||||
### Changes between $v2 and $RELEASE_TEXT [xx XXX xxxx] ###
|
||||
|
||||
*
|
||||
|
||||
### Changes between $v1 and $v2 [$PREV_RELEASE_DATE] ###
|
||||
_____
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
#! /usr/bin/env perl -p
|
||||
|
||||
BEGIN {
|
||||
our $count = 1; # Only the first one
|
||||
our $RELEASE = $ENV{RELEASE};
|
||||
our $RELEASE_TEXT = $ENV{RELEASE_TEXT};
|
||||
our $RELEASE_DATE = $ENV{RELEASE_DATE};
|
||||
}
|
||||
|
||||
if (/^### Changes between (\S+) and (\S+) \[xx XXX xxxx\]/
|
||||
&& $count-- > 0) {
|
||||
$_ = "### Changes between $1 and $RELEASE_TEXT [$RELEASE_DATE]$'";
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
#! /usr/bin/env perl -pi
|
||||
|
||||
BEGIN {
|
||||
our $count = 1; # Only the first one
|
||||
our $RELEASE = $ENV{RELEASE};
|
||||
our $RELEASE_TEXT = $ENV{RELEASE_TEXT};
|
||||
our $PREV_RELEASE_DATE = $ENV{PREV_RELEASE_DATE} || 'under development';
|
||||
our $PREV_RELEASE_TEXT = $ENV{PREV_RELEASE_TEXT};
|
||||
|
||||
$RELEASE =~ s/-dev//;
|
||||
}
|
||||
|
||||
if (/^### Major changes between OpenSSL (\S+) and OpenSSL (\S+) \[under development\]/
|
||||
&& $count-- > 0) {
|
||||
my $v1 = $1;
|
||||
my $v2 = $PREV_RELEASE_TEXT || $2;
|
||||
|
||||
# If this is a pre-release, we do nothing
|
||||
if ($RELEASE !~ /^\d+\.\d+\.\d+-(?:alpha|beta)/) {
|
||||
$_ = <<_____
|
||||
### Major changes between OpenSSL $v2 and OpenSSL $RELEASE_TEXT [under development] ###
|
||||
|
||||
*
|
||||
|
||||
### Major changes between OpenSSL $v1 and OpenSSL $v2 [$PREV_RELEASE_DATE] ###
|
||||
_____
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
#! /usr/bin/env perl -p
|
||||
|
||||
BEGIN {
|
||||
our $count = 1; # Only the first one
|
||||
our $RELEASE = $ENV{RELEASE};
|
||||
our $RELEASE_TEXT = $ENV{RELEASE_TEXT};
|
||||
our $RELEASE_DATE = $ENV{RELEASE_DATE};
|
||||
|
||||
$RELEASE_DATE = 'in pre-release'
|
||||
if ($RELEASE =~ /\d+\.\d+\.\d+-(?:alpha|beta)/)
|
||||
}
|
||||
|
||||
if (/^### Major changes between OpenSSL (\S+) and OpenSSL (\S+) \[under development\]/
|
||||
&& $count-- > 0) {
|
||||
$_ = "### Major changes between OpenSSL $1 and OpenSSL $RELEASE_TEXT [$RELEASE_DATE]$'";
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
|
||||
OpenSSL version $release_text released
|
||||
======================================
|
||||
|
||||
OpenSSL - The Open Source toolkit for SSL/TLS
|
||||
https://www.openssl.org/
|
||||
|
||||
OpenSSL $series is currently in $label.
|
||||
|
||||
OpenSSL $release_text has now been made available.
|
||||
|
||||
Note: This OpenSSL pre-release has been provided for testing ONLY.
|
||||
It should NOT be used for security critical purposes.
|
||||
|
||||
Specific notes on upgrading to OpenSSL $series from previous versions, as well
|
||||
as known issues are available on the OpenSSL Wiki, here:
|
||||
|
||||
https://wiki.openssl.org/index.php/OpenSSL_$series
|
||||
|
||||
The $label release is available for download via HTTPS and FTP from the
|
||||
following master locations (you can find the various FTP mirrors under
|
||||
https://www.openssl.org/source/mirror.html):
|
||||
|
||||
* https://www.openssl.org/source/
|
||||
* ftp://ftp.openssl.org/source/
|
||||
|
||||
The distribution file name is:
|
||||
|
||||
o $tarfile
|
||||
Size: $length
|
||||
SHA1 checksum: $sha1hash
|
||||
SHA256 checksum: $sha256hash
|
||||
|
||||
The checksums were calculated using the following commands:
|
||||
|
||||
openssl sha1 $tarfile
|
||||
openssl sha256 $tarfile
|
||||
|
||||
Please download and check this $label release as soon as possible.
|
||||
To report a bug, open an issue on GitHub:
|
||||
|
||||
https://github.com/openssl/openssl/issues
|
||||
|
||||
Please check the release notes and mailing lists to avoid duplicate
|
||||
reports of known issues. (Of course, the source is also available
|
||||
on GitHub.)
|
||||
|
||||
Yours,
|
||||
|
||||
The OpenSSL Project Team.
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
|
||||
OpenSSL version $release released
|
||||
=================================
|
||||
|
||||
OpenSSL - The Open Source toolkit for SSL/TLS
|
||||
https://www.openssl.org/
|
||||
|
||||
The OpenSSL project team is pleased to announce the release of
|
||||
version $release of our open source toolkit for SSL/TLS.
|
||||
For details of the changes, see the release notes at:
|
||||
|
||||
https://www.openssl.org/news/openssl-$series-notes.html
|
||||
|
||||
Specific notes on upgrading to OpenSSL $series from previous versions, as well
|
||||
as known issues are available on the OpenSSL Wiki, here:
|
||||
|
||||
https://wiki.openssl.org/index.php/OpenSSL_$series
|
||||
|
||||
OpenSSL $release is available for download via HTTPS and FTP from the
|
||||
following master locations (you can find the various FTP mirrors under
|
||||
https://www.openssl.org/source/mirror.html):
|
||||
|
||||
* https://www.openssl.org/source/
|
||||
* ftp://ftp.openssl.org/source/
|
||||
|
||||
The distribution file name is:
|
||||
|
||||
o $tarfile
|
||||
Size: $length
|
||||
SHA1 checksum: $sha1hash
|
||||
SHA256 checksum: $sha256hash
|
||||
|
||||
The checksums were calculated using the following commands:
|
||||
|
||||
openssl sha1 $tarfile
|
||||
openssl sha256 $tarfile
|
||||
|
||||
Yours,
|
||||
|
||||
The OpenSSL Project Team.
|
||||
|
||||
@@ -0,0 +1,202 @@
|
||||
#! /bin/sh
|
||||
# Copyright 2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||
# this file except in compliance with the License. You can obtain a copy
|
||||
# in the file LICENSE in the source distribution or at
|
||||
# https://www.openssl.org/source/license.html
|
||||
|
||||
# This will increase the version number and pre-release tag, according to the
|
||||
# current state of the source tree, and the function's first argument (called
|
||||
# |next| internally), which is how the caller tells what the next step should
|
||||
# be.
|
||||
#
|
||||
# The possible current source tree states are:
|
||||
# '' The source is in a released state.
|
||||
# 'dev' The source is in development. This is the normal state.
|
||||
# 'alpha', 'alphadev'
|
||||
# The source is undergoing a series of alpha releases.
|
||||
# 'beta', 'betadev'
|
||||
# The source is undergoing a series of beta releases.
|
||||
# These states are computed from $PRE_LABEL and $TYPE
|
||||
#
|
||||
# The possible |next| values are:
|
||||
# 'alpha' The source tree should move to an alpha release state, or
|
||||
# stay there. This trips the alpha / pre-release counter.
|
||||
# 'beta' The source tree should move to a beta release state, or
|
||||
# stay there. This trips the beta / pre-release counter.
|
||||
# 'final' The source tree should move to a final release (assuming it's
|
||||
# currently in one of the alpha or beta states). This turns
|
||||
# off the alpha or beta states.
|
||||
# '' The source tree should move to the next release. The exact
|
||||
# meaning depends on the current source state. It may mean
|
||||
# tripping the alpha / beta / pre-release counter, or increasing
|
||||
# the PATCH number.
|
||||
#
|
||||
# 'minor' The source tree should move to the next minor version. This
|
||||
# should only be used in the master branch when a release branch
|
||||
# has been created.
|
||||
#
|
||||
# This function expects there to be a function called fixup_version(), which
|
||||
# SHOULD take the |next| as first argument, and SHOULD increase the label
|
||||
# counter or the PATCH number accordingly, but only when the current
|
||||
# state is "in development".
|
||||
|
||||
next_release_state () {
|
||||
local next="$1"
|
||||
local today="$(date '+%-d %b %Y')"
|
||||
local retry=true
|
||||
|
||||
local before="$PRE_LABEL$TYPE"
|
||||
|
||||
while $retry; do
|
||||
retry=false
|
||||
|
||||
$DEBUG >&2 "DEBUG[next_release_state]: BEGIN: \$before=$before"
|
||||
$DEBUG >&2 "DEBUG[next_release_state]: BEGIN: \$next=$next"
|
||||
$DEBUG >&2 "DEBUG[next_release_state]: BEGIN: \$MAJOR=$MAJOR"
|
||||
$DEBUG >&2 "DEBUG[next_release_state]: BEGIN: \$MINOR=$MINOR"
|
||||
$DEBUG >&2 "DEBUG[next_release_state]: BEGIN: \$PATCH=$PATCH"
|
||||
$DEBUG >&2 "DEBUG[next_release_state]: BEGIN: \$TYPE=$TYPE"
|
||||
$DEBUG >&2 "DEBUG[next_release_state]: BEGIN: \$PRE_LABEL=$PRE_LABEL"
|
||||
$DEBUG >&2 "DEBUG[next_release_state]: BEGIN: \$PRE_NUM=$PRE_NUM"
|
||||
$DEBUG >&2 "DEBUG[next_release_state]: BEGIN: \$RELEASE_DATE=$RELEASE_DATE"
|
||||
|
||||
case "$before+$next" in
|
||||
# MAKING ALPHA RELEASES ##################################
|
||||
|
||||
# Alpha releases can't be made from beta versions or real versions
|
||||
beta*+alpha | +alpha )
|
||||
echo >&2 "Invalid state for an alpha release"
|
||||
echo >&2 "Try --beta or --final, or perhaps nothing"
|
||||
exit 1
|
||||
;;
|
||||
# For alpha releases, the tag update is dev => alpha or
|
||||
# alpha dev => alpha for the release itself, and
|
||||
# alpha => alpha dev for post release.
|
||||
dev+alpha | alphadev+alpha )
|
||||
TYPE=
|
||||
RELEASE_DATE="$today"
|
||||
fixup_version "alpha"
|
||||
;;
|
||||
alpha+alpha )
|
||||
TYPE=dev
|
||||
RELEASE_DATE=
|
||||
fixup_version "alpha"
|
||||
;;
|
||||
|
||||
# MAKING BETA RELEASES ###################################
|
||||
|
||||
# Beta releases can't be made from real versions
|
||||
+beta )
|
||||
echo >&2 "Invalid state for beta release"
|
||||
echo >&2 "Try --final, or perhaps nothing"
|
||||
exit 1
|
||||
;;
|
||||
# For beta releases, the tag update is dev => beta1, or
|
||||
# alpha{n}-dev => beta1 when transitioning from alpha to
|
||||
# beta, or beta{n}-dev => beta{n} for the release itself,
|
||||
# or beta{n} => beta{n+1}-dev for post release.
|
||||
dev+beta | alphadev+beta | betadev+beta )
|
||||
TYPE=
|
||||
RELEASE_DATE="$today"
|
||||
fixup_version "beta"
|
||||
;;
|
||||
beta+beta )
|
||||
TYPE=dev
|
||||
RELEASE_DATE=
|
||||
fixup_version "beta"
|
||||
;;
|
||||
# It's possible to switch from alpha to beta in the
|
||||
# post release. That's what --next-beta does.
|
||||
alpha+beta )
|
||||
TYPE=dev
|
||||
RELEASE_DATE=
|
||||
fixup_version "beta"
|
||||
;;
|
||||
|
||||
# MAKING FINAL RELEASES ##################################
|
||||
|
||||
# Final releases can't be made from the main development branch
|
||||
dev+final)
|
||||
echo >&2 "Invalid state for final release"
|
||||
echo >&2 "This should have been preceded by an alpha or a beta release"
|
||||
exit 1
|
||||
;;
|
||||
# For final releases, the starting point must be a dev state
|
||||
alphadev+final | betadev+final )
|
||||
TYPE=
|
||||
RELEASE_DATE="$today"
|
||||
fixup_version "final"
|
||||
;;
|
||||
# The final step of a final release is to switch back to
|
||||
# development
|
||||
+final )
|
||||
TYPE=dev
|
||||
RELEASE_DATE=
|
||||
fixup_version "final"
|
||||
;;
|
||||
|
||||
# SWITCHING TO THE NEXT MINOR RELEASE ####################
|
||||
|
||||
*+minor )
|
||||
TYPE=dev
|
||||
RELEASE_DATE=
|
||||
fixup_version "minor"
|
||||
;;
|
||||
|
||||
# MAKING DEFAULT RELEASES ################################
|
||||
|
||||
# If we're coming from a non-dev, simply switch to dev.
|
||||
# fixup_version() should trip up the PATCH number.
|
||||
+ )
|
||||
TYPE=dev
|
||||
fixup_version ""
|
||||
;;
|
||||
|
||||
# If we're coming from development, switch to non-dev, unless
|
||||
# the PATCH number is zero. If it is, we force the caller to
|
||||
# go through the alpha and beta release process.
|
||||
dev+ )
|
||||
if [ "$PATCH" = "0" ]; then
|
||||
echo >&2 "Can't update PATCH version number from 0"
|
||||
echo >&2 "Please use --alpha or --beta"
|
||||
exit 1
|
||||
fi
|
||||
TYPE=
|
||||
RELEASE_DATE="$today"
|
||||
fixup_version ""
|
||||
;;
|
||||
|
||||
# If we're currently in alpha, we continue with alpha, as if
|
||||
# the user had specified --alpha
|
||||
alpha*+ )
|
||||
next=alpha
|
||||
retry=true
|
||||
;;
|
||||
|
||||
# If we're currently in beta, we continue with beta, as if
|
||||
# the user had specified --beta
|
||||
beta*+ )
|
||||
next=beta
|
||||
retry=true
|
||||
;;
|
||||
|
||||
*)
|
||||
echo >&2 "Invalid combination of options"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
$DEBUG >&2 "DEBUG[next_release_state]: END: \$before=$before"
|
||||
$DEBUG >&2 "DEBUG[next_release_state]: END: \$next=$next"
|
||||
$DEBUG >&2 "DEBUG[next_release_state]: END: \$MAJOR=$MAJOR"
|
||||
$DEBUG >&2 "DEBUG[next_release_state]: END: \$MINOR=$MINOR"
|
||||
$DEBUG >&2 "DEBUG[next_release_state]: END: \$PATCH=$PATCH"
|
||||
$DEBUG >&2 "DEBUG[next_release_state]: END: \$TYPE=$TYPE"
|
||||
$DEBUG >&2 "DEBUG[next_release_state]: END: \$PRE_LABEL=$PRE_LABEL"
|
||||
$DEBUG >&2 "DEBUG[next_release_state]: END: \$PRE_NUM=$PRE_NUM"
|
||||
$DEBUG >&2 "DEBUG[next_release_state]: END: \$RELEASE_DATE=$RELEASE_DATE"
|
||||
done
|
||||
}
|
||||
|
||||
@@ -0,0 +1,114 @@
|
||||
#! /bin/sh
|
||||
# Copyright 2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||
# this file except in compliance with the License. You can obtain a copy
|
||||
# in the file LICENSE in the source distribution or at
|
||||
# https://www.openssl.org/source/license.html
|
||||
|
||||
# These functions load, manipulate and store the current version information
|
||||
# for OpenSSL 3.0 and on.
|
||||
# They are meant to be minimalistic for easy refactoring depending on OpenSSL
|
||||
# version.
|
||||
#
|
||||
# Version information is stored in the following variables:
|
||||
#
|
||||
# |MAJOR|, |MINOR|, |PATCH| are the three parts of a version number.
|
||||
# |MAJOR| is to be increased for new major releases, |MINOR| for new
|
||||
# minor releases, and |PATCH| for update releases.
|
||||
#
|
||||
# |SERIES| tells what release series the current version belongs to, and
|
||||
# is composed from |MAJOR| and |MINOR|.
|
||||
# |VERSION| tells what the current version is, and is composed from |MAJOR|,
|
||||
# |MINOR| and |PATCH|.
|
||||
# |TYPE| tells what state the source is in. It may have an empty value
|
||||
# for released source, or 'dev' for "in development".
|
||||
# |PRE_LABEL| may be "alpha" or "beta" to signify an ongoing series of
|
||||
# alpha or beta releases. |PRE_NUM| is a pre-release counter for the
|
||||
# alpha and beta release series, but isn't necessarily strictly tied
|
||||
# to the prerelease label.
|
||||
#
|
||||
# Scripts loading this file are not allowed to manipulate these
|
||||
# variables directly. They must use functions such as fixup_version()
|
||||
# below, or next_release_state(), found in release-state-fn.sh.
|
||||
|
||||
# These functions depend on |SOURCEDIR|, which must have the intended
|
||||
# OpenSSL source directory as value.
|
||||
|
||||
get_version () {
|
||||
eval $(git cat-file blob HEAD:VERSION)
|
||||
VERSION="$MAJOR.$MINOR.$PATCH"
|
||||
SERIES="$MAJOR.$MINOR"
|
||||
TYPE=$( echo "$PRE_RELEASE_TAG" \
|
||||
| sed -E \
|
||||
-e 's|^dev$|dev|' \
|
||||
-e 's|^alpha([0-9]+)(-(dev))?$|\3|' \
|
||||
-e 's|^beta([0-9]+)(-(dev))?$|\3|' )
|
||||
PRE_LABEL=$( echo "$PRE_RELEASE_TAG" \
|
||||
| sed -E \
|
||||
-e 's|^dev$||' \
|
||||
-e 's|^alpha([0-9]+)(-(dev))?$|alpha|' \
|
||||
-e 's|^beta([0-9]+)(-(dev))?$|beta|' )
|
||||
PRE_NUM=$( echo "$PRE_RELEASE_TAG" \
|
||||
| sed -E \
|
||||
-e 's|^dev$|0|' \
|
||||
-e 's|^alpha([0-9]+)(-(dev))?$|\1|' \
|
||||
-e 's|^beta([0-9]+)(-(dev))?$|\1|' )
|
||||
}
|
||||
|
||||
# $1 is one of "alpha", "beta", "final", "", or "minor"
|
||||
fixup_version () {
|
||||
local new_label="$1"
|
||||
|
||||
case "$new_label" in
|
||||
alpha | beta )
|
||||
if [ "$new_label" != "$PRE_LABEL" ]; then
|
||||
PRE_LABEL="$new_label"
|
||||
PRE_NUM=1
|
||||
elif [ "$TYPE" = 'dev' ]; then
|
||||
PRE_NUM=$(expr $PRE_NUM + 1)
|
||||
fi
|
||||
;;
|
||||
final | '' )
|
||||
if [ "$TYPE" = 'dev' ]; then
|
||||
PATCH=$(expr $PATCH + 1)
|
||||
fi
|
||||
PRE_LABEL=
|
||||
PRE_NUM=0
|
||||
;;
|
||||
minor )
|
||||
if [ "$TYPE" = 'dev' ]; then
|
||||
MINOR=$(expr $MINOR + 1)
|
||||
PATCH=0
|
||||
fi
|
||||
PRE_LABEL=
|
||||
PRE_NUM=0
|
||||
;;
|
||||
esac
|
||||
|
||||
VERSION="$MAJOR.$MINOR.$PATCH"
|
||||
SERIES="$MAJOR.$MINOR"
|
||||
}
|
||||
|
||||
set_version () {
|
||||
case "$TYPE+$PRE_LABEL+$PRE_NUM" in
|
||||
*++* )
|
||||
PRE_RELEASE_TAG="$TYPE"
|
||||
;;
|
||||
dev+* )
|
||||
PRE_RELEASE_TAG="$PRE_LABEL$PRE_NUM-dev"
|
||||
;;
|
||||
+* )
|
||||
PRE_RELEASE_TAG="$PRE_LABEL$PRE_NUM"
|
||||
;;
|
||||
esac
|
||||
cat > "$SOURCEDIR/VERSION" <<EOF
|
||||
MAJOR=$MAJOR
|
||||
MINOR=$MINOR
|
||||
PATCH=$PATCH
|
||||
PRE_RELEASE_TAG=$PRE_RELEASE_TAG
|
||||
BUILD_METADATA=$BUILD_METADATA
|
||||
RELEASE_DATE="$RELEASE_DATE"
|
||||
SHLIB_VERSION=$SHLIB_VERSION
|
||||
EOF
|
||||
}
|
||||
Reference in New Issue
Block a user