1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
|
#!/bin/bash
# ------------------------------------------------------------------------------
# pgRouting Scripts
# Copyright(c) pgRouting Contributors
#
# Pump up version
# ------------------------------------------------------------------------------
# shellcheck disable=SC2016
WHAT_NEXT=$1
# Script to pump up branch to next development
# Usage:
# bash tools/developer/pumpup_version.sh minor
OLD_VERSION=$(grep -Po '(?<=project\(PGROUTING VERSION )[^;]+' CMakeLists.txt)
KIND=$(grep -Po '(?<=set\(PROJECT_VERSION_DEV )[^;]+\"\)' CMakeLists.txt)
echo "KIND=${KIND}"
KIND=$(echo "${KIND}" | awk -F'"' '{print $2}')
echo "OLD_VERSION=${OLD_VERSION}"
echo "KIND=${KIND}"
IFS='\. ' read -r -a a <<< "${OLD_VERSION}"
MAYOR="${a[0]}"
MINOR="${a[1]}"
function pumpup_mayor {
((a[0]++))
NEW_MAYOR="${a[0]}"
NEW_MINOR="0"
NEW_MICRO="0"
NEW_KIND="-dev"
}
function pumpup_minor {
((a[1]++))
NEW_MAYOR="${a[0]}"
NEW_MINOR="${a[1]}"
NEW_MICRO="0"
NEW_KIND="-dev"
}
function pumpup_micro {
((a[2]++))
NEW_MAYOR="${a[0]}"
NEW_MINOR="${a[1]}"
NEW_MICRO="${a[2]}"
NEW_KIND="${KIND}"
}
if [ "${WHAT_NEXT}" == "mayor" ]
then
pumpup_mayor
elif [ "${WHAT_NEXT}" == "micro" ]
then
pumpup_micro
elif [ "${WHAT_NEXT}" == "minor" ]
then
pumpup_minor
fi
NEW_VERSION="${NEW_MAYOR}.${NEW_MINOR}.${NEW_MICRO}"
echo "pumpup from ${OLD_VERSION}${KIND} to ${NEW_VERSION}${NEW_KIND}"
# --------------------------------------------
# --------------------------------------------
# Modifications to CMakeLists
# --------------------------------------------
# --------------------------------------------
# set version to new version
perl -pi -e 's/project\(PGROUTING VERSION (.*)$/project\(PGROUTING VERSION '"${NEW_VERSION}"'/g' CMakeLists.txt
perl -pi -e 's/set\(PROJECT_VERSION_DEV(.*)$/set\(PROJECT_VERSION_DEV "'"${NEW_KIND}"'"\)/g' CMakeLists.txt
perl -pi -e 's/OLD_SIGNATURES$/OLD_SIGNATURES\n '"${OLD_VERSION}"'/g' CMakeLists.txt
if [ "${WHAT_NEXT}" != "micro" ]
then
perl -pi -e 's/set\(MINORS(.*)$/set\(MINORS '"${NEW_MAYOR}"'.'"${NEW_MINOR}"'$1/g' CMakeLists.txt
fi
# --------------------------------------------
# --------------------------------------------
# sql directory
# --------------------------------------------
# --------------------------------------------
# --------------------------------------------
# Copy last signature file
# --------------------------------------------
if [ "${WHAT_NEXT}" != "micro" ]
then
cp -f "sql/sigs/pgrouting--${MAYOR}.${MINOR}.sig" "sql/sigs/pgrouting--${NEW_MAYOR}.${NEW_MINOR}.sig"
git add "sql/sigs/pgrouting--${MAYOR}.${NEW_MINOR}.sig"
fi
# --------------------------------------------
# Adding section in release notes & news
# --------------------------------------------
perl -pi -e 's/(pgRouting '"${OLD_VERSION}"' Release Notes)/
pgRouting '"${NEW_VERSION}"' Release Notes
-------------------------------------------------------------------------------
No Changes Yet
$1/g' doc/src/release_notes.rst
# adding to news
tools/release-scripts/notes2news.pl
# --------------------------------------------
# tests are done to new version
# --------------------------------------------
perl -pi -e 's/'"${OLD_VERSION}"'/'"${NEW_VERSION}"'/g' tools/testers/pg_prove_tests.sh
# --------------------------------------------
# Change return values of version
# --------------------------------------------
perl -pi -e 's/'"${OLD_VERSION}${KIND}"'/'"${NEW_VERSION}${NEW_KIND}"'/' docqueries/version/*.result
if [ "${WHAT_NEXT}" == "minor" ]
then
perl -pi -e 's/^---------/-----------/' docqueries/version/doc-full_version.result
fi
perl -pi -e 's/'"${OLD_VERSION}"'/'"${NEW_VERSION}"'/' docqueries/version/*.result
# --------------------------------------------
# Update action to include old version
# --------------------------------------------
perl -pi -e 's/'"${OLD_VERSION}"'/'"${NEW_VERSION}"'/g' .github/workflows/update.yml
perl -pi -e 's/old_pgr: \[/old_pgr: \['"${OLD_VERSION}"', /g' .github/workflows/update.yml
perl -pi -e 's/'"${OLD_VERSION}"'/'"${NEW_VERSION}"'/g' .github/workflows/boost_version.yml
# --------------------------------------------
# Include file in CMakeLists.txt
# --------------------------------------------
if [ "${WHAT_NEXT}" != "micro" ]
then
perl -pi -e 's/# add minor here/my \$version_'"${NEW_MAYOR}"'_'"${NEW_MINOR}"' = qr\/\('"${NEW_MAYOR}"'\.'"${NEW_MINOR}"'\.\[\\d\+\]\)\/;\n# add minor here/g' sql/scripts/build-extension-update-files.pl
perl -pi -e 's/my \$current = (.*)$/my \$current = \$version_'"${NEW_MAYOR}"'\_'"${NEW_MINOR}"';/g' sql/scripts/build-extension-update-files.pl
perl -pi -e 's/unless \$old_version =~ (.*)\/;$/unless \$old_version =~ $1|\$version_'"${NEW_MAYOR}"'_'"${NEW_MINOR}"'\/;/g' sql/scripts/build-extension-update-files.pl
fi
# ------
# Documentation related
# ------
bash tools/transifex/update_locale.sh
perl -pi -e 's/# Copyright(.*) v(.*)$/# Copyright$1 v'"${NEW_MAYOR}.${NEW_MINOR}"'/' locale/pot/*.pot locale/*/*/*.po
perl -pi -e 's/Id-Version: pgRouting v'"${MAYOR}.${MINOR}"'/Id-Version: pgRouting v'"${NEW_MAYOR}.${NEW_MINOR}"'/' locale/*/*/*.po locale/pot/*.pot
perl -pi -e "s/versionsArr = \[/versionsArr = \['${NEW_MAYOR}.${NEW_MINOR}',/" doc/_static/page_history.js
|