From f77d50e3fec63c38cea2f391429b28ca647bf4fb Mon Sep 17 00:00:00 2001 From: Ed Chalstrey Date: Wed, 19 Nov 2025 13:44:08 +0000 Subject: [PATCH 01/18] Add guidelines for releases, maintenance branches, and patching procedures --- doc/developer.contributing.rst | 48 ++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/doc/developer.contributing.rst b/doc/developer.contributing.rst index ed490af7f..33dd802a9 100644 --- a/doc/developer.contributing.rst +++ b/doc/developer.contributing.rst @@ -135,3 +135,51 @@ To add a contributor, comment on a GitHub Issue or Pull Request, asking @all-con @all-contributors please add @ for Refer to the `emoji key `__ for a list of contribution types. + +Releases & maintenance branches +------------------------------- + +Releases of Gambit are made by core developers. +Details of previous releases can be found in the `GitHub releases page `__. + +Branches labeled ``maintX`` and ``maintX_Y``, where ``X`` is the major version number and ``Y`` is the minor version number, are associated with releases and point to the latest commit on a stable version. +Navigate to the Gambit repository on GitHub and select the `branches` tab to see the list of active maintenance branches. +Be sure to delete any maintenance branches that are no longer being maintained. + +Making a new release +^^^^^^^^^^^^^^^^^^^^ + +When making a new release of Gambit, follow these steps: + +1. Create a new branch from the latest commit on the ``master`` branch named ``maintX_Y``, where ``X`` is the major version number and ``Y`` is the minor version number of the new release. + +2. Update the version number in the following places: + + * `pyproject.toml` + * `doc/conf.py` + * `configure.ac` + +3. Update the `ChangeLog` file with a summary of changes + +4. Once there are no further commits to be made for the release, create a tag for the release from the latest commit on the maintenance branch. + + git tag -a vX.Y.Z -m "Gambit version X.Y.Z" + +5. Push the maintenance branch and tags to the GitHub repository. + + git push origin maintX_Y + git push origin --tags + +6. Create a new release on the `GitHub releases page `__, using the tag created in step 4. + Include a summary of changes from the `ChangeLog` file in the release notes. + +7. Currently there is no automated process for pushing the new release to PyPI. This must be done manually by Ted Turocy or Rahul Savani. + +Patching maintained versions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +If you have bug fixes that should be applied across maintained versions: + +1. Make a branch from the oldest maintenance branch to which the change applies +2. Apply the change and make a pull request to that maintenance branch +3. After the pull request is merged, open new pull requests to each subsequent maintenance branch and finally to the master branch, merging each in turn \ No newline at end of file From 9cd0410990e8adebe4653ed2cd47b4a980d65ec6 Mon Sep 17 00:00:00 2001 From: Ed Chalstrey Date: Wed, 19 Nov 2025 13:58:49 +0000 Subject: [PATCH 02/18] tidy maintenance section --- doc/developer.contributing.rst | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/doc/developer.contributing.rst b/doc/developer.contributing.rst index 33dd802a9..effd6266b 100644 --- a/doc/developer.contributing.rst +++ b/doc/developer.contributing.rst @@ -146,6 +146,8 @@ Branches labeled ``maintX`` and ``maintX_Y``, where ``X`` is the major version n Navigate to the Gambit repository on GitHub and select the `branches` tab to see the list of active maintenance branches. Be sure to delete any maintenance branches that are no longer being maintained. +.. _making-a-new-release: + Making a new release ^^^^^^^^^^^^^^^^^^^^ @@ -154,18 +156,17 @@ When making a new release of Gambit, follow these steps: 1. Create a new branch from the latest commit on the ``master`` branch named ``maintX_Y``, where ``X`` is the major version number and ``Y`` is the minor version number of the new release. 2. Update the version number in the following places: - - * `pyproject.toml` - * `doc/conf.py` - * `configure.ac` +- `pyproject.toml` +- `doc/conf.py` +- `configure.ac` 3. Update the `ChangeLog` file with a summary of changes -4. Once there are no further commits to be made for the release, create a tag for the release from the latest commit on the maintenance branch. +4. Once there are no further commits to be made for the release, create a tag for the release from the latest commit on the maintenance branch. :: git tag -a vX.Y.Z -m "Gambit version X.Y.Z" -5. Push the maintenance branch and tags to the GitHub repository. +5. Push the maintenance branch and tags to the GitHub repository. :: git push origin maintX_Y git push origin --tags @@ -174,6 +175,7 @@ When making a new release of Gambit, follow these steps: Include a summary of changes from the `ChangeLog` file in the release notes. 7. Currently there is no automated process for pushing the new release to PyPI. This must be done manually by Ted Turocy or Rahul Savani. +.. TODO: update this process to be automated via GitHub Actions: Issue #557 Patching maintained versions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -182,4 +184,5 @@ If you have bug fixes that should be applied across maintained versions: 1. Make a branch from the oldest maintenance branch to which the change applies 2. Apply the change and make a pull request to that maintenance branch -3. After the pull request is merged, open new pull requests to each subsequent maintenance branch and finally to the master branch, merging each in turn \ No newline at end of file +3. After the pull request is merged, open new pull requests to each subsequent maintenance branch and finally to the master branch, merging each in turn +4. Create new releases from each maintenance branch as needed, following the steps in :ref:`making-a-new-release`. \ No newline at end of file From 53d95fd800ef6154ccdd45b0acc213e9673583bd Mon Sep 17 00:00:00 2001 From: Ed Chalstrey Date: Wed, 19 Nov 2025 14:02:33 +0000 Subject: [PATCH 03/18] add space before todo --- doc/developer.contributing.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/developer.contributing.rst b/doc/developer.contributing.rst index effd6266b..1f338546f 100644 --- a/doc/developer.contributing.rst +++ b/doc/developer.contributing.rst @@ -175,6 +175,7 @@ When making a new release of Gambit, follow these steps: Include a summary of changes from the `ChangeLog` file in the release notes. 7. Currently there is no automated process for pushing the new release to PyPI. This must be done manually by Ted Turocy or Rahul Savani. + .. TODO: update this process to be automated via GitHub Actions: Issue #557 Patching maintained versions From 0d663bcf85d1fdf39adbe2dc8afa51f9b67d5687 Mon Sep 17 00:00:00 2001 From: Ed Chalstrey Date: Wed, 19 Nov 2025 14:04:21 +0000 Subject: [PATCH 04/18] add space --- doc/developer.contributing.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/developer.contributing.rst b/doc/developer.contributing.rst index 1f338546f..7d8a3031f 100644 --- a/doc/developer.contributing.rst +++ b/doc/developer.contributing.rst @@ -156,6 +156,7 @@ When making a new release of Gambit, follow these steps: 1. Create a new branch from the latest commit on the ``master`` branch named ``maintX_Y``, where ``X`` is the major version number and ``Y`` is the minor version number of the new release. 2. Update the version number in the following places: + - `pyproject.toml` - `doc/conf.py` - `configure.ac` From dcce82a885166e58933260e78ceb933c6243195a Mon Sep 17 00:00:00 2001 From: Ed Chalstrey Date: Fri, 28 Nov 2025 13:36:00 +0000 Subject: [PATCH 05/18] add version file --- VERSION | 1 + configure.ac | 2 +- pyproject.toml | 5 ++++- 3 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 VERSION diff --git a/VERSION b/VERSION new file mode 100644 index 000000000..b21be527a --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +16.4.0 \ No newline at end of file diff --git a/configure.ac b/configure.ac index e0170be0b..26bf7b2d7 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,7 @@ dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. dnl -AC_INIT([gambit],[16.4.0]) +AC_INIT([gambit],[m4_esyscmd_s([cat VERSION])]) AC_CONFIG_SRCDIR([src/gambit.h]) AM_INIT_AUTOMAKE([subdir-objects foreign]) dnl AC_CONFIG_MACRO_DIR([m4]) diff --git a/pyproject.toml b/pyproject.toml index fb4f80b43..f3331ea46 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "pygambit" -version = "16.4.0" +dynamic = ["version"] description = "The package for computation in game theory" readme = "src/README.rst" requires-python = ">=3.9" @@ -84,3 +84,6 @@ markers = [ "nash: all tests of Nash equilibrium solvers", "slow: all time-consuming tests", ] + +[tool.setuptools.dynamic] +version = {file = "VERSION"} \ No newline at end of file From 6941443fa89e8372ca849443304596fb748538fe Mon Sep 17 00:00:00 2001 From: Ed Chalstrey Date: Fri, 28 Nov 2025 13:49:27 +0000 Subject: [PATCH 06/18] use VERSION everywhere --- configure.ac | 5 ++++- contrib/mac/Info.plist | 8 ++++---- doc/conf.py | 17 +++++++++++++---- doc/developer.contributing.rst | 14 +++++++++----- doc/tools.convert.rst | 4 ++-- doc/tools.enummixed.rst | 4 ++-- doc/tools.enumpoly.rst | 2 +- doc/tools.enumpure.rst | 6 +++--- doc/tools.gnm.rst | 2 +- doc/tools.ipa.rst | 2 +- doc/tools.lcp.rst | 2 +- doc/tools.liap.rst | 2 +- doc/tools.logit.rst | 2 +- doc/tools.lp.rst | 2 +- doc/tools.simpdiv.rst | 2 +- gambit.wxs | 2 +- src/pygambit/__init__.py | 13 ++++++++++++- 17 files changed, 58 insertions(+), 31 deletions(-) diff --git a/configure.ac b/configure.ac index 26bf7b2d7..2dd6e829c 100644 --- a/configure.ac +++ b/configure.ac @@ -145,5 +145,8 @@ AC_SUBST(WX_CXXFLAGS) REZFLAGS=`echo $CXXFLAGS $WX_CXXFLAGS | sed 's/-mthreads//g' | sed 's/-g//g' | sed 's/-O. / /g' | sed 's/-I/--include-dir /g'` AC_SUBST(REZFLAGS) -AC_CONFIG_FILES([Makefile]) +GAMBIT_VERSION=`cat VERSION` +AC_SUBST(GAMBIT_VERSION) + +AC_CONFIG_FILES([Makefile contrib/mac/Info.plist gambit.wxs]) AC_OUTPUT diff --git a/contrib/mac/Info.plist b/contrib/mac/Info.plist index a17bd7905..6aa5c91f1 100644 --- a/contrib/mac/Info.plist +++ b/contrib/mac/Info.plist @@ -19,13 +19,13 @@ CFBundleSignature ???? CFBundleVersion - 16.4.0 + @GAMBIT_VERSION@ CFBundleShortVersionString - 16.4.0 + @GAMBIT_VERSION@ CFBundleGetInfoString - Gambit version 16.4.0, (c) 1994-2025 The Gambit Project + Gambit version @GAMBIT_VERSION@, (c) 1994-2025 The Gambit Project CFBundleLongVersionString - 16.4.0, (c) 1994-2025 The Gambit Project + @GAMBIT_VERSION@, (c) 1994-2025 The Gambit Project NSHumanReadableCopyright Copyright 1994-2025 The Gambit Project LSRequiresCarbon diff --git a/doc/conf.py b/doc/conf.py index 21b5325ba..fbb65c1fc 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -1,3 +1,5 @@ +import pathlib + # # Gambit documentation build configuration file, created by # sphinx-quickstart on Sun Mar 21 14:35:06 2010. @@ -53,10 +55,17 @@ # |version| and |release|, also used in various other places throughout the # built documents. # -# The short X.Y version. -version = "16.4" -# The full version, including alpha/beta/rc tags. -release = "16.4.0" + +_version_file = pathlib.Path(__file__).parent.parent / "VERSION" +if _version_file.exists(): + _full_version = _version_file.read_text().strip() + # The short X.Y version. + version = ".".join(_full_version.split(".")[:2]) + # The full version, including alpha/beta/rc tags. + release = _full_version +else: + # Throw error if VERSION file not found + raise FileNotFoundError("VERSION file not found") # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/doc/developer.contributing.rst b/doc/developer.contributing.rst index 7d8a3031f..1c304138f 100644 --- a/doc/developer.contributing.rst +++ b/doc/developer.contributing.rst @@ -155,11 +155,15 @@ When making a new release of Gambit, follow these steps: 1. Create a new branch from the latest commit on the ``master`` branch named ``maintX_Y``, where ``X`` is the major version number and ``Y`` is the minor version number of the new release. -2. Update the version number in the following places: - -- `pyproject.toml` -- `doc/conf.py` -- `configure.ac` +2. Update the version number in the ``VERSION`` file at the root of the repository to ``X.Y.Z``. + + All other files will automatically use the updated version number: + + - `pyproject.toml` reads from VERSION file at build time + - `configure.ac` reads from VERSION file and substitutes into `Info.plist` and `gambit.wxs` + - `src/pygambit/__init__.py` reads from installed package metadata or VERSION file + - `doc/conf.py` reads from VERSION file at documentation build time + - Documentation pages reference the `|release|` substitution variable to automatically reflect the updated version number. 3. Update the `ChangeLog` file with a summary of changes diff --git a/doc/tools.convert.rst b/doc/tools.convert.rst index 7db467c7c..8aca00192 100644 --- a/doc/tools.convert.rst +++ b/doc/tools.convert.rst @@ -40,7 +40,7 @@ Example invocation for HTML output:: $ gambit-convert -O html 2x2.nfg Convert games among various file formats - Gambit version 16.4.0, Copyright (C) 1994-2025, The Gambit Project + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL

Two person 2 x 2 game with unique mixed equilibrium

@@ -55,7 +55,7 @@ Example invocation for LaTeX output:: $ gambit-convert -O sgame 2x2.nfg Convert games among various file formats - Gambit version 16.4.0, Copyright (C) 1994-2025, The Gambit Project + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL \begin{game}{2}{2}[Player 1][Player 2] diff --git a/doc/tools.enummixed.rst b/doc/tools.enummixed.rst index 8a2432672..f7c045139 100644 --- a/doc/tools.enummixed.rst +++ b/doc/tools.enummixed.rst @@ -70,7 +70,7 @@ in Figure 2 of Selten (International Journal of Game Theory, $ gambit-enummixed e02.nfg Compute Nash equilibria by enumerating extreme points - Gambit version 16.4.0, Copyright (C) 1994-2025, The Gambit Project + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL NE,1,0,0,1,0 @@ -82,7 +82,7 @@ information using the `-c` switch:: $ gambit-enummixed -c e02.nfg Compute Nash equilibria by enumerating extreme points - Gambit version 16.4.0, Copyright (C) 1994-2025, The Gambit Project + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL NE,1,0,0,1,0 diff --git a/doc/tools.enumpoly.rst b/doc/tools.enumpoly.rst index f3c46bd9a..ceecaf1eb 100644 --- a/doc/tools.enumpoly.rst +++ b/doc/tools.enumpoly.rst @@ -98,7 +98,7 @@ Computing equilibria of the strategic game :download:`e01.nfg $ gambit-enumpoly e01.nfg Compute Nash equilibria by solving polynomial systems - Gambit version 16.4.0, Copyright (C) 1994-2025, The Gambit Project + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL NE,1.000000,0.000000,1.000000,0.000000,0.000000,1.000000 diff --git a/doc/tools.enumpure.rst b/doc/tools.enumpure.rst index 407461fd0..70c9c616f 100644 --- a/doc/tools.enumpure.rst +++ b/doc/tools.enumpure.rst @@ -66,7 +66,7 @@ Computing the pure-strategy equilibria of extensive game :download:`e02.efg $ gambit-enumpure e02.efg Search for Nash equilibria in pure strategies - Gambit version 16.4.0, Copyright (C) 1994-2025, The Gambit Project + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL NE,1,0,0,0,1,0 @@ -77,7 +77,7 @@ strategies:: $ gambit-enumpure -S e02.efg Search for Nash equilibria in pure strategies - Gambit version 16.4.0, Copyright (C) 1994-2025, The Gambit Project + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL NE,1,0,0,1,0 @@ -88,7 +88,7 @@ only one information set; therefore the set of solutions is larger:: $ gambit-enumpure -A e02.efg Search for Nash equilibria in pure strategies - Gambit version 16.4.0, Copyright (C) 1994-2025, The Gambit Project + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL NE,1,0,1,0,1,0 diff --git a/doc/tools.gnm.rst b/doc/tools.gnm.rst index 88ca23eb4..e1f47f999 100644 --- a/doc/tools.gnm.rst +++ b/doc/tools.gnm.rst @@ -88,7 +88,7 @@ the reduced strategic form of the example in Figure 2 of Selten $ gambit-gnm e02.nfg Compute Nash equilibria using a global Newton method Gametracer version 0.2, Copyright (C) 2002, Ben Blum and Christian Shelton - Gambit version 16.4.0, Copyright (C) 1994-2025, The Gambit Project + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL NE,1,0,2.99905e-12,0.5,0.5 diff --git a/doc/tools.ipa.rst b/doc/tools.ipa.rst index 219faa95b..ae2681a17 100644 --- a/doc/tools.ipa.rst +++ b/doc/tools.ipa.rst @@ -55,7 +55,7 @@ the reduced strategic form of the example in Figure 2 of Selten $ gambit-ipa e02.nfg Compute Nash equilibria using iterated polymatrix approximation Gametracer version 0.2, Copyright (C) 2002, Ben Blum and Christian Shelton - Gambit version 16.4.0, Copyright (C) 1994-2025, The Gambit Project + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL NE,1.000000,0.000000,0.000000,1.000000,0.000000 diff --git a/doc/tools.lcp.rst b/doc/tools.lcp.rst index 486ce6c20..32d26b244 100644 --- a/doc/tools.lcp.rst +++ b/doc/tools.lcp.rst @@ -79,7 +79,7 @@ Computing an equilibrium of extensive game :download:`e02.efg $ gambit-lcp e02.efg Compute Nash equilibria by solving a linear complementarity program - Gambit version 16.4.0, Copyright (C) 1994-2025, The Gambit Project + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL NE,1,0,1/2,1/2,1/2,1/2 diff --git a/doc/tools.liap.rst b/doc/tools.liap.rst index 561059d45..bdfe559ce 100644 --- a/doc/tools.liap.rst +++ b/doc/tools.liap.rst @@ -85,7 +85,7 @@ Computing an equilibrium in mixed strategies of :download:`e02.efg $ gambit-liap e02.nfg Compute Nash equilibria by minimizing the Lyapunov function - Gambit version 16.4.0, Copyright (C) 1994-2025, The Gambit Project + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL NE,0.998701,0.000229,0.001070,0.618833,0.381167 diff --git a/doc/tools.logit.rst b/doc/tools.logit.rst index 59eaf7e52..fbc53f4b1 100644 --- a/doc/tools.logit.rst +++ b/doc/tools.logit.rst @@ -108,7 +108,7 @@ in Figure 2 of Selten (International Journal of Game Theory, $ gambit-logit e02.nfg Compute a branch of the logit equilibrium correspondence - Gambit version 16.4.0, Copyright (C) 1994-2025, The Gambit Project + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL 0.000000,0.333333,0.333333,0.333333,0.5,0.5 diff --git a/doc/tools.lp.rst b/doc/tools.lp.rst index f032fee9e..a4497fe84 100644 --- a/doc/tools.lp.rst +++ b/doc/tools.lp.rst @@ -65,7 +65,7 @@ strategies each, with a unique equilibrium in mixed strategies:: $ gambit-lp 2x2const.nfg Compute Nash equilibria by solving a linear program - Gambit version 16.4.0, Copyright (C) 1994-2025, The Gambit Project + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL NE,1/3,2/3,1/3,2/3 diff --git a/doc/tools.simpdiv.rst b/doc/tools.simpdiv.rst index 324025dd6..2c93e3129 100644 --- a/doc/tools.simpdiv.rst +++ b/doc/tools.simpdiv.rst @@ -92,7 +92,7 @@ Computing an equilibrium in mixed strategies of :download:`e02.efg $ gambit-simpdiv e02.nfg Compute Nash equilibria using simplicial subdivision - Gambit version 16.4.0, Copyright (C) 1994-2025, The Gambit Project + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project This is free software, distributed under the GNU GPL NE,1,0,0,1,0 diff --git a/gambit.wxs b/gambit.wxs index 7563a8404..85f20db32 100644 --- a/gambit.wxs +++ b/gambit.wxs @@ -1,6 +1,6 @@ - + diff --git a/src/pygambit/__init__.py b/src/pygambit/__init__.py index 7c7607874..323f95cf5 100644 --- a/src/pygambit/__init__.py +++ b/src/pygambit/__init__.py @@ -28,4 +28,15 @@ supports, # noqa: F401 ) -__version__ = "16.4.0" +import importlib.metadata + +try: + __version__ = importlib.metadata.version("pygambit") +except importlib.metadata.PackageNotFoundError: + # Package is not installed, fallback to reading VERSION file + import pathlib + _version_file = pathlib.Path(__file__).parent.parent.parent / "VERSION" + if _version_file.exists(): + __version__ = _version_file.read_text().strip() + else: + __version__ = "unknown" From b17e16caf80a05013e2d3c57711ba75aeb5b1e2e Mon Sep 17 00:00:00 2001 From: Ed Chalstrey Date: Fri, 28 Nov 2025 14:36:52 +0000 Subject: [PATCH 07/18] refactor: replace VERSION file with GAMBIT_VERSION for version management and generate gambit.wxs and Info.plist files automatically --- GAMBIT_VERSION | 1 + Makefile.am | 15 ++++-- VERSION | 1 - configure.ac | 4 +- contrib/mac/Info.plist | 8 ++-- contrib/mac/Info.plist.in | 87 ++++++++++++++++++++++++++++++++++ doc/conf.py | 6 +-- doc/developer.contributing.rst | 10 ++-- gambit.wxs | 2 +- gambit.wxs.in | 67 ++++++++++++++++++++++++++ pyproject.toml | 2 +- src/pygambit/__init__.py | 4 +- 12 files changed, 183 insertions(+), 24 deletions(-) create mode 100644 GAMBIT_VERSION delete mode 100644 VERSION create mode 100644 contrib/mac/Info.plist.in create mode 100644 gambit.wxs.in diff --git a/GAMBIT_VERSION b/GAMBIT_VERSION new file mode 100644 index 000000000..29b7b9ad9 --- /dev/null +++ b/GAMBIT_VERSION @@ -0,0 +1 @@ +16.4.0 diff --git a/Makefile.am b/Makefile.am index 4325353ef..83aea9c16 100644 --- a/Makefile.am +++ b/Makefile.am @@ -375,7 +375,12 @@ endif EXTRA_PROGRAMS = gambit-enumpoly gambit -AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/labenski/include ${WX_CXXFLAGS} +# Read version from GAMBIT_VERSION file for use in compilation +GAMBIT_VERSION = $(shell cat $(top_srcdir)/GAMBIT_VERSION) + +# Define VERSION for all C++ compilations +AM_CPPFLAGS = -DVERSION=\"$(GAMBIT_VERSION)\" + AM_CXXFLAGS = ${LLVM_CXXFLAGS} ## Command-line tools @@ -638,7 +643,7 @@ msw-msi: light -ext WixUIExtension gambit.wixobj clang-tidy: - clang-tidy ${top_srcdir}/src/core/*.cc -- --std=c++17 -I ${top_srcdir}/src -DVERSION="" - clang-tidy ${top_srcdir}/src/games/*.cc ${top_srcdir}/src/games/*/*.cc -- --std=c++17 -I ${top_srcdir}/src -DVERSION="" - clang-tidy ${top_srcdir}/src/solvers/*/*.cc -- --std=c++17 -I ${top_srcdir}/src -DVERSION="" - clang-tidy ${top_srcdir}/src/tools/*/*.cc -- --std=c++17 -I ${top_srcdir}/src -DVERSION="" + clang-tidy ${top_srcdir}/src/core/*.cc -- --std=c++17 -I ${top_srcdir}/src -DVERSION=\"$(GAMBIT_VERSION)\" + clang-tidy ${top_srcdir}/src/games/*.cc ${top_srcdir}/src/games/*/*.cc -- --std=c++17 -I ${top_srcdir}/src -DVERSION=\"$(GAMBIT_VERSION)\" + clang-tidy ${top_srcdir}/src/solvers/*/*.cc -- --std=c++17 -I ${top_srcdir}/src -DVERSION=\"$(GAMBIT_VERSION)\" + clang-tidy ${top_srcdir}/src/tools/*/*.cc -- --std=c++17 -I ${top_srcdir}/src -DVERSION=\"$(GAMBIT_VERSION)\" diff --git a/VERSION b/VERSION deleted file mode 100644 index b21be527a..000000000 --- a/VERSION +++ /dev/null @@ -1 +0,0 @@ -16.4.0 \ No newline at end of file diff --git a/configure.ac b/configure.ac index 2dd6e829c..1fb8050bc 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,7 @@ dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. dnl -AC_INIT([gambit],[m4_esyscmd_s([cat VERSION])]) +AC_INIT([gambit],[m4_esyscmd_s([cat GAMBIT_VERSION])]) AC_CONFIG_SRCDIR([src/gambit.h]) AM_INIT_AUTOMAKE([subdir-objects foreign]) dnl AC_CONFIG_MACRO_DIR([m4]) @@ -145,7 +145,7 @@ AC_SUBST(WX_CXXFLAGS) REZFLAGS=`echo $CXXFLAGS $WX_CXXFLAGS | sed 's/-mthreads//g' | sed 's/-g//g' | sed 's/-O. / /g' | sed 's/-I/--include-dir /g'` AC_SUBST(REZFLAGS) -GAMBIT_VERSION=`cat VERSION` +GAMBIT_VERSION=`cat GAMBIT_VERSION` AC_SUBST(GAMBIT_VERSION) AC_CONFIG_FILES([Makefile contrib/mac/Info.plist gambit.wxs]) diff --git a/contrib/mac/Info.plist b/contrib/mac/Info.plist index 6aa5c91f1..a17bd7905 100644 --- a/contrib/mac/Info.plist +++ b/contrib/mac/Info.plist @@ -19,13 +19,13 @@ CFBundleSignature ???? CFBundleVersion - @GAMBIT_VERSION@ + 16.4.0 CFBundleShortVersionString - @GAMBIT_VERSION@ + 16.4.0 CFBundleGetInfoString - Gambit version @GAMBIT_VERSION@, (c) 1994-2025 The Gambit Project + Gambit version 16.4.0, (c) 1994-2025 The Gambit Project CFBundleLongVersionString - @GAMBIT_VERSION@, (c) 1994-2025 The Gambit Project + 16.4.0, (c) 1994-2025 The Gambit Project NSHumanReadableCopyright Copyright 1994-2025 The Gambit Project LSRequiresCarbon diff --git a/contrib/mac/Info.plist.in b/contrib/mac/Info.plist.in new file mode 100644 index 000000000..4c7c5d8c2 --- /dev/null +++ b/contrib/mac/Info.plist.in @@ -0,0 +1,87 @@ + + + + + CFBundleInfoDictionaryVersion + 6.0 + CFBundleIdentifier + org.gambit-project.gambit + CFBundleDevelopmentRegion + English + CFBundleExecutable + gambit + CFBundleIconFile + gambit + CFBundleName + Gambit + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleVersion + @GAMBIT_VERSION@ + CFBundleShortVersionString + @GAMBIT_VERSION@ + CFBundleGetInfoString + Gambit version @GAMBIT_VERSION@, (c) 1994-2025 The Gambit Project + CFBundleLongVersionString + @GAMBIT_VERSION@, (c) 1994-2025 The Gambit Project + NSHumanReadableCopyright + Copyright 1994-2025 The Gambit Project + LSRequiresCarbon + + CSResourcesFileMapped + + CFBundleDocumentTypes + + + CFBundleTypeExtensions + + gbt + + CFBundleTypeIconFile + gambit.icns + CFBundleTypeName + Gambit Document + CFBundleTypeOSTypes + + GBT + + CFBundleTypeRole + Editor + + + CFBundleTypeExtensions + + efg + + CFBundleTypeIconFile + gambit.icns + CFBundleTypeName + Gambit Extensive Game Document + CFBundleTypeOSTypes + + EFG + + CFBundleTypeRole + Editor + + + CFBundleTypeExtensions + + nfg + + CFBundleTypeIconFile + gambit.icns + CFBundleTypeName + Gambit Strategic Game Document + CFBundleTypeOSTypes + + NFG + + CFBundleTypeRole + Editor + + + + \ No newline at end of file diff --git a/doc/conf.py b/doc/conf.py index fbb65c1fc..7386eae41 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -56,7 +56,7 @@ # built documents. # -_version_file = pathlib.Path(__file__).parent.parent / "VERSION" +_version_file = pathlib.Path(__file__).parent.parent / "GAMBIT_VERSION" if _version_file.exists(): _full_version = _version_file.read_text().strip() # The short X.Y version. @@ -64,8 +64,8 @@ # The full version, including alpha/beta/rc tags. release = _full_version else: - # Throw error if VERSION file not found - raise FileNotFoundError("VERSION file not found") + # Throw error if GAMBIT_VERSION file not found + raise FileNotFoundError("GAMBIT_VERSION file not found") # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/doc/developer.contributing.rst b/doc/developer.contributing.rst index 1c304138f..997e63990 100644 --- a/doc/developer.contributing.rst +++ b/doc/developer.contributing.rst @@ -155,14 +155,14 @@ When making a new release of Gambit, follow these steps: 1. Create a new branch from the latest commit on the ``master`` branch named ``maintX_Y``, where ``X`` is the major version number and ``Y`` is the minor version number of the new release. -2. Update the version number in the ``VERSION`` file at the root of the repository to ``X.Y.Z``. +2. Update the version number in the ``GAMBIT_VERSION`` file at the root of the repository to ``X.Y.Z``. All other files will automatically use the updated version number: - - `pyproject.toml` reads from VERSION file at build time - - `configure.ac` reads from VERSION file and substitutes into `Info.plist` and `gambit.wxs` - - `src/pygambit/__init__.py` reads from installed package metadata or VERSION file - - `doc/conf.py` reads from VERSION file at documentation build time + - `pyproject.toml` reads from GAMBIT_VERSION file at build time + - `configure.ac` reads from GAMBIT_VERSION file and substitutes into `Info.plist` and `gambit.wxs` + - `src/pygambit/__init__.py` reads from installed package metadata or GAMBIT_VERSION file + - `doc/conf.py` reads from GAMBIT_VERSION file at documentation build time - Documentation pages reference the `|release|` substitution variable to automatically reflect the updated version number. 3. Update the `ChangeLog` file with a summary of changes diff --git a/gambit.wxs b/gambit.wxs index 85f20db32..7563a8404 100644 --- a/gambit.wxs +++ b/gambit.wxs @@ -1,6 +1,6 @@ - + diff --git a/gambit.wxs.in b/gambit.wxs.in new file mode 100644 index 000000000..975ae55f5 --- /dev/null +++ b/gambit.wxs.in @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index f3331ea46..775d3ee63 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -86,4 +86,4 @@ markers = [ ] [tool.setuptools.dynamic] -version = {file = "VERSION"} \ No newline at end of file +version = {file = "GAMBIT_VERSION"} \ No newline at end of file diff --git a/src/pygambit/__init__.py b/src/pygambit/__init__.py index 323f95cf5..ce673f77a 100644 --- a/src/pygambit/__init__.py +++ b/src/pygambit/__init__.py @@ -33,9 +33,9 @@ try: __version__ = importlib.metadata.version("pygambit") except importlib.metadata.PackageNotFoundError: - # Package is not installed, fallback to reading VERSION file + # Package is not installed, fallback to reading GAMBIT_VERSION file import pathlib - _version_file = pathlib.Path(__file__).parent.parent.parent / "VERSION" + _version_file = pathlib.Path(__file__).parent.parent.parent / "GAMBIT_VERSION" if _version_file.exists(): __version__ = _version_file.read_text().strip() else: From affd08cdf3505b7d91cdfa622431dc730f161418 Mon Sep 17 00:00:00 2001 From: Ed Chalstrey Date: Fri, 28 Nov 2025 15:23:44 +0000 Subject: [PATCH 08/18] update flags for compilation --- Makefile.am | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index 83aea9c16..d46a9d96b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -378,8 +378,8 @@ EXTRA_PROGRAMS = gambit-enumpoly gambit # Read version from GAMBIT_VERSION file for use in compilation GAMBIT_VERSION = $(shell cat $(top_srcdir)/GAMBIT_VERSION) -# Define VERSION for all C++ compilations -AM_CPPFLAGS = -DVERSION=\"$(GAMBIT_VERSION)\" +# Define VERSION for all C++ compilations and set include paths +AM_CPPFLAGS = -I$(top_srcdir)/src -DVERSION=\"$(GAMBIT_VERSION)\" AM_CXXFLAGS = ${LLVM_CXXFLAGS} @@ -608,6 +608,9 @@ gambit_SOURCES = \ src/gui/valnumber.cc \ src/gui/valnumber.h +# Add wxWidgets compilation flags for the GUI program +gambit_CXXFLAGS = $(AM_CXXFLAGS) $(WX_CXXFLAGS) +gambit_CPPFLAGS = $(AM_CPPFLAGS) $(WX_CXXFLAGS) -I$(top_srcdir)/src/labenski/include if IS_WIN32 gambit_LDADD = $(RC_OBJECT_PATH) $(WX_LIBS_STATIC) -ldeflate -lzstd -llerc -lWebP From 136aa5c03c18dbc1d217bce9e00379743886cf0b Mon Sep 17 00:00:00 2001 From: Ed Chalstrey Date: Fri, 28 Nov 2025 15:57:51 +0000 Subject: [PATCH 09/18] ensure |release| in CLI rst docs is rendered and tidy formatting --- doc/tools.convert.rst | 10 ++++++++-- doc/tools.enummixed.rst | 10 ++++++++-- doc/tools.enumpoly.rst | 5 ++++- doc/tools.enumpure.rst | 15 ++++++++++++--- doc/tools.gnm.rst | 18 +++++++++++------- doc/tools.ipa.rst | 6 +++++- doc/tools.lcp.rst | 5 ++++- doc/tools.liap.rst | 5 ++++- doc/tools.logit.rst | 5 ++++- doc/tools.lp.rst | 5 ++++- doc/tools.simpdiv.rst | 5 ++++- 11 files changed, 68 insertions(+), 21 deletions(-) diff --git a/doc/tools.convert.rst b/doc/tools.convert.rst index 8aca00192..1e9f32c2c 100644 --- a/doc/tools.convert.rst +++ b/doc/tools.convert.rst @@ -36,11 +36,14 @@ outputting the strategic form of the game in one of these formats: Suppresses printing of the banner at program launch. -Example invocation for HTML output:: +Example invocation for HTML output $ gambit-convert -O html 2x2.nfg + Convert games among various file formats + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project + This is free software, distributed under the GNU GPL

Two person 2 x 2 game with unique mixed equilibrium

@@ -51,11 +54,14 @@ Example invocation for HTML output:: align=center>1,0 -Example invocation for LaTeX output:: +Example invocation for LaTeX output $ gambit-convert -O sgame 2x2.nfg + Convert games among various file formats + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project + This is free software, distributed under the GNU GPL \begin{game}{2}{2}[Player 1][Player 2] diff --git a/doc/tools.enummixed.rst b/doc/tools.enummixed.rst index f7c045139..5e6ff03cd 100644 --- a/doc/tools.enummixed.rst +++ b/doc/tools.enummixed.rst @@ -66,11 +66,14 @@ points. Computing the equilibria, in mixed strategies, of :download:`e02.nfg <../contrib/games/e02.nfg>`, the reduced strategic form of the example in Figure 2 of Selten (International Journal of Game Theory, -1975):: +1975) $ gambit-enummixed e02.nfg + Compute Nash equilibria by enumerating extreme points + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project + This is free software, distributed under the GNU GPL NE,1,0,0,1,0 @@ -78,11 +81,14 @@ in Figure 2 of Selten (International Journal of Game Theory, In fact, the game e02.nfg has a one-dimensional continuum of equilibria. This fact can be observed by examining the connectedness -information using the `-c` switch:: +information using the `-c` switch $ gambit-enummixed -c e02.nfg + Compute Nash equilibria by enumerating extreme points + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project + This is free software, distributed under the GNU GPL NE,1,0,0,1,0 diff --git a/doc/tools.enumpoly.rst b/doc/tools.enumpoly.rst index ceecaf1eb..c5883f8a0 100644 --- a/doc/tools.enumpoly.rst +++ b/doc/tools.enumpoly.rst @@ -94,11 +94,14 @@ support of some set of equilibria. Computing equilibria of the strategic game :download:`e01.nfg <../contrib/games/e01.efg>`, the example in Figure 1 of Selten (International Journal of Game Theory, 1975) sometimes called -"Selten's horse":: +"Selten's horse" $ gambit-enumpoly e01.nfg + Compute Nash equilibria by solving polynomial systems + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project + This is free software, distributed under the GNU GPL NE,1.000000,0.000000,1.000000,0.000000,0.000000,1.000000 diff --git a/doc/tools.enumpure.rst b/doc/tools.enumpure.rst index 70c9c616f..586ee2bfa 100644 --- a/doc/tools.enumpure.rst +++ b/doc/tools.enumpure.rst @@ -62,33 +62,42 @@ pure-strategy Nash equilibria. Computing the pure-strategy equilibria of extensive game :download:`e02.efg <../contrib/games/e02.efg>`, the example in Figure 2 of Selten -(International Journal of Game Theory, 1975):: +(International Journal of Game Theory, 1975) $ gambit-enumpure e02.efg + Search for Nash equilibria in pure strategies + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project + This is free software, distributed under the GNU GPL NE,1,0,0,0,1,0 With the `-S` switch, the set of equilibria returned is the same, except expressed in strategic game strategies rather than behavior -strategies:: +strategies $ gambit-enumpure -S e02.efg + Search for Nash equilibria in pure strategies + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project + This is free software, distributed under the GNU GPL NE,1,0,0,1,0 The `-A` switch considers only behavior strategy profiles where there is no way for a player to improve his payoff by changing action at -only one information set; therefore the set of solutions is larger:: +only one information set; therefore the set of solutions is larger $ gambit-enumpure -A e02.efg + Search for Nash equilibria in pure strategies + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project + This is free software, distributed under the GNU GPL NE,1,0,1,0,1,0 diff --git a/doc/tools.gnm.rst b/doc/tools.gnm.rst index e1f47f999..bda5ea236 100644 --- a/doc/tools.gnm.rst +++ b/doc/tools.gnm.rst @@ -83,15 +83,19 @@ subsets of equilibria being found. Computing an equilibrium of :download:`e02.nfg <../contrib/games/e02.nfg>`, the reduced strategic form of the example in Figure 2 of Selten -(International Journal of Game Theory, 1975):: +(International Journal of Game Theory, 1975) - $ gambit-gnm e02.nfg - Compute Nash equilibria using a global Newton method - Gametracer version 0.2, Copyright (C) 2002, Ben Blum and Christian Shelton - Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project - This is free software, distributed under the GNU GPL + $ gambit-gnm e02.nfg - NE,1,0,2.99905e-12,0.5,0.5 + Compute Nash equilibria using a global Newton method + + Gametracer version 0.2, Copyright (C) 2002, Ben Blum and Christian Shelton + + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project + + This is free software, distributed under the GNU GPL + + NE,1,0,2.99905e-12,0.5,0.5 .. seealso:: diff --git a/doc/tools.ipa.rst b/doc/tools.ipa.rst index ae2681a17..7b986c3cb 100644 --- a/doc/tools.ipa.rst +++ b/doc/tools.ipa.rst @@ -50,12 +50,16 @@ equilibria being found. Computing an equilibrium of :download:`e02.nfg <../contrib/games/e02.nfg>`, the reduced strategic form of the example in Figure 2 of Selten -(International Journal of Game Theory, 1975):: +(International Journal of Game Theory, 1975) $ gambit-ipa e02.nfg + Compute Nash equilibria using iterated polymatrix approximation + Gametracer version 0.2, Copyright (C) 2002, Ben Blum and Christian Shelton + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project + This is free software, distributed under the GNU GPL NE,1.000000,0.000000,0.000000,1.000000,0.000000 diff --git a/doc/tools.lcp.rst b/doc/tools.lcp.rst index 32d26b244..388bd8b4a 100644 --- a/doc/tools.lcp.rst +++ b/doc/tools.lcp.rst @@ -75,11 +75,14 @@ game. Computing an equilibrium of extensive game :download:`e02.efg <../contrib/games/e02.efg>`, the example in Figure 2 of Selten -(International Journal of Game Theory, 1975):: +(International Journal of Game Theory, 1975) $ gambit-lcp e02.efg + Compute Nash equilibria by solving a linear complementarity program + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project + This is free software, distributed under the GNU GPL NE,1,0,1/2,1/2,1/2,1/2 diff --git a/doc/tools.liap.rst b/doc/tools.liap.rst index bdfe559ce..c8f77c9d9 100644 --- a/doc/tools.liap.rst +++ b/doc/tools.liap.rst @@ -81,11 +81,14 @@ not guaranteed to find all, or even any, Nash equilibria. Computing an equilibrium in mixed strategies of :download:`e02.efg <../contrib/games/e02.efg>`, the example in Figure 2 of Selten -(International Journal of Game Theory, 1975):: +(International Journal of Game Theory, 1975) $ gambit-liap e02.nfg + Compute Nash equilibria by minimizing the Lyapunov function + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project + This is free software, distributed under the GNU GPL NE,0.998701,0.000229,0.001070,0.618833,0.381167 diff --git a/doc/tools.logit.rst b/doc/tools.logit.rst index fbc53f4b1..5f4a48da1 100644 --- a/doc/tools.logit.rst +++ b/doc/tools.logit.rst @@ -104,11 +104,14 @@ the beliefs at such information sets as being uniform across all member nodes. Computing the principal branch, in mixed strategies, of :download:`e02.nfg <../contrib/games/e02.nfg>`, the reduced strategic form of the example in Figure 2 of Selten (International Journal of Game Theory, -1975):: +1975) $ gambit-logit e02.nfg + Compute a branch of the logit equilibrium correspondence + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project + This is free software, distributed under the GNU GPL 0.000000,0.333333,0.333333,0.333333,0.5,0.5 diff --git a/doc/tools.lp.rst b/doc/tools.lp.rst index a4497fe84..49b3995b4 100644 --- a/doc/tools.lp.rst +++ b/doc/tools.lp.rst @@ -61,11 +61,14 @@ points of that set. Computing an equilibrium of the game :download:`2x2const.nfg <../contrib/games/2x2const.nfg>`, a game with two players with two -strategies each, with a unique equilibrium in mixed strategies:: +strategies each, with a unique equilibrium in mixed strategies $ gambit-lp 2x2const.nfg + Compute Nash equilibria by solving a linear program + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project + This is free software, distributed under the GNU GPL NE,1/3,2/3,1/3,2/3 diff --git a/doc/tools.simpdiv.rst b/doc/tools.simpdiv.rst index 2c93e3129..cdb36a96b 100644 --- a/doc/tools.simpdiv.rst +++ b/doc/tools.simpdiv.rst @@ -88,11 +88,14 @@ options to specify additional starting points for the algorithm. Computing an equilibrium in mixed strategies of :download:`e02.efg <../contrib/games/e02.efg>`, the example in Figure 2 of Selten -(International Journal of Game Theory, 1975):: +(International Journal of Game Theory, 1975) $ gambit-simpdiv e02.nfg + Compute Nash equilibria using simplicial subdivision + Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project + This is free software, distributed under the GNU GPL NE,1,0,0,1,0 From 77a7288a2a7e0d21e8bc0acc54d8aabba3c90cd3 Mon Sep 17 00:00:00 2001 From: Ed Chalstrey Date: Fri, 28 Nov 2025 16:00:32 +0000 Subject: [PATCH 10/18] ruff: simplify version retrieval logic in __init__.py --- src/pygambit/__init__.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/pygambit/__init__.py b/src/pygambit/__init__.py index ce673f77a..d9d407927 100644 --- a/src/pygambit/__init__.py +++ b/src/pygambit/__init__.py @@ -36,7 +36,4 @@ # Package is not installed, fallback to reading GAMBIT_VERSION file import pathlib _version_file = pathlib.Path(__file__).parent.parent.parent / "GAMBIT_VERSION" - if _version_file.exists(): - __version__ = _version_file.read_text().strip() - else: - __version__ = "unknown" + __version__ = _version_file.read_text().strip() if _version_file.exists() else "unknown" From 747af31a65e8a5915a13c402771d179cc654b896 Mon Sep 17 00:00:00 2001 From: Theodore Turocy Date: Mon, 1 Dec 2025 09:31:41 +0000 Subject: [PATCH 11/18] EXTRA_PROGRAMS is not needed --- Makefile.am | 2 -- 1 file changed, 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index d46a9d96b..52254d85c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -373,8 +373,6 @@ if WITH_GUI bin_PROGRAMS += gambit endif -EXTRA_PROGRAMS = gambit-enumpoly gambit - # Read version from GAMBIT_VERSION file for use in compilation GAMBIT_VERSION = $(shell cat $(top_srcdir)/GAMBIT_VERSION) From 7acad290d36f24cde5de3f23240ecaa2faeb8df5 Mon Sep 17 00:00:00 2001 From: Theodore Turocy Date: Mon, 1 Dec 2025 09:36:31 +0000 Subject: [PATCH 12/18] Minor documentation adjustment. --- doc/developer.contributing.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/developer.contributing.rst b/doc/developer.contributing.rst index 997e63990..0fc87193a 100644 --- a/doc/developer.contributing.rst +++ b/doc/developer.contributing.rst @@ -158,7 +158,7 @@ When making a new release of Gambit, follow these steps: 2. Update the version number in the ``GAMBIT_VERSION`` file at the root of the repository to ``X.Y.Z``. All other files will automatically use the updated version number: - + - `pyproject.toml` reads from GAMBIT_VERSION file at build time - `configure.ac` reads from GAMBIT_VERSION file and substitutes into `Info.plist` and `gambit.wxs` - `src/pygambit/__init__.py` reads from installed package metadata or GAMBIT_VERSION file @@ -168,18 +168,18 @@ When making a new release of Gambit, follow these steps: 3. Update the `ChangeLog` file with a summary of changes 4. Once there are no further commits to be made for the release, create a tag for the release from the latest commit on the maintenance branch. :: - + git tag -a vX.Y.Z -m "Gambit version X.Y.Z" 5. Push the maintenance branch and tags to the GitHub repository. :: - + git push origin maintX_Y git push origin --tags 6. Create a new release on the `GitHub releases page `__, using the tag created in step 4. Include a summary of changes from the `ChangeLog` file in the release notes. -7. Currently there is no automated process for pushing the new release to PyPI. This must be done manually by Ted Turocy or Rahul Savani. +7. Currently there is no automated process for pushing the new release to PyPI. This must be done manually. .. TODO: update this process to be automated via GitHub Actions: Issue #557 @@ -191,4 +191,4 @@ If you have bug fixes that should be applied across maintained versions: 1. Make a branch from the oldest maintenance branch to which the change applies 2. Apply the change and make a pull request to that maintenance branch 3. After the pull request is merged, open new pull requests to each subsequent maintenance branch and finally to the master branch, merging each in turn -4. Create new releases from each maintenance branch as needed, following the steps in :ref:`making-a-new-release`. \ No newline at end of file +4. Create new releases from each maintenance branch as needed, following the steps in :ref:`making-a-new-release`. From e957b6fe542dc37a098a89f9694745c1e7fadb7d Mon Sep 17 00:00:00 2001 From: Theodore Turocy Date: Mon, 1 Dec 2025 09:40:00 +0000 Subject: [PATCH 13/18] Remove some very outdated files --- Makefile.am | 2 -- gambit.desktop | 9 -------- gambit.spec | 56 -------------------------------------------------- 3 files changed, 67 deletions(-) delete mode 100644 gambit.desktop delete mode 100644 gambit.spec diff --git a/Makefile.am b/Makefile.am index 52254d85c..84a18ed24 100644 --- a/Makefile.am +++ b/Makefile.am @@ -23,8 +23,6 @@ ACLOCAL_AMFLAGS = -I m4 EXTRA_DIST = \ - gambit.spec \ - gambit.desktop \ gambit.wxs \ contrib/mac/Info.plist \ contrib/mac/gambit.icns \ diff --git a/gambit.desktop b/gambit.desktop deleted file mode 100644 index 9dded8d06..000000000 --- a/gambit.desktop +++ /dev/null @@ -1,9 +0,0 @@ -[Desktop Entry] -Version=1.0 -Encoding=UTF-8 -Name=Gambit Game Analysis -Comment=Construction and analysis of finite extensive and strategic games -Exec=gambit -Icon=gambit -Type=Application -Categories=Math;Science; diff --git a/gambit.spec b/gambit.spec deleted file mode 100644 index 641442d5a..000000000 --- a/gambit.spec +++ /dev/null @@ -1,56 +0,0 @@ -Summary: Gambit Game Theory Tools -Name: gambit -Version: 0.2006.01.20 -Release: 1 -License: GPL -Group: Applications -URL: http://econweb.tamu.edu/gambit -Source0: %{name}-%{version}.tar.gz -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot - -%description -Gambit is a collection of tools for interactively building and -analyzing finite games. - -%prep -%setup -q -%configure - -%build -make - -%install -%makeinstall - -mkdir -p $RPM_BUILD_ROOT%{_datadir}/gambit -cp -R efg $RPM_BUILD_ROOT%{_datadir}/gambit -cp -R nfg $RPM_BUILD_ROOT%{_datadir}/gambit - -%clean -rm -rf $RPM_BUILD_ROOT - -%files -%defattr(-,root,root) -%doc AUTHORS ChangeLog COPYING INSTALL NEWS README -%{_bindir}/gambit* -%{_libdir}/libgambit* -%{_libdir}/liblab* -%{_includedir}/libgambit* -%{_datadir}/gambit - - -%changelog -* Tue Dec 13 2005 Ted Turocy -- adding to main distribution; tweak descriptions - -* Mon Dec 12 2005 Paul E. Johnson -- version bump & reorganization - -* Tue Apr 06 2004 Paul E. Johnson -- version bump. - -* Wed Mar 10 2004 Christopher C. Weis -- cleaned up spec file to use macros and proper file inclusions - -* Thu Oct 23 2003 Paul E. Johnson -- Initial build. From bd905dc201948aa2b36fadcad5be0a6748c3efd6 Mon Sep 17 00:00:00 2001 From: Ed Chalstrey Date: Mon, 8 Dec 2025 11:56:46 +0000 Subject: [PATCH 14/18] Refactor build support files into build_support directory (#679) * Refactor build support files into build_support directory * Update GAMBIT_VERSION path in configure.ac to use build_support directory --- .github/workflows/tools.yml | 2 +- Makefile.am | 10 +++++----- GAMBIT_VERSION => build_support/GAMBIT_VERSION | 0 gambit.wxs => build_support/gambit.wxs | 0 gambit.wxs.in => build_support/gambit.wxs.in | 2 +- {contrib => build_support}/mac/Info.plist | 0 {contrib => build_support}/mac/Info.plist.in | 2 +- configure.ac | 6 +++--- doc/conf.py | 2 +- doc/developer.contributing.rst | 4 ++-- pyproject.toml | 2 +- src/pygambit/__init__.py | 2 +- 12 files changed, 16 insertions(+), 16 deletions(-) rename GAMBIT_VERSION => build_support/GAMBIT_VERSION (100%) rename gambit.wxs => build_support/gambit.wxs (100%) rename gambit.wxs.in => build_support/gambit.wxs.in (99%) rename {contrib => build_support}/mac/Info.plist (100%) rename {contrib => build_support}/mac/Info.plist.in (99%) diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml index 1156547ca..91c38c37a 100644 --- a/.github/workflows/tools.yml +++ b/.github/workflows/tools.yml @@ -91,7 +91,7 @@ jobs: run: | mkdir installer cp gambit* installer - "${WIX}bin/candle" gambit.wxs + "${WIX}bin/candle" build_support/gambit.wxs "${WIX}bin/light" -ext WixUIExtension gambit.wixobj - uses: actions/upload-artifact@v5 with: diff --git a/Makefile.am b/Makefile.am index de2b39f8f..27726e4a7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -23,8 +23,8 @@ ACLOCAL_AMFLAGS = -I m4 EXTRA_DIST = \ - gambit.wxs \ - contrib/mac/Info.plist \ + build_support/gambit.wxs \ + build_support/mac/Info.plist \ contrib/mac/gambit.icns \ src/labenski/README.txt \ src/labenski/art/grab.xpm \ @@ -373,7 +373,7 @@ bin_PROGRAMS += gambit endif # Read version from GAMBIT_VERSION file for use in compilation -GAMBIT_VERSION = $(shell cat $(top_srcdir)/GAMBIT_VERSION) +GAMBIT_VERSION = $(shell cat $(top_srcdir)/build_support/GAMBIT_VERSION) # Define VERSION for all C++ compilations and set include paths AM_CPPFLAGS = -I$(top_srcdir)/src -DVERSION=\"$(GAMBIT_VERSION)\" @@ -623,7 +623,7 @@ osx-bundle: -mkdir Gambit.app/Contents -mkdir Gambit.app/Contents/MacOS -mkdir Gambit.app/Contents/Resources - cp ${top_srcdir}/contrib/mac/Info.plist Gambit.app/Contents + cp ${top_srcdir}/build_support/mac/Info.plist Gambit.app/Contents cp ${top_srcdir}/contrib/mac/gambit.icns Gambit.app/Contents/Resources/gambit.icns echo -n 'APPL????' > Gambit.app/Contents/PkgInfo cp gambit Gambit.app/Contents/MacOS/gambit @@ -639,7 +639,7 @@ osx-dmg: osx-bundle msw-msi: -mkdir installer cp gambit* installer - candle gambit.wxs + candle build_support/gambit.wxs light -ext WixUIExtension gambit.wixobj clang-tidy: diff --git a/GAMBIT_VERSION b/build_support/GAMBIT_VERSION similarity index 100% rename from GAMBIT_VERSION rename to build_support/GAMBIT_VERSION diff --git a/gambit.wxs b/build_support/gambit.wxs similarity index 100% rename from gambit.wxs rename to build_support/gambit.wxs diff --git a/gambit.wxs.in b/build_support/gambit.wxs.in similarity index 99% rename from gambit.wxs.in rename to build_support/gambit.wxs.in index 975ae55f5..85f20db32 100644 --- a/gambit.wxs.in +++ b/build_support/gambit.wxs.in @@ -64,4 +64,4 @@
-
\ No newline at end of file +
diff --git a/contrib/mac/Info.plist b/build_support/mac/Info.plist similarity index 100% rename from contrib/mac/Info.plist rename to build_support/mac/Info.plist diff --git a/contrib/mac/Info.plist.in b/build_support/mac/Info.plist.in similarity index 99% rename from contrib/mac/Info.plist.in rename to build_support/mac/Info.plist.in index 4c7c5d8c2..6aa5c91f1 100644 --- a/contrib/mac/Info.plist.in +++ b/build_support/mac/Info.plist.in @@ -84,4 +84,4 @@ - \ No newline at end of file + diff --git a/configure.ac b/configure.ac index 1fb8050bc..411959ea0 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,7 @@ dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. dnl -AC_INIT([gambit],[m4_esyscmd_s([cat GAMBIT_VERSION])]) +AC_INIT([gambit],[m4_esyscmd_s([cat build_support/GAMBIT_VERSION])]) AC_CONFIG_SRCDIR([src/gambit.h]) AM_INIT_AUTOMAKE([subdir-objects foreign]) dnl AC_CONFIG_MACRO_DIR([m4]) @@ -145,8 +145,8 @@ AC_SUBST(WX_CXXFLAGS) REZFLAGS=`echo $CXXFLAGS $WX_CXXFLAGS | sed 's/-mthreads//g' | sed 's/-g//g' | sed 's/-O. / /g' | sed 's/-I/--include-dir /g'` AC_SUBST(REZFLAGS) -GAMBIT_VERSION=`cat GAMBIT_VERSION` +GAMBIT_VERSION=`cat build_support/GAMBIT_VERSION` AC_SUBST(GAMBIT_VERSION) -AC_CONFIG_FILES([Makefile contrib/mac/Info.plist gambit.wxs]) +AC_CONFIG_FILES([Makefile build_support/mac/Info.plist build_support/gambit.wxs]) AC_OUTPUT diff --git a/doc/conf.py b/doc/conf.py index 7386eae41..4079391de 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -56,7 +56,7 @@ # built documents. # -_version_file = pathlib.Path(__file__).parent.parent / "GAMBIT_VERSION" +_version_file = pathlib.Path(__file__).parent.parent / "build_support/GAMBIT_VERSION" if _version_file.exists(): _full_version = _version_file.read_text().strip() # The short X.Y version. diff --git a/doc/developer.contributing.rst b/doc/developer.contributing.rst index 6da2e0713..64e5c0ac0 100644 --- a/doc/developer.contributing.rst +++ b/doc/developer.contributing.rst @@ -180,12 +180,12 @@ When making a new release of Gambit, follow these steps: 1. Create a new branch from the latest commit on the ``master`` branch named ``maintX_Y``, where ``X`` is the major version number and ``Y`` is the minor version number of the new release. -2. Update the version number in the ``GAMBIT_VERSION`` file at the root of the repository to ``X.Y.Z``. +2. Update the version number in the ``build_support/GAMBIT_VERSION`` file to ``X.Y.Z``. All other files will automatically use the updated version number: - `pyproject.toml` reads from GAMBIT_VERSION file at build time - - `configure.ac` reads from GAMBIT_VERSION file and substitutes into `Info.plist` and `gambit.wxs` + - `configure.ac` reads from GAMBIT_VERSION file and substitutes into `build_support/mac/Info.plist` and `build_support/gambit.wxs` - `src/pygambit/__init__.py` reads from installed package metadata or GAMBIT_VERSION file - `doc/conf.py` reads from GAMBIT_VERSION file at documentation build time - Documentation pages reference the `|release|` substitution variable to automatically reflect the updated version number. diff --git a/pyproject.toml b/pyproject.toml index 775d3ee63..5f010358b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -86,4 +86,4 @@ markers = [ ] [tool.setuptools.dynamic] -version = {file = "GAMBIT_VERSION"} \ No newline at end of file +version = {file = "build_support/GAMBIT_VERSION"} diff --git a/src/pygambit/__init__.py b/src/pygambit/__init__.py index d9d407927..727ddf721 100644 --- a/src/pygambit/__init__.py +++ b/src/pygambit/__init__.py @@ -35,5 +35,5 @@ except importlib.metadata.PackageNotFoundError: # Package is not installed, fallback to reading GAMBIT_VERSION file import pathlib - _version_file = pathlib.Path(__file__).parent.parent.parent / "GAMBIT_VERSION" + _version_file = pathlib.Path(__file__).parent.parent.parent / "build_support/GAMBIT_VERSION" __version__ = _version_file.read_text().strip() if _version_file.exists() else "unknown" From 97252cfadf434d10c5da98f3dfd8542dd836bb73 Mon Sep 17 00:00:00 2001 From: Theodore Turocy Date: Mon, 8 Dec 2025 12:17:51 +0000 Subject: [PATCH 15/18] Clean up spurious whitespace in command-line tool output examples --- doc/tools.convert.rst | 6 ------ doc/tools.enummixed.rst | 6 ------ doc/tools.enumpoly.rst | 3 --- doc/tools.enumpure.rst | 5 ----- doc/tools.gnm.rst | 4 ---- doc/tools.ipa.rst | 3 --- doc/tools.lcp.rst | 3 --- doc/tools.liap.rst | 3 --- doc/tools.logit.rst | 3 --- doc/tools.lp.rst | 3 --- doc/tools.simpdiv.rst | 3 --- 11 files changed, 42 deletions(-) diff --git a/doc/tools.convert.rst b/doc/tools.convert.rst index 1e9f32c2c..730e92849 100644 --- a/doc/tools.convert.rst +++ b/doc/tools.convert.rst @@ -39,11 +39,8 @@ outputting the strategic form of the game in one of these formats: Example invocation for HTML output $ gambit-convert -O html 2x2.nfg - Convert games among various file formats - Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project - This is free software, distributed under the GNU GPL

Two person 2 x 2 game with unique mixed equilibrium

@@ -57,11 +54,8 @@ Example invocation for HTML output Example invocation for LaTeX output $ gambit-convert -O sgame 2x2.nfg - Convert games among various file formats - Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project - This is free software, distributed under the GNU GPL \begin{game}{2}{2}[Player 1][Player 2] diff --git a/doc/tools.enummixed.rst b/doc/tools.enummixed.rst index 5e6ff03cd..ebed02d1b 100644 --- a/doc/tools.enummixed.rst +++ b/doc/tools.enummixed.rst @@ -69,11 +69,8 @@ in Figure 2 of Selten (International Journal of Game Theory, 1975) $ gambit-enummixed e02.nfg - Compute Nash equilibria by enumerating extreme points - Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project - This is free software, distributed under the GNU GPL NE,1,0,0,1,0 @@ -84,11 +81,8 @@ equilibria. This fact can be observed by examining the connectedness information using the `-c` switch $ gambit-enummixed -c e02.nfg - Compute Nash equilibria by enumerating extreme points - Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project - This is free software, distributed under the GNU GPL NE,1,0,0,1,0 diff --git a/doc/tools.enumpoly.rst b/doc/tools.enumpoly.rst index c5883f8a0..ce627080b 100644 --- a/doc/tools.enumpoly.rst +++ b/doc/tools.enumpoly.rst @@ -97,11 +97,8 @@ Computing equilibria of the strategic game :download:`e01.nfg "Selten's horse" $ gambit-enumpoly e01.nfg - Compute Nash equilibria by solving polynomial systems - Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project - This is free software, distributed under the GNU GPL NE,1.000000,0.000000,1.000000,0.000000,0.000000,1.000000 diff --git a/doc/tools.enumpure.rst b/doc/tools.enumpure.rst index fd2e575a1..3dea415e3 100644 --- a/doc/tools.enumpure.rst +++ b/doc/tools.enumpure.rst @@ -73,9 +73,7 @@ strategies $ gambit-enumpure -S e02.efg Search for Nash equilibria in pure strategies - Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project - This is free software, distributed under the GNU GPL NE,1,0,0,1,0 @@ -85,11 +83,8 @@ is no way for a player to improve his payoff by changing action at only one information set; therefore the set of solutions is larger $ gambit-enumpure -A e02.efg - Search for Nash equilibria in pure strategies - Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project - This is free software, distributed under the GNU GPL NE,1,0,1,0,1,0 diff --git a/doc/tools.gnm.rst b/doc/tools.gnm.rst index bda5ea236..d992074f2 100644 --- a/doc/tools.gnm.rst +++ b/doc/tools.gnm.rst @@ -88,13 +88,9 @@ the reduced strategic form of the example in Figure 2 of Selten $ gambit-gnm e02.nfg Compute Nash equilibria using a global Newton method - Gametracer version 0.2, Copyright (C) 2002, Ben Blum and Christian Shelton - Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project - This is free software, distributed under the GNU GPL - NE,1,0,2.99905e-12,0.5,0.5 diff --git a/doc/tools.ipa.rst b/doc/tools.ipa.rst index 7b986c3cb..6bc1b8227 100644 --- a/doc/tools.ipa.rst +++ b/doc/tools.ipa.rst @@ -55,11 +55,8 @@ the reduced strategic form of the example in Figure 2 of Selten $ gambit-ipa e02.nfg Compute Nash equilibria using iterated polymatrix approximation - Gametracer version 0.2, Copyright (C) 2002, Ben Blum and Christian Shelton - Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project - This is free software, distributed under the GNU GPL NE,1.000000,0.000000,0.000000,1.000000,0.000000 diff --git a/doc/tools.lcp.rst b/doc/tools.lcp.rst index dcb4e8c52..4de443aa7 100644 --- a/doc/tools.lcp.rst +++ b/doc/tools.lcp.rst @@ -71,11 +71,8 @@ Computing an equilibrium of extensive game :download:`e02.efg (International Journal of Game Theory, 1975) $ gambit-lcp e02.efg - Compute Nash equilibria by solving a linear complementarity program - Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project - This is free software, distributed under the GNU GPL NE,1,0,1/2,1/2,1/2,1/2 diff --git a/doc/tools.liap.rst b/doc/tools.liap.rst index c8f77c9d9..0203d7d01 100644 --- a/doc/tools.liap.rst +++ b/doc/tools.liap.rst @@ -84,11 +84,8 @@ Computing an equilibrium in mixed strategies of :download:`e02.efg (International Journal of Game Theory, 1975) $ gambit-liap e02.nfg - Compute Nash equilibria by minimizing the Lyapunov function - Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project - This is free software, distributed under the GNU GPL NE,0.998701,0.000229,0.001070,0.618833,0.381167 diff --git a/doc/tools.logit.rst b/doc/tools.logit.rst index 5f4a48da1..009cceb97 100644 --- a/doc/tools.logit.rst +++ b/doc/tools.logit.rst @@ -107,11 +107,8 @@ in Figure 2 of Selten (International Journal of Game Theory, 1975) $ gambit-logit e02.nfg - Compute a branch of the logit equilibrium correspondence - Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project - This is free software, distributed under the GNU GPL 0.000000,0.333333,0.333333,0.333333,0.5,0.5 diff --git a/doc/tools.lp.rst b/doc/tools.lp.rst index 66ce7c0c2..e34493bc2 100644 --- a/doc/tools.lp.rst +++ b/doc/tools.lp.rst @@ -57,11 +57,8 @@ Computing an equilibrium of the game :download:`2x2const.nfg strategies each, with a unique equilibrium in mixed strategies $ gambit-lp 2x2const.nfg - Compute Nash equilibria by solving a linear program - Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project - This is free software, distributed under the GNU GPL NE,1/3,2/3,1/3,2/3 diff --git a/doc/tools.simpdiv.rst b/doc/tools.simpdiv.rst index cdb36a96b..092631be9 100644 --- a/doc/tools.simpdiv.rst +++ b/doc/tools.simpdiv.rst @@ -91,11 +91,8 @@ Computing an equilibrium in mixed strategies of :download:`e02.efg (International Journal of Game Theory, 1975) $ gambit-simpdiv e02.nfg - Compute Nash equilibria using simplicial subdivision - Gambit version |release|, Copyright (C) 1994-2025, The Gambit Project - This is free software, distributed under the GNU GPL NE,1,0,0,1,0 From 5bda02a32290182c35ec127c8e45653344b44a79 Mon Sep 17 00:00:00 2001 From: Theodore Turocy Date: Mon, 8 Dec 2025 12:38:23 +0000 Subject: [PATCH 16/18] A few adjustments: * Don't version generated files (in fact the non .in versions of the build_support files aren't being updated) * Use OS-specific directories in build_support --- Makefile.am | 12 +-- build_support/gambit.wxs | 67 -------------- build_support/mac/Info.plist | 87 ------------------ build_support/{ => msw}/gambit.wxs.in | 0 build_support/{mac => osx}/Info.plist.in | 0 .../mac => build_support/osx}/gambit.icns | Bin configure.ac | 2 +- 7 files changed, 7 insertions(+), 161 deletions(-) delete mode 100644 build_support/gambit.wxs delete mode 100644 build_support/mac/Info.plist rename build_support/{ => msw}/gambit.wxs.in (100%) rename build_support/{mac => osx}/Info.plist.in (100%) rename {contrib/mac => build_support/osx}/gambit.icns (100%) diff --git a/Makefile.am b/Makefile.am index 27726e4a7..95b2ed961 100644 --- a/Makefile.am +++ b/Makefile.am @@ -23,9 +23,9 @@ ACLOCAL_AMFLAGS = -I m4 EXTRA_DIST = \ - build_support/gambit.wxs \ - build_support/mac/Info.plist \ - contrib/mac/gambit.icns \ + build_support/msw/gambit.wxs.in \ + build_support/osx/Info.plist.in \ + build_support/osx/gambit.icns \ src/labenski/README.txt \ src/labenski/art/grab.xpm \ src/labenski/art/hand.xpm \ @@ -623,8 +623,8 @@ osx-bundle: -mkdir Gambit.app/Contents -mkdir Gambit.app/Contents/MacOS -mkdir Gambit.app/Contents/Resources - cp ${top_srcdir}/build_support/mac/Info.plist Gambit.app/Contents - cp ${top_srcdir}/contrib/mac/gambit.icns Gambit.app/Contents/Resources/gambit.icns + cp build_support/osx/Info.plist Gambit.app/Contents + cp ${top_srcdir}/build_support/osx/gambit.icns Gambit.app/Contents/Resources/gambit.icns echo -n 'APPL????' > Gambit.app/Contents/PkgInfo cp gambit Gambit.app/Contents/MacOS/gambit cp ${bin_PROGRAMS} Gambit.app/Contents/MacOS @@ -639,7 +639,7 @@ osx-dmg: osx-bundle msw-msi: -mkdir installer cp gambit* installer - candle build_support/gambit.wxs + candle build_support/msw/gambit.wxs light -ext WixUIExtension gambit.wixobj clang-tidy: diff --git a/build_support/gambit.wxs b/build_support/gambit.wxs deleted file mode 100644 index 7563a8404..000000000 --- a/build_support/gambit.wxs +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build_support/mac/Info.plist b/build_support/mac/Info.plist deleted file mode 100644 index a17bd7905..000000000 --- a/build_support/mac/Info.plist +++ /dev/null @@ -1,87 +0,0 @@ - - - - - CFBundleInfoDictionaryVersion - 6.0 - CFBundleIdentifier - org.gambit-project.gambit - CFBundleDevelopmentRegion - English - CFBundleExecutable - gambit - CFBundleIconFile - gambit - CFBundleName - Gambit - CFBundlePackageType - APPL - CFBundleSignature - ???? - CFBundleVersion - 16.4.0 - CFBundleShortVersionString - 16.4.0 - CFBundleGetInfoString - Gambit version 16.4.0, (c) 1994-2025 The Gambit Project - CFBundleLongVersionString - 16.4.0, (c) 1994-2025 The Gambit Project - NSHumanReadableCopyright - Copyright 1994-2025 The Gambit Project - LSRequiresCarbon - - CSResourcesFileMapped - - CFBundleDocumentTypes - - - CFBundleTypeExtensions - - gbt - - CFBundleTypeIconFile - gambit.icns - CFBundleTypeName - Gambit Document - CFBundleTypeOSTypes - - GBT - - CFBundleTypeRole - Editor - - - CFBundleTypeExtensions - - efg - - CFBundleTypeIconFile - gambit.icns - CFBundleTypeName - Gambit Extensive Game Document - CFBundleTypeOSTypes - - EFG - - CFBundleTypeRole - Editor - - - CFBundleTypeExtensions - - nfg - - CFBundleTypeIconFile - gambit.icns - CFBundleTypeName - Gambit Strategic Game Document - CFBundleTypeOSTypes - - NFG - - CFBundleTypeRole - Editor - - - - diff --git a/build_support/gambit.wxs.in b/build_support/msw/gambit.wxs.in similarity index 100% rename from build_support/gambit.wxs.in rename to build_support/msw/gambit.wxs.in diff --git a/build_support/mac/Info.plist.in b/build_support/osx/Info.plist.in similarity index 100% rename from build_support/mac/Info.plist.in rename to build_support/osx/Info.plist.in diff --git a/contrib/mac/gambit.icns b/build_support/osx/gambit.icns similarity index 100% rename from contrib/mac/gambit.icns rename to build_support/osx/gambit.icns diff --git a/configure.ac b/configure.ac index 411959ea0..de65a299e 100644 --- a/configure.ac +++ b/configure.ac @@ -148,5 +148,5 @@ AC_SUBST(REZFLAGS) GAMBIT_VERSION=`cat build_support/GAMBIT_VERSION` AC_SUBST(GAMBIT_VERSION) -AC_CONFIG_FILES([Makefile build_support/mac/Info.plist build_support/gambit.wxs]) +AC_CONFIG_FILES([Makefile build_support/osx/Info.plist build_support/msw/gambit.wxs]) AC_OUTPUT From 5b3dda957abf95788b1d7b9324638bcc98dedd3c Mon Sep 17 00:00:00 2001 From: Theodore Turocy Date: Mon, 8 Dec 2025 12:40:12 +0000 Subject: [PATCH 17/18] Update github action to build Windows installer --- .github/workflows/tools.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml index 91c38c37a..af8a9eb0c 100644 --- a/.github/workflows/tools.yml +++ b/.github/workflows/tools.yml @@ -91,7 +91,7 @@ jobs: run: | mkdir installer cp gambit* installer - "${WIX}bin/candle" build_support/gambit.wxs + "${WIX}bin/candle" build_support/msw/gambit.wxs "${WIX}bin/light" -ext WixUIExtension gambit.wixobj - uses: actions/upload-artifact@v5 with: From 1085283860a324b15fd7fca4b1371f0192de382e Mon Sep 17 00:00:00 2001 From: Ed Chalstrey Date: Mon, 8 Dec 2025 13:17:36 +0000 Subject: [PATCH 18/18] update file references in doc --- doc/developer.contributing.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/developer.contributing.rst b/doc/developer.contributing.rst index 64e5c0ac0..0abab8744 100644 --- a/doc/developer.contributing.rst +++ b/doc/developer.contributing.rst @@ -185,7 +185,7 @@ When making a new release of Gambit, follow these steps: All other files will automatically use the updated version number: - `pyproject.toml` reads from GAMBIT_VERSION file at build time - - `configure.ac` reads from GAMBIT_VERSION file and substitutes into `build_support/mac/Info.plist` and `build_support/gambit.wxs` + - `configure.ac` reads from GAMBIT_VERSION file and substitutes into `build_support/osx/Info.plist` and `build_support/msw/gambit.wxs` - `src/pygambit/__init__.py` reads from installed package metadata or GAMBIT_VERSION file - `doc/conf.py` reads from GAMBIT_VERSION file at documentation build time - Documentation pages reference the `|release|` substitution variable to automatically reflect the updated version number.