From e285a779dee2a5dd2fb8abed63a580caf2ffabdb Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Fri, 6 Oct 2023 16:35:37 -0500 Subject: [PATCH 01/26] More release notes --- txt/Release_Notes_9.6.2.txt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/txt/Release_Notes_9.6.2.txt b/txt/Release_Notes_9.6.2.txt index b78807a..144fa9b 100644 --- a/txt/Release_Notes_9.6.2.txt +++ b/txt/Release_Notes_9.6.2.txt @@ -38,9 +38,14 @@ New Features additional filter options for error and top-level. This covers all 14 output types, while still providing convenient checkboxes for common settings. -() Better dark mode styling for the debugger - Previous versions of the debugger were very difficult to read on Mac in dark mode due +() Ergonomic improvements to the debugger + - Previous versions of the debugger were very difficult to read on Mac in dark mode due to displaying black text on a dark background. The text now correctly shows as white. + - Scrolling behavior has been improved and stabilized. When the cursor is at the end of + the main window, newly-printed text triggers a scroll. Otherwise, the window stays put + where the user's cursor is. + - Shortcuts for copy/paste have been changed from ctrl to cmd on Mac + - New shortcuts have been added zooming in and out (increasing/decreasing the text size) () Documentation in generated Python SML bindings Doxygen comments from SML are now added as docstrings to the generated Python bindings @@ -65,7 +70,7 @@ Other Changes () Infrastructure improvements - `load library` demo has been folded into automated tests - - CI now runs Python SML tests + - CI now runs Python and Tcl SML tests - Added support files for developing Soar with VSCode - Python version is now pinned in CI. This release, the compiled Python SML bindings are compatible with Python 3.11.X. The generated Python code is compatible with From f5a30fa537616eabfba981d175ea4581ca75c668 Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Tue, 17 Oct 2023 16:07:24 -0500 Subject: [PATCH 02/26] more release notes --- readme.md | 3 ++- txt/README | 27 +++++++++++---------------- txt/Release_Notes_9.6.2.txt | 9 +++++++++ 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/readme.md b/readme.md index 2e7dcbe..3e34bda 100644 --- a/readme.md +++ b/readme.md @@ -6,6 +6,7 @@ * Update version numbers in Soar everywhere (see `example_version_bump.patch`). TODO: write some awk to do this automatically. * Update version numbers in `txt/README`. * Add a new release notes file under the `txt/` directory +* Add some cursory release notes in `txt/README` * Clone all of SoarGroup's repos into a directory * generate the manual via the makefile under `ManualSource`, or grab the built one from this repository's GH action workflow result. It should be placed in the `pdf/` directory. * Download the Windows, Mac (x86-64) and Linux builds of Soar from the desired GH action workflow result @@ -33,9 +34,9 @@ export SOAR_SHUFFLER_OUTPUT_DIR=./SoarRelease export SOAR_WIN_X86_64_COMPILED_DIR=~/Downloads/Soar_windows-x86-64_out export SOAR_LINUX_X86_64_COMPILED_DIR=~/Downloads/Soar_linux-x86-64_out export SOAR_MAC_X86_64_COMPILED_DIR=~/Downloads/Soar_mac-x86-64_out -echo -e "\e[93mReminder: Check that $SOAR_MAC_X86_64_COMPILED_DIR is checked out at the tag you desire and is freshly recompiled\e[0m" export SOAR_MAC_ARM64_COMPILED_DIR=~/dev/workspaces/release_soar_workspace/Soar/out export SOAR_GROUP_REPOS_HOME=~/dev/workspaces/release_soar_workspace +echo -e "\e[93mReminder: Check that $SOAR_MAC_ARM64_COMPILED_DIR is checked out at the tag you desire and is freshly recompiled\e[0m" ``` * Run SoarShuffle: diff --git a/txt/README b/txt/README index c318032..a65a2c3 100644 --- a/txt/README +++ b/txt/README @@ -1,30 +1,25 @@ ========================= = Soar 9.6.2 README = -= September 2023 = += October 2023 = ========================= -Welcome to Soar! Soar 9.6.2 is the current, stable version of Soar. It is a maintenance release, meaning no major features were added, but it does still represent a lot of work in the form of bug fixes, code modernization, and usability improvements. Note that the included Java tools, such as the Soar Java Debugger, now require at least Java 11 to run. +Welcome to Soar! Soar 9.6.2 is the current, stable version of Soar. It is a maintenance release, meaning no major features were added, but it does still represent a lot of work in the form of bug fixes, code modernization, and usability improvements. -* VisualSoar has been updated with support for all Soar commands and subsytems, improved reliability and usability, and lots of bug fixes. +* VisualSoar contains several new features, including custom support for custom templates and a new "find all productions" search option. There's also now a manual included. -* Several Soar commands have been updated to be more consistent and easier to use. +* The debugger now supports full-featured log filtering, and the display is now compatible with dark mode. We also include new shortcuts for zooming in and out. -* Soar now has better code compatibility with JSoar, supported by several new RHS functions and automatic conversion of unregistered RHS functions into exec calls. +* SoarCLI now exits on EOF, making it possible to control it via pipes (or tools like expect). -* This release includes binaries for M1/M2 Macs for the first time. +* Some Soar warnings and static analyses have been improved to give the user more actionable feedback around malformed rules. -* This release includes C# bindings for all platforms for the first time. - -* GitHub Actions now build and test Soar on all supported platforms, making it easier than ever for you to contribute to Soar. - -The full release notes can be found in its own file. +The full release notes can be found in their own file. ==================== Official Soar Manual ==================== -The 9.6.2 edition of the Soar Manual is included here for your reference. However, the manual is continually updated, and the latest version can be -found at: +The 9.6.2 edition of the Soar Manual is included here for your reference. You can also view it online at: https://soar.eecs.umich.edu/downloads/SoarManual.pdf @@ -38,9 +33,9 @@ Launching - Windows users, run SoarJavaDebugger.bat - Linux and Mac users, run SoarJavaDebugger.sh - To launch Soar using a command line interface, - - Windows users, run Soar_CLI.bat - - Linux and Mac users, run Soar_CLI.sh - - You can also navigate to the /bin directory in a terminal and run the Soar executable directly. However, macOS users will need to run macOS_setup.command first (located in the root of the release directory) to avoid security warnings from the OS. This is done for you if you use one of the other launch scripts. + - Windows users, run SoarCLI.bat + - Linux and Mac users, run SoarCLI.sh + - You can also navigate to the /bin directory in a terminal and run the Soar executable directly. However, users should first run setup.sh or setup.bat to avoid permission and path issues. This is done for you if you use one of the other launch scripts. Launch options for the CLI and the java debugger are listed at the bottom of this document. diff --git a/txt/Release_Notes_9.6.2.txt b/txt/Release_Notes_9.6.2.txt index 144fa9b..d87c8af 100644 --- a/txt/Release_Notes_9.6.2.txt +++ b/txt/Release_Notes_9.6.2.txt @@ -32,6 +32,13 @@ New Features will no longer need to pass the class instance separately as (void*)userData, and can instead simply pass in the result of std::bind. +() Improved production validity tests and warnings + - Soar now properly detects ungrounded (LHS not connected to a state) productions, refuses + to source them, and tells the user how to fix them. + - Some warnings related to bad production structure were previously hidden behind tracing + flags for chunking, and are now exposed by default. + - See https://github.com/SoarGroup/Soar/issues/377 + () More output filtering options in the debugger We rename "hide all" to "show only errors and top-level", then add a true "hide all" filter to complement that. We also separate messages from RHS writes, and add @@ -76,6 +83,8 @@ Other Changes are compatible with Python 3.11.X. The generated Python code is compatible with older versions of Python, but the compiled bindings are not, so users with different version needs will need to compile their own bindings. + - Setup logic is now encapsulated in setup.bat and setup.sh, which is easier and less + error-prone for other tools dependent on Soar to re-use. () Cruft and cleanup - stopped exporting a large number of internal SML classes to SWIG clients From a0a32a4f0f35ae05f1303357bc69fc52acba9df0 Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Thu, 19 Oct 2023 18:29:18 -0400 Subject: [PATCH 03/26] Fix specified Python version --- txt/Release_Notes_9.6.2.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/txt/Release_Notes_9.6.2.txt b/txt/Release_Notes_9.6.2.txt index d87c8af..1708c4e 100644 --- a/txt/Release_Notes_9.6.2.txt +++ b/txt/Release_Notes_9.6.2.txt @@ -80,7 +80,7 @@ Other Changes - CI now runs Python and Tcl SML tests - Added support files for developing Soar with VSCode - Python version is now pinned in CI. This release, the compiled Python SML bindings - are compatible with Python 3.11.X. The generated Python code is compatible with + are compatible with Python 3.12.X. The generated Python code is compatible with older versions of Python, but the compiled bindings are not, so users with different version needs will need to compile their own bindings. - Setup logic is now encapsulated in setup.bat and setup.sh, which is easier and less From 7e6e1ebebb346e66647cd7299f53a805bc0de848 Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Wed, 20 Mar 2024 14:55:21 -0700 Subject: [PATCH 04/26] Bump version in manual --- ManualSource/manual.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ManualSource/manual.tex b/ManualSource/manual.tex index 387fda7..24807c9 100644 --- a/ManualSource/manual.tex +++ b/ManualSource/manual.tex @@ -189,7 +189,7 @@ % soar version information \newcommand{\SoarVersionMajor}{9} \newcommand{\SoarVersionMinor}{6} -\newcommand{\SoarVersionRevision}{1} +\newcommand{\SoarVersionRevision}{2} % to add functions to .glo file: From f755252df8ea3e4f8ba5c557c7645b044b36255b Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Wed, 20 Mar 2024 14:55:36 -0700 Subject: [PATCH 05/26] Improved error handling --- SoarShuffler/soar_shuffler.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/SoarShuffler/soar_shuffler.py b/SoarShuffler/soar_shuffler.py index 98dc918..a45a1b4 100755 --- a/SoarShuffler/soar_shuffler.py +++ b/SoarShuffler/soar_shuffler.py @@ -82,8 +82,6 @@ def __load_release_spec(spec_path): return projects def ignore_list(src, names): - import pdb - pdb.set_trace() return [n for n in names if n.startswith(".svn") or n.startswith(".git")] def copy_project(projectName, projects: Dict[str, ProjectEntry]): @@ -261,8 +259,7 @@ def __generate_multiplatform_projects(projects: Dict[str, ProjectEntry]): def shuffle(spec_path): for path in chain(COMPILED_DIRS.values(), [SOAR_GROUP_REPOS_HOME]): if not Path(path).exists(): - print(f"Error: {path} does not exist") - sys.exit(1) + raise ValueError(f"Error: {path} does not exist") clean_output_dir() all_projects = __load_release_spec(spec_path) From 84f9a6d356da0a944fafa1fdd93c719e768ca8bf Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Wed, 20 Mar 2024 15:39:12 -0700 Subject: [PATCH 06/26] Improved release instructions --- SoarShuffler/.gitignore | 1 + readme.md | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/SoarShuffler/.gitignore b/SoarShuffler/.gitignore index ebc6b5e..068ed63 100644 --- a/SoarShuffler/.gitignore +++ b/SoarShuffler/.gitignore @@ -1,2 +1,3 @@ jars/*.jar SoarRelease.zip +SoarRelease.tar.gz diff --git a/readme.md b/readme.md index 3e34bda..9d4fd45 100644 --- a/readme.md +++ b/readme.md @@ -50,5 +50,7 @@ You'll get the release directories wherever you specified in the `SOAR_SHUFFLER_ * Finally, unzip the release directories in `SoarRelease/SoarSuite` and check that VisualSoar, the debugger, TankSoar, and SoarCLI all work with a simple double-click. * Share the release with others and get feedback. -* Once you're happy with it, delete the directories you unzipped and, then zip up the `SoarRelease/SoarSuite` directory and upload it to the release on GitHub. +* Once you're happy with it, delete the directories you unzipped and, then zip/tarball up the `SoarRelease` directory and upload to the release on GitHub. + - `zip -r SoarRelease.zip SoarRelease` + - `tar -czvf SoarRelease.tar.gz SoarRelease` * Push a releases/$VERSION tag for Soar, and $VERSION tags for other Release-Support and VisualSoar. From cf822044e39fd16f998296c714d70f6ac8d01207 Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Wed, 20 Mar 2024 15:49:26 -0700 Subject: [PATCH 07/26] include VisualSoar manual in release --- SoarShuffler/Soar_Projects_Filelist.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/SoarShuffler/Soar_Projects_Filelist.txt b/SoarShuffler/Soar_Projects_Filelist.txt index 032777a..1e243e2 100755 --- a/SoarShuffler/Soar_Projects_Filelist.txt +++ b/SoarShuffler/Soar_Projects_Filelist.txt @@ -134,6 +134,10 @@ SoarManual type=copy out=Documentation/ $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/SoarManual.pdf=$ROOT +VisualSoarManual + type=copy + out=Documentation/ + $SOAR_GROUP_REPOS_HOME/VisualSoar/doc/usersman/VisualSoar_UsersManual.pdf=$ROOT SoarTutorial type=copy out=Documentation/ @@ -290,6 +294,7 @@ SoarSuite_$VERSION $COMPILE_DIR/tcl=bin/tcl $COMPILE_DIR/settings.soar=bin $SOAR_GROUP_REPOS_HOME/VisualSoar/VisualSoar.jar=bin + $SOAR_GROUP_REPOS_HOME/VisualSoar/doc/usersman/VisualSoar_UsersManual.pdf=$ROOT $SOAR_GROUP_REPOS_HOME/Agents/default=Agents/default $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/SoarCLI.$LAUNCH_EXTENSION=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/setup.$LAUNCH_EXTENSION=$ROOT @@ -385,3 +390,4 @@ SoarTutorial_$VERSION $COMPILE_DIR/Tcl_sml_ClientInterface.exp=bin/$PLATFORM_DIR^ $COMPILE_DIR/Tcl_sml_ClientInterface.lib=bin/$PLATFORM_DIR^ $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/SoarManual.pdf=$ROOT + $SOAR_GROUP_REPOS_HOME/VisualSoar/doc/usersman/VisualSoar_UsersManual.pdf=$ROOT From 8e3193210b3058138367569eb8a1b117dbfe12ba Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Wed, 20 Mar 2024 16:11:08 -0700 Subject: [PATCH 08/26] improve release instructions --- SoarShuffler/.gitignore | 3 +-- readme.md | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/SoarShuffler/.gitignore b/SoarShuffler/.gitignore index 068ed63..22b58e9 100644 --- a/SoarShuffler/.gitignore +++ b/SoarShuffler/.gitignore @@ -1,3 +1,2 @@ jars/*.jar -SoarRelease.zip -SoarRelease.tar.gz +*Release* diff --git a/readme.md b/readme.md index 9d4fd45..abc7a93 100644 --- a/readme.md +++ b/readme.md @@ -30,7 +30,7 @@ VisualSoar and Eaters_TankSoar must be built from their repositories (although I ```bash export SOAR_RELEASE_VERSION=9.6.2 -export SOAR_SHUFFLER_OUTPUT_DIR=./SoarRelease +export SOAR_SHUFFLER_OUTPUT_DIR=./Soar-Release-$SOAR_RELEASE_VERSION export SOAR_WIN_X86_64_COMPILED_DIR=~/Downloads/Soar_windows-x86-64_out export SOAR_LINUX_X86_64_COMPILED_DIR=~/Downloads/Soar_linux-x86-64_out export SOAR_MAC_X86_64_COMPILED_DIR=~/Downloads/Soar_mac-x86-64_out @@ -51,6 +51,6 @@ You'll get the release directories wherever you specified in the `SOAR_SHUFFLER_ * Finally, unzip the release directories in `SoarRelease/SoarSuite` and check that VisualSoar, the debugger, TankSoar, and SoarCLI all work with a simple double-click. * Share the release with others and get feedback. * Once you're happy with it, delete the directories you unzipped and, then zip/tarball up the `SoarRelease` directory and upload to the release on GitHub. - - `zip -r SoarRelease.zip SoarRelease` - - `tar -czvf SoarRelease.tar.gz SoarRelease` + - `zip -r Soar-Release-.zip Soar-Release-` + - `tar -czvf Soar-Release-.tar.gz Soar-Release-` * Push a releases/$VERSION tag for Soar, and $VERSION tags for other Release-Support and VisualSoar. From acc07dbc4f4e6923e713dfc17bb81a52e14dea7a Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Tue, 30 Apr 2024 12:59:34 -0500 Subject: [PATCH 09/26] Begin 9.6.3 change notes; update release process --- readme.md | 4 ++- txt/Release_Notes_9.6.3.md | 67 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 txt/Release_Notes_9.6.3.md diff --git a/readme.md b/readme.md index abc7a93..ab0cbd3 100644 --- a/readme.md +++ b/readme.md @@ -29,7 +29,7 @@ VisualSoar and Eaters_TankSoar must be built from their repositories (although I * Set your environment variables for SoarShuffler. Here's my .env for an example (you can source this automatically using tools like [dotenv](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/dotenv)): ```bash -export SOAR_RELEASE_VERSION=9.6.2 +export SOAR_RELEASE_VERSION=9.6.3 export SOAR_SHUFFLER_OUTPUT_DIR=./Soar-Release-$SOAR_RELEASE_VERSION export SOAR_WIN_X86_64_COMPILED_DIR=~/Downloads/Soar_windows-x86-64_out export SOAR_LINUX_X86_64_COMPILED_DIR=~/Downloads/Soar_linux-x86-64_out @@ -53,4 +53,6 @@ You'll get the release directories wherever you specified in the `SOAR_SHUFFLER_ * Once you're happy with it, delete the directories you unzipped and, then zip/tarball up the `SoarRelease` directory and upload to the release on GitHub. - `zip -r Soar-Release-.zip Soar-Release-` - `tar -czvf Soar-Release-.tar.gz Soar-Release-` +* Upload the Soar and VisualSoar manuals to the release, as well * Push a releases/$VERSION tag for Soar, and $VERSION tags for other Release-Support and VisualSoar. +* Update the Soar website with the new release information: https://github.com/SoarGroup/SoarGroup.github.io diff --git a/txt/Release_Notes_9.6.3.md b/txt/Release_Notes_9.6.3.md new file mode 100644 index 0000000..5dd5936 --- /dev/null +++ b/txt/Release_Notes_9.6.3.md @@ -0,0 +1,67 @@ +# Soar 9.6.3 Release Notes, 2024 + +This release of Soar includes TODO: summary here + +## Breaking Changes + +* New chunking setting, automatically-create-singletons, on by default + * In our work we've found that we usually want all attributes to be singletons by default unless explicitly specified otherwise. This setting attempts creating singletons for every string attribute. We expect this to be a saner default for all users, and think it unlikely to have a negative effect on existing projects. If you have a project that relies on non-singleton attributes, you can disable this setting by setting `chunking automatically-create-singletons off`. + +## New Features + +* TODO header + * TODO line item + * TODO line item + +## Other Changes + +* Bug fixes + * TODO + +* VisualSoar bug fixes (thanks to amnuxoll): + * TODO + +* Infrastructure improvements + * TODO + +* Cruft and cleanup + * TODO + +## General Information + +Soar can be downloaded by following the download link on the Soar home +page at: + + http://soar.eecs.umich.edu/articles/downloads/soar-suite + +Soar releases include source code, demo programs, and a number of +applications that serve as examples of how to interface Soar to an +external environment. There is support for integrating Soar with C++, +Java, Tcl and Python applications. Many tools that aid in development +of Soar programs are also available. The download section of the web site +allows you to browse and download all of the different distributions, +tools and agents. + +### Help and Contact information + +You can find many helpful resources on the Soar home page at: + + https://soar.eecs.umich.edu + +To contact the Soar group, you may join and post to one of our mailing +lists: + +For general Soar-related announcements: + + soar-group@lists.sourceforge.net + +For help: + + soar-help@lists.sourceforge.net + +Also, please do not hesitate to file bugs or feature requests on our issue +tracker at github: + + https://github.com/SoarGroup/Soar/issues + +To avoid redundant entries, please search for duplicate issues first. From 6a9cbdc944528587b3ff47b801988888caf28b9f Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Wed, 1 May 2024 15:48:04 -0500 Subject: [PATCH 10/26] ARM Mac is built in CI now --- readme.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/readme.md b/readme.md index ab0cbd3..f75e716 100644 --- a/readme.md +++ b/readme.md @@ -9,8 +9,7 @@ * Add some cursory release notes in `txt/README` * Clone all of SoarGroup's repos into a directory * generate the manual via the makefile under `ManualSource`, or grab the built one from this repository's GH action workflow result. It should be placed in the `pdf/` directory. -* Download the Windows, Mac (x86-64) and Linux builds of Soar from the desired GH action workflow result -* Build the mac_ARM64 version locally (hope you have an M1 or M2 computer :) GH doesn't offer CI for it yet) +* Download the Windows, macos-12 (x86-64), macos-latest (ARM) and Linux builds of Soar from the desired GH action workflow result. * Fix the classpath in the manifest (https://github.com/SoarGroup/VisualSoar/issues/1) and build VisualSoar * Convert VisualSoar's manual to pdf: - `brew install basictex` From 3d92803885728bf832bb5668ae99af7855c2dd9b Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Mon, 3 Jun 2024 10:15:32 -0500 Subject: [PATCH 11/26] Tell users minimum Java version --- txt/README | 1 + 1 file changed, 1 insertion(+) diff --git a/txt/README b/txt/README index a65a2c3..ff792b1 100644 --- a/txt/README +++ b/txt/README @@ -30,6 +30,7 @@ Launching - Navigate to the folder you extracted to - Launch Soar - To launch Soar within a graphical user interface + - Install Java 11 or later - Windows users, run SoarJavaDebugger.bat - Linux and Mac users, run SoarJavaDebugger.sh - To launch Soar using a command line interface, From 3f5f1ef11eb2bfddf4ef1e43c2de2abc5277c404 Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Wed, 26 Jun 2024 18:45:08 -0500 Subject: [PATCH 12/26] Updates for new SVS feature flags See https://github.com/SoarGroup/Soar/issues/475. --- ManualSource/svs.tex | 2 +- txt/Release_Notes_9.6.3.md | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/ManualSource/svs.tex b/ManualSource/svs.tex index f6fdc87..6a1b7f0 100644 --- a/ManualSource/svs.tex +++ b/ManualSource/svs.tex @@ -83,7 +83,7 @@ \section{The scene graph} Each state in working memory has its own scene graph. When a new state is created, it will receive an independent copy of its parent's scene graph. -This is useful for performing look-ahead search, as it allows the agent to destructively modify the scene graph in a search state using mental imagery operations. +This is useful for performing look-ahead search, as it allows the agent to destructively modify the scene graph in a search state using mental imagery operations. If you wish to turn off the scene graph copying behavior, you can disable it with \soar{svs --disable-in-substates}. You can also re-enable it with \soar{svs --enable-in-substates}. % ---------------------------------------------------------------------------- diff --git a/txt/Release_Notes_9.6.3.md b/txt/Release_Notes_9.6.3.md index 5dd5936..2bb8b28 100644 --- a/txt/Release_Notes_9.6.3.md +++ b/txt/Release_Notes_9.6.3.md @@ -9,16 +9,21 @@ This release of Soar includes TODO: summary here ## New Features -* TODO header - * TODO line item - * TODO line item +* Visual-Soar improvements (thanks to amnuxoll) + * TODO + +* You can pip-install Soar! (thanks to ShadowJonathan) + * `pip install soar-sml[compat]` is a drop-in replacement for manually installing Soar somewhere and adding its path to your PYTHONPATH environment variable. + * Note that this does not come with the debugger or other Java applications. +* New svs commands `--disable-in-substates` and `--enable-in-substates`. By default SVS copies the entire scene graph into each substate. This can be disabled with `--disable-in-substates` to save memory and improve performance. This can be re-enabled with `--enable-in-substates` if you need to access the scene graph in substates. ## Other Changes * Bug fixes - * TODO + * Improved Java Debugger stability when adding/removing multiple agents during an application lifetime + * SVS can no longer be disabled when the current state is a subgoal. Allowing this previously led to undefined behavior. -* VisualSoar bug fixes (thanks to amnuxoll): +* Visual-Soar bug fixes (thanks to amnuxoll): * TODO * Infrastructure improvements From b0f11a505602c2e3d2fbad39b629479fe8ef2b41 Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Thu, 27 Jun 2024 22:45:08 -0500 Subject: [PATCH 13/26] Updates for 9.6.3 * Release notes * New website links * Call for PR's and funding * Bump version in manual --- ManualSource/manual.tex | 2 +- SoarShuffler/Soar_Projects_Filelist.txt | 2 +- txt/Building_Soar.txt | 4 ++- txt/README | 31 ++++++++++++++------- txt/Release_Notes_9.6.3.md | 36 ++++++++++++++++++++----- 5 files changed, 56 insertions(+), 19 deletions(-) diff --git a/ManualSource/manual.tex b/ManualSource/manual.tex index 24807c9..37e6cc8 100644 --- a/ManualSource/manual.tex +++ b/ManualSource/manual.tex @@ -189,7 +189,7 @@ % soar version information \newcommand{\SoarVersionMajor}{9} \newcommand{\SoarVersionMinor}{6} -\newcommand{\SoarVersionRevision}{2} +\newcommand{\SoarVersionRevision}{3} % to add functions to .glo file: diff --git a/SoarShuffler/Soar_Projects_Filelist.txt b/SoarShuffler/Soar_Projects_Filelist.txt index 1e243e2..4f8a700 100755 --- a/SoarShuffler/Soar_Projects_Filelist.txt +++ b/SoarShuffler/Soar_Projects_Filelist.txt @@ -300,7 +300,7 @@ SoarSuite_$VERSION $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/setup.$LAUNCH_EXTENSION=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/SoarJavaDebugger.$LAUNCH_EXTENSION=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/VisualSoar.$LAUNCH_EXTENSION=$ROOT - $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Release_Notes_$VERSION.txt=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Release_Notes_$VERSION.md=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/txt/README=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/txt/license.txt=$ROOT $COMPILE_DIR/libCSharp_sml_ClientInterface.$DLL_EXTENSION=bin/$PLATFORM_DIR diff --git a/txt/Building_Soar.txt b/txt/Building_Soar.txt index 6f0c6ce..a44ba6d 100644 --- a/txt/Building_Soar.txt +++ b/txt/Building_Soar.txt @@ -2,12 +2,14 @@ Building Soar ============= +TODO: Update this file to reflect the new build system. + To get the most up-to-date build instructions and tips, please visit the following pages on the Soar wiki: (1) Windows Build Instructions http://soar.eecs.umich.edu/articles/articles/building-soar-aa/80-building-on-windows - + (2) Linux Build Instructions http://soar.eecs.umich.edu/articles/articles/building-soar-aa/81-building-on-linux diff --git a/txt/README b/txt/README index ff792b1..d7733cf 100644 --- a/txt/README +++ b/txt/README @@ -1,17 +1,18 @@ ========================= -= Soar 9.6.2 README = -= October 2023 = += Soar 9.6.3 README = += June 2024 = ========================= -Welcome to Soar! Soar 9.6.2 is the current, stable version of Soar. It is a maintenance release, meaning no major features were added, but it does still represent a lot of work in the form of bug fixes, code modernization, and usability improvements. +Welcome to Soar! Soar 9.6.3 is the current, stable version of Soar. It is a maintenance release, meaning no major features were added, but it does still represent a lot of work in the form of bug fixes, code modernization, and usability improvements. -* VisualSoar contains several new features, including custom support for custom templates and a new "find all productions" search option. There's also now a manual included. +* VisualSoar has improved support for version control and collaboration, including datamap import, opening projects read-only, and reduced commit noise. -* The debugger now supports full-featured log filtering, and the display is now compatible with dark mode. We also include new shortcuts for zooming in and out. +* The debugger has been made more stable for dynamic environments that add and remove many agents. -* SoarCLI now exits on EOF, making it possible to control it via pipes (or tools like expect). +* Chunking now creates singletons by default. This should be a better default for most projects, but it can +be disabled with `chunking automatically-create-singletons off`. -* Some Soar warnings and static analyses have been improved to give the user more actionable feedback around malformed rules. +* SVS can be disabled/enabled for just substates. The full release notes can be found in their own file. @@ -19,9 +20,9 @@ The full release notes can be found in their own file. Official Soar Manual ==================== -The 9.6.2 edition of the Soar Manual is included here for your reference. You can also view it online at: +The 9.6.3 edition of the Soar Manual is included here for your reference. You can also view it online at: -https://soar.eecs.umich.edu/downloads/SoarManual.pdf +https://soar.eecs.umich.edu/soar_manual/ ========= Launching @@ -191,3 +192,15 @@ Announcements and high-level questions and discussions related to Soar can be fo - First join the mailing list at https://groups.google.com/g/soar-cognitive-architecture - Then send your questions to soar-cognitive-architecture@googlegroups.com + +If you discover issues with Soar or would like to request a new feature or documentation, +please do not hesitate to file bugs or feature requests on our issue tracker at github: + + https://github.com/SoarGroup/Soar/issues + +To avoid redundant entries, please search for duplicate issues first. + +Pull requests and patches to improve Soar, its documentation or tools are very welcome. + +If you would like to fund further development of Soar, please reach out to John Laird: +[laird@umich.edu](laird@umich.edu). diff --git a/txt/Release_Notes_9.6.3.md b/txt/Release_Notes_9.6.3.md index 2bb8b28..d4f2a85 100644 --- a/txt/Release_Notes_9.6.3.md +++ b/txt/Release_Notes_9.6.3.md @@ -1,6 +1,6 @@ # Soar 9.6.3 Release Notes, 2024 -This release of Soar includes TODO: summary here +This release of Soar includes lots of VisualSoar goodies. ## Breaking Changes @@ -10,34 +10,51 @@ This release of Soar includes TODO: summary here ## New Features * Visual-Soar improvements (thanks to amnuxoll) - * TODO + * A datamap can import the datamap of another project + * Projects can be opened read-only + * Less change noise, i.e. more friendly towards version control + * Automatically opens the last project on startup; new "Open Recent" menu option + * Parser now supports LTI predicates + * Lots more smaller improvements * You can pip-install Soar! (thanks to ShadowJonathan) * `pip install soar-sml[compat]` is a drop-in replacement for manually installing Soar somewhere and adding its path to your PYTHONPATH environment variable. * Note that this does not come with the debugger or other Java applications. * New svs commands `--disable-in-substates` and `--enable-in-substates`. By default SVS copies the entire scene graph into each substate. This can be disabled with `--disable-in-substates` to save memory and improve performance. This can be re-enabled with `--enable-in-substates` if you need to access the scene graph in substates. +* Python bindings are now compatible with all Python versions 3.2 and up, rather than only with the minor version that was used to build Soar. This is thanks to the work of ShadowJonathan. + +## New Website + +Thanks to Moritz Schmidt, we have a new website! The URL remains the same: https://soar.eecs.umich.edu. New features include: + +* HTML versions of the manual and the tutorial +* Snappy full-text search based on lunr.js +* Much improved editing/deployment workflow based on GitHub pages. We also get the full power of GitHub actions, and use it to automatically check for dead links, for example. + +Note that some pages and download links still need to be ported. The manual and tutorial still need to be fully inspected for correctness, and the images in particular still need work. ## Other Changes * Bug fixes * Improved Java Debugger stability when adding/removing multiple agents during an application lifetime * SVS can no longer be disabled when the current state is a subgoal. Allowing this previously led to undefined behavior. + * Fixed `Agent.GetLastCommandLineResult()` returning true when the last command actually failed + * Lots of Visual-Soar bug fixes (thanks to amnuxoll) around parsing, file saving, data preservation, and more -* Visual-Soar bug fixes (thanks to amnuxoll): - * TODO +* Java debugger can now be built for ARM Linux (though this is not distributed at this time) * Infrastructure improvements - * TODO + * ARM Mac now built in CI * Cruft and cleanup - * TODO + * lots of compiler warning fixes, and compiler strictness increased ## General Information Soar can be downloaded by following the download link on the Soar home page at: - http://soar.eecs.umich.edu/articles/downloads/soar-suite + https://soar.eecs.umich.edu/ Soar releases include source code, demo programs, and a number of applications that serve as examples of how to interface Soar to an @@ -70,3 +87,8 @@ tracker at github: https://github.com/SoarGroup/Soar/issues To avoid redundant entries, please search for duplicate issues first. + +Pull requests and patches to improve Soar, its documentation or tools are very welcome. + +If you would like to fund further development of Soar, please reach out to John Laird: +[laird@umich.edu](laird@umich.edu). From 1efe310b9cb1cc23f13d7c724de76239a07af0de Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Fri, 28 Jun 2024 01:16:34 -0500 Subject: [PATCH 14/26] Support multiplatform-copy This was a bit complex because when we only supported multiplatform-zip we didn't have to worry about adding the same file multiple times, since it would be ignored by zip. Now we have to do some extra bookkeeping to ensure that each file gets added exactly once. Also factor out the special variable strings into constants to make their re-use less error-prone. --- SoarShuffler/README.txt | 2 +- SoarShuffler/soar_shuffler.py | 115 ++++++++++++++++++++++------------ 2 files changed, 75 insertions(+), 42 deletions(-) diff --git a/SoarShuffler/README.txt b/SoarShuffler/README.txt index 5b3212e..dceea43 100644 --- a/SoarShuffler/README.txt +++ b/SoarShuffler/README.txt @@ -76,7 +76,7 @@ This file specifies how projects are zipped up and files are moved around. Curr - Type - 'zip': zip up the files described in the project - 'copy' : copy files from one directory to another as descirbed in the project - - 'multiplatform-zip': zip up the files described in the project but copy different version of platform-specific items like libraries and launch scripts. Project descriptions of this type contain variables telling it which files need special version and where it can find them. + - 'multiplatform-zip/copy': same as zip/copy, but copy different version of platform-specific items like libraries and launch scripts. Project descriptions of this type contain variables telling it which files need special versions and where it can find them. - For example, "type=multiplatform-zip" will create five zips for a particular project description - Out - This parameter specified where in the output direct it places the final zip or copied files. diff --git a/SoarShuffler/soar_shuffler.py b/SoarShuffler/soar_shuffler.py index a45a1b4..8e2dfca 100755 --- a/SoarShuffler/soar_shuffler.py +++ b/SoarShuffler/soar_shuffler.py @@ -11,6 +11,7 @@ from itertools import chain import os from pathlib import Path +import re import shutil import sys from typing import Dict, List @@ -19,6 +20,16 @@ VERSION = os.environ.get("SOAR_RELEASE_VERSION") ROOT_VAR = "$ROOT" +COMPILE_DIR_VAR = "$COMPILE_DIR" +LAUNCH_EXTENSION_VAR = ".$LAUNCH_EXTENSION" +EXECUTABLE_VAR = ".$EXECUTABLE" +DLL_EXTENSION_VAR = ".$DLL_EXTENSION" +PLATFORM_DIR_VAR = "$PLATFORM_DIR" + +PLATFORM_SPECIFIC_VARS = [COMPILE_DIR_VAR, LAUNCH_EXTENSION_VAR, EXECUTABLE_VAR, DLL_EXTENSION_VAR, PLATFORM_DIR_VAR] + +# any of above strings appearing in a string would indicate that it's platform-specific +PLATFORM_SPECIFIC_RE = re.compile("|".join(map(lambda v: re.escape(v), PLATFORM_SPECIFIC_VARS))) # Path to directory containing clones of all the SoarGroup repositories SOAR_GROUP_REPOS_HOME = os.environ["SOAR_GROUP_REPOS_HOME"] @@ -175,68 +186,89 @@ def zip_project(projectName, projects: Dict[str, ProjectEntry]): zinfo.internal_attr = 0 zinfo.create_system = 3 -def multiplatformize_project(projectName, projects: Dict[str, ProjectEntry]): +def _specialize_for_windows(a: str, b:str): + a = a.replace(LAUNCH_EXTENSION_VAR, ".bat") + a = a.replace(EXECUTABLE_VAR, ".exe") + a = a.replace(COMPILE_DIR_VAR, COMPILED_DIRS[WINDOWS_PLATFORM_ID]) + b = b.replace("^", "") + b = b.replace(PLATFORM_DIR_VAR, WINDOWS_PLATFORM_ID) + if (DLL_EXTENSION_VAR in a): + if ("_Python_sml_ClientInterface" in a): + a = a.replace(DLL_EXTENSION_VAR, ".pyd") + else: + a = a.replace(DLL_EXTENSION_VAR, ".dll") + d,f = os.path.split(a) + if f.startswith('lib'): + a = os.path.join(d,f[3:]) + return a, b + +def multiplatformize_project(projectName:str, project: ProjectEntry): + # remove leading "multiplatform-" + project_type = project.type[project.type.find("-")+1:] + print (f"Creating multi-platform project {projectName}") - new_entry = ProjectEntry(type='zip', out=projects[projectName].out) + new_entry = ProjectEntry(type=project_type, out=project.out) + + platform_specific_copy_list = [] + for a,b in project.copyList: + if PLATFORM_SPECIFIC_RE.search(b): + platform_specific_copy_list.append((a,b)) + elif PLATFORM_SPECIFIC_RE.search(a): + a, b = _specialize_for_windows(a, b) + new_entry.copyList.append((a,b)) + else: + new_entry.copyList.append((a,b)) + + print(f" - Found {len(platform_specific_copy_list)} platform-specific files: " + "\n".join(map(lambda pair: f"{pair[0]}->{pair[1]}", platform_specific_copy_list))) + print(f" - Not platform-specific files: " + "\n".join(map(lambda pair: f"{pair[0]}->{pair[1]}", new_entry.copyList))) + print (" - Specializing files for Windows...") - for a,b in projects[projectName].copyList: - a = a.replace(".$LAUNCH_EXTENSION", ".bat") - a = a.replace(".$EXECUTABLE", ".exe") - a = a.replace("$COMPILE_DIR", COMPILED_DIRS[WINDOWS_PLATFORM_ID]) - b = b.replace("^", "") - b = b.replace("$PLATFORM_DIR", WINDOWS_PLATFORM_ID) - if (".$DLL_EXTENSION" in a): - if ("_Python_sml_ClientInterface" in a): - a = a.replace(".$DLL_EXTENSION", ".pyd") - else: - a = a.replace(".$DLL_EXTENSION", ".dll") - d,f = os.path.split(a) - if f.startswith('lib'): - a = os.path.join(d,f[3:]) + for a,b in platform_specific_copy_list: + a, b = _specialize_for_windows(a, b) new_entry.copyList.append((a,b)) print (f" - Adding zip operation: {a} --> {b}") print (" - Specializing files for Linux...") - for a,b in projects[projectName].copyList: + for a,b in platform_specific_copy_list: if (b.find("^") == -1): - a = a.replace(".$DLL_EXTENSION", ".so") - a = a.replace(".$EXECUTABLE", "") - a = a.replace(".$LAUNCH_EXTENSION", ".sh") - a = a.replace("$COMPILE_DIR", COMPILED_DIRS[LINUX_PLATFORM_ID]) - b = b.replace("$PLATFORM_DIR", LINUX_PLATFORM_ID) + a = a.replace(DLL_EXTENSION_VAR, ".so") + a = a.replace(EXECUTABLE_VAR, "") + a = a.replace(LAUNCH_EXTENSION_VAR, ".sh") + a = a.replace(COMPILE_DIR_VAR, COMPILED_DIRS[LINUX_PLATFORM_ID]) + b = b.replace(PLATFORM_DIR_VAR, LINUX_PLATFORM_ID) new_entry.copyList.append((a,b)) print(f" - Adding zip operation: {a} --> {b}") print (" - Specializing files for macOS x86-64...") - for a,b in projects[projectName].copyList: + for a,b in platform_specific_copy_list: if (b.find("^") == -1): - a = a.replace("$COMPILE_DIR", COMPILED_DIRS[MAC_x86_64_PLATFORM_ID]) - a = a.replace(".$LAUNCH_EXTENSION", ".sh") - a = a.replace(".$EXECUTABLE", "") + a = a.replace(COMPILE_DIR_VAR, COMPILED_DIRS[MAC_x86_64_PLATFORM_ID]) + a = a.replace(LAUNCH_EXTENSION_VAR, ".sh") + a = a.replace(EXECUTABLE_VAR, "") if ("libJava_sml_ClientInterface" in a): - a = a.replace(".$DLL_EXTENSION", ".jnilib") + a = a.replace(DLL_EXTENSION_VAR, ".jnilib") elif ("_Python_sml_ClientInterface" in a): - a = a.replace(".$DLL_EXTENSION", ".so") + a = a.replace(DLL_EXTENSION_VAR, ".so") else: - a = a.replace(".$DLL_EXTENSION", ".dylib") - b = b.replace("$PLATFORM_DIR", MAC_x86_64_PLATFORM_ID) + a = a.replace(DLL_EXTENSION_VAR, ".dylib") + b = b.replace(PLATFORM_DIR_VAR, MAC_x86_64_PLATFORM_ID) new_entry.copyList.append((a,b)) print(f" - Adding zip operation: {a} --> {b}") print (" - Specializing files for macOS ARM64...") - for a,b in projects[projectName].copyList: + for a,b in platform_specific_copy_list: if (b.find("^") == -1): - a = a.replace("$COMPILE_DIR", COMPILED_DIRS[MAC_ARM64_PLATFORM_ID]) - a = a.replace(".$LAUNCH_EXTENSION", ".sh") - a = a.replace(".$EXECUTABLE", "") + a = a.replace(COMPILE_DIR_VAR, COMPILED_DIRS[MAC_ARM64_PLATFORM_ID]) + a = a.replace(LAUNCH_EXTENSION_VAR, ".sh") + a = a.replace(EXECUTABLE_VAR, "") if ("libJava_sml_ClientInterface" in a): - a = a.replace(".$DLL_EXTENSION", ".jnilib") + a = a.replace(DLL_EXTENSION_VAR, ".jnilib") elif ("_Python_sml_ClientInterface" in a): - a = a.replace(".$DLL_EXTENSION", ".so") + a = a.replace(DLL_EXTENSION_VAR, ".so") else: - a = a.replace(".$DLL_EXTENSION", ".dylib") - b = b.replace("$PLATFORM_DIR", MAC_ARM64_PLATFORM_ID) + a = a.replace(DLL_EXTENSION_VAR, ".dylib") + b = b.replace(PLATFORM_DIR_VAR, MAC_ARM64_PLATFORM_ID) new_entry.copyList.append((a,b)) print(f" - Adding zip operation: {a} --> {b}") @@ -249,9 +281,10 @@ def print_attr(fileName): def __generate_multiplatform_projects(projects: Dict[str, ProjectEntry]): new_projects: Dict[str, ProjectEntry] = {} - for name in projects: - if projects[name].type == "multiplatform-zip": - new_projects[name + "-Multiplatform"] = multiplatformize_project(name, projects) + for name, project in projects.items(): + project_type = projects[name].type + if project_type.startswith("multiplatform-"): + new_projects[name + "-Multiplatform"] = multiplatformize_project(name, project) return new_projects From a818d6efd4aa53139478f485d7d31b31f7ca8686 Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Fri, 28 Jun 2024 01:18:31 -0500 Subject: [PATCH 15/26] adjust release file list * Remove duplicate file * Add build instructions --- SoarShuffler/Soar_Projects_Filelist.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SoarShuffler/Soar_Projects_Filelist.txt b/SoarShuffler/Soar_Projects_Filelist.txt index 4f8a700..a2f29e9 100755 --- a/SoarShuffler/Soar_Projects_Filelist.txt +++ b/SoarShuffler/Soar_Projects_Filelist.txt @@ -300,8 +300,9 @@ SoarSuite_$VERSION $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/setup.$LAUNCH_EXTENSION=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/SoarJavaDebugger.$LAUNCH_EXTENSION=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/VisualSoar.$LAUNCH_EXTENSION=$ROOT - $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Release_Notes_$VERSION.md=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Building_Soar.md=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/txt/README=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Release_Notes_$VERSION.md=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/txt/license.txt=$ROOT $COMPILE_DIR/libCSharp_sml_ClientInterface.$DLL_EXTENSION=bin/$PLATFORM_DIR $COMPILE_DIR/sml_csharp.dll=bin/$PLATFORM_DIR @@ -390,4 +391,3 @@ SoarTutorial_$VERSION $COMPILE_DIR/Tcl_sml_ClientInterface.exp=bin/$PLATFORM_DIR^ $COMPILE_DIR/Tcl_sml_ClientInterface.lib=bin/$PLATFORM_DIR^ $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/SoarManual.pdf=$ROOT - $SOAR_GROUP_REPOS_HOME/VisualSoar/doc/usersman/VisualSoar_UsersManual.pdf=$ROOT From 2611154a3e2e9cfa4ed3196e8635f9d96cc5ea60 Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Fri, 28 Jun 2024 01:19:21 -0500 Subject: [PATCH 16/26] update build instructions Since we don't keep prose instructions for humans anymore, just point to the CI definitions, which we will not let get out of date. --- txt/Building_Soar.md | 10 ++++++++++ txt/Building_Soar.txt | 24 ------------------------ 2 files changed, 10 insertions(+), 24 deletions(-) create mode 100644 txt/Building_Soar.md delete mode 100644 txt/Building_Soar.txt diff --git a/txt/Building_Soar.md b/txt/Building_Soar.md new file mode 100644 index 0000000..ec718e3 --- /dev/null +++ b/txt/Building_Soar.md @@ -0,0 +1,10 @@ +============= +Building Soar +============= + +If you would like to build Soar from source, you will first need to download the source code +from [GitHub](https://github.com/SoarGroup/Soar). Then, look at the setup and build steps run +by our CI system in the `.github/workflows/build.yml` file. We build for all major platforms. + +The final Soar distribution that you have downloaded here is built using tools in a separate +repository called [Release-Support](https://github.com/SoarGroup/Release-Support). diff --git a/txt/Building_Soar.txt b/txt/Building_Soar.txt deleted file mode 100644 index a44ba6d..0000000 --- a/txt/Building_Soar.txt +++ /dev/null @@ -1,24 +0,0 @@ -============= -Building Soar -============= - -TODO: Update this file to reflect the new build system. - -To get the most up-to-date build instructions and tips, please visit the -following pages on the Soar wiki: - -(1) Windows Build Instructions - http://soar.eecs.umich.edu/articles/articles/building-soar-aa/80-building-on-windows - -(2) Linux Build Instructions - http://soar.eecs.umich.edu/articles/articles/building-soar-aa/81-building-on-linux - -(3) Mac OSX Build Instructions - http://soar.eecs.umich.edu/articles/articles/building-soar-aa/84-building-on-mac-os-x - -(4) SCons Script Documentation - http://soar.eecs.umich.edu/articles/articles/building-soar-aa/85-scons-build-script-documentation - -(5) How Library Search Paths Work - http://soar.eecs.umich.edu/articles/articles/building-soar-aa/86-how-library-search-paths-work - From 985a0b424b7d3e949644c89e89bde4864cd362e1 Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Fri, 28 Jun 2024 01:20:36 -0500 Subject: [PATCH 17/26] VSCode launch config for Soar Shuffler --- .vscode/launch.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .vscode/launch.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..31b2b89 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,16 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Debug Soar Shuffler", + "type": "debugpy", + "request": "launch", + "program": "SoarShuffler/soar_shuffler.py", + "console": "integratedTerminal", + "args": "SoarShuffler/Soar_Projects_Filelist.txt" + } + ] +} From ad62619ddf4ad60ddad24bb5fabd42e333924d30 Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Fri, 28 Jun 2024 01:49:07 -0500 Subject: [PATCH 18/26] Start new release file list Combine SoarSuite and SoarTutorial. Since we are just distributing our one giant zip/tarball right now, it doesn't make sense to have separate zips inside of that. --- SoarShuffler/Soar_Projects_Filelist.txt | 154 ++++---- SoarShuffler/old-Soar_Projects_Filelist.txt | 396 ++++++++++++++++++++ 2 files changed, 464 insertions(+), 86 deletions(-) create mode 100755 SoarShuffler/old-Soar_Projects_Filelist.txt diff --git a/SoarShuffler/Soar_Projects_Filelist.txt b/SoarShuffler/Soar_Projects_Filelist.txt index a2f29e9..64b97c9 100755 --- a/SoarShuffler/Soar_Projects_Filelist.txt +++ b/SoarShuffler/Soar_Projects_Filelist.txt @@ -1,3 +1,4 @@ + Algebra_Agent type=zip out=Agents/ @@ -265,62 +266,50 @@ PDDL type=zip out=Domains/ $SOAR_GROUP_REPOS_HOME/Domains-Planning-Domain-Definition-Language=PDDL/ + SoarSuite_$VERSION - type=multiplatform-zip - out=SoarSuite/ + type=multiplatform-copy + out=SoarSuite-$VERSION/ + $COMPILE_DIR/libSoar.$DLL_EXTENSION=bin/$PLATFORM_DIR + $COMPILE_DIR/Soar.lib=bin/$PLATFORM_DIR^ + $COMPILE_DIR/UnitTests.$EXECUTABLE=bin/$PLATFORM_DIR + $COMPILE_DIR/soar.$EXECUTABLE=bin/$PLATFORM_DIR + $COMPILE_DIR/libJava_sml_ClientInterface.$DLL_EXTENSION=bin/$PLATFORM_DIR + $COMPILE_DIR/Python_sml_ClientInterface.py=bin/$PLATFORM_DIR $COMPILE_DIR/_Python_sml_ClientInterface.$DLL_EXTENSION=bin/$PLATFORM_DIR + $COMPILE_DIR/libTcl_sml_ClientInterface.$DLL_EXTENSION=bin/$PLATFORM_DIR + $COMPILE_DIR/Tcl_sml_ClientInterface.exp=bin/$PLATFORM_DIR^ + $COMPILE_DIR/Tcl_sml_ClientInterface.lib=bin/$PLATFORM_DIR^ $COMPILE_DIR/libtclsoarlib.$DLL_EXTENSION=bin/$PLATFORM_DIR $COMPILE_DIR/pkgIndex.tcl=bin/$PLATFORM_DIR - $COMPILE_DIR/java/swt.jar=bin/$PLATFORM_DIR - $COMPILE_DIR/soar.$EXECUTABLE=bin/$PLATFORM_DIR - $COMPILE_DIR/UnitTests.$EXECUTABLE=bin/$PLATFORM_DIR -# can't compile at the moment -# $COMPILE_DIR/svs_viewer.$EXECUTABLE=bin/$PLATFORM_DIR - $COMPILE_DIR/SoarJavaDebugger.jar=bin - $COMPILE_DIR/java/jcommon-1.0.10.jar=bin/java - $COMPILE_DIR/java/jfreechart-1.0.6-swt.jar=bin/java - $COMPILE_DIR/java/jfreechart-1.0.6.jar=bin/java - $COMPILE_DIR/java/sml.jar=bin/java - $COMPILE_DIR/java/soar-debugger-api.jar=bin/java - $COMPILE_DIR/java/soar-debugger.jar=bin/java - $COMPILE_DIR/java/soar-smljava.jar=bin/java - $COMPILE_DIR/java/swtgraphics2d.jar=bin/java - $COMPILE_DIR/SoarUnitTests=bin/SoarUnitTests - $COMPILE_DIR/include=include - $COMPILE_DIR/tcl=bin/tcl - $COMPILE_DIR/settings.soar=bin - $SOAR_GROUP_REPOS_HOME/VisualSoar/VisualSoar.jar=bin - $SOAR_GROUP_REPOS_HOME/VisualSoar/doc/usersman/VisualSoar_UsersManual.pdf=$ROOT - $SOAR_GROUP_REPOS_HOME/Agents/default=Agents/default - $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/SoarCLI.$LAUNCH_EXTENSION=$ROOT - $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/setup.$LAUNCH_EXTENSION=$ROOT - $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/SoarJavaDebugger.$LAUNCH_EXTENSION=$ROOT - $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/VisualSoar.$LAUNCH_EXTENSION=$ROOT + + $COMPILE_DIR/libCSharp_sml_ClientInterface.$DLL_EXTENSION=bin/$PLATFORM_DIR + $COMPILE_DIR/sml_csharp.dll=bin/$PLATFORM_DIR + + $COMPILE_DIR/include=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Building_Soar.md=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/txt/README=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Release_Notes_$VERSION.md=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/txt/license.txt=$ROOT - $COMPILE_DIR/libCSharp_sml_ClientInterface.$DLL_EXTENSION=bin/$PLATFORM_DIR - $COMPILE_DIR/sml_csharp.dll=bin/$PLATFORM_DIR - $COMPILE_DIR/Soar.lib=bin/$PLATFORM_DIR^ - $COMPILE_DIR/Tcl_sml_ClientInterface.exp=bin/$PLATFORM_DIR^ - $COMPILE_DIR/Tcl_sml_ClientInterface.lib=bin/$PLATFORM_DIR^ + $SOAR_GROUP_REPOS_HOME/VisualSoar/doc/usersman/VisualSoar_UsersManual.pdf=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/SoarManual.pdf=$ROOT -SoarTutorial_$VERSION - type=multiplatform-zip - out=SoarSuite/ - $COMPILE_DIR/libSoar.$DLL_EXTENSION=bin/$PLATFORM_DIR - $COMPILE_DIR/libJava_sml_ClientInterface.$DLL_EXTENSION=bin/$PLATFORM_DIR - $COMPILE_DIR/libTcl_sml_ClientInterface.$DLL_EXTENSION=bin/$PLATFORM_DIR - $COMPILE_DIR/libtclsoarlib.$DLL_EXTENSION=bin/$PLATFORM_DIR - $COMPILE_DIR/pkgIndex.tcl=bin/$PLATFORM_DIR - $COMPILE_DIR/java/swt.jar=bin/$PLATFORM_DIR - $COMPILE_DIR/soar.$EXECUTABLE=bin/$PLATFORM_DIR + +# can't compile at the moment +# $COMPILE_DIR/svs_viewer.$EXECUTABLE=bin/$PLATFORM_DIR + $COMPILE_DIR/SoarJavaDebugger.jar=bin + $COMPILE_DIR/SoarUnitTests=bin + $COMPILE_DIR/tcl=bin + $COMPILE_DIR/settings.soar=bin + $SOAR_GROUP_REPOS_HOME/Release-Support/SoarShuffler/jars/Eaters_TankSoar.jar=bin + $SOAR_GROUP_REPOS_HOME/VisualSoar/VisualSoar.jar=bin + + $COMPILE_DIR/java/swt.jar=bin/$PLATFORM_DIR $COMPILE_DIR/java/jcommon-1.0.10.jar=bin/java $COMPILE_DIR/java/jfreechart-1.0.6-swt.jar=bin/java $COMPILE_DIR/java/jfreechart-1.0.6.jar=bin/java @@ -329,23 +318,17 @@ SoarTutorial_$VERSION $COMPILE_DIR/java/soar-debugger.jar=bin/java $COMPILE_DIR/java/soar-smljava.jar=bin/java $COMPILE_DIR/java/swtgraphics2d.jar=bin/java - $SOAR_GROUP_REPOS_HOME/Release-Support/SoarShuffler/jars/Eaters_TankSoar.jar=bin $SOAR_GROUP_REPOS_HOME/Release-Support/SoarShuffler/jars/commons-logging-1.1.1.jar=bin/java $SOAR_GROUP_REPOS_HOME/Release-Support/SoarShuffler/jars/log4j-1.2.15.jar=bin/java $SOAR_GROUP_REPOS_HOME/Release-Support/SoarShuffler/jars/stopwatch-0.4-with-deps.jar=bin/java - $SOAR_GROUP_REPOS_HOME/VisualSoar/VisualSoar.jar=bin - $SOAR_GROUP_REPOS_HOME/VisualSoar/doc/usersman/VisualSoar_UsersManual.pdf=$ROOT - $COMPILE_DIR/settings.soar=bin + $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/SoarCLI.$LAUNCH_EXTENSION=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/setup.$LAUNCH_EXTENSION=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/SoarJavaDebugger.$LAUNCH_EXTENSION=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/VisualSoar.$LAUNCH_EXTENSION=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/Eaters.$LAUNCH_EXTENSION=$ROOT - $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/setup.$LAUNCH_EXTENSION=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/TankSoar.$LAUNCH_EXTENSION=$ROOT - $COMPILE_DIR/tcl=bin/tcl - $SOAR_GROUP_REPOS_HOME/Release-Support/txt/README=$ROOT - $SOAR_GROUP_REPOS_HOME/Release-Support/txt/license.txt=$ROOT - $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Agents_readme.md=Agents/ + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 1 - Simple Agents.pdf=Tutorial $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 2 - Interacting with an Environment.pdf=Tutorial $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 3 - Subgoals.pdf=Tutorial @@ -354,40 +337,39 @@ SoarTutorial_$VERSION $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 6 - Reinforcement Learning.pdf=Tutorial $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 7 - SMem.pdf=Tutorial $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 8 - EpMem.pdf=Tutorial - $SOAR_GROUP_REPOS_HOME/Agents/arithmetic=Agents/arithmetic - $SOAR_GROUP_REPOS_HOME/Agents/BW-RL=Agents/BW-RL - $SOAR_GROUP_REPOS_HOME/Agents/BW-Hierarchical-LA=Agents/BW-Hierarchical-LA - $SOAR_GROUP_REPOS_HOME/Agents/BW-Hierarchical=Agents/BW-Hierarchical - $SOAR_GROUP_REPOS_HOME/Agents/BW-LA-state-eval=Agents/BW-LA-state-eval - $SOAR_GROUP_REPOS_HOME/Agents/BW-LA=Agents/BW-LA - $SOAR_GROUP_REPOS_HOME/Agents/BW-Op-Subgoal-RL=Agents/BW-Op-Subgoal-RL - $SOAR_GROUP_REPOS_HOME/Agents/BW-Op-Subgoal=Agents/BW-Op-Subgoal - $SOAR_GROUP_REPOS_HOME/Agents/BW-Simple=Agents/BW-Simple - $SOAR_GROUP_REPOS_HOME/Agents/BW-SoarManual=Agents/BW-SoarManual - $SOAR_GROUP_REPOS_HOME/Agents/default=Agents/default - $SOAR_GROUP_REPOS_HOME/Agents/eight-puzzle=Agents/eight-puzzle - $SOAR_GROUP_REPOS_HOME/Agents/epmem-tutorial=Agents/epmem-tutorial - $SOAR_GROUP_REPOS_HOME/Agents/fifteen-puzzle=Agents/fifteen-puzzle - $SOAR_GROUP_REPOS_HOME/Agents/hello-world-operator=Agents/hello-world-operator - $SOAR_GROUP_REPOS_HOME/Agents/hello-world-rule=Agents/hello-world-rule - $SOAR_GROUP_REPOS_HOME/Agents/left-right=Agents/left-right - $SOAR_GROUP_REPOS_HOME/Agents/mac-planning=Agents/mac-planning - $SOAR_GROUP_REPOS_HOME/Agents/mac=Agents/mac - $SOAR_GROUP_REPOS_HOME/Agents/smem-tutorial=Agents/smem-tutorial - $SOAR_GROUP_REPOS_HOME/Agents/towers-of-hanoi-recursive=Agents/towers-of-hanoi-recursive - $SOAR_GROUP_REPOS_HOME/Agents/towers-of-hanoi-simple=Agents/towers-of-hanoi-simple - $SOAR_GROUP_REPOS_HOME/Agents/water-jug-hierarchy=Agents/water-jug-hierarchy - $SOAR_GROUP_REPOS_HOME/Agents/water-jug-look-ahead=Agents/water-jug-look-ahead - $SOAR_GROUP_REPOS_HOME/Agents/water-jug-rl=Agents/water-jug-rl - $SOAR_GROUP_REPOS_HOME/Agents/water-jug-simple=Agents/water-jug-simple - $SOAR_GROUP_REPOS_HOME/Agents/water-jug-tie=Agents/water-jug-tie - $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/agents/eaters=Agents/Eaters - $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/agents/tanksoar=Agents/TankSoar + + $SOAR_GROUP_REPOS_HOME/Agents/default=Agents + $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Agents_readme.md=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/arithmetic=Agents + $SOAR_GROUP_REPOS_HOME/Agents/BW-RL=Agents + $SOAR_GROUP_REPOS_HOME/Agents/BW-Hierarchical-LA=Agents + $SOAR_GROUP_REPOS_HOME/Agents/BW-Hierarchical=Agents + $SOAR_GROUP_REPOS_HOME/Agents/BW-LA-state-eval=Agents + $SOAR_GROUP_REPOS_HOME/Agents/BW-LA=Agents + $SOAR_GROUP_REPOS_HOME/Agents/BW-Op-Subgoal-RL=Agents + $SOAR_GROUP_REPOS_HOME/Agents/BW-Op-Subgoal=Agents + $SOAR_GROUP_REPOS_HOME/Agents/BW-Simple=Agents + $SOAR_GROUP_REPOS_HOME/Agents/BW-SoarManual=Agents + $SOAR_GROUP_REPOS_HOME/Agents/eight-puzzle=Agents + $SOAR_GROUP_REPOS_HOME/Agents/epmem-tutorial=Agents + $SOAR_GROUP_REPOS_HOME/Agents/fifteen-puzzle=Agents + $SOAR_GROUP_REPOS_HOME/Agents/hello-world-operator=Agents + $SOAR_GROUP_REPOS_HOME/Agents/hello-world-rule=Agents + $SOAR_GROUP_REPOS_HOME/Agents/left-right=Agents + $SOAR_GROUP_REPOS_HOME/Agents/mac-planning=Agents + $SOAR_GROUP_REPOS_HOME/Agents/mac=Agents + $SOAR_GROUP_REPOS_HOME/Agents/smem-tutorial=Agents + $SOAR_GROUP_REPOS_HOME/Agents/towers-of-hanoi-recursive=Agents + $SOAR_GROUP_REPOS_HOME/Agents/towers-of-hanoi-simple=Agents + $SOAR_GROUP_REPOS_HOME/Agents/water-jug-hierarchy=Agents + $SOAR_GROUP_REPOS_HOME/Agents/water-jug-look-ahead=Agents + $SOAR_GROUP_REPOS_HOME/Agents/water-jug-rl=Agents + $SOAR_GROUP_REPOS_HOME/Agents/water-jug-simple=Agents + $SOAR_GROUP_REPOS_HOME/Agents/water-jug-tie=Agents + $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/agents/eaters=Agents + $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/agents/tanksoar=Agents + $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/config/eaters.cnf=bin/games $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/config/tanksoar.cnf=bin/games - $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/config/maps/eaters=bin/games/maps/eaters - $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/config/maps/tanksoar=bin/games/maps/tanksoar - $COMPILE_DIR/Soar.lib=bin/$PLATFORM_DIR^ - $COMPILE_DIR/Tcl_sml_ClientInterface.exp=bin/$PLATFORM_DIR^ - $COMPILE_DIR/Tcl_sml_ClientInterface.lib=bin/$PLATFORM_DIR^ - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/SoarManual.pdf=$ROOT + $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/config/maps/eaters=bin/games/maps + $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/config/maps/tanksoar=bin/games/maps diff --git a/SoarShuffler/old-Soar_Projects_Filelist.txt b/SoarShuffler/old-Soar_Projects_Filelist.txt new file mode 100755 index 0000000..1ed3c09 --- /dev/null +++ b/SoarShuffler/old-Soar_Projects_Filelist.txt @@ -0,0 +1,396 @@ +# The previous way we packaged a release (keeping in case we decide not to reformat the release) +# Many files are copied multiple times, particularly because SoarSuite and SoarTutorial have so much +# overlap. +Algebra_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/algebra=$ROOT +Arithmetic_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/arithmetic=$ROOT +Arithmetic-SMem_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/arithmetic-smem=$ROOT +BlocksWorld_Hierarchical_Lookahead_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/BW-Hierarchical-LA=$ROOT +BlocksWorld_Hierarchical_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/BW-Hierarchical=$ROOT +BlocksWorld_Lookahead_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/BW-LA=$ROOT +BlocksWorld_Hierarchical_State_Evaluation_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/BW-LA-state-eval=$ROOT +BlocksWorld_Subgoaling_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/BW-Op-Subgoal=$ROOT +BlocksWorld_Subgoaling_RL_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/BW-Op-Subgoal-RL=$ROOT +BlocksWorld_RL_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/BW-RL=$ROOT +BlocksWorld_Simple_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/BW-simple=$ROOT +Episodic_Memory_Counting_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/count-epmem=$ROOT +Counting_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/count-test-files=$ROOT +Eight_Puzzle_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/eight-puzzle=$ROOT +Episodic_Memory_Tutorial_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/epmem-tutorial=$ROOT +Fifteen_Puzzle_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/fifteen-puzzle=$ROOT +Graph_Search_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/graph-search=$ROOT +Graph_Search_SMem_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/graph-search-smem=$ROOT +Hello_World_Operator_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/hello-world-operator=$ROOT +Hello_World_Rule_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/hello-world-rule=$ROOT +KB_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/kb=$ROOT +Left_Right_RL_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/left-right=$ROOT +Missionaries_And_Cannibals_Simple_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/mac=$ROOT +Missionaries_And_Cannibals_Planning_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/mac-planning=$ROOT +Reinforcement_Learning_Unit_Test_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/rl-unit=$ROOT +Semantic_Memory_Tutorial_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/smem-tutorial=$ROOT +Tower_Of_Hanoi_Recursive_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/towers-of-hanoi-recursive=$ROOT +Tower_Of_Hanoi_Simple_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/towers-of-hanoi-simple=$ROOT +Water_Jug_Hierarchical_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/water-jug-hierarchy=$ROOT +Water_Jug_Look_Ahead_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/water-jug-look-ahead=$ROOT +Water_Jug_Reinforcement_Learning_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/water-jug-rl=$ROOT +Water_Jug_Simple_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/water-jug-simple=$ROOT +Water_Jug_Tie_Agent + type=zip + out=Agents/ + $SOAR_GROUP_REPOS_HOME/Agents/water-jug-tie=$ROOT +SoarManual + type=copy + out=Documentation/ + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/SoarManual.pdf=$ROOT +VisualSoarManual + type=copy + out=Documentation/ + $SOAR_GROUP_REPOS_HOME/VisualSoar/doc/usersman/VisualSoar_UsersManual.pdf=$ROOT +SoarTutorial + type=copy + out=Documentation/ + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 1 - Simple Agents.pdf=SoarTutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 2 - Interacting with an Environment.pdf=SoarTutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 3 - Subgoals.pdf=SoarTutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 4 - Simple Problem-Solving.pdf=SoarTutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 5 - Planning and Learning.pdf=SoarTutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 6 - Reinforcement Learning.pdf=SoarTutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 7 - SMem.pdf=SoarTutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 8 - EpMem.pdf=SoarTutorial +Episodic_Memory_Sizer + type=zip + out=AgentDevelopmentTools/ + $SOAR_GROUP_REPOS_HOME/Other-Agent-Development-Tools/epmem-size=$ROOT +QuickLink + type=zip + out=AgentDevelopmentTools/ + $SOAR_GROUP_REPOS_HOME/Other-Agent-Development-Tools/QuickLink=$ROOT +State2Dot + type=zip + out=AgentDevelopmentTools/ + $SOAR_GROUP_REPOS_HOME/Other-Agent-Development-Tools/State2Dot=$ROOT +UltraEdit_Soar_Formatting_Wordfile + type=zip + out=AgentDevelopmentTools/ + $SOAR_GROUP_REPOS_HOME/Other-Agent-Development-Tools/UltraEdit_Wordfile=$ROOT +VisualSoar_Source + type=zip + out=AgentDevelopmentTools/ + $SOAR_GROUP_REPOS_HOME/VisualSoar=$ROOT +Vim_Soar_Formatting_Plugin + type=zip + out=AgentDevelopmentTools/ + $SOAR_GROUP_REPOS_HOME/Other-Agent-Development-Tools/vimplugin=$ROOT +SoarQnA + type=zip + out=Domains/ + $SOAR_GROUP_REPOS_HOME/Domains-SoarQnA=$ROOT +SoarTextIO + type=zip + out=Domains/ + $SOAR_GROUP_REPOS_HOME/Domains-SoarTextIO=$ROOT +WordNet + type=zip + out=Domains/ + $SOAR_GROUP_REPOS_HOME/Domains-WordNet=$ROOT +WordNet_With_Parse_Trees + type=zip + out=Domains/ + $SOAR_GROUP_REPOS_HOME/Domains-WordNet-with-Parse-Trees=$ROOT +CSharp_Interface_Example + type=zip + out=Examples-and-Unsupported/ + $SOAR_GROUP_REPOS_HOME/Examples-and-Unsupported/CSharp=$ROOT +Python_Interface_Example + type=zip + out=Examples-and-Unsupported/ + $SOAR_GROUP_REPOS_HOME/Examples-and-Unsupported/Soar_Exp=$ROOT +Soar_Scratch_Pad_Example + type=zip + out=Examples-and-Unsupported/ + $SOAR_GROUP_REPOS_HOME/Examples-and-Unsupported/SoarScratchPad=$ROOT +Tower_Of_Hanoi_SML_Example + type=zip + out=Examples-and-Unsupported/ + $SOAR_GROUP_REPOS_HOME/Examples-and-Unsupported/TOHSML=$ROOT +Soar_Filter_C_Example + type=zip + out=Examples-and-Unsupported/ + $SOAR_GROUP_REPOS_HOME/Examples-and-Unsupported/FilterC=$ROOT +Soar_Filter_Tcl_Example + type=zip + out=Examples-and-Unsupported/ + $SOAR_GROUP_REPOS_HOME/Examples-and-Unsupported/FilterTcl=$ROOT +Java_Missionaries_and_Cannibals_Example + type=zip + out=Examples-and-Unsupported/ + $SOAR_GROUP_REPOS_HOME/Examples-and-Unsupported/JavaMissionaries=$ROOT +Java_Tower_of_Hanoi_Example + type=zip + out=Examples-and-Unsupported/ + $SOAR_GROUP_REPOS_HOME/Examples-and-Unsupported/JavaTOH=$ROOT +LoggerJava_Example + type=zip + out=Examples-and-Unsupported/ + $SOAR_GROUP_REPOS_HOME/Examples-and-Unsupported/LoggerJava=$ROOT +LoggerWinC_Example + type=zip + out=Examples-and-Unsupported/ + $SOAR_GROUP_REPOS_HOME/Examples-and-Unsupported/LoggerWinC=$ROOT +RL_Command_Line_Interface_Example + type=zip + out=Examples-and-Unsupported/ + $SOAR_GROUP_REPOS_HOME/Examples-and-Unsupported/RlCli=$ROOT +Soar_Obfuscator + type=zip + out=Examples-and-Unsupported/ + $SOAR_GROUP_REPOS_HOME/Examples-and-Unsupported/SoarObfuscator=$ROOT +Working_Memory_Activation_Tracker_Example + type=zip + out=Examples-and-Unsupported/ + $SOAR_GROUP_REPOS_HOME/Examples-and-Unsupported/WMActivationTracker=$ROOT +RoomsWorld_$VERSION + type=zip + out=Examples-and-Unsupported/ + $SOAR_GROUP_REPOS_HOME/Domains-RoomsWorld=RoomsWorld +InfiniteMario-$VERSION + type=zip + out=Domains/ + $SOAR_GROUP_REPOS_HOME/Domains-InfiniteMario=InfiniteMario/ +DiceQnA + type=zip + out=Domains/ + $SOAR_GROUP_REPOS_HOME/Domains-DiceQnA=DiceQnA/ +Dice + type=zip + out=Domains/ + $SOAR_GROUP_REPOS_HOME/Domains-Dice=Dice/ +GGP + type=zip + out=Domains/ + $SOAR_GROUP_REPOS_HOME/Domains-General-Game-Playing=GGP/ +PDDL + type=zip + out=Domains/ + $SOAR_GROUP_REPOS_HOME/Domains-Planning-Domain-Definition-Language=PDDL/ +SoarSuite_$VERSION + type=multiplatform-zip + out=SoarSuite/ + $COMPILE_DIR/libSoar.$DLL_EXTENSION=bin/$PLATFORM_DIR + $COMPILE_DIR/libJava_sml_ClientInterface.$DLL_EXTENSION=bin/$PLATFORM_DIR + $COMPILE_DIR/Python_sml_ClientInterface.py=bin/$PLATFORM_DIR + $COMPILE_DIR/_Python_sml_ClientInterface.$DLL_EXTENSION=bin/$PLATFORM_DIR + $COMPILE_DIR/libTcl_sml_ClientInterface.$DLL_EXTENSION=bin/$PLATFORM_DIR + $COMPILE_DIR/libtclsoarlib.$DLL_EXTENSION=bin/$PLATFORM_DIR + $COMPILE_DIR/pkgIndex.tcl=bin/$PLATFORM_DIR + $COMPILE_DIR/java/swt.jar=bin/$PLATFORM_DIR + $COMPILE_DIR/soar.$EXECUTABLE=bin/$PLATFORM_DIR + $COMPILE_DIR/UnitTests.$EXECUTABLE=bin/$PLATFORM_DIR +# can't compile at the moment +# $COMPILE_DIR/svs_viewer.$EXECUTABLE=bin/$PLATFORM_DIR + $COMPILE_DIR/SoarJavaDebugger.jar=bin + $COMPILE_DIR/java/jcommon-1.0.10.jar=bin/java + $COMPILE_DIR/java/jfreechart-1.0.6-swt.jar=bin/java + $COMPILE_DIR/java/jfreechart-1.0.6.jar=bin/java + $COMPILE_DIR/java/sml.jar=bin/java + $COMPILE_DIR/java/soar-debugger-api.jar=bin/java + $COMPILE_DIR/java/soar-debugger.jar=bin/java + $COMPILE_DIR/java/soar-smljava.jar=bin/java + $COMPILE_DIR/java/swtgraphics2d.jar=bin/java + $COMPILE_DIR/SoarUnitTests=bin/SoarUnitTests + $COMPILE_DIR/include=include + $COMPILE_DIR/tcl=bin/tcl + $COMPILE_DIR/settings.soar=bin + $SOAR_GROUP_REPOS_HOME/VisualSoar/VisualSoar.jar=bin + $SOAR_GROUP_REPOS_HOME/VisualSoar/doc/usersman/VisualSoar_UsersManual.pdf=$ROOT + $SOAR_GROUP_REPOS_HOME/Agents/default=Agents/default + $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/SoarCLI.$LAUNCH_EXTENSION=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/setup.$LAUNCH_EXTENSION=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/SoarJavaDebugger.$LAUNCH_EXTENSION=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/VisualSoar.$LAUNCH_EXTENSION=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Building_Soar.md=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/txt/README=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Release_Notes_$VERSION.md=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/txt/license.txt=$ROOT + $COMPILE_DIR/libCSharp_sml_ClientInterface.$DLL_EXTENSION=bin/$PLATFORM_DIR + $COMPILE_DIR/sml_csharp.dll=bin/$PLATFORM_DIR + $COMPILE_DIR/Soar.lib=bin/$PLATFORM_DIR^ + $COMPILE_DIR/Tcl_sml_ClientInterface.exp=bin/$PLATFORM_DIR^ + $COMPILE_DIR/Tcl_sml_ClientInterface.lib=bin/$PLATFORM_DIR^ + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/SoarManual.pdf=$ROOT +SoarTutorial_$VERSION + type=multiplatform-zip + out=SoarSuite/ + $COMPILE_DIR/libSoar.$DLL_EXTENSION=bin/$PLATFORM_DIR + $COMPILE_DIR/libJava_sml_ClientInterface.$DLL_EXTENSION=bin/$PLATFORM_DIR + $COMPILE_DIR/libTcl_sml_ClientInterface.$DLL_EXTENSION=bin/$PLATFORM_DIR + $COMPILE_DIR/libtclsoarlib.$DLL_EXTENSION=bin/$PLATFORM_DIR + $COMPILE_DIR/pkgIndex.tcl=bin/$PLATFORM_DIR + $COMPILE_DIR/java/swt.jar=bin/$PLATFORM_DIR + $COMPILE_DIR/soar.$EXECUTABLE=bin/$PLATFORM_DIR + $COMPILE_DIR/SoarJavaDebugger.jar=bin + $COMPILE_DIR/java/jcommon-1.0.10.jar=bin/java + $COMPILE_DIR/java/jfreechart-1.0.6-swt.jar=bin/java + $COMPILE_DIR/java/jfreechart-1.0.6.jar=bin/java + $COMPILE_DIR/java/sml.jar=bin/java + $COMPILE_DIR/java/soar-debugger-api.jar=bin/java + $COMPILE_DIR/java/soar-debugger.jar=bin/java + $COMPILE_DIR/java/soar-smljava.jar=bin/java + $COMPILE_DIR/java/swtgraphics2d.jar=bin/java + $SOAR_GROUP_REPOS_HOME/Release-Support/SoarShuffler/jars/Eaters_TankSoar.jar=bin + $SOAR_GROUP_REPOS_HOME/Release-Support/SoarShuffler/jars/commons-logging-1.1.1.jar=bin/java + $SOAR_GROUP_REPOS_HOME/Release-Support/SoarShuffler/jars/log4j-1.2.15.jar=bin/java + $SOAR_GROUP_REPOS_HOME/Release-Support/SoarShuffler/jars/stopwatch-0.4-with-deps.jar=bin/java + $SOAR_GROUP_REPOS_HOME/VisualSoar/VisualSoar.jar=bin + $SOAR_GROUP_REPOS_HOME/VisualSoar/doc/usersman/VisualSoar_UsersManual.pdf=$ROOT + $COMPILE_DIR/settings.soar=bin + $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/SoarCLI.$LAUNCH_EXTENSION=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/SoarJavaDebugger.$LAUNCH_EXTENSION=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/VisualSoar.$LAUNCH_EXTENSION=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/Eaters.$LAUNCH_EXTENSION=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/setup.$LAUNCH_EXTENSION=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/TankSoar.$LAUNCH_EXTENSION=$ROOT + $COMPILE_DIR/tcl=bin/tcl + $SOAR_GROUP_REPOS_HOME/Release-Support/txt/README=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/txt/license.txt=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Agents_readme.md=Agents/ + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 1 - Simple Agents.pdf=Tutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 2 - Interacting with an Environment.pdf=Tutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 3 - Subgoals.pdf=Tutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 4 - Simple Problem-Solving.pdf=Tutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 5 - Planning and Learning.pdf=Tutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 6 - Reinforcement Learning.pdf=Tutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 7 - SMem.pdf=Tutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 8 - EpMem.pdf=Tutorial + $SOAR_GROUP_REPOS_HOME/Agents/arithmetic=Agents/arithmetic + $SOAR_GROUP_REPOS_HOME/Agents/BW-RL=Agents/BW-RL + $SOAR_GROUP_REPOS_HOME/Agents/BW-Hierarchical-LA=Agents/BW-Hierarchical-LA + $SOAR_GROUP_REPOS_HOME/Agents/BW-Hierarchical=Agents/BW-Hierarchical + $SOAR_GROUP_REPOS_HOME/Agents/BW-LA-state-eval=Agents/BW-LA-state-eval + $SOAR_GROUP_REPOS_HOME/Agents/BW-LA=Agents/BW-LA + $SOAR_GROUP_REPOS_HOME/Agents/BW-Op-Subgoal-RL=Agents/BW-Op-Subgoal-RL + $SOAR_GROUP_REPOS_HOME/Agents/BW-Op-Subgoal=Agents/BW-Op-Subgoal + $SOAR_GROUP_REPOS_HOME/Agents/BW-Simple=Agents/BW-Simple + $SOAR_GROUP_REPOS_HOME/Agents/BW-SoarManual=Agents/BW-SoarManual + $SOAR_GROUP_REPOS_HOME/Agents/default=Agents/default + $SOAR_GROUP_REPOS_HOME/Agents/eight-puzzle=Agents/eight-puzzle + $SOAR_GROUP_REPOS_HOME/Agents/epmem-tutorial=Agents/epmem-tutorial + $SOAR_GROUP_REPOS_HOME/Agents/fifteen-puzzle=Agents/fifteen-puzzle + $SOAR_GROUP_REPOS_HOME/Agents/hello-world-operator=Agents/hello-world-operator + $SOAR_GROUP_REPOS_HOME/Agents/hello-world-rule=Agents/hello-world-rule + $SOAR_GROUP_REPOS_HOME/Agents/left-right=Agents/left-right + $SOAR_GROUP_REPOS_HOME/Agents/mac-planning=Agents/mac-planning + $SOAR_GROUP_REPOS_HOME/Agents/mac=Agents/mac + $SOAR_GROUP_REPOS_HOME/Agents/smem-tutorial=Agents/smem-tutorial + $SOAR_GROUP_REPOS_HOME/Agents/towers-of-hanoi-recursive=Agents/towers-of-hanoi-recursive + $SOAR_GROUP_REPOS_HOME/Agents/towers-of-hanoi-simple=Agents/towers-of-hanoi-simple + $SOAR_GROUP_REPOS_HOME/Agents/water-jug-hierarchy=Agents/water-jug-hierarchy + $SOAR_GROUP_REPOS_HOME/Agents/water-jug-look-ahead=Agents/water-jug-look-ahead + $SOAR_GROUP_REPOS_HOME/Agents/water-jug-rl=Agents/water-jug-rl + $SOAR_GROUP_REPOS_HOME/Agents/water-jug-simple=Agents/water-jug-simple + $SOAR_GROUP_REPOS_HOME/Agents/water-jug-tie=Agents/water-jug-tie + $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/agents/eaters=Agents/Eaters + $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/agents/tanksoar=Agents/TankSoar + $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/config/eaters.cnf=bin/games + $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/config/tanksoar.cnf=bin/games + $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/config/maps/eaters=bin/games/maps/eaters + $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/config/maps/tanksoar=bin/games/maps/tanksoar + $COMPILE_DIR/Soar.lib=bin/$PLATFORM_DIR^ + $COMPILE_DIR/Tcl_sml_ClientInterface.exp=bin/$PLATFORM_DIR^ + $COMPILE_DIR/Tcl_sml_ClientInterface.lib=bin/$PLATFORM_DIR^ + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/SoarManual.pdf=$ROOT From 7dc782824a3b45f6b669d9dbcea01400fcc0ef81 Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Fri, 28 Jun 2024 02:06:54 -0500 Subject: [PATCH 19/26] remove redundant files from release --- SoarShuffler/Soar_Projects_Filelist.txt | 11 ------- SoarShuffler/soar_shuffler.py | 40 ++++++++++++++----------- 2 files changed, 22 insertions(+), 29 deletions(-) diff --git a/SoarShuffler/Soar_Projects_Filelist.txt b/SoarShuffler/Soar_Projects_Filelist.txt index 64b97c9..aab28f9 100755 --- a/SoarShuffler/Soar_Projects_Filelist.txt +++ b/SoarShuffler/Soar_Projects_Filelist.txt @@ -296,8 +296,6 @@ SoarSuite_$VERSION $SOAR_GROUP_REPOS_HOME/Release-Support/txt/README=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Release_Notes_$VERSION.md=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/txt/license.txt=$ROOT - $SOAR_GROUP_REPOS_HOME/VisualSoar/doc/usersman/VisualSoar_UsersManual.pdf=$ROOT - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/SoarManual.pdf=$ROOT # can't compile at the moment # $COMPILE_DIR/svs_viewer.$EXECUTABLE=bin/$PLATFORM_DIR @@ -329,15 +327,6 @@ SoarSuite_$VERSION $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/Eaters.$LAUNCH_EXTENSION=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/TankSoar.$LAUNCH_EXTENSION=$ROOT - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 1 - Simple Agents.pdf=Tutorial - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 2 - Interacting with an Environment.pdf=Tutorial - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 3 - Subgoals.pdf=Tutorial - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 4 - Simple Problem-Solving.pdf=Tutorial - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 5 - Planning and Learning.pdf=Tutorial - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 6 - Reinforcement Learning.pdf=Tutorial - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 7 - SMem.pdf=Tutorial - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 8 - EpMem.pdf=Tutorial - $SOAR_GROUP_REPOS_HOME/Agents/default=Agents $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Agents_readme.md=Agents/ $SOAR_GROUP_REPOS_HOME/Agents/arithmetic=Agents diff --git a/SoarShuffler/soar_shuffler.py b/SoarShuffler/soar_shuffler.py index 8e2dfca..881bb00 100755 --- a/SoarShuffler/soar_shuffler.py +++ b/SoarShuffler/soar_shuffler.py @@ -109,12 +109,16 @@ def copy_project(projectName, projects: Dict[str, ProjectEntry]): else: destination = destination_path / b print(f" - Checking if destination {destination} exists") - if (not destination.exists()): + if (not destination.exists() and not source.is_dir()): print (f"Creating directory {destination}") destination.mkdir(parents=True) if (source.is_dir()): - print (f" - Performing dir copy: {source} --> {destination}") - shutil.copytree(source, destination / os.path.basename(source), ignore=ignore_list) + actual_dest = destination / os.path.basename(source) + if actual_dest.exists(): + print (f" - Skipping directory copy: {source} --> {actual_dest} (already exists)") + continue + print (f" - Performing dir copy: {source} --> {actual_dest}") + shutil.copytree(source, actual_dest, ignore=ignore_list) else: print (f" - Performing file copy: {source} --> {destination}") shutil.copy2(source, destination) @@ -209,28 +213,28 @@ def multiplatformize_project(projectName:str, project: ProjectEntry): print (f"Creating multi-platform project {projectName}") new_entry = ProjectEntry(type=project_type, out=project.out) - platform_specific_copy_list = [] - for a,b in project.copyList: - if PLATFORM_SPECIFIC_RE.search(b): - platform_specific_copy_list.append((a,b)) - elif PLATFORM_SPECIFIC_RE.search(a): - a, b = _specialize_for_windows(a, b) - new_entry.copyList.append((a,b)) - else: - new_entry.copyList.append((a,b)) + # platform_specific_copy_list = [] + # for a,b in project.copyList: + # if PLATFORM_SPECIFIC_RE.search(b): + # platform_specific_copy_list.append((a,b)) + # elif PLATFORM_SPECIFIC_RE.search(a): + # a, b = _specialize_for_windows(a, b) + # new_entry.copyList.append((a,b)) + # else: + # new_entry.copyList.append((a,b)) - print(f" - Found {len(platform_specific_copy_list)} platform-specific files: " + "\n".join(map(lambda pair: f"{pair[0]}->{pair[1]}", platform_specific_copy_list))) - print(f" - Not platform-specific files: " + "\n".join(map(lambda pair: f"{pair[0]}->{pair[1]}", new_entry.copyList))) + # print(f" - Found {len(platform_specific_copy_list)} platform-specific files: " + "\n".join(map(lambda pair: f"{pair[0]}->{pair[1]}", platform_specific_copy_list))) + # print(f" - Not platform-specific files: " + "\n".join(map(lambda pair: f"{pair[0]}->{pair[1]}", new_entry.copyList))) print (" - Specializing files for Windows...") - for a,b in platform_specific_copy_list: + for a,b in project.copyList: a, b = _specialize_for_windows(a, b) new_entry.copyList.append((a,b)) print (f" - Adding zip operation: {a} --> {b}") print (" - Specializing files for Linux...") - for a,b in platform_specific_copy_list: + for a,b in project.copyList: if (b.find("^") == -1): a = a.replace(DLL_EXTENSION_VAR, ".so") a = a.replace(EXECUTABLE_VAR, "") @@ -241,7 +245,7 @@ def multiplatformize_project(projectName:str, project: ProjectEntry): print(f" - Adding zip operation: {a} --> {b}") print (" - Specializing files for macOS x86-64...") - for a,b in platform_specific_copy_list: + for a,b in project.copyList: if (b.find("^") == -1): a = a.replace(COMPILE_DIR_VAR, COMPILED_DIRS[MAC_x86_64_PLATFORM_ID]) a = a.replace(LAUNCH_EXTENSION_VAR, ".sh") @@ -257,7 +261,7 @@ def multiplatformize_project(projectName:str, project: ProjectEntry): print(f" - Adding zip operation: {a} --> {b}") print (" - Specializing files for macOS ARM64...") - for a,b in platform_specific_copy_list: + for a,b in project.copyList: if (b.find("^") == -1): a = a.replace(COMPILE_DIR_VAR, COMPILED_DIRS[MAC_ARM64_PLATFORM_ID]) a = a.replace(LAUNCH_EXTENSION_VAR, ".sh") From c650a2681e3f9e17a396c2d8e72f068c4a4b6bf5 Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Fri, 28 Jun 2024 14:04:53 -0500 Subject: [PATCH 20/26] Organize documentation Add tutorials and manuals to a single documentation folder in SoarSuite. --- SoarShuffler/Soar_Projects_Filelist.txt | 43 +++++++++++++------------ 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/SoarShuffler/Soar_Projects_Filelist.txt b/SoarShuffler/Soar_Projects_Filelist.txt index aab28f9..08c8080 100755 --- a/SoarShuffler/Soar_Projects_Filelist.txt +++ b/SoarShuffler/Soar_Projects_Filelist.txt @@ -1,4 +1,15 @@ - +Documentation + type=copy + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/SoarManual.pdf=Documentation + $SOAR_GROUP_REPOS_HOME/VisualSoar/doc/usersman/VisualSoar_UsersManual.pdf=Documentation + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 1 - Simple Agents.pdf=Documentation + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 2 - Interacting with an Environment.pdf=Documentation + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 3 - Subgoals.pdf=Documentation + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 4 - Simple Problem-Solving.pdf=Documentation + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 5 - Planning and Learning.pdf=Documentation + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 6 - Reinforcement Learning.pdf=Documentation + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 7 - SMem.pdf=Documentation + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 8 - EpMem.pdf=Documentation Algebra_Agent type=zip out=Agents/ @@ -131,25 +142,6 @@ Water_Jug_Tie_Agent type=zip out=Agents/ $SOAR_GROUP_REPOS_HOME/Agents/water-jug-tie=$ROOT -SoarManual - type=copy - out=Documentation/ - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/SoarManual.pdf=$ROOT -VisualSoarManual - type=copy - out=Documentation/ - $SOAR_GROUP_REPOS_HOME/VisualSoar/doc/usersman/VisualSoar_UsersManual.pdf=$ROOT -SoarTutorial - type=copy - out=Documentation/ - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 1 - Simple Agents.pdf=SoarTutorial - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 2 - Interacting with an Environment.pdf=SoarTutorial - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 3 - Subgoals.pdf=SoarTutorial - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 4 - Simple Problem-Solving.pdf=SoarTutorial - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 5 - Planning and Learning.pdf=SoarTutorial - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 6 - Reinforcement Learning.pdf=SoarTutorial - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 7 - SMem.pdf=SoarTutorial - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 8 - EpMem.pdf=SoarTutorial Episodic_Memory_Sizer type=zip out=AgentDevelopmentTools/ @@ -297,6 +289,17 @@ SoarSuite_$VERSION $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Release_Notes_$VERSION.md=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/txt/license.txt=$ROOT + $SOAR_GROUP_REPOS_HOME/VisualSoar/doc/usersman/VisualSoar_UsersManual.pdf=documentation + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/SoarManual.pdf=documentation + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 1 - Simple Agents.pdf=documentation/SoarTutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 2 - Interacting with an Environment.pdf=documentation/SoarTutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 3 - Subgoals.pdf=documentation/SoarTutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 4 - Simple Problem-Solving.pdf=documentation/SoarTutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 5 - Planning and Learning.pdf=documentation/SoarTutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 6 - Reinforcement Learning.pdf=documentation/SoarTutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 7 - SMem.pdf=documentation/SoarTutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 8 - EpMem.pdf=documentation/SoarTutorial + # can't compile at the moment # $COMPILE_DIR/svs_viewer.$EXECUTABLE=bin/$PLATFORM_DIR From 02e2b0d0c5020a11930d3bb6cc40438f993f7767 Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Fri, 28 Jun 2024 16:57:23 -0500 Subject: [PATCH 21/26] Linux users may need to update for this release I received these errors when running on Ubuntu 22.04: libstdc++.so.6: version not found. 'GLIBCXX_3.4.32' not found Updating to Ubuntu 24.04 fixed the issue, so other users will likely run into the same problem. --- txt/README | 2 ++ txt/Release_Notes_9.6.3.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/txt/README b/txt/README index d7733cf..c07e11a 100644 --- a/txt/README +++ b/txt/README @@ -14,6 +14,8 @@ be disabled with `chunking automatically-create-singletons off`. * SVS can be disabled/enabled for just substates. +* Linux users: Soar was compiled on the recent Ubuntu 24.04, so you may need to update your system or libstdc++ to run the included binaries (or else build from source yourself). + The full release notes can be found in their own file. ==================== diff --git a/txt/Release_Notes_9.6.3.md b/txt/Release_Notes_9.6.3.md index d4f2a85..65843da 100644 --- a/txt/Release_Notes_9.6.3.md +++ b/txt/Release_Notes_9.6.3.md @@ -7,6 +7,8 @@ This release of Soar includes lots of VisualSoar goodies. * New chunking setting, automatically-create-singletons, on by default * In our work we've found that we usually want all attributes to be singletons by default unless explicitly specified otherwise. This setting attempts creating singletons for every string attribute. We expect this to be a saner default for all users, and think it unlikely to have a negative effect on existing projects. If you have a project that relies on non-singleton attributes, you can disable this setting by setting `chunking automatically-create-singletons off`. +* Linux users: Soar was compiled on the recent Ubuntu 24.04, so you may need to update your system or libstdc++ to run the included binaries (or else build from source yourself). + ## New Features * Visual-Soar improvements (thanks to amnuxoll) From 422f5e97e76c34c8bd583d44bd01785836402416 Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Fri, 28 Jun 2024 16:59:55 -0500 Subject: [PATCH 22/26] Output SoarSuite as a zip Because zip/copy projects work slightly differently, we needed to put back the the names of the destination directories and stop automatically appending the source base name to the destination. I found this all a little confusing to do right, so I added some TODO's for it. --- SoarShuffler/README.txt | 12 +- SoarShuffler/Soar_Projects_Filelist.txt | 214 ++++++++++++------------ SoarShuffler/soar_shuffler.py | 35 ++-- 3 files changed, 128 insertions(+), 133 deletions(-) diff --git a/SoarShuffler/README.txt b/SoarShuffler/README.txt index dceea43..1a20fd1 100644 --- a/SoarShuffler/README.txt +++ b/SoarShuffler/README.txt @@ -72,13 +72,13 @@ This file specifies how projects are zipped up and files are moved around. Curr - The first line of each project contains only the project name and delimits one project from another. Any line that does NOT contain an equal sign "=" is considered a new project name. - Other lines can either specify a parameter describing that project or how to move or organize files within the project - - Parameters: There are two parameters you can set for a project: type and out - - Type + - Parameters: There are three parameters you can set for a project: type, out and copyContents + - type - 'zip': zip up the files described in the project - 'copy' : copy files from one directory to another as descirbed in the project - 'multiplatform-zip/copy': same as zip/copy, but copy different version of platform-specific items like libraries and launch scripts. Project descriptions of this type contain variables telling it which files need special versions and where it can find them. - For example, "type=multiplatform-zip" will create five zips for a particular project description - - Out + - out - This parameter specified where in the output direct it places the final zip or copied files. - For example, "out=SoarSuite\" will move the final results into Output Directory\SoarSuite - File organization desciptors: @@ -104,3 +104,9 @@ Known Issues ============ - When launching, the script will empty out the output directory. Sometimes it doesn't wait long enough for the the output directory to be deleted. If you get an error related to that, just run it again. - There is code to only re-zip files whose contents have changed. It doesn't seem to always work properly, but the whole script works fast enough that fixing it is not a high priority. + +============ +Wish List +============ + +* Differentiate directories and files in the project description file. This would allow us to specify whether we want the directory contents or the directory itself, and would avoid headaches caused by accidentally nesting output directories. diff --git a/SoarShuffler/Soar_Projects_Filelist.txt b/SoarShuffler/Soar_Projects_Filelist.txt index 08c8080..4f30e84 100755 --- a/SoarShuffler/Soar_Projects_Filelist.txt +++ b/SoarShuffler/Soar_Projects_Filelist.txt @@ -1,3 +1,109 @@ +SoarSuite_$VERSION + type=multiplatform-zip + + $COMPILE_DIR/libSoar.$DLL_EXTENSION=bin/$PLATFORM_DIR + $COMPILE_DIR/Soar.lib=bin/$PLATFORM_DIR^ + $COMPILE_DIR/UnitTests.$EXECUTABLE=bin/$PLATFORM_DIR + $COMPILE_DIR/soar.$EXECUTABLE=bin/$PLATFORM_DIR + + $COMPILE_DIR/libJava_sml_ClientInterface.$DLL_EXTENSION=bin/$PLATFORM_DIR + + $COMPILE_DIR/Python_sml_ClientInterface.py=bin/$PLATFORM_DIR + $COMPILE_DIR/_Python_sml_ClientInterface.$DLL_EXTENSION=bin/$PLATFORM_DIR + + $COMPILE_DIR/libTcl_sml_ClientInterface.$DLL_EXTENSION=bin/$PLATFORM_DIR + $COMPILE_DIR/Tcl_sml_ClientInterface.exp=bin/$PLATFORM_DIR^ + $COMPILE_DIR/Tcl_sml_ClientInterface.lib=bin/$PLATFORM_DIR^ + $COMPILE_DIR/libtclsoarlib.$DLL_EXTENSION=bin/$PLATFORM_DIR + $COMPILE_DIR/pkgIndex.tcl=bin/$PLATFORM_DIR + + $COMPILE_DIR/libCSharp_sml_ClientInterface.$DLL_EXTENSION=bin/$PLATFORM_DIR + $COMPILE_DIR/sml_csharp.dll=bin/$PLATFORM_DIR + + $COMPILE_DIR/include=include + + $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Building_Soar.md=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/txt/README=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Release_Notes_$VERSION.md=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/txt/license.txt=$ROOT + + $SOAR_GROUP_REPOS_HOME/VisualSoar/doc/usersman/VisualSoar_UsersManual.pdf=documentation + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/SoarManual.pdf=documentation + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 1 - Simple Agents.pdf=documentation/SoarTutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 2 - Interacting with an Environment.pdf=documentation/SoarTutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 3 - Subgoals.pdf=documentation/SoarTutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 4 - Simple Problem-Solving.pdf=documentation/SoarTutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 5 - Planning and Learning.pdf=documentation/SoarTutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 6 - Reinforcement Learning.pdf=documentation/SoarTutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 7 - SMem.pdf=documentation/SoarTutorial + $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 8 - EpMem.pdf=documentation/SoarTutorial + +# can't compile at the moment +# $COMPILE_DIR/svs_viewer.$EXECUTABLE=bin/$PLATFORM_DIR + + $COMPILE_DIR/SoarJavaDebugger.jar=bin + $COMPILE_DIR/SoarUnitTests=bin/SoarUnitTests + $COMPILE_DIR/tcl=bin/tcl + $COMPILE_DIR/settings.soar=bin + $SOAR_GROUP_REPOS_HOME/Release-Support/SoarShuffler/jars/Eaters_TankSoar.jar=bin + $SOAR_GROUP_REPOS_HOME/VisualSoar/VisualSoar.jar=bin + + $COMPILE_DIR/java/swt.jar=bin/$PLATFORM_DIR + $COMPILE_DIR/java/jcommon-1.0.10.jar=bin/java + $COMPILE_DIR/java/jfreechart-1.0.6-swt.jar=bin/java + $COMPILE_DIR/java/jfreechart-1.0.6.jar=bin/java + $COMPILE_DIR/java/sml.jar=bin/java + $COMPILE_DIR/java/soar-debugger-api.jar=bin/java + $COMPILE_DIR/java/soar-debugger.jar=bin/java + $COMPILE_DIR/java/soar-smljava.jar=bin/java + $COMPILE_DIR/java/swtgraphics2d.jar=bin/java + $SOAR_GROUP_REPOS_HOME/Release-Support/SoarShuffler/jars/commons-logging-1.1.1.jar=bin/java + $SOAR_GROUP_REPOS_HOME/Release-Support/SoarShuffler/jars/log4j-1.2.15.jar=bin/java + $SOAR_GROUP_REPOS_HOME/Release-Support/SoarShuffler/jars/stopwatch-0.4-with-deps.jar=bin/java + + $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/SoarCLI.$LAUNCH_EXTENSION=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/setup.$LAUNCH_EXTENSION=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/SoarJavaDebugger.$LAUNCH_EXTENSION=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/VisualSoar.$LAUNCH_EXTENSION=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/Eaters.$LAUNCH_EXTENSION=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/TankSoar.$LAUNCH_EXTENSION=$ROOT + + $SOAR_GROUP_REPOS_HOME/Agents/default=Agents/default + $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Agents_readme.md=Agents/readme.md + $SOAR_GROUP_REPOS_HOME/Agents/arithmetic=Agents/arithmetic + $SOAR_GROUP_REPOS_HOME/Agents/BW-RL=Agents/BW-RL + $SOAR_GROUP_REPOS_HOME/Agents/BW-Hierarchical-LA=Agents/BW-Hierarchical-LA + $SOAR_GROUP_REPOS_HOME/Agents/BW-Hierarchical=Agents/BW-Hierarchical + $SOAR_GROUP_REPOS_HOME/Agents/BW-LA-state-eval=Agents/BW-LA-state-eval + $SOAR_GROUP_REPOS_HOME/Agents/BW-LA=Agents/BW-LA + $SOAR_GROUP_REPOS_HOME/Agents/BW-Op-Subgoal-RL=Agents/BW-Op-Subgoal-RL + $SOAR_GROUP_REPOS_HOME/Agents/BW-Op-Subgoal=Agents/BW-Op-Subgoal + $SOAR_GROUP_REPOS_HOME/Agents/BW-Simple=Agents/BW-Simple + $SOAR_GROUP_REPOS_HOME/Agents/BW-SoarManual=Agents/BW-SoarManual + $SOAR_GROUP_REPOS_HOME/Agents/eight-puzzle=Agents/eight-puzzle + $SOAR_GROUP_REPOS_HOME/Agents/epmem-tutorial=Agents/epmem-tutorial + $SOAR_GROUP_REPOS_HOME/Agents/fifteen-puzzle=Agents/fifteen-puzzle + $SOAR_GROUP_REPOS_HOME/Agents/hello-world-operator=Agents/hello-world-operator + $SOAR_GROUP_REPOS_HOME/Agents/hello-world-rule=Agents/hello-world-rule + $SOAR_GROUP_REPOS_HOME/Agents/left-right=Agents/left-right + $SOAR_GROUP_REPOS_HOME/Agents/mac-planning=Agents/mac-planning + $SOAR_GROUP_REPOS_HOME/Agents/mac=Agents/mac + $SOAR_GROUP_REPOS_HOME/Agents/smem-tutorial=Agents/smem-tutorial + $SOAR_GROUP_REPOS_HOME/Agents/towers-of-hanoi-recursive=Agents/towers-of-hanoi-recursive + $SOAR_GROUP_REPOS_HOME/Agents/towers-of-hanoi-simple=Agents/towers-of-hanoi-simple + $SOAR_GROUP_REPOS_HOME/Agents/water-jug-hierarchy=Agents/water-jug-hierarchy + $SOAR_GROUP_REPOS_HOME/Agents/water-jug-look-ahead=Agents/water-jug-look-ahead + $SOAR_GROUP_REPOS_HOME/Agents/water-jug-rl=Agents/water-jug-rl + $SOAR_GROUP_REPOS_HOME/Agents/water-jug-simple=Agents/water-jug-simple + $SOAR_GROUP_REPOS_HOME/Agents/water-jug-tie=Agents/water-jug-tie + $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/agents/eaters=Agents/eaters + $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/agents/tanksoar=Agents/tanksoar + + $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/config/eaters.cnf=bin/games + $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/config/tanksoar.cnf=bin/games + $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/config/maps/eaters=bin/games/maps/eaters + $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/config/maps/tanksoar=bin/games/maps/tanksoar + Documentation type=copy $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/SoarManual.pdf=Documentation @@ -10,6 +116,7 @@ Documentation $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 6 - Reinforcement Learning.pdf=Documentation $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 7 - SMem.pdf=Documentation $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 8 - EpMem.pdf=Documentation + Algebra_Agent type=zip out=Agents/ @@ -258,110 +365,3 @@ PDDL type=zip out=Domains/ $SOAR_GROUP_REPOS_HOME/Domains-Planning-Domain-Definition-Language=PDDL/ - -SoarSuite_$VERSION - type=multiplatform-copy - out=SoarSuite-$VERSION/ - - $COMPILE_DIR/libSoar.$DLL_EXTENSION=bin/$PLATFORM_DIR - $COMPILE_DIR/Soar.lib=bin/$PLATFORM_DIR^ - $COMPILE_DIR/UnitTests.$EXECUTABLE=bin/$PLATFORM_DIR - $COMPILE_DIR/soar.$EXECUTABLE=bin/$PLATFORM_DIR - - $COMPILE_DIR/libJava_sml_ClientInterface.$DLL_EXTENSION=bin/$PLATFORM_DIR - - $COMPILE_DIR/Python_sml_ClientInterface.py=bin/$PLATFORM_DIR - $COMPILE_DIR/_Python_sml_ClientInterface.$DLL_EXTENSION=bin/$PLATFORM_DIR - - $COMPILE_DIR/libTcl_sml_ClientInterface.$DLL_EXTENSION=bin/$PLATFORM_DIR - $COMPILE_DIR/Tcl_sml_ClientInterface.exp=bin/$PLATFORM_DIR^ - $COMPILE_DIR/Tcl_sml_ClientInterface.lib=bin/$PLATFORM_DIR^ - $COMPILE_DIR/libtclsoarlib.$DLL_EXTENSION=bin/$PLATFORM_DIR - $COMPILE_DIR/pkgIndex.tcl=bin/$PLATFORM_DIR - - $COMPILE_DIR/libCSharp_sml_ClientInterface.$DLL_EXTENSION=bin/$PLATFORM_DIR - $COMPILE_DIR/sml_csharp.dll=bin/$PLATFORM_DIR - - $COMPILE_DIR/include=$ROOT - - $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Building_Soar.md=$ROOT - $SOAR_GROUP_REPOS_HOME/Release-Support/txt/README=$ROOT - $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Release_Notes_$VERSION.md=$ROOT - $SOAR_GROUP_REPOS_HOME/Release-Support/txt/license.txt=$ROOT - - $SOAR_GROUP_REPOS_HOME/VisualSoar/doc/usersman/VisualSoar_UsersManual.pdf=documentation - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/SoarManual.pdf=documentation - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 1 - Simple Agents.pdf=documentation/SoarTutorial - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 2 - Interacting with an Environment.pdf=documentation/SoarTutorial - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 3 - Subgoals.pdf=documentation/SoarTutorial - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 4 - Simple Problem-Solving.pdf=documentation/SoarTutorial - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 5 - Planning and Learning.pdf=documentation/SoarTutorial - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 6 - Reinforcement Learning.pdf=documentation/SoarTutorial - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 7 - SMem.pdf=documentation/SoarTutorial - $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 8 - EpMem.pdf=documentation/SoarTutorial - -# can't compile at the moment -# $COMPILE_DIR/svs_viewer.$EXECUTABLE=bin/$PLATFORM_DIR - - $COMPILE_DIR/SoarJavaDebugger.jar=bin - $COMPILE_DIR/SoarUnitTests=bin - $COMPILE_DIR/tcl=bin - $COMPILE_DIR/settings.soar=bin - $SOAR_GROUP_REPOS_HOME/Release-Support/SoarShuffler/jars/Eaters_TankSoar.jar=bin - $SOAR_GROUP_REPOS_HOME/VisualSoar/VisualSoar.jar=bin - - $COMPILE_DIR/java/swt.jar=bin/$PLATFORM_DIR - $COMPILE_DIR/java/jcommon-1.0.10.jar=bin/java - $COMPILE_DIR/java/jfreechart-1.0.6-swt.jar=bin/java - $COMPILE_DIR/java/jfreechart-1.0.6.jar=bin/java - $COMPILE_DIR/java/sml.jar=bin/java - $COMPILE_DIR/java/soar-debugger-api.jar=bin/java - $COMPILE_DIR/java/soar-debugger.jar=bin/java - $COMPILE_DIR/java/soar-smljava.jar=bin/java - $COMPILE_DIR/java/swtgraphics2d.jar=bin/java - $SOAR_GROUP_REPOS_HOME/Release-Support/SoarShuffler/jars/commons-logging-1.1.1.jar=bin/java - $SOAR_GROUP_REPOS_HOME/Release-Support/SoarShuffler/jars/log4j-1.2.15.jar=bin/java - $SOAR_GROUP_REPOS_HOME/Release-Support/SoarShuffler/jars/stopwatch-0.4-with-deps.jar=bin/java - - $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/SoarCLI.$LAUNCH_EXTENSION=$ROOT - $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/setup.$LAUNCH_EXTENSION=$ROOT - $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/SoarJavaDebugger.$LAUNCH_EXTENSION=$ROOT - $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/VisualSoar.$LAUNCH_EXTENSION=$ROOT - $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/Eaters.$LAUNCH_EXTENSION=$ROOT - $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/TankSoar.$LAUNCH_EXTENSION=$ROOT - - $SOAR_GROUP_REPOS_HOME/Agents/default=Agents - $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Agents_readme.md=Agents/ - $SOAR_GROUP_REPOS_HOME/Agents/arithmetic=Agents - $SOAR_GROUP_REPOS_HOME/Agents/BW-RL=Agents - $SOAR_GROUP_REPOS_HOME/Agents/BW-Hierarchical-LA=Agents - $SOAR_GROUP_REPOS_HOME/Agents/BW-Hierarchical=Agents - $SOAR_GROUP_REPOS_HOME/Agents/BW-LA-state-eval=Agents - $SOAR_GROUP_REPOS_HOME/Agents/BW-LA=Agents - $SOAR_GROUP_REPOS_HOME/Agents/BW-Op-Subgoal-RL=Agents - $SOAR_GROUP_REPOS_HOME/Agents/BW-Op-Subgoal=Agents - $SOAR_GROUP_REPOS_HOME/Agents/BW-Simple=Agents - $SOAR_GROUP_REPOS_HOME/Agents/BW-SoarManual=Agents - $SOAR_GROUP_REPOS_HOME/Agents/eight-puzzle=Agents - $SOAR_GROUP_REPOS_HOME/Agents/epmem-tutorial=Agents - $SOAR_GROUP_REPOS_HOME/Agents/fifteen-puzzle=Agents - $SOAR_GROUP_REPOS_HOME/Agents/hello-world-operator=Agents - $SOAR_GROUP_REPOS_HOME/Agents/hello-world-rule=Agents - $SOAR_GROUP_REPOS_HOME/Agents/left-right=Agents - $SOAR_GROUP_REPOS_HOME/Agents/mac-planning=Agents - $SOAR_GROUP_REPOS_HOME/Agents/mac=Agents - $SOAR_GROUP_REPOS_HOME/Agents/smem-tutorial=Agents - $SOAR_GROUP_REPOS_HOME/Agents/towers-of-hanoi-recursive=Agents - $SOAR_GROUP_REPOS_HOME/Agents/towers-of-hanoi-simple=Agents - $SOAR_GROUP_REPOS_HOME/Agents/water-jug-hierarchy=Agents - $SOAR_GROUP_REPOS_HOME/Agents/water-jug-look-ahead=Agents - $SOAR_GROUP_REPOS_HOME/Agents/water-jug-rl=Agents - $SOAR_GROUP_REPOS_HOME/Agents/water-jug-simple=Agents - $SOAR_GROUP_REPOS_HOME/Agents/water-jug-tie=Agents - $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/agents/eaters=Agents - $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/agents/tanksoar=Agents - - $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/config/eaters.cnf=bin/games - $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/config/tanksoar.cnf=bin/games - $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/config/maps/eaters=bin/games/maps - $SOAR_GROUP_REPOS_HOME/Domains-Eaters-TankSoar/config/maps/tanksoar=bin/games/maps diff --git a/SoarShuffler/soar_shuffler.py b/SoarShuffler/soar_shuffler.py index 881bb00..b8a0b6c 100755 --- a/SoarShuffler/soar_shuffler.py +++ b/SoarShuffler/soar_shuffler.py @@ -113,12 +113,12 @@ def copy_project(projectName, projects: Dict[str, ProjectEntry]): print (f"Creating directory {destination}") destination.mkdir(parents=True) if (source.is_dir()): - actual_dest = destination / os.path.basename(source) - if actual_dest.exists(): - print (f" - Skipping directory copy: {source} --> {actual_dest} (already exists)") + # destination = destination / os.path.basename(source) + if destination.exists(): + print (f" - Skipping directory copy: {source} --> {destination} (already exists)") continue - print (f" - Performing dir copy: {source} --> {actual_dest}") - shutil.copytree(source, actual_dest, ignore=ignore_list) + print (f" - Performing dir copy: {source} --> {destination}") + shutil.copytree(source, destination, ignore=ignore_list) else: print (f" - Performing file copy: {source} --> {destination}") shutil.copy2(source, destination) @@ -127,14 +127,16 @@ def zip_project(projectName, projects: Dict[str, ProjectEntry]): print(f"Zipping up project {projectName}") seen_list = list() - destination_zip = OUTPUT_DIR / projects[projectName].out / (projectName+".zip") + project = projects[projectName] + + destination_zip = OUTPUT_DIR / project.out / (projectName+".zip") destination_dir = destination_zip.parent if (not destination_dir.exists()): print (" - Creating directory"), destination_dir destination_dir.mkdir(parents=True) with zipfile.ZipFile(destination_zip, 'w', compression=zipfile.ZIP_DEFLATED) as dest_zip: - for a,b in projects[projectName].copyList: + for a,b in project.copyList: source = Path(a) platform_suffix = "" for platform_id in PLATFORM_IDs: @@ -142,10 +144,11 @@ def zip_project(projectName, projects: Dict[str, ProjectEntry]): b = b.replace(f"$SPECIALIZE-{platform_id}", "") platform_suffix = "-" + platform_id if b == ROOT_VAR: - destination = os.path.join(projectName) + destination = Path(projectName) else: - destination = os.path.join(projectName,b) + destination = Path(projectName, b) if (source.is_dir()): + # destination = destination / os.path.basename(source) for root, dirs, files in os.walk(source): if (".svn" in root or ".git" in root): print (f" - Ignoring version control directory {root}") @@ -213,20 +216,6 @@ def multiplatformize_project(projectName:str, project: ProjectEntry): print (f"Creating multi-platform project {projectName}") new_entry = ProjectEntry(type=project_type, out=project.out) - # platform_specific_copy_list = [] - # for a,b in project.copyList: - # if PLATFORM_SPECIFIC_RE.search(b): - # platform_specific_copy_list.append((a,b)) - # elif PLATFORM_SPECIFIC_RE.search(a): - # a, b = _specialize_for_windows(a, b) - # new_entry.copyList.append((a,b)) - # else: - # new_entry.copyList.append((a,b)) - - # print(f" - Found {len(platform_specific_copy_list)} platform-specific files: " + "\n".join(map(lambda pair: f"{pair[0]}->{pair[1]}", platform_specific_copy_list))) - # print(f" - Not platform-specific files: " + "\n".join(map(lambda pair: f"{pair[0]}->{pair[1]}", new_entry.copyList))) - - print (" - Specializing files for Windows...") for a,b in project.copyList: a, b = _specialize_for_windows(a, b) From 88e1d6eace09204b18493b02336246ad21c34056 Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Fri, 28 Jun 2024 02:19:27 -0500 Subject: [PATCH 23/26] release script Move the release instructions to a step-by-step "manual" script, meaning that for now almost nothing is automated. We have a couple of checks for existence of files, but that's it's. In the future we can automate individual steps to reduce release time. --- readme.md | 44 +------- release.py | 309 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 311 insertions(+), 42 deletions(-) create mode 100644 release.py diff --git a/readme.md b/readme.md index f75e716..c10941b 100644 --- a/readme.md +++ b/readme.md @@ -2,29 +2,6 @@ ## Current Release Process -* Changes to `SoarTutorial/*.docx` need to be manually exported from Word to `pdf/`. -* Update version numbers in Soar everywhere (see `example_version_bump.patch`). TODO: write some awk to do this automatically. -* Update version numbers in `txt/README`. -* Add a new release notes file under the `txt/` directory -* Add some cursory release notes in `txt/README` -* Clone all of SoarGroup's repos into a directory -* generate the manual via the makefile under `ManualSource`, or grab the built one from this repository's GH action workflow result. It should be placed in the `pdf/` directory. -* Download the Windows, macos-12 (x86-64), macos-latest (ARM) and Linux builds of Soar from the desired GH action workflow result. -* Fix the classpath in the manifest (https://github.com/SoarGroup/VisualSoar/issues/1) and build VisualSoar -* Convert VisualSoar's manual to pdf: - - `brew install basictex` - - open new shell - - `sudo tlmgr install soul` - - `cd VisualSoar/doc/usersman` - - `pandoc -o VisualSoar_UsersManual.pdf VisualSoar_UsersManual.docx` -* Gather the following jar's under SoarShuffler/jars: - - Eaters_TankSoar.jar - - commons-logging-1.1.1.jar - - log4j-1.2.15.jar - - stopwatch-0.4-with-deps.jar - -VisualSoar and Eaters_TankSoar must be built from their repositories (although I had to fix VisualSoar, see https://github.com/SoarGroup/VisualSoar/issues/1), and the others are in the `lib/` directory in the VisualSoar repository. Note that the log4j one is *not* affected by the famous security bug. - * Set your environment variables for SoarShuffler. Here's my .env for an example (you can source this automatically using tools like [dotenv](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/dotenv)): ```bash @@ -33,25 +10,8 @@ export SOAR_SHUFFLER_OUTPUT_DIR=./Soar-Release-$SOAR_RELEASE_VERSION export SOAR_WIN_X86_64_COMPILED_DIR=~/Downloads/Soar_windows-x86-64_out export SOAR_LINUX_X86_64_COMPILED_DIR=~/Downloads/Soar_linux-x86-64_out export SOAR_MAC_X86_64_COMPILED_DIR=~/Downloads/Soar_mac-x86-64_out -export SOAR_MAC_ARM64_COMPILED_DIR=~/dev/workspaces/release_soar_workspace/Soar/out +export SOAR_MAC_ARM64_COMPILED_DIR=~/Downloads/Soar_mac-ARM64_out export SOAR_GROUP_REPOS_HOME=~/dev/workspaces/release_soar_workspace -echo -e "\e[93mReminder: Check that $SOAR_MAC_ARM64_COMPILED_DIR is checked out at the tag you desire and is freshly recompiled\e[0m" ``` -* Run SoarShuffle: - - cd SoarShuffle - python3 soar_shuffler.py Soar_Projects_Filelist.txt - -The script will tell you if it can't find any files that it needs. You'll probably need to run it a couple of times to hunt down all of the files you need. You'll probably want to `rm -rf SoarSuite` between runs, just to make sure you aren't keeping any old files in the release. - -You'll get the release directories wherever you specified in the `SOAR_SHUFFLER_OUTPUT_DIR` env var. - -* Finally, unzip the release directories in `SoarRelease/SoarSuite` and check that VisualSoar, the debugger, TankSoar, and SoarCLI all work with a simple double-click. -* Share the release with others and get feedback. -* Once you're happy with it, delete the directories you unzipped and, then zip/tarball up the `SoarRelease` directory and upload to the release on GitHub. - - `zip -r Soar-Release-.zip Soar-Release-` - - `tar -czvf Soar-Release-.tar.gz Soar-Release-` -* Upload the Soar and VisualSoar manuals to the release, as well -* Push a releases/$VERSION tag for Soar, and $VERSION tags for other Release-Support and VisualSoar. -* Update the Soar website with the new release information: https://github.com/SoarGroup/SoarGroup.github.io +* Run `python3 release.py`, which will walk you through all of the steps to create a release. Most of them are currently manual, unfortunately. diff --git a/release.py b/release.py new file mode 100644 index 0000000..e618ca2 --- /dev/null +++ b/release.py @@ -0,0 +1,309 @@ +from dataclasses import dataclass +from pathlib import Path +import sys +from os import environ + +PROJECT_DIR = Path(__file__).parent + +SOAR_RELEASE_VERSION = environ.get("SOAR_RELEASE_VERSION") + +SOAR_SHUFFLER_DIR = PROJECT_DIR / "SoarShuffler" + +SOAR_SHUFFLER_OUTPUT_DIR = SOAR_SHUFFLER_DIR / f"Soar-Release-{SOAR_RELEASE_VERSION}" + +SOAR_GROUP_REPOS_HOME = Path(environ.get("SOAR_GROUP_REPOS_HOME")) + +SOAR_WIN_X86_64_COMPILED_DIR = Path(environ.get("SOAR_WIN_X86_64_COMPILED_DIR")) +SOAR_LINUX_X86_64_COMPILED_DIR = Path(environ.get("SOAR_LINUX_X86_64_COMPILED_DIR")) +SOAR_MAC_X86_64_COMPILED_DIR = Path(environ.get("SOAR_MAC_X86_64_COMPILED_DIR")) +SOAR_MAC_ARM64_COMPILED_DIR = Path(environ.get("SOAR_MAC_ARM64_COMPILED_DIR")) + + +@dataclass +class Step: + value: int = 1 + + def proceed(self, confirm=True, check_function=None, fail_message=None): + self.value += 1 + if confirm: + input("Press [Enter] to continue...") + if check_function: + passed = False + while not passed: + try: + check_function() + passed = True + print("✅ Check passed") + except Exception as e: + print(e) + print("❌ Check failed!") + if fail_message: + print(fail_message) + input("Press [Enter] to re-try check...") + print() + + +def report_vars(step: Step): + print(f"Step {step.value}: Confirm following variables:") + print(f"{SOAR_RELEASE_VERSION=}") + print(f"{SOAR_SHUFFLER_OUTPUT_DIR=}") + print(f"{SOAR_GROUP_REPOS_HOME=}") + print(f"{SOAR_WIN_X86_64_COMPILED_DIR=}") + print(f"{SOAR_LINUX_X86_64_COMPILED_DIR=}") + print(f"{SOAR_MAC_X86_64_COMPILED_DIR=}") + print(f"{SOAR_MAC_ARM64_COMPILED_DIR=}") + step.proceed() + + +def export_tutorial(step: Step): + print( + f"Step {step.value}: Manually export changes to SoarTutorial/*.docx from Word to pdf/" + ) + step.proceed() + + +def bump_version(step: Step): + # TODO: manual source will be unified with website version in the future. + print( + ( + f"Step {step.value}: Update version number in ManualSource/manual.tex (look for 'SoarVersionRevision'). " + "Then push the changes so that the manual is rebuilt. " + ) + ) + step.proceed() + + print( + ( + f"Step {step.value}: Update version numbers in Soar everywhere (see example_version_bump.patch). " + "Then push the changes so that Soar is rebuilt with the correct version info." + ) + ) + step.proceed() + + print(f"Step {step.value}: Update version numbers in txt/README.") + step.proceed() + + +def release_notes(step: Step): + release_notes_file = ( + PROJECT_DIR / "txt" / f"Release_Notes_{SOAR_RELEASE_VERSION}.md" + ) + print( + ( + f"Step {step.value}: Create and fill {release_notes_file} using a previous release notes file as a template. " + "Ensure full correctness of file." + ) + ) + step.proceed(check_function=lambda: release_notes_file.resolve(strict=True)) + + print( + ( + f"Step {step.value}: Add some cursory release notes in txt/README. " + "Ensure full correctness of file." + ) + ) + step.proceed() + + +def build_instructions(step: Step): + print( + f"Step {step.value}: Ensure build instructions in txt/Building_Soar.md are up-to-date." + ) + step.proceed() + + +def clone_repos(step: Step): + print( + f"Step {step.value}: Clone the necessary SoarGroup repositories to {SOAR_GROUP_REPOS_HOME}" + ) + + def check(): + SOAR_GROUP_REPOS_HOME.resolve(strict=True) + required_repos = [ + "Other-Agent-Development-Tools", + "Domains-SoarQnA", + "Domains-SoarTextIO", + "Domains-WordNet", + "Domains-WordNet-with-Parse-Trees", + "Examples-and-Unsupported", + "Domains-RoomsWorld", + "Domains-InfiniteMario", + "Domains-DiceQnA", + "Domains-Dice", + "Domains-General-Game-Playing", + "Domains-Planning-Domain-Definition-Language", + "Agents", + "Domains-Eaters-TankSoar", + "VisualSoar", + ] + for repo in required_repos: + repo_path = SOAR_GROUP_REPOS_HOME / repo + repo_path.resolve(strict=True) + + step.proceed(check_function=check) + + +def manual_pdf(step: Step): + print( + ( + f"Step {step.value}: Grab the latest manual build from this " + "repository's GH Actions artifacts and place it in pdf/." + ) + ) + step.proceed() + + +def download_builds(step: Step): + print( + ( + f"Step {step.value}: Download the latest Soar builds from the Soar repo's GH Actions artifacts. " + "They should be unzipped and placed in the directories specified above for " + "SOAR_WIN_X86_64_COMPILED_DIR, SOAR_LINUX_X86_64_COMPILED_DIR, " + "SOAR_MAC_X86_64_COMPILED_DIR, and SOAR_MAC_ARM64_COMPILED_DIR." + ) + ) + + def check(): + SOAR_WIN_X86_64_COMPILED_DIR.resolve(strict=True) + SOAR_LINUX_X86_64_COMPILED_DIR.resolve(strict=True) + SOAR_MAC_X86_64_COMPILED_DIR.resolve(strict=True) + SOAR_MAC_ARM64_COMPILED_DIR.resolve(strict=True) + + step.proceed(check_function=check) + + +def build_visual_soar(step: Step): + print(f"Step {step.value}: Build VisualSoar") + step.proceed() + + print( + ( + f"Step {step.value}: Convert VisualSoar's manual to pdf; if on Mac, do this:" + " - `brew install basictex`" + " - open new shell" + " - `sudo tlmgr install soul`" + " - `cd VisualSoar/doc/usersman`" + " - `pandoc -o VisualSoar_UsersManual.pdf VisualSoar_UsersManual.docx`" + ) + ) + + def check(): + ( + SOAR_GROUP_REPOS_HOME + / "VisualSoar" + / "doc" + / "usersman" + / "VisualSoar_UsersManual.pdf" + ).resolve(strict=True) + + step.proceed(check_function=check) + + +def build_eaters_tanksoar(step: Step): + print( + f"Step {step.value}: Build Eaters_TankSoar.jar and place it under SoarShuffler/jars." + ) + step.proceed( + check_function=lambda: ( + SOAR_SHUFFLER_DIR / "jars" / "Eaters_TankSoar.jar" + ).resolve(strict=True) + ) + + +def gather_jars(step: Step): + required_jars = [ + "commons-logging-1.1.1.jar", + "log4j-1.2.15.jar", + "stopwatch-0.4-with-deps.jar", + ] + print( + f"Step {step.value}: Gather the following jar's under SoarShuffler/jars:\n" + + "\n".join(map(lambda j: f" - {j}", required_jars)) + ) + + def check(): + for j in required_jars: + (SOAR_SHUFFLER_DIR / "jars" / j).resolve(strict=True) + + step.proceed(check_function=check) + + +def run_soar_shuffler(step: Step): + print( + ( + f"Step {step.value}: Run SoarShuffler:\n" + " - cd SoarShuffle\n" + " - python3 soar_shuffler.py Soar_Projects_Filelist.txt\n" + "The script will tell you if it can't find any files that it needs. You'll probably need to run it " + "a couple of times to hunt down all of the files you need. You'll probably want to `rm -rf SoarSuite` " + "between runs, just to make sure you aren't keeping any old files in the release." + ) + ) + step.proceed(check_function=lambda: SOAR_SHUFFLER_OUTPUT_DIR.resolve(strict=True)) + + +def inspect_release(step: Step): + print( + ( + f"Step {step.value}: Unzip SoarShuffler/Soar-Release-{SOAR_RELEASE_VERSION}/Soar_{SOAR_RELEASE_VERSION}-Multiplatform.zip " + "and ensure everything is in order. Check that VisualSoar, the debugger, TankSoar, and SoarCLI all work with a simple double-click." + ) + ) + step.proceed() + + print( + f"Step {step.value}: Share the release with others and get feedback. Repeat this whole process if necessary." + ) + step.proceed() + + +def upload_to_github(step: Step): + print( + ( + f"Step {step.value}: Create a new release on GitHub: https://github.com/SoarGroup/Soar/releases/new. " + f"Type 'releases/{SOAR_RELEASE_VERSION} into the tag field and select 'Create new tag'." + "Copy the basic change notes from txt/README to the description and upload " + f"Soar_{SOAR_RELEASE_VERSION}-Multiplatform.zip and all of the documentation PDFs." + "Leave 'Set as a pre-release' *unchecked*, 'Set as the latest release' *checked* and hit 'Publish release'." + ) + ) + step.proceed() + + +def git_tag(step: Step): + print( + ( + f"Step {step.value}: Push {SOAR_RELEASE_VERSION} tags for Release-Support and VisualSoar." + ) + ) + step.proceed() + + +def update_website(step: Step): + print( + ( + f"Step {step.value}: Update the website with the new release information: https://github.com/SoarGroup/SoarGroup.github.io. " + "This includes adding a release announcement and updating download links for the manual and tutorial." + ) + ) + step.proceed() + + +def main(args): + step_counter = Step() + report_vars(step_counter) + export_tutorial(step_counter) + bump_version(step_counter) + release_notes(step_counter) + clone_repos(step_counter) + manual_pdf(step_counter) + download_builds(step_counter) + build_visual_soar(step_counter) + build_eaters_tanksoar(step_counter) + gather_jars(step_counter) + run_soar_shuffler(step_counter) + inspect_release(step_counter) + + +if __name__ == "__main__": + main(sys.argv[1:]) From 503fde8a06df106bfb94f9b93d49f802817e8883 Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Fri, 28 Jun 2024 17:10:05 -0500 Subject: [PATCH 24/26] Note to test on all platforms --- release.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/release.py b/release.py index e618ca2..9006840 100644 --- a/release.py +++ b/release.py @@ -246,7 +246,8 @@ def inspect_release(step: Step): print( ( f"Step {step.value}: Unzip SoarShuffler/Soar-Release-{SOAR_RELEASE_VERSION}/Soar_{SOAR_RELEASE_VERSION}-Multiplatform.zip " - "and ensure everything is in order. Check that VisualSoar, the debugger, TankSoar, and SoarCLI all work with a simple double-click." + "and ensure everything is in order. Check that VisualSoar, the debugger, TankSoar, and SoarCLI all work with a simple double-click. " + "Test on Mac (Intel and ARM), Windows, and Linux." ) ) step.proceed() From 635a487c827df554cdbc0b937e628f2ce1b6532c Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Fri, 28 Jun 2024 18:53:26 -0500 Subject: [PATCH 25/26] Add and clarify final steps in release.py And a fun little message at the end that reflects the usual mood around releases. --- release.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/release.py b/release.py index 9006840..0da6a18 100644 --- a/release.py +++ b/release.py @@ -146,7 +146,7 @@ def check(): def manual_pdf(step: Step): print( ( - f"Step {step.value}: Grab the latest manual build from this " + f"Step {step.value}: Grab the latest SoarManual build from this " "repository's GH Actions artifacts and place it in pdf/." ) ) @@ -239,7 +239,7 @@ def run_soar_shuffler(step: Step): "between runs, just to make sure you aren't keeping any old files in the release." ) ) - step.proceed(check_function=lambda: SOAR_SHUFFLER_OUTPUT_DIR.resolve(strict=True)) + step.proceed(check_function=lambda: (SOAR_SHUFFLER_OUTPUT_DIR/f"SoarSuite_{SOAR_RELEASE_VERSION}-Multiplatform.zip").resolve(strict=True)) def inspect_release(step: Step): @@ -304,6 +304,11 @@ def main(args): gather_jars(step_counter) run_soar_shuffler(step_counter) inspect_release(step_counter) + upload_to_github(step_counter) + git_tag(step_counter) + update_website(step_counter) + + print("Release complete! 🎊🥳🥂, 😪🛌😴") if __name__ == "__main__": From a79fbe6d2c472d438d8aa37e49d51fb4ff3aa77e Mon Sep 17 00:00:00 2001 From: Nathan Glenn Date: Sat, 29 Jun 2024 00:04:07 -0500 Subject: [PATCH 26/26] add .md suffix to README --- SoarShuffler/Soar_Projects_Filelist.txt | 2 +- SoarShuffler/old-Soar_Projects_Filelist.txt | 4 ++-- release.py | 6 +++--- txt/{README => README.md} | 2 +- txt/Release_Notes_9.6.3.md | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) rename txt/{README => README.md} (99%) diff --git a/SoarShuffler/Soar_Projects_Filelist.txt b/SoarShuffler/Soar_Projects_Filelist.txt index 4f30e84..a4d9892 100755 --- a/SoarShuffler/Soar_Projects_Filelist.txt +++ b/SoarShuffler/Soar_Projects_Filelist.txt @@ -23,7 +23,7 @@ SoarSuite_$VERSION $COMPILE_DIR/include=include $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Building_Soar.md=$ROOT - $SOAR_GROUP_REPOS_HOME/Release-Support/txt/README=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/txt/README.md=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Release_Notes_$VERSION.md=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/txt/license.txt=$ROOT diff --git a/SoarShuffler/old-Soar_Projects_Filelist.txt b/SoarShuffler/old-Soar_Projects_Filelist.txt index 1ed3c09..d5adf35 100755 --- a/SoarShuffler/old-Soar_Projects_Filelist.txt +++ b/SoarShuffler/old-Soar_Projects_Filelist.txt @@ -304,7 +304,7 @@ SoarSuite_$VERSION $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/SoarJavaDebugger.$LAUNCH_EXTENSION=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/VisualSoar.$LAUNCH_EXTENSION=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Building_Soar.md=$ROOT - $SOAR_GROUP_REPOS_HOME/Release-Support/txt/README=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/txt/README.md=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Release_Notes_$VERSION.md=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/txt/license.txt=$ROOT $COMPILE_DIR/libCSharp_sml_ClientInterface.$DLL_EXTENSION=bin/$PLATFORM_DIR @@ -346,7 +346,7 @@ SoarTutorial_$VERSION $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/setup.$LAUNCH_EXTENSION=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/scripts/TankSoar.$LAUNCH_EXTENSION=$ROOT $COMPILE_DIR/tcl=bin/tcl - $SOAR_GROUP_REPOS_HOME/Release-Support/txt/README=$ROOT + $SOAR_GROUP_REPOS_HOME/Release-Support/txt/README.md=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/txt/license.txt=$ROOT $SOAR_GROUP_REPOS_HOME/Release-Support/txt/Agents_readme.md=Agents/ $SOAR_GROUP_REPOS_HOME/Release-Support/pdf/Soar Tutorial Part 1 - Simple Agents.pdf=Tutorial diff --git a/release.py b/release.py index 0da6a18..52f28ea 100644 --- a/release.py +++ b/release.py @@ -80,7 +80,7 @@ def bump_version(step: Step): ) step.proceed() - print(f"Step {step.value}: Update version numbers in txt/README.") + print(f"Step {step.value}: Update version numbers in txt/README.md.") step.proceed() @@ -98,7 +98,7 @@ def release_notes(step: Step): print( ( - f"Step {step.value}: Add some cursory release notes in txt/README. " + f"Step {step.value}: Add some cursory release notes in txt/README.md. " "Ensure full correctness of file." ) ) @@ -263,7 +263,7 @@ def upload_to_github(step: Step): ( f"Step {step.value}: Create a new release on GitHub: https://github.com/SoarGroup/Soar/releases/new. " f"Type 'releases/{SOAR_RELEASE_VERSION} into the tag field and select 'Create new tag'." - "Copy the basic change notes from txt/README to the description and upload " + "Copy the basic change notes from txt/README.md to the description and upload " f"Soar_{SOAR_RELEASE_VERSION}-Multiplatform.zip and all of the documentation PDFs." "Leave 'Set as a pre-release' *unchecked*, 'Set as the latest release' *checked* and hit 'Publish release'." ) diff --git a/txt/README b/txt/README.md similarity index 99% rename from txt/README rename to txt/README.md index c07e11a..cdfee64 100644 --- a/txt/README +++ b/txt/README.md @@ -205,4 +205,4 @@ To avoid redundant entries, please search for duplicate issues first. Pull requests and patches to improve Soar, its documentation or tools are very welcome. If you would like to fund further development of Soar, please reach out to John Laird: -[laird@umich.edu](laird@umich.edu). +[laird@umich.edu](mailto:laird@umich.edu). diff --git a/txt/Release_Notes_9.6.3.md b/txt/Release_Notes_9.6.3.md index 65843da..c87d961 100644 --- a/txt/Release_Notes_9.6.3.md +++ b/txt/Release_Notes_9.6.3.md @@ -93,4 +93,4 @@ To avoid redundant entries, please search for duplicate issues first. Pull requests and patches to improve Soar, its documentation or tools are very welcome. If you would like to fund further development of Soar, please reach out to John Laird: -[laird@umich.edu](laird@umich.edu). +[laird@umich.edu](mailto:laird@umich.edu).