name: Simulator on: [push, pull_request] jobs: # This is just to ensure the simulator compiles on Linux build-simulator: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # todo: how to reduce code duplication of submodules list? - name: Checkout Submodules run: | git submodule update --init --depth=1 firmware/ChibiOS git submodule update --init --depth=1 firmware/ChibiOS-Contrib git submodule update --init --depth=1 firmware/libfirmware git submodule update --init --depth=1 firmware/ext/lua git submodule update --init --depth=1 firmware/controllers/lua/luaaa git submodule update --init --depth=1 firmware/controllers/can/wideband_firmware git submodule update --init --depth=1 java_console/luaformatter git submodule update --init --depth=1 java_console/peak-can-basic - name: Print GCC version working-directory: . run: gcc -v - name: Install multilib run: | sudo bash misc/actions/add-ubuntu-latest-apt-mirrors.sh sudo apt-get install gcc-multilib g++-multilib mtools dosfstools zip - uses: actions/setup-java@v4 with: distribution: 'zulu' java-version: '11' - name: Code generation tools working-directory: ./java_tools run: ./gradlew :config_definition:shadowJar - name: Generate Configs, Enums & Live Documentation working-directory: ./firmware/ run: ./gen_default_everything.sh - name: Gradle autotest java Using freshly generated java code working-directory: ./java_tools run: ./gradlew :autotest:shadowJar - name: Compile Linux Simulator working-directory: ./simulator/ run: make -j$(nproc) -r - name: Run Simulator Functional Test working-directory: ./java_tools/ run: ./gradlew simulatorFunctionalTestLauncherWithSimulator - name: Run Linux Simulator for 10 seconds working-directory: ./simulator/ run: ./build/rusefi_simulator 10 - name: Git Status and Simulator generated folder Status run: | git status ls -l simulator/generated/ - name: Gradle tune-tools working-directory: ./java_tools run: ./gradlew :tune-tools:shadowJar - name: Convert .bin from Linux Simulator into .xml working-directory: ./simulator/ run: ./write_tune.sh - name: Commit fresh generated default simulator tune if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} env: ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' run: | git config --local user.email "action@github.com" git config --local user.name "GitHub gen-default-tune Action" echo See https://github.com/rusefi/rusefi/issues/2446 echo "Status 1/3" git status # not our place to update live data etc FILES=$(git status --porcelain | grep -e "\.java" -e "\.ini" -e "\.h"| cut -d' ' -f3) [ -n "$FILES" ] && git restore $FILES echo "Status 2/3" git status git pull https://github.com/rusefi/rusefi master git add 'simulator/generated/*msq' git add 'simulator/generated/canned-tunes/*md' echo "Status 3/3" git status OUT=$(git commit -am "Auto-generated default tune" 2>&1) || echo "commit failed, finding out why" if echo "$OUT" | grep 'nothing to commit'; then echo "default tune: looks like nothing to commit" echo "NOCOMMIT=true" >> $GITHUB_ENV exit 0 elif echo "$OUT" | grep 'changed'; then echo "default tune: looks like something has changed" exit 0 else echo "default tune: looks like something unexpected" exit 1 fi - name: Push fresh default tune if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && env.NOCOMMIT != 'true'}} uses: ad-m/github-push-action@master with: github_token: ${{ github.token }} branch: ${{ steps.extract_branch.outputs.branch }} - name: Upload Linux built simulator uses: actions/upload-artifact@v4 with: name: rusefi_simulator_linux path: ./simulator/build/rusefi_simulator