Skip to content

Commit 01caadb

Browse files
authored
Merge branch 'main' into issue-1153-additional-vader-workers
2 parents ba2fe6b + 8e7e65a commit 01caadb

10 files changed

Lines changed: 232 additions & 173 deletions

File tree

doc/developing/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ Contents:
77
:maxdepth: 2
88

99
documenting
10+
releasing
1011
design/index

doc/developing/releasing.rst

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
.. _releasing:
2+
3+
================
4+
Making a release
5+
================
6+
7+
Every once in a while, we make a new release of AMUSE, when we feel that enough new
8+
features have accumulated or when important fixes have been made. AMUSE is quite mature
9+
by now, and uses a time-based versioning scheme with the `CalVer <https://calver.org/>`_
10+
pattern vYYYY.MM.MICRO.
11+
12+
Making a release takes three steps: collecting changes, tagging the release, and making
13+
a release on GitHub.
14+
15+
16+
Collecting changes
17+
==================
18+
19+
Every release should come with a description of changes, so that the users know what to
20+
expect. GitHub can make these automatically, but it's nice to check by hand to make sure
21+
nothing and in particular no one (contributor) goes missing.
22+
23+
All the changes are in the git log, so this is a matter of running ``git log`` with your
24+
favourite options and making a list of changes and contributors.
25+
26+
27+
Tagging the release
28+
===================
29+
30+
Each release needs to be tagged in git to make sure we know exactly which version of the
31+
software is being released, and so that the build system knows which version it's
32+
building and installing and can set the metadata correctly.
33+
34+
Git knows two different kinds of tags, annotated tags and lightweight tags. Annotated
35+
tags are intended for releases, and because of the way our build system is set up, they
36+
*must* be used. Tagging the current main version of AMUSE is done using:
37+
38+
.. code-block:: bash
39+
40+
git switch main
41+
git pull
42+
git tag -a -m 'Release v2025.9.0' v2025.9.0
43+
44+
45+
Or whatever the current year and month is. The third number should be used to
46+
distinguish multiple releases within a single month.
47+
48+
The ``-a`` in the final command makes an annotated tag, ``-m`` adds a (required) message
49+
to it, and ``v2025.9.0`` is the name of the tag.
50+
51+
Make sure that you follow exactly this pattern (with a ``v`` at the start and periods,
52+
not underscores or dashes), as the build system relies on it.
53+
54+
If you run
55+
56+
.. code-block:: bash
57+
58+
git cat-file -t v2025.9.0
59+
60+
61+
it should show ``tag``, not ``commit``.
62+
63+
If the tag has been made correctly, then you can push it to GitHub using
64+
65+
.. code-block:: bash
66+
67+
git push tag v2025.9.0
68+
69+
70+
Making a GitHub release
71+
=======================
72+
73+
Finally, we will make a GitHub release, which adds the release to GitHub's Releases page
74+
with a nice description, causes GitHub to make a tar.gz archive available for the
75+
release, and archives the release on Zenodo.
76+
77+
Go to `the AMUSE releases page <https://github.com/amusecode/amuse/releases>`_, and
78+
click "Draft a new release" at the top. Select the tag you just made, add a title for
79+
the release (generally just "v2025.9.0" or whatever the version is), and then click
80+
"Generate release notes".
81+
82+
Check your list of changes and contributors from above against what GitHub generated,
83+
and edit as needed. Consider whether the release notes make sense from the perspective
84+
of a user of AMUSE; the developers already know what's going on. In particular, you may
85+
want to organise the changes a bit, starting with new user-visible features,
86+
user-visible fixes, then more technical improvements that don't affect the users' every
87+
day usage.
88+
89+
Once you have something that will help the users quickly see what's new and whether they
90+
should upgrade, you can set the new release as the latest one, don't make it a
91+
pre-release (see below), and don't create a discussion, and when all is ready click
92+
"Publish release" to publish it.
93+
94+
95+
Pre-releases
96+
============
97+
98+
Pre-releases can be a good way of inviting people to test some big changes, giving you a
99+
chance to fix any issues before making the final release. Pre-releases should be tagged
100+
as above, with a version of the form v2025.5.0.rc1 (rc stands for release candidate).
101+
Then a GitHub release can be made and marked as a pre-release.
102+
103+

doc/install/installing.rst

Lines changed: 86 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ To install AMUSE, we need to
1010
(AMUSE can also be installed without Conda if needed, as described below, but we
1111
recommend using Conda.)
1212

13-
If you have a Mac, then you should skip to :ref:`Setting up macOS`, and if you're
14-
running Linux then you can go straight to :ref:`Installing Conda`. For Windows, continue
13+
If you have a Mac, then you should skip to :ref:`setting_up_macOS`, and if you're
14+
running Linux then you can go straight to :ref:`installing_conda`. For Windows, continue
1515
here with installing WSL.
1616

1717
Installing WSL
@@ -55,9 +55,10 @@ updates. We can then install them using this:
5555
sudo apt -y upgrade
5656
5757
58-
Now you can continue with :ref:`Installing Conda`, using the Ubuntu terminal window to
58+
Now you can continue with :ref:`installing_conda`, using the Ubuntu terminal window to
5959
enter the instructions.
6060

61+
.. _setting_up_macOS:
6162

6263
Setting up macOS
6364
----------------
@@ -99,6 +100,7 @@ loaded, and then you're ready to install Conda.
99100
If you use Bash instead of zsh, then you'll need to edit ``.bashrc`` instead. When in
100101
doubt, you can safely edit both files to be sure.
101102

103+
.. _installing_conda:
102104

103105
Installing Conda
104106
----------------
@@ -108,10 +110,9 @@ available. Conda is a package manager, a program with which you can install othe
108110
programs. It's very widely used in science and beyond, so having a working Conda setup
109111
is very useful also outside of the world of AMUSE.
110112

111-
If you already have a working Conda setup, then you can continue to :ref:`Installing
112-
AMUSE`.
113+
If you already have a working Conda setup, then you can continue to :ref:`installing_amuse`.
113114

114-
If you cannot or don't want to use Conda, see :ref:`Using a virtualenv` below.
115+
If you cannot or don't want to use Conda, see :ref:`using_a_virtualenv` below.
115116

116117
If you do not yet have Conda, then you can install it using the following commands in
117118
the terminal. (Linux users can open one from the menu, Windows and macOS users will
@@ -135,6 +136,8 @@ Finally, close your terminal window and open a new one to make the ``conda`` com
135136
properly available.
136137

137138

139+
.. _installing_amuse:
140+
138141
Installing AMUSE
139142
----------------
140143

@@ -145,22 +148,22 @@ command in your terminal to download it as above, for example:
145148

146149
.. code-block:: bash
147150
148-
curl -L -O "https://github.com/amusecode/amuse/archive/refs/tags/v2025.5.0.tar.gz"
151+
curl -L -O "https://github.com/amusecode/amuse/archive/refs/tags/v2025.9.0.tar.gz"
149152
150153
151154
This ``.tar.gz`` file needs to be unpacked first (you may need to change the version if
152155
you downloaded a newer one):
153156

154157
.. code-block:: bash
155158
156-
tar xf v2025.5.0.tar.gz
159+
tar xf v2025.9.0.tar.gz
157160
158161
159162
Then we can enter the directory with the AMUSE source code:
160163

161164
.. code-block:: bash
162165
163-
cd amuse-2025.5.0
166+
cd amuse-2025.9.0
164167
165168
166169
And then you can start the installer:
@@ -183,40 +186,6 @@ Slack <https://amusecode.slack.com>`_ or by `making an issue on
183186
GitHub <https://github.com/amusecode/amuse/issues/new/choose>`_.
184187

185188

186-
Installing from a Git repository
187-
````````````````````````````````
188-
189-
If you plan to modify AMUSE or one of the codes in it, then you may want to install from
190-
a local git clone instead of from a tar file. This will take more disk space and more
191-
download time, so it shouldn't be the first option, but if you want to do it then you
192-
can. You'll need to gave `git` installed:
193-
194-
.. code-block:: bash
195-
196-
git clone https://github.com/amusecode/amuse.git
197-
198-
199-
Then you can enter the source directory using:
200-
201-
.. code-block:: bash
202-
203-
cd amuse
204-
205-
206-
Select a version to build (use either one of these, or whichever version is relevant):
207-
208-
.. code-block:: bash
209-
210-
git switch main # current development version
211-
git checkout checkout v2025.5.0 # tagged release
212-
213-
And now you can start the installer as before:
214-
215-
.. code-block:: bash
216-
217-
./setup
218-
219-
220189
Additional packages
221190
```````````````````
222191

@@ -268,17 +237,89 @@ and then you can run it as before using
268237
269238
270239
You should now have a working AMUSE setup. To start
271-
using it, see :ref:`Getting started with AMUSE` or the :ref:`Interactive tutorial`
240+
using it, see :ref:`getting_started_with_amuse` or the :ref:`interactive_tutorial`
241+
242+
243+
Debugging conda package installation
244+
````````````````````````````````````
245+
246+
If you encounter problems with installing packages using ``conda``, or AMUSE doesn't
247+
compile correctly, then you should check that you are using the ``conda-forge`` channel
248+
rather than something else.
249+
250+
Conda can use different sources of packages, which it calls channels. Different channels
251+
contain software packaged by different people, and packages from different channels are
252+
often incompatible. If you type
253+
254+
.. code-block:: bash
255+
256+
conda list
257+
258+
259+
then you should see a list of packages that are installed in the active environment, and
260+
which channel they came from. Ideally, all of them have ``conda-forge`` as the channel.
261+
262+
If not, then you can reinstall the package from ``conda-forge`` and see if that improves
263+
the situation.
264+
265+
To reinstall a package from ``conda-forge``, use
266+
267+
.. code-block:: bash
268+
269+
conda install -c conda-forge <package name>
270+
271+
272+
If you want to combine AMUSE with another package that isn't available from conda-forge,
273+
then you may have to install that from another channel, and hope that things work. Or
274+
ask the maintainers of that package to add it to conda-forge and be a bit more
275+
compatible with the rest of the world.
272276

273277

274278
Alternative installation options
275279
================================
276280

277281
The above instructions are the easiest way to install AMUSE, and they should work for
278282
almost everyone wanting to use AMUSE to do astrophysics. Nevertheless, there may be
279-
cases where you need a different setup, for example because you cannot use Conda. In
283+
cases where you need a different setup, for example because you cannot use Conda. In
280284
that case, you'll want one of these alternative installations.
281285

286+
.. _installing_from_git:
287+
288+
Installing from a Git repository
289+
--------------------------------
290+
291+
If you plan to modify AMUSE or one of the codes in it, then you may want to install from
292+
a local git clone instead of from a tar file. This will take more disk space and more
293+
download time, so it shouldn't be the first option, but if you want to do it then you
294+
can. You'll need to gave `git` installed:
295+
296+
.. code-block:: bash
297+
298+
git clone https://github.com/amusecode/amuse.git
299+
300+
301+
Then you can enter the source directory using:
302+
303+
.. code-block:: bash
304+
305+
cd amuse
306+
307+
308+
Select a version to build (use either one of these, or whichever version is relevant):
309+
310+
.. code-block:: bash
311+
312+
git switch main # current development version
313+
git checkout checkout v2025.9.0 # tagged release
314+
315+
And now you can start the installer as before:
316+
317+
.. code-block:: bash
318+
319+
./setup
320+
321+
322+
.. _using_a_virtualenv:
282323

283324
Using a virtualenv
284325
------------------

doc/interactive_tutorial/index.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
.. _interactive_tutorial:
2+
13
Interactive tutorial
24
====================
35

0 commit comments

Comments
 (0)