properly handle unix read on directory #6030
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Windows | |
on: | |
pull_request: | |
push: | |
branches: | |
- dev | |
- release | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build-windows: | |
runs-on: windows-2022 | |
outputs: | |
version: ${{ steps.version.outputs.version }} | |
steps: | |
- name: Configure pagefile | |
uses: al-cheb/[email protected] | |
with: | |
minimum-size: 8GB | |
maximum-size: 24GB | |
disk-root: "C:" | |
- uses: brechtm/setup-scoop@v2 | |
with: | |
scoop_update: 'false' | |
- name: Install Dependencies | |
shell: bash | |
run: | | |
scoop install ninja binaryen | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Extract TinyGo version | |
id: version | |
shell: bash | |
run: ./.github/workflows/tinygo-extract-version.sh | tee -a "$GITHUB_OUTPUT" | |
- name: Install Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.23' | |
cache: true | |
- name: Restore cached LLVM source | |
uses: actions/cache/restore@v4 | |
id: cache-llvm-source | |
with: | |
key: llvm-source-18-windows-v1 | |
path: | | |
llvm-project/clang/lib/Headers | |
llvm-project/clang/include | |
llvm-project/compiler-rt | |
llvm-project/lld/include | |
llvm-project/llvm/include | |
- name: Download LLVM source | |
if: steps.cache-llvm-source.outputs.cache-hit != 'true' | |
run: make llvm-source | |
- name: Save cached LLVM source | |
uses: actions/cache/save@v4 | |
if: steps.cache-llvm-source.outputs.cache-hit != 'true' | |
with: | |
key: ${{ steps.cache-llvm-source.outputs.cache-primary-key }} | |
path: | | |
llvm-project/clang/lib/Headers | |
llvm-project/clang/include | |
llvm-project/compiler-rt | |
llvm-project/lld/include | |
llvm-project/llvm/include | |
- name: Restore cached LLVM build | |
uses: actions/cache/restore@v4 | |
id: cache-llvm-build | |
with: | |
key: llvm-build-18-windows-v2 | |
path: llvm-build | |
- name: Build LLVM | |
if: steps.cache-llvm-build.outputs.cache-hit != 'true' | |
shell: bash | |
run: | | |
# fetch LLVM source | |
rm -rf llvm-project | |
make llvm-source | |
# build! | |
make llvm-build CCACHE=OFF | |
# Remove unnecessary object files (to reduce cache size). | |
find llvm-build -name CMakeFiles -prune -exec rm -r '{}' \; | |
- name: Save cached LLVM build | |
uses: actions/cache/save@v4 | |
if: steps.cache-llvm-build.outputs.cache-hit != 'true' | |
with: | |
key: ${{ steps.cache-llvm-build.outputs.cache-primary-key }} | |
path: llvm-build | |
- name: Cache wasi-libc sysroot | |
uses: actions/cache@v4 | |
id: cache-wasi-libc | |
with: | |
key: wasi-libc-sysroot-v5 | |
path: lib/wasi-libc/sysroot | |
- name: Build wasi-libc | |
if: steps.cache-wasi-libc.outputs.cache-hit != 'true' | |
run: make wasi-libc | |
- name: Cache Go cache | |
uses: actions/cache@v4 | |
with: | |
key: go-cache-windows-v1-${{ hashFiles('go.mod') }} | |
path: | | |
C:/Users/runneradmin/AppData/Local/go-build | |
C:/Users/runneradmin/go/pkg/mod | |
- name: Install wasmtime | |
run: | | |
scoop install [email protected] | |
- name: make gen-device | |
run: make -j3 gen-device | |
- name: Test TinyGo | |
shell: bash | |
run: make test GOTESTFLAGS="-short" | |
- name: Build TinyGo release tarball | |
shell: bash | |
run: make build/release -j4 | |
- name: Make release artifact | |
shell: bash | |
working-directory: build/release | |
run: 7z -tzip a tinygo${{ steps.version.outputs.version }}.windows-amd64.zip tinygo | |
- name: Publish release artifact | |
# Note: this release artifact is double-zipped, see: | |
# https://github.com/actions/upload-artifact/issues/39 | |
# We can essentially pick one of these: | |
# - have a dobule-zipped artifact when downloaded from the UI | |
# - have a very slow artifact upload | |
# We're doing the former here, to keep artifact uploads fast. | |
uses: actions/upload-artifact@v4 | |
with: | |
name: windows-amd64-double-zipped-${{ steps.version.outputs.version }} | |
path: build/release/tinygo${{ steps.version.outputs.version }}.windows-amd64.zip | |
smoke-test-windows: | |
runs-on: windows-2022 | |
needs: build-windows | |
steps: | |
- name: Configure pagefile | |
uses: al-cheb/[email protected] | |
with: | |
minimum-size: 8GB | |
maximum-size: 24GB | |
disk-root: "C:" | |
- uses: brechtm/setup-scoop@v2 | |
with: | |
scoop_update: 'false' | |
- name: Install Dependencies | |
shell: bash | |
run: | | |
scoop install binaryen | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.23' | |
cache: true | |
- name: Download TinyGo build | |
uses: actions/download-artifact@v4 | |
with: | |
name: windows-amd64-double-zipped-${{ needs.build-windows.outputs.version }} | |
path: build/ | |
- name: Unzip TinyGo build | |
shell: bash | |
working-directory: build | |
run: 7z x tinygo*.windows-amd64.zip -r | |
- name: Smoke tests | |
shell: bash | |
run: make smoketest TINYGO=$(PWD)/build/tinygo/bin/tinygo | |
stdlib-test-windows: | |
runs-on: windows-2022 | |
needs: build-windows | |
steps: | |
- name: Configure pagefile | |
uses: al-cheb/[email protected] | |
with: | |
minimum-size: 8GB | |
maximum-size: 24GB | |
disk-root: "C:" | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.23' | |
cache: true | |
- name: Download TinyGo build | |
uses: actions/download-artifact@v4 | |
with: | |
name: windows-amd64-double-zipped-${{ needs.build-windows.outputs.version }} | |
path: build/ | |
- name: Unzip TinyGo build | |
shell: bash | |
working-directory: build | |
run: 7z x tinygo*.windows-amd64.zip -r | |
- name: Test stdlib packages | |
run: make tinygo-test TINYGO=$(PWD)/build/tinygo/bin/tinygo | |
stdlib-wasi-test-windows: | |
runs-on: windows-2022 | |
needs: build-windows | |
steps: | |
- name: Configure pagefile | |
uses: al-cheb/[email protected] | |
with: | |
minimum-size: 8GB | |
maximum-size: 24GB | |
disk-root: "C:" | |
- uses: brechtm/setup-scoop@v2 | |
with: | |
scoop_update: 'false' | |
- name: Install Dependencies | |
shell: bash | |
run: | | |
scoop install binaryen && scoop install [email protected] | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.23' | |
cache: true | |
- name: Download TinyGo build | |
uses: actions/download-artifact@v4 | |
with: | |
name: windows-amd64-double-zipped-${{ needs.build-windows.outputs.version }} | |
path: build/ | |
- name: Unzip TinyGo build | |
shell: bash | |
working-directory: build | |
run: 7z x tinygo*.windows-amd64.zip -r | |
- name: Test stdlib packages on wasip1 | |
run: make tinygo-test-wasip1-fast TINYGO=$(PWD)/build/tinygo/bin/tinygo |