diff --git a/.github/workflows/__cpp-deptrace-disabled.yml b/.github/workflows/__cpp-deptrace-disabled.yml new file mode 100644 index 0000000000..cf6dced2be --- /dev/null +++ b/.github/workflows/__cpp-deptrace-disabled.yml @@ -0,0 +1,78 @@ +# Warning: This file is generated automatically, and should not be modified. +# Instead, please modify the template in the pr-checks directory and run: +# (cd pr-checks; pip install ruamel.yaml@0.17.31 && python3 sync.py) +# to regenerate this file. + +name: 'PR Check - C/C++: disabling autoinstalling dependencies (Linux)' +env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GO111MODULE: auto + CODEQL_EXTRACTOR_JAVA_AGENT_DISABLE_KOTLIN: 'true' +on: + push: + branches: + - main + - releases/v2 + pull_request: + types: + - opened + - synchronize + - reopened + - ready_for_review + workflow_dispatch: {} +jobs: + cpp-deptrace-disabled: + strategy: + matrix: + include: + - os: ubuntu-latest + version: latest + - os: ubuntu-latest + version: default + - os: ubuntu-latest + version: nightly-latest + name: 'C/C++: disabling autoinstalling dependencies (Linux)' + permissions: + contents: read + security-events: write + timeout-minutes: 45 + runs-on: ${{ matrix.os }} + steps: + - name: Check out repository + uses: actions/checkout@v4 + - name: Prepare test + id: prepare-test + uses: ./.github/actions/prepare-test + with: + version: ${{ matrix.version }} + use-all-platform-bundle: 'false' + - name: Set environment variable for Swift enablement + if: >- + runner.os != 'Windows' && ( + matrix.version == '20220908' || + matrix.version == '20221211' + ) + shell: bash + run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV + - name: Test setup + shell: bash + run: | + cp -a ../action/tests/cpp-autobuild autobuild-dir + - uses: ./../action/init + with: + languages: cpp + tools: ${{ steps.prepare-test.outputs.tools-url }} + - uses: ./../action/autobuild + with: + working-directory: autobuild-dir + env: + CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES: false + - shell: bash + run: | + if ls /usr/bin/errno; then + echo "C/C++ autobuild installed errno, but it should not have since auto-install dependencies is disabled." + exit 1 + fi + env: + DOTNET_GENERATE_ASPNET_CERTIFICATE: 'false' + CODEQL_ACTION_TEST_MODE: true diff --git a/.github/workflows/__cpp-deptrace-enabled-on-macos.yml b/.github/workflows/__cpp-deptrace-enabled-on-macos.yml new file mode 100644 index 0000000000..97ab748d83 --- /dev/null +++ b/.github/workflows/__cpp-deptrace-enabled-on-macos.yml @@ -0,0 +1,76 @@ +# Warning: This file is generated automatically, and should not be modified. +# Instead, please modify the template in the pr-checks directory and run: +# (cd pr-checks; pip install ruamel.yaml@0.17.31 && python3 sync.py) +# to regenerate this file. + +name: 'PR Check - C/C++: autoinstalling dependencies is skipped (macOS)' +env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GO111MODULE: auto + CODEQL_EXTRACTOR_JAVA_AGENT_DISABLE_KOTLIN: 'true' +on: + push: + branches: + - main + - releases/v2 + pull_request: + types: + - opened + - synchronize + - reopened + - ready_for_review + workflow_dispatch: {} +jobs: + cpp-deptrace-enabled-on-macos: + strategy: + matrix: + include: + - os: macos-latest + version: nightly-latest + name: 'C/C++: autoinstalling dependencies is skipped (macOS)' + permissions: + contents: read + security-events: write + timeout-minutes: 45 + runs-on: ${{ matrix.os }} + steps: + - name: Check out repository + uses: actions/checkout@v4 + - name: Prepare test + id: prepare-test + uses: ./.github/actions/prepare-test + with: + version: ${{ matrix.version }} + use-all-platform-bundle: 'false' + - name: Set environment variable for Swift enablement + if: >- + runner.os != 'Windows' && ( + matrix.version == '20220908' || + matrix.version == '20221211' + ) + shell: bash + run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV + - name: Test setup + shell: bash + run: | + cp -a ../action/tests/cpp-autobuild autobuild-dir + - uses: ./../action/init + with: + languages: cpp + tools: ${{ steps.prepare-test.outputs.tools-url }} + - uses: ./../action/autobuild + with: + working-directory: autobuild-dir + env: + CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES: true + - shell: bash + run: | + if ! ls /usr/bin/errno; then + echo "As expected, CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES is a no-op on macOS" + else + echo "CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES should not have had any effect on macOS" + exit 1 + fi + env: + DOTNET_GENERATE_ASPNET_CERTIFICATE: 'false' + CODEQL_ACTION_TEST_MODE: true diff --git a/.github/workflows/__cpp-deptrace-enabled.yml b/.github/workflows/__cpp-deptrace-enabled.yml new file mode 100644 index 0000000000..375d1b0bfb --- /dev/null +++ b/.github/workflows/__cpp-deptrace-enabled.yml @@ -0,0 +1,78 @@ +# Warning: This file is generated automatically, and should not be modified. +# Instead, please modify the template in the pr-checks directory and run: +# (cd pr-checks; pip install ruamel.yaml@0.17.31 && python3 sync.py) +# to regenerate this file. + +name: 'PR Check - C/C++: autoinstalling dependencies (Linux)' +env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GO111MODULE: auto + CODEQL_EXTRACTOR_JAVA_AGENT_DISABLE_KOTLIN: 'true' +on: + push: + branches: + - main + - releases/v2 + pull_request: + types: + - opened + - synchronize + - reopened + - ready_for_review + workflow_dispatch: {} +jobs: + cpp-deptrace-enabled: + strategy: + matrix: + include: + - os: ubuntu-latest + version: latest + - os: ubuntu-latest + version: default + - os: ubuntu-latest + version: nightly-latest + name: 'C/C++: autoinstalling dependencies (Linux)' + permissions: + contents: read + security-events: write + timeout-minutes: 45 + runs-on: ${{ matrix.os }} + steps: + - name: Check out repository + uses: actions/checkout@v4 + - name: Prepare test + id: prepare-test + uses: ./.github/actions/prepare-test + with: + version: ${{ matrix.version }} + use-all-platform-bundle: 'false' + - name: Set environment variable for Swift enablement + if: >- + runner.os != 'Windows' && ( + matrix.version == '20220908' || + matrix.version == '20221211' + ) + shell: bash + run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV + - name: Test setup + shell: bash + run: | + cp -a ../action/tests/cpp-autobuild autobuild-dir + - uses: ./../action/init + with: + languages: cpp + tools: ${{ steps.prepare-test.outputs.tools-url }} + - uses: ./../action/autobuild + with: + working-directory: autobuild-dir + env: + CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES: true + - shell: bash + run: | + if ! ls /usr/bin/errno; then + echo "Did not autoinstall errno" + exit 1 + fi + env: + DOTNET_GENERATE_ASPNET_CERTIFICATE: 'false' + CODEQL_ACTION_TEST_MODE: true diff --git a/pr-checks/checks/cpp-deptrace-disabled.yml b/pr-checks/checks/cpp-deptrace-disabled.yml new file mode 100644 index 0000000000..118d01ae1c --- /dev/null +++ b/pr-checks/checks/cpp-deptrace-disabled.yml @@ -0,0 +1,26 @@ +name: "C/C++: disabling autoinstalling dependencies (Linux)" +description: "Checks that running C/C++ autobuild with autoinstalling dependencies explicitly disabled works" +operatingSystems: ["ubuntu"] +versions: ["latest", "default", "nightly-latest"] # This feature is not compatible with CLIs < 2.15.0 +env: + DOTNET_GENERATE_ASPNET_CERTIFICATE: "false" +steps: + - name: Test setup + shell: bash + run: | + cp -a ../action/tests/cpp-autobuild autobuild-dir + - uses: ./../action/init + with: + languages: cpp + tools: ${{ steps.prepare-test.outputs.tools-url }} + - uses: ./../action/autobuild + with: + working-directory: autobuild-dir + env: + CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES: false + - shell: bash + run: | + if ls /usr/bin/errno; then + echo "C/C++ autobuild installed errno, but it should not have since auto-install dependencies is disabled." + exit 1 + fi diff --git a/pr-checks/checks/cpp-deptrace-enabled-on-macos.yml b/pr-checks/checks/cpp-deptrace-enabled-on-macos.yml new file mode 100644 index 0000000000..8a70f82fa5 --- /dev/null +++ b/pr-checks/checks/cpp-deptrace-enabled-on-macos.yml @@ -0,0 +1,28 @@ +name: "C/C++: autoinstalling dependencies is skipped (macOS)" +description: "Checks that running C/C++ autobuild with autoinstalling dependencies explicitly enabled is a no-op on macOS" +operatingSystems: ["macos"] +versions: ["nightly-latest"] # This is not released yet, will come with 2.15.2 +env: + DOTNET_GENERATE_ASPNET_CERTIFICATE: "false" +steps: + - name: Test setup + shell: bash + run: | + cp -a ../action/tests/cpp-autobuild autobuild-dir + - uses: ./../action/init + with: + languages: cpp + tools: ${{ steps.prepare-test.outputs.tools-url }} + - uses: ./../action/autobuild + with: + working-directory: autobuild-dir + env: + CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES: true + - shell: bash + run: | + if ! ls /usr/bin/errno; then + echo "As expected, CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES is a no-op on macOS" + else + echo "CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES should not have had any effect on macOS" + exit 1 + fi diff --git a/pr-checks/checks/cpp-deptrace-enabled.yml b/pr-checks/checks/cpp-deptrace-enabled.yml new file mode 100644 index 0000000000..b3f7b1b733 --- /dev/null +++ b/pr-checks/checks/cpp-deptrace-enabled.yml @@ -0,0 +1,26 @@ +name: "C/C++: autoinstalling dependencies (Linux)" +description: "Checks that running C/C++ autobuild with autoinstalling dependencies works" +operatingSystems: ["ubuntu"] +versions: ["latest", "default", "nightly-latest"] # This feature is not compatible with CLIs < 2.15.0 +env: + DOTNET_GENERATE_ASPNET_CERTIFICATE: "false" +steps: + - name: Test setup + shell: bash + run: | + cp -a ../action/tests/cpp-autobuild autobuild-dir + - uses: ./../action/init + with: + languages: cpp + tools: ${{ steps.prepare-test.outputs.tools-url }} + - uses: ./../action/autobuild + with: + working-directory: autobuild-dir + env: + CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES: true + - shell: bash + run: | + if ! ls /usr/bin/errno; then + echo "Did not autoinstall errno" + exit 1 + fi diff --git a/tests/cpp-autobuild/src/build.sh b/tests/cpp-autobuild/src/build.sh new file mode 100755 index 0000000000..8a8ae2683c --- /dev/null +++ b/tests/cpp-autobuild/src/build.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +errno || true # just a command to check its autoinstallation by deptrace + +gcc -o main main.c diff --git a/tests/cpp-autobuild/src/main.c b/tests/cpp-autobuild/src/main.c new file mode 100644 index 0000000000..846028e8f2 --- /dev/null +++ b/tests/cpp-autobuild/src/main.c @@ -0,0 +1,8 @@ +#include "stdio.h" + +int main(int argc, char **argv) { + if (1) { + printf("Hello, World!\n"); + } +} +