| # Copyright 2022 The IREE Authors |
| # |
| # Licensed under the Apache License v2.0 with LLVM Exceptions. |
| # See https://llvm.org/LICENSE.txt for license information. |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| |
| on: |
| workflow_call: |
| inputs: |
| host-binary-root: |
| required: true |
| type: string |
| enable-assertions: |
| required: false |
| type: string # Thanks CMake and Bash for not having proper booleans |
| default: "OFF" |
| outputs: |
| host-binary-root: |
| # Pass through the root directory as an output, so it's available to |
| # dependent jobs. |
| # For some incomprehensible reason, even though the inputs context is |
| # available here, if you use it directly this will just be an empty |
| # string. Not an error, just a silent failure. So we have pass the input |
| # down to a job and then make it an output of that job and then make it |
| # an output of this. Of course, the only reason we need to pass this |
| # around at all is because we can't have variables or directly access |
| # the inputs to this workflow in dependen workflows. Because why have a |
| # simple programming model when you could have one that is just the |
| # minimal union of use cases you could come up with. |
| value: ${{ jobs.host_tools.outputs.host-binary-root }} |
| |
| jobs: |
| host_tools: |
| runs-on: |
| # self-hosted has to be listed first. See |
| # https://docs.github.com/en/actions/hosting-your-own-runners/using-self-hosted-runners-in-a-workflow |
| - self-hosted |
| # Have to do a weird hack to get a pseudo-ternary operator. See |
| # https://github.com/actions/runner/issues/409. Also note that |
| # `github.event_name` for workflow_call is the name of the calling event, |
| # which is poorly documented, but useful for us here. See |
| # https://github.com/github/docs/issues/16515 |
| - runner-group=${{ github.event_name == 'pull_request' && 'presubmit' || 'postsubmit' }} |
| - cpu |
| - os-family=Linux |
| env: |
| HOST_BINARY_ROOT: ${{ inputs.host-binary-root }} |
| HOST_BINARY_ARCHIVE: ${{ inputs.host-binary-root }}.tar |
| outputs: |
| host-binary-root: ${{ inputs.host-binary-root }} |
| steps: |
| - name: "Checking out repository" |
| uses: actions/checkout@7884fcad6b5d53d10323aee724dc68d8b9096a2e # v2 |
| with: |
| submodules: true |
| - name: "Building host tools" |
| run: | |
| ./build_tools/github_actions/docker_run.sh \ |
| --env "INSTALL_DIR=${HOST_BINARY_ROOT}" \ |
| gcr.io/iree-oss/base@sha256:9d742e01507c292def852cbfebfae71412cff94df0ab2619f61f9a5a2a98f651 \ |
| ./build_tools/cmake/build_host_tools.sh |
| # Using a tar archive is necessary to preserve file permissions. See |
| # https://github.com/actions/upload-artifact#maintaining-file-permissions-and-case-sensitive-files |
| # The upload action already does its own gzip compression, so it's likely |
| # unnecessary (and perhaps harmful) to do our own, though that hasn't been |
| # investigated. |
| - name: "Creating host tools archive" |
| run: tar -cvf "${HOST_BINARY_ARCHIVE}" "${HOST_BINARY_ROOT}" |
| - uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 |
| with: |
| name: "${{ env.HOST_BINARY_ARCHIVE }}" |
| path: "${{ env.HOST_BINARY_ARCHIVE }}" |