Skip to content

Commit ad52a21

Browse files
committed
Merge branch 'main' into issue-1144-new-continuous-integration
2 parents 0174ae2 + 0fbf110 commit ad52a21

630 files changed

Lines changed: 15230 additions & 113243 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/ISSUE_TEMPLATE/bug_report.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
name: Bug report
33
about: Create a report to help us improve
44
title: ''
5-
labels: bug
5+
labels: 'kind: bug'
66
assignees: ''
77

88
---

.github/ISSUE_TEMPLATE/feature_request.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
name: Feature request
33
about: Suggest a feature or improvement for AMUSE
44
title: ''
5-
labels: feature request
5+
labels: 'kind: feature request'
66
assignees: ''
77

88
---

.github/ISSUE_TEMPLATE/question.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
name: Question
33
about: Ask an AMUSE-related question
44
title: ''
5-
labels: question
5+
labels: 'kind: question'
66
assignees: ''
77

88
---

.github/stale.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ daysUntilStale: 365
44
daysUntilClose: 365
55
# Issues with these labels will never be considered stale
66
exemptLabels:
7-
- pinned
8-
- security
9-
- feature request
10-
- keep-open
11-
- bug
7+
- 'status: pinned'
8+
- 'kind: security'
9+
- 'kind: feature request'
10+
- 'status: keep-open'
11+
- 'kind: bug'
1212
# Label to use when marking an issue as stale
13-
staleLabel: stale
13+
staleLabel: 'status: stale'
1414
# Comment to post when marking an issue as stale. Set to `false` to disable
1515
markComment: >
1616
This issue has been automatically marked as stale because it has not had

.github/workflows/test-framework.yml

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -35,29 +35,15 @@ jobs:
3535
conda info
3636
conda list
3737
38-
- name: Install dependencies
38+
- name: Install dependencies (Linux)
39+
if: ${{ startsWith(matrix.os, 'ubuntu') }}
3940
run: |
40-
conda install c-compiler cxx-compiler fortran-compiler 'gfortran<14' python pkgconfig coreutils patch curl tar unzip gzip bzip2 xz perl bison make cmake 'openmpi<5' gsl fftw gmp mpfr hdf5 netcdf4 libopenblas liblapack zlib pip wheel 'docutils>=0.6' 'mpi4py>=1.1.0' 'numpy>=1.2.2' 'h5py>=1.1.0' pytest
41+
conda install c-compiler cxx-compiler fortran-compiler 'gfortran<14' python-gil pkgconfig coreutils patch curl tar unzip gzip bzip2 xz perl bison make cmake openmpi gsl fftw gmp mpfr hdf5 netcdf4 libopenblas liblapack zlib pip wheel 'docutils>=0.6' 'mpi4py>=1.1.0' 'numpy>=1.2.2' 'h5py>=1.1.0' pytest
4142
42-
- name: Configure OpenMPI
43-
if: ${{ matrix.os == 'ubuntu-latest' }}
43+
- name: Install dependencies (macOS)
44+
if: ${{ startsWith(matrix.os, 'macos') }}
4445
run: |
45-
mkdir -p "$HOME/.openmpi"
46-
echo "btl_tcp_if_include = lo" >>"$HOME/.openmpi/mca-params.conf"
47-
echo "rmaps_base_oversubscribe = true" >>"$HOME/.openmpi/mca-params.conf"
48-
# These help with debugging, but produce lots of output
49-
# echo "mpi_yield_when_idle = true" >>"$HOME/.openmpi/mca-params.conf"
50-
# echo "mca_base_verbose = stdout,level:9" >> "$HOME/.openmpi/mca-params.conf"
51-
# echo "mpi_comm_verbose = 100" >> "$HOME/.openmpi/mca-params.conf"
52-
# echo "btl_base_verbose = 100" >> "$HOME/.openmpi/mca-params.conf"
53-
# echo "hwloc_base_verbose = 100" >> "$HOME/.openmpi/mca-params.conf"
54-
# echo "if_base_verbose = 100" >> "$HOME/.openmpi/mca-params.conf"
55-
# echo "pmix_base_verbose = 100" >> "$HOME/.openmpi/mca-params.conf"
56-
#
57-
# These are for OpenMPI 5, which I can't get to work
58-
# mkdir -p "$HOME/.prte"
59-
# echo "rmaps_default_mapping_policy = :oversubscribe" >>"$HOME/.prte/mca-params.conf"
60-
# echo "prte_if_include = lo,eth0" >>"$HOME/.prte/mca-params.conf"
46+
conda install c-compiler cxx-compiler fortran-compiler 'gfortran<14' python-gil pkgconfig coreutils patch curl tar unzip gzip bzip2 xz perl bison make cmake mpich gsl fftw gmp mpfr hdf5 netcdf4 libopenblas liblapack zlib pip wheel 'docutils>=0.6' 'mpi4py>=1.1.0' 'numpy>=1.2.2' 'h5py>=1.1.0' pytest
6147
6248
- name: Checkout
6349
uses: actions/checkout@v4
@@ -74,6 +60,16 @@ jobs:
7460
./setup distclean
7561
7662
- name: Test framework
63+
env:
64+
OMPI_MCA_rmaps_base_oversubscribe: 1
65+
PRTE_MCA_rmaps_base_oversubscribe: 1
66+
PRTE_MCA_rmaps_default_mapping_policy: ":oversubscribe"
67+
OMPI_MCA_mpi_yield_when_idle: 1
68+
PRTE_MCA_mpi_yield_when_idle: 1
69+
OMPI_MCA_btl_tcp_if_include: lo,eth0
70+
PRTE_MCA_btl_tcp_if_include: lo,eth0
71+
PRTE_MCA_if_include: lo,eth0
72+
OMPI_MCA_pmix_server_max_wait: 10
7773
run: |
7874
./setup test amuse-framework
7975

.github/workflows/test-seba.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ jobs:
4343
4444
- name: Install dependencies
4545
run: |
46-
conda install c-compiler cxx-compiler fortran-compiler 'gfortran<14' python pkgconfig coreutils patch curl tar unzip gzip bzip2 xz perl bison make cmake 'openmpi<5' gsl fftw gmp mpfr hdf5 netcdf4 libopenblas liblapack zlib pip wheel 'docutils>=0.6' 'mpi4py>=1.1.0' 'numpy>=1.2.2' 'h5py>=1.1.0' pytest
46+
conda install c-compiler cxx-compiler fortran-compiler 'gfortran<14' python-gil pkgconfig coreutils patch curl tar unzip gzip bzip2 xz perl bison make cmake openmpi gsl fftw gmp mpfr hdf5 netcdf4 libopenblas liblapack zlib pip wheel 'docutils>=0.6' 'mpi4py>=1.1.0' 'numpy>=1.2.2' 'h5py>=1.1.0' pytest
4747
4848
- name: Configure OpenMPI
4949
if: ${{ matrix.os == 'ubuntu-latest' }}

doc/developing/documenting.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ It's easiest to install the required packages using Conda:
1414

1515
.. code-block:: bash
1616
17-
conda install jupyter sphinx make numpy sphinx_rtd_theme matplotlib rst2pdf
17+
conda install -c conda-forge --override-channels jupyter sphinx make numpy sphinx_rtd_theme matplotlib rst2pdf
1818
1919
.. _Sphinx: http://www.sphinx-doc.org/en/master/
2020

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/development.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ available from every popular package manager. In your Conda environment,
1616

1717
.. code-block:: bash
1818
19-
conda install git
19+
conda install -c conda-forge --override-channels git
2020
2121
will get you sorted. Next, you can get a local git repository with AMUSE in it using
2222

0 commit comments

Comments
 (0)