Create a new GUDHI version

We will consider that all operations will be performed in a brand new clone of the main project:

git clone https://github.com/GUDHI/gudhi-devel.git
cd gudhi-devel

Version file modification

Edit the file CMakeGUDHIVersion.txt, and increment major, minor, or patch version number, in function of the version new delivery.

# cf. .gitignore - ignore this if it is a fresh clone version
rm -rf data/points/COIL_database/lucky_cat.off_dist data/points/COIL_database/lucky_cat.off_sc.dot data/points/KleinBottle5D.off_dist data/points/KleinBottle5D.off_sc.dot data/points/human.off_dist data/points/human.off_sc.off data/points/human.off_sc.txt

Checkin the modifications, build and test the version:

git submodule update --init
rm -rf build; mkdir build; cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCGAL_DIR=/your/path/to/CGAL -DWITH_GUDHI_EXAMPLE=ON -DWITH_GUDHI_BENCHMARK=ON -DUSER_VERSION_DIR=gudhi.3.4.0 -DPython_ADDITIONAL_VERSIONS=3 ..
make user_version
date +"%d-%m-%Y-%T" > gudhi.3.4.0/timestamp.txt
tar -czvf gudhi.3.4.0.tar.gz gudhi.3.4.0
md5sum gudhi.3.4.0.tar.gz > md5sum.txt
sha256sum gudhi.3.4.0.tar.gz > sha256sum.txt
sha512sum gudhi.3.4.0.tar.gz > sha512sum.txt
make -j 4 all && ctest -j 4 --output-on-failure

[Check there are no error]

Create the documentation

mkdir gudhi.doc.3.4.0
make doxygen 2>&1 | tee dox.log && grep warning dox.log

[Check there are no error and the warnings]

cp -R gudhi.3.4.0/doc/html gudhi.doc.3.4.0/cpp
cd gudhi.3.4.0
rm -rf build; mkdir build; cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCGAL_DIR=/your/path/to/CGAL -DWITH_GUDHI_EXAMPLE=ON -DPython_ADDITIONAL_VERSIONS=3 ..
export LC_ALL=en_US.UTF-8 # cf. bug https://github.com/GUDHI/gudhi-devel/issues/111
make sphinx

[Check there are no error]

cp -R python/sphinx ../../gudhi.doc.3.4.0/python
cd ../..
tar -czvf gudhi.doc.3.4.0.tar.gz gudhi.doc.3.4.0
cd gudhi.3.4.0/build
make -j 4 all && ctest -j 4 --output-on-failure

[Check there are no error]

Upload the documentation

Upload by ftp the content of the directory gudhi.doc.3.4.0/cpp in a new directory on Forge.nosp@m.Logi.nosp@m.n@scm.nosp@m..gfo.nosp@m.rge.i.nosp@m.nria.nosp@m..fr:/home/groups/gudhi/htdocs/doc/3.4.0

Upload by ftp the content of the directory gudhi.doc.3.4.0/python in a new directory on Forge.nosp@m.Logi.nosp@m.n@scm.nosp@m..gfo.nosp@m.rge.i.nosp@m.nria.nosp@m..fr:/home/groups/gudhi/htdocs/python/3.4.0

Through ssh, make the latest link to your new version of the documentation:

ssh ForgeLogin@scm.gforge.inria.fr
cd /home/groups/gudhi/htdocs/doc
rm latest
ln -s 3.4.0 latest
cd /home/groups/gudhi/htdocs/python
rm latest
ln -s 3.4.0 latest

Put a version label on files

  • Go on page https://github.com/GUDHI/gudhi-devel/releases/new
  • Name the tag: tags/gudhi-release-3.4.0
  • Name the release GUDHI 3.4.0 release
  • Write the release note
  • Drag'n drop gudhi.3.4.0.tar.gz, md5sum.txt, sha256sum.txt, sha512sum.txt files
  • Tick the This is a pre-release check button if this is a release candidate (untick if this is an official version)
  • Click the Publish the release button

Pip package

The pip package construction shall be started on release creation, you just have to check gudhi github actions results. The version number must be conform to pep440

Conda package

You have to fork conda-forge/gudhi-feedstock. The main changes consist into changing in the recipe/meta.yaml:

  • {% set version = "3.4.0" %}
  • The cgal-cpp version number with the last one (you can find it here) in the host: and the run: sections

Create a Pull Request (PR) from this fork. If you need to update conda tools (conda-build, conda-smithy, ...), add a comment in your PR saying @conda-forge-admin, please rerender, it will done automatically (do not forget to git pull the changes).

Docker image

You have to modify the Dockerfile_gudhi_installation at the root of this repository in order to use the last release, cf. lines:

...
RUN curl -LO "https://github.com/GUDHI/gudhi-devel/releases/download/tags%2Fgudhi-release-3.4.0/gudhi.3.4.0.tar.gz" \
&& tar xf gudhi.3.4.0.tar.gz \
&& cd gudhi.3.4.0 \
...

Build and push images to docker hub:

docker build -f Dockerfile_gudhi_installation -t gudhi/latest_gudhi_version:3.4.0 .
docker run --rm -it gudhi/latest_gudhi_version:3.4.0

[Check there are no error with utils and python version]

docker tag gudhi/latest_gudhi_version:3.4.0 gudhi/latest_gudhi_version:latest
docker push gudhi/latest_gudhi_version:latest
docker push gudhi/latest_gudhi_version:3.4.0

Mail sending

Send version mail to the following lists :

GUDHI  Version 3.4.0  - C++ library for Topological Data Analysis (TDA) and Higher Dimensional Geometry Understanding.  - Copyright : MIT Generated on Thu Dec 17 2020 13:50:12 for GUDHI by Doxygen 1.8.20