name: rocprofiler-sdk Code Restrictions permissions: contents: read # This workflow ensures that certain code restrictions are applied. # For examples, rocprofiler-sdk cannot use std::regex because of issues # when loaded into an application compiled with C++ dual ABI support because # while std::regex itself (and std::regex_traits) being ABI-tagged, # std::__detail::_Scanner is not. Applications compiled with dual ABI support # will either throw an exception or produce a segfault and thus, this workflow # attempts to catch usage of std::regex during CI. on: workflow_dispatch: pull_request: paths: - 'projects/rocprofiler-sdk/**' - '!**/*.md' - '!**/*.rtf' - '!**/*.rst' - '!**/.markdownlint-ci2.yaml' - '!**/.readthedocs.yaml' - '!**/.spellcheck.local.yaml' - '!**/.wordlist.txt' - '!projects/rocprofiler-sdk/.github/workflows/pull_*.yml' - '!projects/rocprofiler-sdk/.github/workflows/linting.yml' - '!projects/rocprofiler-sdk/.github/workflows/markdown_lint.yml' concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: regex: runs-on: ubuntu-22.04 env: FOLDERS: "source/lib/common source/lib/rocprofiler-sdk source/lib/rocprofiler-sdk-roctx source/lib/output source/lib/rocprofiler-sdk-tool" steps: - uses: actions/checkout@v4 - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y python3-pip python3 -m pip install -U cmake-format - name: Apply restriction working-directory: projects/rocprofiler-sdk run: | set +e FILES="$(find ${FOLDERS} -type f -not -name "*.md" -not -name "*.txt")" GREP="$(grep -E -n 'std::regex|' ${FILES})" if [ "${GREP}" != "" ]; then echo -e "\nError! std::regex is not allowed in ${FOLDERS}...\n" echo -e "\nResults:\n" echo "${GREP}" exit 1 fi