blob: 270ca9364c3b0092a79f189518b071bf6491fb3d [file] [log] [blame]
# 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 }}"