From 01d3a8ed4116d931bb28451d89c748dc1ffcb3cf Mon Sep 17 00:00:00 2001 From: Ben Webb Date: Thu, 21 Apr 2022 11:23:16 -0700 Subject: [PATCH 1/5] Remove old Sublime config --- rmf.sublime-project | 8 - rmf.sublime-workspace | 470 ------------------------------------------ 2 files changed, 478 deletions(-) delete mode 100644 rmf.sublime-project delete mode 100644 rmf.sublime-workspace diff --git a/rmf.sublime-project b/rmf.sublime-project deleted file mode 100644 index 7762a624..00000000 --- a/rmf.sublime-project +++ /dev/null @@ -1,8 +0,0 @@ -{ - "folders": - [ - { - "path": "../rmf" - } - ] -} diff --git a/rmf.sublime-workspace b/rmf.sublime-workspace deleted file mode 100644 index 14801987..00000000 --- a/rmf.sublime-workspace +++ /dev/null @@ -1,470 +0,0 @@ -{ - "auto_complete": - { - "selected_items": - [ - [ - "lib", - "lib" - ] - ] - }, - "buffers": - [ - { - "file": "scripts/make-decorators.py", - "settings": - { - "buffer_size": 11609, - "line_ending": "Unix" - } - }, - { - "file": "CMakeLists.txt", - "settings": - { - "buffer_size": 2453, - "line_ending": "Unix" - } - }, - { - "file": "src/backend/avro/avro_schemas.h", - "settings": - { - "buffer_size": 3725, - "line_ending": "Unix" - } - }, - { - "file": "src/CMakeLists.txt", - "settings": - { - "buffer_size": 477, - "line_ending": "Unix" - } - }, - { - "file": "test/CMakeLists.txt", - "settings": - { - "buffer_size": 1101, - "line_ending": "Unix" - } - } - ], - "build_system": "Packages/User/scons_all.sublime-build", - "command_palette": - { - "height": 47.0, - "selected_items": - [ - [ - "IMP.rmf", - "Build: IMP.rmf" - ] - ], - "width": 392.0 - }, - "console": - { - "height": 0.0 - }, - "distraction_free": - { - "menu_visible": true, - "show_minimap": false, - "show_open_files": false, - "show_tabs": false, - "side_bar_visible": false, - "status_bar_visible": false - }, - "file_history": - [ - "/Users/drussel/src/rmf/rmf/src/backend/avro/CMakeLists.txt", - "/Users/drussel/src/rmf/rmf/AvroCpp/CMakeLists.txt", - "/Users/drussel/src/rmf/rmf/include/RMF/internal/hash.h", - "/Users/drussel/src/rmf/rmf/scripts/make-decorators.py", - "/Users/drussel/src/rmf/rmf/swig/RMF_HDF5.i", - "/Users/drussel/src/rmf/rmf/bin/rmf_pdb.cpp", - "/Users/drussel/src/rmf/rmf/include/RMF/compiler_macros.h", - "/Users/drussel/src/rmf/rmf/include/RMF/internal/swig_helpers.h", - "/Users/drussel/src/rmf/rmf/swig/RMF.i", - "/Users/drussel/src/rmf/rmf/bin/rmf_slice.cpp", - "/Users/drussel/src/rmf/rmf/swig/CMakeLists.txt", - "/Users/drussel/src/dotfiles/Library/Application Support/Sublime Text 2/Packages/Rails/form_for-submit.sublime-snippet", - "/Users/drussel/src/rmf/rmf/include/RMF/infrastructure_macros.h", - "/Users/drussel/src/rmf/rmf/AvroCpp/impl/FileStream.cc", - "/Users/drussel/src/rmf/rmf/doc/mapping.dox", - "/Users/drussel/src/rmf/rmf/src/backend/avro/MultipleAvroFileBase.cpp", - "/Users/drussel/src/rmf/rmf/include/RMF/Category.h", - "/Users/drussel/src/rmf/rmf/include/RMF/constants.h", - "/Users/drussel/src/rmf/rmf/include/RMF/CoordinateTransformer.h", - "/Users/drussel/src/rmf/rmf/include/RMF/decorator_utility.h", - "/Users/drussel/src/rmf/rmf/bin/rmf_interpolate.cpp", - "/Users/drussel/src/rmf/rmf/include/RMF/Decorator.h", - "/Users/drussel/src/rmf/rmf/include/RMF/HDF5/types.h", - "/Users/drussel/src/rmf/rmf/include/RMF/HDF5/Object.h", - "/Users/drussel/src/rmf/rmf/include/RMF/HDF5/MutableAttributes.h", - "/Users/drussel/src/rmf/rmf/include/RMF/HDF5/handle.h", - "/Users/drussel/src/rmf/rmf/include/RMF/HDF5/Group.h", - "/Users/drussel/src/rmf/rmf/include/RMF/HDF5/File.h", - "/Users/drussel/src/rmf/rmf/include/RMF/HDF5/DataSetIndexD.h", - "/Users/drussel/src/rmf/rmf/include/RMF/HDF5/DataSetD.h", - "/Users/drussel/src/rmf/rmf/include/RMF/HDF5/DataSetCreationPropertiesD.h", - "/Users/drussel/src/rmf/rmf/include/RMF/HDF5/DataSetAccessPropertiesD.h", - "/Users/drussel/src/rmf/rmf/include/RMF/HDF5/ConstGroup.h", - "/Users/drussel/src/rmf/rmf/include/RMF/HDF5/ConstFile.h", - "/Users/drussel/src/rmf/rmf/include/RMF/HDF5/ConstDataSetD.h", - "/Users/drussel/src/rmf/rmf/include/RMF/HDF5/ConstAttributes.h", - "/Users/drussel/src/rmf/rmf/include/RMF/HDF5/internal/types.h", - "/Users/drussel/src/rmf/rmf/src/Validator.cpp", - "/Users/drussel/src/rmf/rmf/src/utility.cpp", - "/Users/drussel/src/rmf/rmf/src/SetCurrentFrame.cpp", - "/Users/drussel/src/rmf/rmf/src/profile.cpp", - "/Users/drussel/src/rmf/rmf/src/NodeHandle.cpp", - "/Users/drussel/src/rmf/rmf/src/NodeConstHandle.cpp", - "/Users/drussel/src/rmf/rmf/src/names.cpp", - "/Users/drussel/src/rmf/rmf/src/log.cpp", - "/Users/drussel/src/rmf/rmf/src/Key.cpp", - "/Users/drussel/src/rmf/rmf/src/hdf5_wrapper.cpp", - "/Users/drussel/src/rmf/rmf/src/FrameID.cpp", - "/Users/drussel/src/rmf/rmf/src/FrameHandle.cpp", - "/Users/drussel/src/rmf/rmf/src/FrameConstHandle.cpp", - "/Users/drussel/src/rmf/rmf/src/FileHandle.cpp", - "/Users/drussel/src/rmf/rmf/src/FileConstHandle.cpp", - "/Users/drussel/src/rmf/rmf/src/exceptions.cpp", - "/Users/drussel/src/rmf/rmf/src/decorator_utility.cpp", - "/Users/drussel/src/rmf/rmf/src/CoordinateTransformer.cpp", - "/Users/drussel/src/rmf/rmf/src/internal/SharedData.cpp", - "/Users/drussel/src/rmf/rmf/src/internal/paths.cpp", - "/Users/drussel/src/rmf/rmf/src/internal/errors.cpp", - "/Users/drussel/src/rmf/rmf/src/internal/Transform.cpp", - "/Users/drussel/src/rmf/rmf/src/internal/utility.cpp", - "/Users/drussel/src/rmf/rmf/src/backend/hdf5/names.h", - "/Users/drussel/src/rmf/rmf/src/backend/hdf5/HDF5SharedData.h", - "/Users/drussel/src/rmf/rmf/src/backend/hdf5/HDF5SharedData.cpp", - "/Users/drussel/src/rmf/rmf/src/backend/hdf5/HDF5DataSetCacheD.h", - "/Users/drussel/src/rmf/rmf/src/backend/hdf5/HDF5DataSetCache3D.h", - "/Users/drussel/src/rmf/rmf/src/backend/hdf5/HDF5DataSetCache2D.h", - "/Users/drussel/src/rmf/rmf/src/backend/hdf5/HDF5DataSetCache1D.h", - "/Users/drussel/src/rmf/rmf/src/backend/hdf5/create.h", - "/Users/drussel/src/rmf/rmf/src/backend/hdf5/create.cpp", - "/Users/drussel/src/rmf/rmf/src/backend/avro/SingleAvroFile.h", - "/Users/drussel/src/rmf/rmf/src/backend/avro/SingleAvroFile.cpp", - "/Users/drussel/src/rmf/rmf/src/backend/avro/MultipleAvroFileWriter.h", - "/Users/drussel/src/rmf/rmf/src/backend/avro/MultipleAvroFileWriter.cpp", - "/Users/drussel/src/rmf/rmf/src/backend/avro/MultipleAvroFileReader.h", - "/Users/drussel/src/rmf/rmf/src/backend/avro/MultipleAvroFileReader.cpp", - "/Users/drussel/src/rmf/rmf/src/backend/avro/MultipleAvroFileBase.h", - "/Users/drussel/src/rmf/rmf/src/backend/avro/create.h", - "/Users/drussel/src/rmf/rmf/src/backend/avro/create.cpp", - "/Users/drussel/src/rmf/rmf/src/backend/avro/AvroSharedData.types.h", - "/Users/drussel/src/rmf/rmf/src/backend/avro/AvroSharedData.impl.h", - "/Users/drussel/src/rmf/rmf/src/backend/avro/AvroSharedData.h", - "/Users/drussel/src/rmf/rmf/src/backend/avro/AvroKeysAndCategories.h", - "/Users/drussel/src/rmf/rmf/src/backend/avro/avro_schemas.h", - "/Users/drussel/src/rmf/rmf/src/backend/avro/avro_schemas.cpp", - "/Users/drussel/src/rmf/rmf/config.h.in", - "/Users/drussel/src/rmf/rmf/bin/rmf_transform.cpp", - "/Users/drussel/src/rmf/rmf/src/backend/avro/Data.json", - "/Users/drussel/src/rmf/rmf/scripts/make-all-header.py", - "/Users/drussel/src/rmf/rmf/bin/rmf_cat.cpp", - "/Users/drussel/src/rmf/rmf/bin/common.h", - "/Users/drussel/src/rmf/rmf/include/RMF/internal/compiler_warnings.h", - "/Users/drussel/src/rmf/rmf/include/RMF/internal/compiler_macros.h", - "/Users/drussel/src/rmf/rmf/include/RMF/internal/SharedData.h", - "/Users/drussel/src/rmf/rmf/include/RMF/utility.h", - "/Users/drussel/src/rmf/rmf/pyext/RMF.i", - "/Users/drussel/src/rmf/rmf/AvroCpp/test/AvrogencppTests.cc", - "/Users/drussel/src/rmf/rmf/include/RMF/exceptions.h", - "/Users/drussel/src/rmf/rmf/pyext/CMakeLists.txt", - "/Users/drussel/src/imp/imp/modules/base/include/exception.h", - "/Users/drussel/src/imp/imp/modules/base/include/open_mp.h", - "/Users/drussel/src/imp/imp/modules/rmf/src/frames.cpp", - "/Users/drussel/src/imp/imp/modules/rmf/dependency/RMF/include/RMF/FileHandle.h", - "/Users/drussel/src/imp/imp/modules/kernel/include/container_base.h", - "/Users/drussel/src/imp/imp/modules/kernel/src/Container.cpp", - "/Users/drussel/src/imp/imp/modules/kernel/test/test_model.py", - "/Users/drussel/src/imp/imp/modules/kernel/include/internal/attribute_tables.h", - "/Users/drussel/src/imp/imp/modules/kernel/include/declare_Model.h", - "/Users/drussel/src/imp/imp/modules/kernel/include/Model.h", - "/Users/drussel/src/imp/imp/tools/maintenance/container_templates/container/PredicateNAMEsRestraint.cc", - "/Users/drussel/src/imp/imp/modules/isd/test/test_GaussianProcessInterpolationRestraint.py", - "/Users/drussel/src/imp/imp/modules/rmf/dependency/RMF/include/RMF/FileConstHandle.h", - "/Users/drussel/src/imp/imp/modules/rmf/dependency/RMF/src/backend/hdf5/HDF5DataSetCache1D.h", - "/Users/drussel/src/imp/imp/modules/rmf/dependency/RMF/src/backend/hdf5/HDF5SharedData.cpp", - "/Users/drussel/src/imp/imp/modules/rmf/dependency/RMF/src/backend/hdf5/HDF5DataSetCache3D.h", - "/Users/drussel/src/imp/imp/modules/atom/src/BrownianDynamics.cpp", - "/Users/drussel/src/imp/imp/modules/kernel/src/Restraint.cpp", - "/Users/drussel/src/imp/imp/modules/kernel/src/Model_evaluate.cpp", - "/Users/drussel/src/imp/imp/modules/kernel/include/ScoreAccumulator.h", - "/Users/drussel/src/imp/imp/modules/kernel/include/Key.h", - "/Users/drussel/src/imp/imp/modules/container/include/ClosePairContainer.h", - "/Users/drussel/src/imp/imp/modules/core/include/ExcludedVolumeRestraint.h", - "/Users/drussel/Library/Application Support/Sublime Text 2/Packages/User/Preferences.sublime-settings", - "/Users/drussel/src/imp/imp/modules/rmf/dependency/RMF/CMakeLists.txt", - "/Users/drussel/src/imp/imp/modules/core/benchmark/benchmark_omp_evaluate.cpp" - ], - "find": - { - "height": 35.0 - }, - "find_in_files": - { - "height": 0.0, - "where_history": - [ - "/Users/drussel/src/imp/imp", - "" - ] - }, - "find_state": - { - "case_sensitive": false, - "find_history": - [ - "_s", - "Python", - "FileBufferCopyIn", - "IMP", - "get_all_values_impl", - "get_all_values_helper", - "test", - "*this", - "char", - "input_outpu", - "inputoutput", - "exception", - " >=", - "flush", - "frame", - "add_frame", - "+=", - "slack", - "slack estimate" - ], - "highlight": true, - "in_selection": false, - "preserve_case": false, - "regex": false, - "replace_history": - [ - "RMF", - "e" - ], - "reverse": false, - "show_context": true, - "use_buffer2": true, - "whole_word": false, - "wrap": true - }, - "groups": - [ - { - "selected": 4, - "sheets": - [ - { - "buffer": 0, - "file": "scripts/make-decorators.py", - "settings": - { - "buffer_size": 11609, - "regions": - { - }, - "selection": - [ - [ - 0, - 0 - ] - ], - "settings": - { - "syntax": "Packages/Python/Python.tmLanguage", - "tab_size": 2, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "type": "text" - }, - { - "buffer": 1, - "file": "CMakeLists.txt", - "settings": - { - "buffer_size": 2453, - "regions": - { - }, - "selection": - [ - [ - 787, - 787 - ] - ], - "settings": - { - "syntax": "Packages/User/CMake Listfile.tmLanguage", - "tab_size": 2, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, - "translation.y": 467.0, - "zoom_level": 1.0 - }, - "type": "text" - }, - { - "buffer": 2, - "file": "src/backend/avro/avro_schemas.h", - "settings": - { - "buffer_size": 3725, - "regions": - { - }, - "selection": - [ - [ - 0, - 0 - ] - ], - "settings": - { - "syntax": "Packages/C++/C++.tmLanguage", - "tab_size": 2, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, - "translation.y": 65.0, - "zoom_level": 1.0 - }, - "type": "text" - }, - { - "buffer": 3, - "file": "src/CMakeLists.txt", - "settings": - { - "buffer_size": 477, - "regions": - { - }, - "selection": - [ - [ - 294, - 321 - ] - ], - "settings": - { - "syntax": "Packages/User/CMake Listfile.tmLanguage" - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "type": "text" - }, - { - "buffer": 4, - "file": "test/CMakeLists.txt", - "settings": - { - "buffer_size": 1101, - "regions": - { - }, - "selection": - [ - [ - 390, - 390 - ] - ], - "settings": - { - "syntax": "Packages/User/CMake Listfile.tmLanguage", - "tab_size": 2, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "type": "text" - } - ] - } - ], - "incremental_find": - { - "height": 0.0 - }, - "input": - { - "height": 31.0 - }, - "layout": - { - "cells": - [ - [ - 0, - 0, - 1, - 1 - ] - ], - "cols": - [ - 0.0, - 1.0 - ], - "rows": - [ - 0.0, - 1.0 - ] - }, - "menu_visible": true, - "output.exec": - { - "height": 453.0 - }, - "replace": - { - "height": 64.0 - }, - "save_all_on_build": true, - "select_file": - { - "height": 0.0, - "selected_items": - [ - ], - "width": 0.0 - }, - "select_project": - { - "height": 0.0, - "selected_items": - [ - ], - "width": 0.0 - }, - "show_minimap": true, - "show_open_files": false, - "show_tabs": true, - "side_bar_visible": true, - "side_bar_width": 223.0, - "status_bar_visible": true -} From b365a7838142e3ca9b37aacc44560c7809a1b048 Mon Sep 17 00:00:00 2001 From: Ben Webb Date: Thu, 21 Apr 2022 11:27:11 -0700 Subject: [PATCH 2/5] Squashed 'tools/dev_tools/' changes from 9c0221d4..626e51c1 626e51c1 Use Python 3 by default c4337f5b Pin pytest-flake8 to work around Python2 breakage 6a4403d9 Use Python 3 by default git-subtree-dir: tools/dev_tools git-subtree-split: 626e51c19b29befef53843dc6b012e1e6cba6b54 --- tools/dev_tools/.github/workflows/build.yml | 2 +- tools/dev_tools/check_standards.py | 2 +- tools/dev_tools/cleanup_code.py | 2 +- tools/dev_tools/cleanup_pycs.py | 2 +- tools/dev_tools/git/bootstrap_setup_git.py | 2 +- tools/dev_tools/git/setup_git.py | 2 +- tools/dev_tools/make_all_header.py | 2 +- tools/dev_tools/replace.py | 2 +- tools/dev_tools/setup_cmake.py | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/tools/dev_tools/.github/workflows/build.yml b/tools/dev_tools/.github/workflows/build.yml index 8a286104..d7190075 100644 --- a/tools/dev_tools/.github/workflows/build.yml +++ b/tools/dev_tools/.github/workflows/build.yml @@ -20,7 +20,7 @@ jobs: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | - pip install pytest-flake8 pytest-cov + pip install 'pytest-flake8<1.1' pytest-cov - name: Test run: | py.test --cov=. --cov-branch --cov-report=xml -v --flake8 . diff --git a/tools/dev_tools/check_standards.py b/tools/dev_tools/check_standards.py index 0fb9fb1c..ddda6c0e 100755 --- a/tools/dev_tools/check_standards.py +++ b/tools/dev_tools/check_standards.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 """Print out any violations of IMP-specific standards.""" diff --git a/tools/dev_tools/cleanup_code.py b/tools/dev_tools/cleanup_code.py index dd664d47..57098b8f 100755 --- a/tools/dev_tools/cleanup_code.py +++ b/tools/dev_tools/cleanup_code.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 """Use clang-format and autopep8 when available to clean up the listed source files.""" diff --git a/tools/dev_tools/cleanup_pycs.py b/tools/dev_tools/cleanup_pycs.py index 4948fb9e..705b311c 100755 --- a/tools/dev_tools/cleanup_pycs.py +++ b/tools/dev_tools/cleanup_pycs.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 """Traverses the directory tree deleting any .pyc's who do not have a source .py. Helpful when switching between revisions with source control.""" diff --git a/tools/dev_tools/git/bootstrap_setup_git.py b/tools/dev_tools/git/bootstrap_setup_git.py index 1f1a1fa9..cd553ebc 100755 --- a/tools/dev_tools/git/bootstrap_setup_git.py +++ b/tools/dev_tools/git/bootstrap_setup_git.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 """Update submodules and then call the main setup_git.py. This should be copied to the main directory of your project and named setup_git.py.""" diff --git a/tools/dev_tools/git/setup_git.py b/tools/dev_tools/git/setup_git.py index 0fbbbea0..ec9451b7 100755 --- a/tools/dev_tools/git/setup_git.py +++ b/tools/dev_tools/git/setup_git.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 import sys import os.path diff --git a/tools/dev_tools/make_all_header.py b/tools/dev_tools/make_all_header.py index 288c9e1a..ec9af48a 100755 --- a/tools/dev_tools/make_all_header.py +++ b/tools/dev_tools/make_all_header.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 """Make a header that lists other headers. usage: make_all_header.py header_name.h include_prefix headers diff --git a/tools/dev_tools/replace.py b/tools/dev_tools/replace.py index b16d0173..d8f76dd6 100755 --- a/tools/dev_tools/replace.py +++ b/tools/dev_tools/replace.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 """Replace all instances of argv[1] with argv[2], only updating the file if changes were made. """ diff --git a/tools/dev_tools/setup_cmake.py b/tools/dev_tools/setup_cmake.py index 7b0b2507..2e33bcac 100755 --- a/tools/dev_tools/setup_cmake.py +++ b/tools/dev_tools/setup_cmake.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 """Build Files.cmake listing source files for each src, test, examples, benchmark directory in the subtree.""" From 21ac10919e4c63e8bb8760e186438e335a8f188c Mon Sep 17 00:00:00 2001 From: Ben Webb Date: Thu, 21 Apr 2022 11:27:21 -0700 Subject: [PATCH 3/5] Use Python 3 by default --- setup_git.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup_git.py b/setup_git.py index 70704bc9..d2916745 100755 --- a/setup_git.py +++ b/setup_git.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 """Call the main setup_git.py. This should be copied to the main directory of your project and named setup_git.py.""" From 462d25cde1fa40266b7acb8fae7ec99e01414c77 Mon Sep 17 00:00:00 2001 From: Ben Webb Date: Wed, 26 Oct 2022 18:24:57 -0700 Subject: [PATCH 4/5] Protect against RMFEXPORT being defined already We define RMFEXPORT when building SWIG wrappers, and SWIG 4.1 now reports a fatal error when it is redefined, so be sure to undefine it first. --- config.h.in | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/config.h.in b/config.h.in index dda2d498..69e3e080 100644 --- a/config.h.in +++ b/config.h.in @@ -11,6 +11,11 @@ #ifndef RMF_CONFIG_H #define RMF_CONFIG_H +/* Protect against RMFEXPORT being defined already */ +#ifdef RMFEXPORT +#undef RMFEXPORT +#endif + #ifdef _MSC_VER #ifdef RMF_EXPORTS From 14790679a6102c0db4113d6725eb3b7cb51e78e5 Mon Sep 17 00:00:00 2001 From: Ben Webb Date: Mon, 21 Nov 2022 12:40:02 -0800 Subject: [PATCH 5/5] Prepare for 1.4.1 release --- ChangeLog.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index c9bd1844..5112e7ee 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,6 +1,11 @@ Change Log {#changelog} ========== +# 1.4.1 - 2022-11-21 # {#changelog_1_4_1} +- Build fixes to work with SWIG 4.1. +- Various internal build scripts now use 'python3' rather than + unversioned 'python'. + # 1.4 - 2022-03-10 # {#changelog_1_4} - RMF now requires a C++11 compiler and SWIG 3 (or later) to build. Most recent compilers should support C++11, such as gcc, clang