diff --git a/.github/actions/setup-flexpret/action.yml b/.github/actions/setup-flexpret/action.yml index e97521d66a..461d3986e0 100644 --- a/.github/actions/setup-flexpret/action.yml +++ b/.github/actions/setup-flexpret/action.yml @@ -3,6 +3,10 @@ description: Install FlexPRET and dependencies (Linux only) runs: using: "composite" steps: + - name: Setup Scala + uses: olafurpg/setup-scala@v11 + with: + java-version: openjdk@1.17.0 - name: Setup run: | # Clone the FlexPRET repository diff --git a/.github/actions/setup-ros2/action.yml b/.github/actions/setup-ros2/action.yml index 1e35624a7f..3395cd7095 100644 --- a/.github/actions/setup-ros2/action.yml +++ b/.github/actions/setup-ros2/action.yml @@ -1,14 +1,9 @@ -name: Install ROS2 rolling (Linux only) -description: Install ROS2 rolling (Linux only) +name: Install ROS2 jazzy (Linux only) +description: Install ROS2 jazzy (Linux only) runs: using: "composite" steps: - - if: runner.os == 'Linux' - shell: bash - # azure ubuntu repo can be flaky so add an alternate source - # see https://github.com/ros-tooling/setup-ros/issues/80 and https://github.com/ros2/rmw_cyclonedds/pull/134 - run: sed -e 's/azure.archive.ubuntu.com/us.archive.ubuntu.com/g' -e t -e d /etc/apt/sources.list | sudo tee /etc/apt/sources.list.d/nonazure.list - name: Setup ROS2 - uses: ros-tooling/setup-ros@0.7.0 + uses: ros-tooling/setup-ros@0.7.9 with: - required-ros-distributions: rolling + required-ros-distributions: jazzy diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e84f9fce42..987432e02f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,7 +13,7 @@ jobs: build-toolchain: strategy: matrix: - platform: ${{ (inputs.all-platforms && fromJSON('["ubuntu-latest", "macos-latest", "windows-latest"]')) || fromJSON('["ubuntu-latest"]') }} + platform: ${{ (inputs.all-platforms && fromJSON('["ubuntu-24.04", "macos-latest", "windows-latest"]')) || fromJSON('["ubuntu-24.04"]') }} runs-on: ${{ matrix.platform }} steps: - name: Check out lingua-franca repository diff --git a/.github/workflows/c-arduino-tests.yml b/.github/workflows/c-arduino-tests.yml index a9d75f1e56..9e4a91cbe7 100644 --- a/.github/workflows/c-arduino-tests.yml +++ b/.github/workflows/c-arduino-tests.yml @@ -25,7 +25,7 @@ jobs: arduino-tests: strategy: matrix: - platform: ${{ (inputs.all-platforms && fromJSON('["ubuntu-latest", "macos-latest"]')) || fromJSON('["ubuntu-latest"]') }} + platform: ${{ (inputs.all-platforms && fromJSON('["ubuntu-24.04", "macos-latest"]')) || fromJSON('["ubuntu-24.04"]') }} runs-on: ${{ matrix.platform }} steps: - name: Check out lingua-franca repository diff --git a/.github/workflows/c-flexpret-tests.yml b/.github/workflows/c-flexpret-tests.yml index fb045be8e1..b3ad2cd6fe 100644 --- a/.github/workflows/c-flexpret-tests.yml +++ b/.github/workflows/c-flexpret-tests.yml @@ -23,7 +23,7 @@ on: jobs: flexpret-tests: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Check out lingua-franca repository uses: actions/checkout@v3 diff --git a/.github/workflows/c-patmos-tests.yml b/.github/workflows/c-patmos-tests.yml index 5dedf58682..6d41fde310 100644 --- a/.github/workflows/c-patmos-tests.yml +++ b/.github/workflows/c-patmos-tests.yml @@ -23,7 +23,7 @@ on: jobs: Patmos-tests: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Check out lingua-franca repository uses: actions/checkout@v3 diff --git a/.github/workflows/c-tests.yml b/.github/workflows/c-tests.yml index 7625897923..b835f07426 100644 --- a/.github/workflows/c-tests.yml +++ b/.github/workflows/c-tests.yml @@ -25,7 +25,7 @@ jobs: regular-tests: strategy: matrix: - platform: ${{ (inputs.all-platforms && fromJSON('["ubuntu-latest", "macos-latest", "windows-latest"]')) || fromJSON('["ubuntu-latest"]') }} + platform: ${{ (inputs.all-platforms && fromJSON('["ubuntu-24.04", "macos-latest", "windows-latest"]')) || fromJSON('["ubuntu-24.04"]') }} runs-on: ${{ matrix.platform }} timeout-minutes: 120 steps: diff --git a/.github/workflows/c-verifier-tests.yml b/.github/workflows/c-verifier-tests.yml index 8e2ec09915..1248c40b71 100644 --- a/.github/workflows/c-verifier-tests.yml +++ b/.github/workflows/c-verifier-tests.yml @@ -15,7 +15,7 @@ jobs: run: strategy: matrix: - platform: [ubuntu-latest] + platform: [ubuntu-24.04] runs-on: ${{ matrix.platform }} steps: - name: Check out lingua-franca repository @@ -34,6 +34,10 @@ jobs: path: core/src/main/resources/lib/c/reactor-c ref: ${{ inputs.runtime-ref }} if: ${{ inputs.runtime-ref }} + - name: Setup Scala + uses: olafurpg/setup-scala@v11 + with: + java-version: openjdk@1.17.0 - name: Check out Uclid5 repository uses: actions/checkout@v3 with: @@ -54,6 +58,7 @@ jobs: - name: Install Uclid5 working-directory: uclid/ run: | + sbt update clean compile sbt universal:packageBin cd target/universal/ diff --git a/.github/workflows/c-zephyr-tests.yml b/.github/workflows/c-zephyr-tests.yml index 85ad929d95..7ac3ba4b59 100644 --- a/.github/workflows/c-zephyr-tests.yml +++ b/.github/workflows/c-zephyr-tests.yml @@ -19,7 +19,7 @@ on: jobs: zephyr-tests: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Check out lingua-franca repository uses: actions/checkout@v3 diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml index 49765257c9..3fdb1a8292 100644 --- a/.github/workflows/cancel.yml +++ b/.github/workflows/cancel.yml @@ -6,7 +6,7 @@ on: jobs: cancel: name: run - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 timeout-minutes: 3 steps: - uses: styfle/cancel-workflow-action@0.11.0 diff --git a/.github/workflows/check-diff.yml b/.github/workflows/check-diff.yml index 17e968b76b..b88e68bb4b 100644 --- a/.github/workflows/check-diff.yml +++ b/.github/workflows/check-diff.yml @@ -30,7 +30,7 @@ on: jobs: check: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 outputs: skip: ${{ steps.should-skip.outputs.skip == 'true' }} run_c: ${{ steps.do.outputs.changed_c == 1 || !github.event.pull_request.draft }} diff --git a/.github/workflows/check-labels.yml b/.github/workflows/check-labels.yml index cbe1ee5784..8d4a7050cd 100644 --- a/.github/workflows/check-labels.yml +++ b/.github/workflows/check-labels.yml @@ -5,7 +5,7 @@ on: jobs: check: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Check that a label has been assigned uses: mheap/github-action-required-labels@v5 diff --git a/.github/workflows/cli-tests.yml b/.github/workflows/cli-tests.yml index edcc31b6f8..5b55fd32e7 100644 --- a/.github/workflows/cli-tests.yml +++ b/.github/workflows/cli-tests.yml @@ -12,7 +12,7 @@ jobs: test-cli: strategy: matrix: - platform: ${{ (inputs.all-platforms && fromJSON('["ubuntu-latest", "macos-latest", "windows-latest"]')) || fromJSON('["ubuntu-latest"]') }} + platform: ${{ (inputs.all-platforms && fromJSON('["ubuntu-24.04", "macos-latest", "windows-latest"]')) || fromJSON('["ubuntu-24.04"]') }} runs-on: ${{ matrix.platform }} steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/cpp-ros2-tests.yml b/.github/workflows/cpp-ros2-tests.yml index a3a2e2c9aa..e405caf404 100644 --- a/.github/workflows/cpp-ros2-tests.yml +++ b/.github/workflows/cpp-ros2-tests.yml @@ -12,7 +12,7 @@ on: jobs: cpp-ros2-tests: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Check out lingua-franca repository uses: actions/checkout@v3 diff --git a/.github/workflows/cpp-tests.yml b/.github/workflows/cpp-tests.yml index e7e68ee048..2a4bd61cce 100644 --- a/.github/workflows/cpp-tests.yml +++ b/.github/workflows/cpp-tests.yml @@ -18,7 +18,7 @@ jobs: regular-tests: strategy: matrix: - platform: ${{ (inputs.all-platforms && fromJSON('["ubuntu-latest", "macos-latest", "windows-latest"]')) || fromJSON('["ubuntu-latest"]') }} + platform: ${{ (inputs.all-platforms && fromJSON('["ubuntu-24.04", "macos-latest", "windows-latest"]')) || fromJSON('["ubuntu-24.04"]') }} runs-on: ${{ matrix.platform }} timeout-minutes: 120 steps: @@ -39,7 +39,7 @@ jobs: sudo apt-get update sudo apt-get install -y clang-tidy sudo apt-get install -y lcov - if: matrix.platform == 'ubuntu-latest' + if: matrix.platform == 'ubuntu-24.04' - name: Check out specific ref of reactor-cpp uses: actions/checkout@v2 with: @@ -60,15 +60,15 @@ jobs: lcov --capture --directory test/Cpp --output-file coverage.info lcov --extract coverage.info ${GITHUB_WORKSPACE}/test/Cpp/src-gen/reactor-cpp-default/\* --output-file reactor-cpp.info genhtml reactor-cpp.info --output-directory reactor-cpp.coverage - if: matrix.platform == 'ubuntu-latest' + if: matrix.platform == 'ubuntu-24.04' - name: Upload coverage report uses: actions/upload-artifact@v3 with: name: reactor-cpp.coverage path: reactor-cpp.coverage - if: matrix.platform == 'ubuntu-latest' + if: matrix.platform == 'ubuntu-24.04' - name: Report to CodeCov uses: ./.github/actions/report-code-coverage with: files: reactor-cpp.info - if: ${{ github.repository == 'lf-lang/lingua-franca' && matrix.platform == 'ubuntu-latest' }} + if: ${{ github.repository == 'lf-lang/lingua-franca' && matrix.platform == 'ubuntu-24.04' }} diff --git a/.github/workflows/custom-build.yml b/.github/workflows/custom-build.yml index 9f63be882f..95ee5412fa 100644 --- a/.github/workflows/custom-build.yml +++ b/.github/workflows/custom-build.yml @@ -6,7 +6,7 @@ on: jobs: custom-build: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Check out lingua-franca repository uses: actions/checkout@v3 diff --git a/.github/workflows/extract-ref.yml b/.github/workflows/extract-ref.yml index cb10c29a8b..4ca2af17a1 100644 --- a/.github/workflows/extract-ref.yml +++ b/.github/workflows/extract-ref.yml @@ -14,7 +14,7 @@ on: jobs: extract-ref: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 outputs: ref: ${{ steps.read.outputs.ref }} steps: diff --git a/.github/workflows/latest-release.yml b/.github/workflows/latest-release.yml index 1169ff30ee..edcd874382 100644 --- a/.github/workflows/latest-release.yml +++ b/.github/workflows/latest-release.yml @@ -32,7 +32,7 @@ on: jobs: get-latest-release: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 outputs: ref: ${{ steps.semver.outputs.ref }} ver: ${{ steps.semver.outputs.ver }} diff --git a/.github/workflows/lsp-tests.yml b/.github/workflows/lsp-tests.yml index 115924d686..c73eb4469f 100644 --- a/.github/workflows/lsp-tests.yml +++ b/.github/workflows/lsp-tests.yml @@ -16,7 +16,7 @@ jobs: test-lsp: strategy: matrix: - platform: ${{ (inputs.all-platforms && fromJSON('["ubuntu-latest", "macos-latest", "windows-latest"]')) || fromJSON('["ubuntu-latest"]') }} + platform: ${{ (inputs.all-platforms && fromJSON('["ubuntu-24.04", "macos-latest", "windows-latest"]')) || fromJSON('["ubuntu-24.04"]') }} runs-on: ${{ matrix.platform }} steps: # Uninstall operations are needed because the language server is able to use multiple diff --git a/.github/workflows/nightly-build.yml b/.github/workflows/nightly-build.yml index 199f15ba23..75766e9224 100644 --- a/.github/workflows/nightly-build.yml +++ b/.github/workflows/nightly-build.yml @@ -8,7 +8,7 @@ on: jobs: nightly-build: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Check out lingua-franca repository uses: actions/checkout@v3 diff --git a/.github/workflows/py-tests.yml b/.github/workflows/py-tests.yml index 8a29a886bb..d18908c8f7 100644 --- a/.github/workflows/py-tests.yml +++ b/.github/workflows/py-tests.yml @@ -21,7 +21,7 @@ jobs: regular-tests: strategy: matrix: - platform: ${{ (inputs.all-platforms && fromJSON('["ubuntu-latest", "macos-latest", "windows-latest"]')) || fromJSON('["ubuntu-latest"]') }} + platform: ${{ (inputs.all-platforms && fromJSON('["ubuntu-24.04", "macos-latest", "windows-latest"]')) || fromJSON('["ubuntu-24.04"]') }} runs-on: ${{ matrix.platform }} steps: - name: Check out lingua-franca repository diff --git a/.github/workflows/rs-tests.yml b/.github/workflows/rs-tests.yml index e730f0f7df..bb4171f65d 100644 --- a/.github/workflows/rs-tests.yml +++ b/.github/workflows/rs-tests.yml @@ -24,7 +24,7 @@ jobs: regular-tests: strategy: matrix: - platform: ${{ (inputs.all-platforms && fromJSON('["ubuntu-latest", "macos-latest", "windows-latest"]')) || fromJSON('["ubuntu-latest"]') }} + platform: ${{ (inputs.all-platforms && fromJSON('["ubuntu-24.04", "macos-latest", "windows-latest"]')) || fromJSON('["ubuntu-24.04"]') }} rust: [stable] runs-on: ${{ matrix.platform }} timeout-minutes: 60 diff --git a/.github/workflows/rti-docker.yml b/.github/workflows/rti-docker.yml index c5ba1e0620..f27aed6b01 100644 --- a/.github/workflows/rti-docker.yml +++ b/.github/workflows/rti-docker.yml @@ -9,7 +9,7 @@ on: jobs: build-and-push: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 name: Build and push RTI to Docker Hub steps: - name: Check out lingua-franca repository diff --git a/.github/workflows/serialization-tests.yml b/.github/workflows/serialization-tests.yml index 1fad0490f3..20cc4ffb67 100644 --- a/.github/workflows/serialization-tests.yml +++ b/.github/workflows/serialization-tests.yml @@ -9,7 +9,7 @@ on: jobs: serialization-tests: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Check out lingua-franca repository uses: actions/checkout@v3 @@ -28,11 +28,16 @@ jobs: - name: Install Protobuf Ubuntu run: | sudo apt-get update - sudo apt-get install -y libprotobuf-c-dev protobuf-c-compiler protobuf-compiler libprotobuf-dev python3-protobuf + sudo apt-get install -y libprotobuf-c-dev protobuf-c-compiler protobuf-compiler libprotobuf-dev + npm install -g protoc-gen-js - name: Install LinguaFrancaBase - run: pip3 install LinguaFrancaBase + run: | + python3 -m venv .venv + source .venv/bin/activate + pip install LinguaFrancaBase protobuf - name: Run serialization tests; run: | + source .venv/bin/activate source /opt/ros/*/setup.bash ./gradlew core:integrationTest --tests org.lflang.tests.serialization.SerializationTest.* core:integrationTestCodeCoverageReport - name: Report to CodeCov diff --git a/.github/workflows/ts-tests.yml b/.github/workflows/ts-tests.yml index 5e110e9253..f81db50c19 100644 --- a/.github/workflows/ts-tests.yml +++ b/.github/workflows/ts-tests.yml @@ -12,7 +12,7 @@ jobs: regular-tests: strategy: matrix: - platform: ${{ (inputs.all-platforms && fromJSON('["ubuntu-latest", "macos-latest", "windows-latest"]')) || fromJSON('["ubuntu-latest"]') }} + platform: ${{ (inputs.all-platforms && fromJSON('["ubuntu-24.04", "macos-latest", "windows-latest"]')) || fromJSON('["ubuntu-24.04"]') }} runs-on: ${{ matrix.platform }} timeout-minutes: 120 steps: diff --git a/core/src/main/kotlin/org/lflang/generator/cpp/CppRos2Generator.kt b/core/src/main/kotlin/org/lflang/generator/cpp/CppRos2Generator.kt index 58a7f005a0..bb48c1cc72 100644 --- a/core/src/main/kotlin/org/lflang/generator/cpp/CppRos2Generator.kt +++ b/core/src/main/kotlin/org/lflang/generator/cpp/CppRos2Generator.kt @@ -16,7 +16,7 @@ class CppRos2Generator(generator: CppGenerator) : CppPlatformGenerator(generator private val packageGenerator = CppRos2PackageGenerator(generator, nodeGenerator.nodeName) companion object { - const val DEFAULT_BASE_IMAGE: String = "ros:rolling-ros-base" + const val DEFAULT_BASE_IMAGE: String = "ros:jazzy-ros-base" } override fun generatePlatformFiles() { @@ -116,7 +116,7 @@ class CppRos2Generator(generator: CppGenerator) : CppPlatformGenerator(generator if (script.isNotEmpty()) { return mutableListOf(". src/" + StringEscapeUtils.escapeXSI(script)) } - return mutableListOf(". /opt/ros/rolling/setup.sh") + return mutableListOf(". /opt/ros/jazzy/setup.sh") } override fun getPostBuildCommand(): MutableList { diff --git a/core/src/main/kotlin/org/lflang/generator/cpp/CppStandaloneCmakeGenerator.kt b/core/src/main/kotlin/org/lflang/generator/cpp/CppStandaloneCmakeGenerator.kt index 2c041fe6d2..c064e239a1 100644 --- a/core/src/main/kotlin/org/lflang/generator/cpp/CppStandaloneCmakeGenerator.kt +++ b/core/src/main/kotlin/org/lflang/generator/cpp/CppStandaloneCmakeGenerator.kt @@ -60,7 +60,7 @@ class CppStandaloneCmakeGenerator(private val targetConfig: TargetConfig, privat | if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") | find_program(LCOV_BIN lcov) | if(LCOV_BIN MATCHES "lcov$S") - | set(CMAKE_CXX_FLAGS "$S{CMAKE_CXX_FLAGS} --coverage -fprofile-arcs -ftest-coverage") + | set(CMAKE_CXX_FLAGS "$S{CMAKE_CXX_FLAGS} --coverage -fprofile-arcs -ftest-coverage -fprofile-update=atomic") | else() | message("Not producing code coverage information since lcov was not found") | endif() diff --git a/core/src/main/resources/lib/c/reactor-c b/core/src/main/resources/lib/c/reactor-c index c2437e1f94..a70c3d0f06 160000 --- a/core/src/main/resources/lib/c/reactor-c +++ b/core/src/main/resources/lib/c/reactor-c @@ -1 +1 @@ -Subproject commit c2437e1f948a5d4f2bc487137c3ccb02ca89f631 +Subproject commit a70c3d0f06b4ba8a14272e92dbde0c7e224a74ba diff --git a/core/src/main/resources/lib/cpp/reactor-cpp b/core/src/main/resources/lib/cpp/reactor-cpp index e0df4349bb..d009fdd85b 160000 --- a/core/src/main/resources/lib/cpp/reactor-cpp +++ b/core/src/main/resources/lib/cpp/reactor-cpp @@ -1 +1 @@ -Subproject commit e0df4349bb5726e659d5c6589fa948a18991e2b8 +Subproject commit d009fdd85bf15beb992a3102a99ed91497f8a6fd diff --git a/core/src/main/resources/lib/rs/reactor-rs b/core/src/main/resources/lib/rs/reactor-rs index 10fee74e32..bca71291d2 160000 --- a/core/src/main/resources/lib/rs/reactor-rs +++ b/core/src/main/resources/lib/rs/reactor-rs @@ -1 +1 @@ -Subproject commit 10fee74e32a72f15ec3bc5605d61c27f63c8e037 +Subproject commit bca71291d2b9547863bd42171872203336e9ec3f diff --git a/core/src/main/resources/lib/rs/runtime-version.properties b/core/src/main/resources/lib/rs/runtime-version.properties index 95b59bc67a..2e9a7684bd 100644 --- a/core/src/main/resources/lib/rs/runtime-version.properties +++ b/core/src/main/resources/lib/rs/runtime-version.properties @@ -1 +1 @@ -rs = 10fee74e32a72f15ec3bc5605d61c27f63c8e037 +rs = bca71291d2b9547863bd42171872203336e9ec3f diff --git a/test/Python/src/serialization/CustomSerializer.lf b/test/Python/src/serialization/CustomSerializer.lf index ee1f112ed1..cdb03999c1 100644 --- a/test/Python/src/serialization/CustomSerializer.lf +++ b/test/Python/src/serialization/CustomSerializer.lf @@ -1,13 +1,15 @@ # To run this test, the `pickle_serializer` package must be installed in the Python environment. # Run `pip3 install -e ./test/Python/src/serialization/pickle_serializer` in the project root directory to install the pickle_serializer. target Python { - coordination: decentralized + coordination: decentralized, + files: ["pickle_serializer"] } preamble {= # Note that both federates will try to install the pickle_serializer package. One will likely fail, # but the other will succeed. - os.system("pip install ./src/serialization/pickle_serializer/ --user") + cwd = os.path.abspath(__file__) + os.system(f"pip install {cwd}/../pickle_serializer/") import pickle_serializer =}