diff --git a/.github/workflows/test_linux.yml b/.github/workflows/test_linux.yml
index 996d89ce..4eed1072 100644
--- a/.github/workflows/test_linux.yml
+++ b/.github/workflows/test_linux.yml
@@ -16,14 +16,16 @@ jobs:
matrix:
cfg:
#-------- Operating Systems ----------------
- - { os: ubuntu, tag: 18.04, arch: debian, arch_ver: 10 }
- - { os: ubuntu, tag: 20.04, arch: debian, arch_ver: 11 }
- - { os: debian, tag: 10, arch: debian, arch_ver: 10 }
- - { os: debian, tag: 11, arch: debian, arch_ver: 11 }
- - { os: centos, tag: 7, arch: rhel, arch_ver: 7 }
- - { os: rockylinux, tag: 8, arch: rhel, arch_ver: 8 }
- - { os: oraclelinux, tag: 8, arch: rhel, arch_ver: 8 }
- - { os: almalinux, tag: 8, arch: rhel, arch_ver: 8 }
+ - { os: ubuntu, tag: 18.04, arch: debian, arch_ver: 10 }
+ - { os: ubuntu, tag: 20.04, arch: debian, arch_ver: 11 }
+ - { os: ubuntu, tag: 22.04, arch: debian, arch_ver: 12 }
+ - { os: debian, tag: 10, arch: debian, arch_ver: 10 }
+ - { os: debian, tag: 11, arch: debian, arch_ver: 11 }
+ - { os: debian, tag: bookworm, arch: debian, arch_ver: 12 }
+ - { os: centos, tag: 7, arch: rhel, arch_ver: 7 }
+ - { os: rockylinux, tag: 8, arch: rhel, arch_ver: 8 }
+ - { os: oraclelinux, tag: 8, arch: rhel, arch_ver: 8 }
+ - { os: almalinux, tag: 8, arch: rhel, arch_ver: 8 }
python: [2, 3]
#-------- Defaults --------------------------
@@ -63,6 +65,12 @@ jobs:
default-jdk
python2.7-dev
python3-dev
+ install_gtest: |
+ apt-get install -y libgtest-dev
+ cd /usr/src/gtest
+ cmake .
+ make
+ cp lib/libgtest* /usr/lib/
#-------- RHEL Dependencies ----------------
- cfg: { arch: rhel }
arch_deps: >-
@@ -87,7 +95,7 @@ jobs:
#-------- RHEL 7-based Only Dependencies ----------------
- cfg: { arch: rhel, arch_ver: 7 }
pkg_mgr: yum
- conf_pkg: |
+ conf_pkg: |
yum -y install epel-release
yum -y update
os_deps: >-
@@ -122,12 +130,6 @@ jobs:
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y tzdata
- install_gtest: |
- apt-get install -y libgtest-dev
- cd /usr/src/gtest
- cmake .
- make
- cp lib/libgtest* /usr/lib/
#-------- OS and Version Specific Dependencies ----------------
- cfg: { os: oraclelinux }
install_gtest: |
@@ -157,7 +159,7 @@ jobs:
export PYTHON_VERSION=${{matrix.python}}
./configure
- name: Build Trick
- run: |
+ run: |
export MAKEFLAGS=-j`nproc`
make
- name: Test
diff --git a/docs/documentation/install_guide/Install-Guide.md b/docs/documentation/install_guide/Install-Guide.md
index 3847fb50..f2ba36eb 100644
--- a/docs/documentation/install_guide/Install-Guide.md
+++ b/docs/documentation/install_guide/Install-Guide.md
@@ -170,7 +170,7 @@ proceed to [Install Trick](#install) section of the install guide
### macOS Monterey, Big Sur, Catalina
-
+#### These instructions are for Intel-based macs. For the latest Apple silicon (M1) instructions see this issue: https://github.com/nasa/trick/issues/1283
1. Install the latest Xcode. I recommend installing Xcode through the App Store.
2. Download and install Xcode Command Line Tools for macOS. The following command in the terminal should do the job:
@@ -185,7 +185,7 @@ xcode-select --install
4. Install the following dependencies using brew (note, we do not currently support installing llvm through brew. Trick WILL NOT work with brew's llvm. See step 5).
```bash
-brew install java xquartz swig maven udunits openmotif
+brew install python java xquartz swig maven udunits openmotif
```
IMPORTANT: Make sure to follow the instructions for adding java to your path provided by brew. If you missed them, you can see them again by using `brew info java`.
@@ -199,7 +199,7 @@ Tip: I suggest renaming the untar'd directory to something simple like llvm13 an
IMPORTANT: Your mac might complain during configuration or build that llvm is downloaded from the internet and can not be trusted. You may need to find a safe solution for this on your own. DO THIS AT YOUR OWN RISK: What worked for us was enabling Settings->Security & Privacy->Privacy->Developer Tools->Terminal.
-IMPORTANT: when doing the configure step in the install trick section, you need to point trick to llvm. It is also possible that the current iteration of our configure script will not be able to find the udunits package, so you may need to point trick to udunits as well.
+IMPORTANT: when doing the configure step in the install trick section, you need to point trick to llvm. It is also possible that the current iteration of our configure script will not be able to find the udunits package, so you may need to point trick to udunits as well (I believe this is only an issue on M1 macs).
You can find the path of udunits by executing the following command:
```
diff --git a/trick_sims/SIM_balloon/RUN_test/input.py b/trick_sims/SIM_balloon/RUN_test/input.py
index ca461654..b186984d 100644
--- a/trick_sims/SIM_balloon/RUN_test/input.py
+++ b/trick_sims/SIM_balloon/RUN_test/input.py
@@ -1,4 +1,4 @@
-execfile("Modified_data/realtime.py")
+exec(open("./Modified_data/realtime.py").read())
dyn.balloon.pos[0] = 0
#dyn.balloon.pos[1] = 136.89
diff --git a/trick_sims/SIM_contact/RUN_Newtons_cradle/input.py b/trick_sims/SIM_contact/RUN_Newtons_cradle/input.py
index 734704dc..bf2b5302 100644
--- a/trick_sims/SIM_contact/RUN_Newtons_cradle/input.py
+++ b/trick_sims/SIM_contact/RUN_Newtons_cradle/input.py
@@ -1,4 +1,4 @@
-execfile("Modified_data/realtime.py")
+exec(open("./Modified_data/realtime.py").read())
# Variable Server Data should be copied at top of frame.
trick.var_set_copy_mode(2)
diff --git a/trick_sims/SIM_contact/RUN_ball_line/input.py b/trick_sims/SIM_contact/RUN_ball_line/input.py
index bb9ffdbb..202729f9 100644
--- a/trick_sims/SIM_contact/RUN_ball_line/input.py
+++ b/trick_sims/SIM_contact/RUN_ball_line/input.py
@@ -1,4 +1,4 @@
-execfile("Modified_data/realtime.py")
+exec(open("./Modified_data/realtime.py").read())
# Variable Server Data should be copied at top of frame.
trick.var_set_copy_mode(2)
diff --git a/trick_sims/SIM_contact/RUN_multi_collision/input.py b/trick_sims/SIM_contact/RUN_multi_collision/input.py
index c025cb7b..a969b177 100644
--- a/trick_sims/SIM_contact/RUN_multi_collision/input.py
+++ b/trick_sims/SIM_contact/RUN_multi_collision/input.py
@@ -1,4 +1,4 @@
-execfile("Modified_data/realtime.py")
+exec(open("./Modified_data/realtime.py").read())
# Variable Server Data should be copied at top of frame.
trick.var_set_copy_mode(2)
diff --git a/trick_sims/SIM_contact/RUN_pool_break/input.py b/trick_sims/SIM_contact/RUN_pool_break/input.py
index f3db9095..9284fa6c 100644
--- a/trick_sims/SIM_contact/RUN_pool_break/input.py
+++ b/trick_sims/SIM_contact/RUN_pool_break/input.py
@@ -1,4 +1,4 @@
-execfile("Modified_data/realtime.py")
+exec(open("./Modified_data/realtime.py").read())
# Variable Server Data should be copied at top of frame.
trick.var_set_copy_mode(2)
diff --git a/trick_sims/SIM_contact/RUN_simple_collision/input.py b/trick_sims/SIM_contact/RUN_simple_collision/input.py
index 9cd6de2e..0ef149e9 100644
--- a/trick_sims/SIM_contact/RUN_simple_collision/input.py
+++ b/trick_sims/SIM_contact/RUN_simple_collision/input.py
@@ -1,4 +1,4 @@
-execfile("Modified_data/realtime.py")
+exec(open("./Modified_data/realtime.py").read())
# Variable Server Data should be copied at top of frame.
trick.var_set_copy_mode(2)
diff --git a/trick_sims/SIM_contact/RUN_test5/input.py b/trick_sims/SIM_contact/RUN_test5/input.py
index e7120a96..7c36452e 100644
--- a/trick_sims/SIM_contact/RUN_test5/input.py
+++ b/trick_sims/SIM_contact/RUN_test5/input.py
@@ -1,4 +1,4 @@
-execfile("Modified_data/realtime.py")
+exec(open("./Modified_data/realtime.py").read())
# Variable Server Data should be copied at top of frame.
trick.var_set_copy_mode(2)
diff --git a/trick_sims/SIM_lander/RUN_test/input.py b/trick_sims/SIM_lander/RUN_test/input.py
index 9eae0188..d78545e1 100644
--- a/trick_sims/SIM_lander/RUN_test/input.py
+++ b/trick_sims/SIM_lander/RUN_test/input.py
@@ -1,4 +1,4 @@
-execfile("Modified_data/realtime.py")
+exec(open("./Modified_data/realtime.py").read())
dyn.lander.pos[0] = 0
dyn.lander.pos[1] = 1.8
diff --git a/trick_source/codegen/Interface_Code_Gen/ClassVisitor.cpp b/trick_source/codegen/Interface_Code_Gen/ClassVisitor.cpp
index 277e736d..1891a6ba 100644
--- a/trick_source/codegen/Interface_Code_Gen/ClassVisitor.cpp
+++ b/trick_source/codegen/Interface_Code_Gen/ClassVisitor.cpp
@@ -79,7 +79,13 @@ bool CXXRecordVisitor::TraverseDecl(clang::Decl *d) {
/* This is an embedded enumeration within a class. Only process it if is public */
if ( ed->getAccess() == clang::AS_public ) {
EnumVisitor evis(ci, hsd) ;
+ // Before llvm 14, TraverseDecl also traversed the type.
+ // llvm believed this to be a bug, so now we call TraverseType
+ // in addition to TraverseDecl.
evis.TraverseDecl(ed) ;
+ #if (LIBCLANG_MAJOR >= 14)
+ evis.TraverseType(clang::QualType(ed->getTypeForDecl(), 0));
+ #endif
pa.printEnum(evis.get_enum_data()) ;
} else {
// protected and private embedded classes cannot be used outside of their class
diff --git a/trick_source/codegen/Interface_Code_Gen/TranslationUnitVisitor.cpp b/trick_source/codegen/Interface_Code_Gen/TranslationUnitVisitor.cpp
index 99a7039b..08634290 100644
--- a/trick_source/codegen/Interface_Code_Gen/TranslationUnitVisitor.cpp
+++ b/trick_source/codegen/Interface_Code_Gen/TranslationUnitVisitor.cpp
@@ -98,7 +98,13 @@ bool TranslationUnitVisitor::TraverseDecl(clang::Decl *d) {
clang::EnumDecl * ed = static_cast(d) ;
if ( isInUserCode(ci , ed->RBRACELOC(), hsd) ) {
EnumVisitor evis(ci, hsd) ;
+ // Before llvm 14, TraverseDecl also traversed the type.
+ // llvm believed this to be a bug, so now we call TraverseType
+ // in addition to TraverseDecl.
evis.TraverseDecl(ed) ;
+ #if (LIBCLANG_MAJOR >= 14)
+ evis.TraverseType(clang::QualType(ed->getTypeForDecl(), 0));
+ #endif
//if ( evis.get_enum_data() != NULL ) {
pa.printEnum(evis.get_enum_data()) ;
//}
diff --git a/trick_source/codegen/Interface_Code_Gen/main.cpp b/trick_source/codegen/Interface_Code_Gen/main.cpp
index d16514e9..33b3f43f 100644
--- a/trick_source/codegen/Interface_Code_Gen/main.cpp
+++ b/trick_source/codegen/Interface_Code_Gen/main.cpp
@@ -215,7 +215,7 @@ int main(int argc, char * argv[]) {
ci.setASTConsumer(astConsumer);
#endif
ci.createASTContext();
- ci.createSema(clang::TU_Prefix, NULL);
+ ci.createSema(clang::TU_Complete, NULL);
// Get the full path of the file to be read
char buffer[input_file_names[0].size() + 1];
diff --git a/trick_source/data_products/DPX/test/unit_test/makefile b/trick_source/data_products/DPX/test/unit_test/makefile
index ae671026..a2260f9f 100644
--- a/trick_source/data_products/DPX/test/unit_test/makefile
+++ b/trick_source/data_products/DPX/test/unit_test/makefile
@@ -47,7 +47,7 @@ DP_LIBS = -L${TRICK_HOME}/trick_source/data_products/lib_${TRICK_HOST_CP
MODEL_LIBS = -lxml2 \
-L${DPX_DIR}/lib_${TRICK_HOST_CPU} -lDPM \
-L${TRICK_HOME}/trick_source/data_products/lib_${TRICK_HOST_CPU} -ltrick_units \
- ${GTEST_LIBS} -lpthread -ludunits2
+ ${GTEST_LIBS} -lpthread -ludunits2 ${UDUNITS_LDFLAGS}
CONTROLLER_LIBS = -lDPC \
${MODEL_LIBS} ${DP_LIBS} \
${XLIBS} ${LIBRTDEF} \
diff --git a/trick_source/web/dashboard/package-lock.json b/trick_source/web/dashboard/package-lock.json
index ce85749c..fbdf0ecd 100644
--- a/trick_source/web/dashboard/package-lock.json
+++ b/trick_source/web/dashboard/package-lock.json
@@ -6312,9 +6312,9 @@
"integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA=="
},
"eventsource": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz",
- "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.1.tgz",
+ "integrity": "sha512-qV5ZC0h7jYIAOhArFJgSfdyz6rALJyb270714o7ZtNnw2WSJ+eexhKtE0O8LYPRsHZHf2osHKZBxGPvm3kPkCA==",
"requires": {
"original": "^1.0.0"
}