Skip to main content
  • Home
  • login
  • Browse the archive

    swh mirror partner logo
swh logo
SoftwareHeritage
Software
Heritage
Mirror
Features
  • Search

  • Downloads

  • Save code now

  • Add forge now

  • Help

  • 9a984aa
  • /
  • release-version-fn.sh
Raw File
Permalinks

To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.

  • content
  • directory
content badge Iframe embedding
swh:1:cnt:e9e1ac3850785f779867e4e8233b24364d5428fc
directory badge Iframe embedding
swh:1:dir:9a984aad0ba8c5aa3e5b7a2da5b56c440f9c04ff
release-version-fn.sh
#! /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.dat)
    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.dat" <<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
}

ENEA — Copyright (C), ENEA. License: GNU AGPLv3+.
Legal notes  ::  JavaScript license information ::  Web API

back to top