Skip to content

Commit 4e56314

Browse files
committed
make some big fat dist quickstart tarballs!!
1 parent 591b6e5 commit 4e56314

7 files changed

Lines changed: 75 additions & 33 deletions

File tree

.github/workflows/release.yml

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ on:
88
tags:
99
- "v*"
1010

11+
env:
12+
WASI_SDK_VERSION: 25
13+
1114
jobs:
1215
release:
1316
runs-on: ubuntu-latest
@@ -20,7 +23,7 @@ jobs:
2023
- name: Install WASI SDK
2124
uses: konsumer/install-wasi-sdk@v1
2225
with:
23-
version: "25"
26+
version: "${{ env.WASI_SDK_VERSION }}"
2427

2528
- uses: extractions/setup-just@v3
2629

@@ -31,10 +34,10 @@ jobs:
3134

3235
- name: Build docs
3336
uses: mattnotmitt/doxygen-action@v1.9.5
34-
37+
3538
- name: Set env
3639
run: echo "ARCHIVE_FILENAME_PREFIX=fastly-compute-sdk-cpp-${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
37-
40+
3841
- name: Archive core dist
3942
run: tar cvf ${{ env.ARCHIVE_FILENAME_PREFIX }}.tar -C target/release/dist fastly libfastly.a
4043

@@ -47,11 +50,28 @@ jobs:
4750
- name: Add quickstart files to quickstart dist
4851
run: tar rvf ${{ env.ARCHIVE_FILENAME_PREFIX }}-quickstart.tar -C quickstart CMakeLists.txt fastly.toml main.cpp README.md
4952

50-
- name: Gzip core dist
51-
run: gzip ${{ env.ARCHIVE_FILENAME_PREFIX }}.tar
53+
- name: Copy quickstart dist tar to multiple platforms
54+
run: |
55+
cp ${{ env.ARCHIVE_FILENAME_PREFIX }}-quickstart.tar ${{ env.ARCHIVE_FILENAME_PREFIX }}-quickstart-wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-arm64-macos.tar
56+
cp ${{ env.ARCHIVE_FILENAME_PREFIX }}-quickstart.tar ${{ env.ARCHIVE_FILENAME_PREFIX }}-quickstart-wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-arm64-linux.tar
57+
cp ${{ env.ARCHIVE_FILENAME_PREFIX }}-quickstart.tar ${{ env.ARCHIVE_FILENAME_PREFIX }}-quickstart-wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-x86_64_macos.tar
58+
cp ${{ env.ARCHIVE_FILENAME_PREFIX }}-quickstart.tar ${{ env.ARCHIVE_FILENAME_PREFIX }}-quickstart-wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-x86_64_linux.tar
59+
cp ${{ env.ARCHIVE_FILENAME_PREFIX }}-quickstart.tar ${{ env.ARCHIVE_FILENAME_PREFIX }}-quickstart-wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-x86_64_windows.tar
60+
61+
- name: Fetch wasi-sdk tarballs
62+
run: |
63+
wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${{ env.WASI_SDK_VERSION}}/wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-arm64-linux.tar.gz https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${{ env.WASI_SDK_VERSION}}/wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-arm64-macos.tar.gz https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${{ env.WASI_SDK_VERSION}}/wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-x86_64-linux.tar.gz https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${{ env.WASI_SDK_VERSION}}/wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-x86_64-macos.tar.gz https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${{ env.WASI_SDK_VERSION}}/wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-x86_64-windows.tar.gz
64+
65+
- name: Gzip tarballs
66+
run: gzip ${{ env.ARCHIVE_FILENAME_PREFIX }}.tar ${{ env.ARCHIVE_FILENAME_PREFIX }}-quickstart.tar
5267

53-
- name: Gzip quickstart dist
54-
run: gzip ${{ env.ARCHIVE_FILENAME_PREFIX }}-quickstart.tar
68+
- name: Concat wasi-sdks into fat quickstart tarballs
69+
run: |
70+
cat ${{ env.ARCHIVE_FILENAME_PREFIX }}-quickstart.tar.gz wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-arm64-linux.tar.gz > ${{ env.ARCHIVE_FILENAME_PREFIX }}-quickstart-wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-arm64-linux.tar.gz
71+
cat ${{ env.ARCHIVE_FILENAME_PREFIX }}-quickstart.tar.gz wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-arm64-macos.tar.gz > ${{ env.ARCHIVE_FILENAME_PREFIX }}-quickstart-wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-arm64-macos.tar.gz
72+
cat ${{ env.ARCHIVE_FILENAME_PREFIX }}-quickstart.tar.gz wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-x86_64-macos.tar.gz > ${{ env.ARCHIVE_FILENAME_PREFIX }}-quickstart-wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-x86_64-macos.tar.gz
73+
cat ${{ env.ARCHIVE_FILENAME_PREFIX }}-quickstart.tar.gz wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-x86_64-linux.tar.gz > ${{ env.ARCHIVE_FILENAME_PREFIX }}-quickstart-wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-x86_64-linux.tar.gz
74+
cat ${{ env.ARCHIVE_FILENAME_PREFIX }}-quickstart.tar.gz wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-x86_64-windows.tar.gz > ${{ env.ARCHIVE_FILENAME_PREFIX }}-quickstart-wasi-sdk-${{ env.WASI_SDK_VERSION }}.0-x86_64-windows.tar.gz
5575
5676
- uses: ncipollo/release-action@v1
5777
with:

README.md

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,16 @@ To use the SDK from the prebuilt static library, all you need is:
2828
2929
#### Quickstart
3030

31-
The fastest way to get started with the SDK is to fetch
32-
`fastly-compute-sdk-cpp-quickstart-vX.Y.Z.tar.gz` from the [latest GitHub Release's
33-
assets list](https://github.com/fastly/compute-sdk-cpp/releases/latest). This
34-
tarball includes a full prebuilt version of the library, its headers, a copy of
35-
the full reference docs, and a set of quickstart files with a preconfigured,
36-
CMake-based project.
31+
The fastest way to get started with the SDK is to fetch one of the `quickstart`
32+
tarballs from the [latest GitHub Release's assets
33+
list](https://github.com/fastly/compute-sdk-cpp/releases/latest). This tarball
34+
includes a full prebuilt version of the library, its headers, a copy of the full
35+
reference docs, and a set of quickstart files with a preconfigured, CMake-based
36+
project.
37+
38+
The tarballs that include `-wasi-sdk-` in their name additionally include a full
39+
copy of an appropriate `wasi-sdk` version such that your only system requirement
40+
after downloading will be `cmake`.
3741

3842
#### Just the SDK
3943

quickstart/.fastlyignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
build
2+
bin

quickstart/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
build
2+
bin

quickstart/CMakeLists.txt

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,24 @@ cmake_minimum_required(VERSION 3.15)
33
# Set this wherever you have the `libfastly.a` + `fastly/*.h`
44
set(FASTLY_RELEASE_LOCATION ${CMAKE_CURRENT_SOURCE_DIR})
55

6+
set(WASI_SDK_VERSION 25)
67
if(!WASI_SDK)
7-
set(WASI_SDK "/opt/wasi-sdk")
8+
if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
9+
set(WASI_OS "macos")
10+
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
11+
set(WASI_OS "windows")
12+
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
13+
set(WASI_OS "linux")
14+
else()
15+
message(FATAL_ERROR "Unsupported wasi-sdk OS ${CMAKE_SYSTEM_NAME}.")
16+
endif()
17+
set(WASI_SDK ${CMAKE_CURRENT_SOURCE_DIR}/wasi-sdk-${WASI_SDK_VERSION}.0-${CMAKE_HOST_SYSTEM_PROCESSOR}-${WASI_OS})
18+
if(NOT EXISTS ${WASI_SDK})
19+
set(WASI_SDK "/opt/wasi-sdk")
20+
endif()
21+
if(NOT EXISTS ${WASI_SDK})
22+
message(FATAL_ERROR "No wasi-sdk ${WASI_SDK_VERSION}.0 found! Please set `WASI_SDK` to an appropriate path.")
23+
endif()
824
endif()
925
set(CMAKE_C_COMPILER "${WASI_SDK}/bin/clang")
1026
set(CMAKE_CXX_COMPILER "${WASI_SDK}/bin/clang++")

quickstart/README.md

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,33 +10,27 @@ scaffolded request handler.
1010
This project should be ready to use as soon as you extract the tarball from the
1111
GitHub release, as long as you have the following prerequisites installed:
1212

13-
- `wasi-sdk`, version `25.0` \*
1413
- `cmake` and `make`
14+
- `wasi-sdk`, version `25.0` \*
1515

16-
\* Located at `/opt/wasi-sdk`. If you place it elsewhere, you'll need to pass
17-
`-DWASI_SDK=/path/to/wasi-sdk-dist` when you configure with `cmake`.
16+
\* Already included if you used one of the `-quickstart-wasi-sdk-` tarballs.
17+
Otherwise, assumed to be located at `/opt/wasi-sdk`. If you place it elsewhere,
18+
you'll need to pass `-DWASI_SDK=/path/to/wasi-sdk-dist` when you configure with
19+
`cmake`.
1820

1921
### Getting Started
2022

21-
Assuming you're in the `quickstart` directory:
23+
Assuming you're in the `quickstart` directory, you should be able to simply use
24+
the [Fastly CLI](https://www.fastly.com/documentation/reference/cli/) to run
25+
your Compute app locally:
2226

2327
```shell
24-
cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=/opt/wasi-sdk/share/cmake/wasi-sdk-p1.cmake
28+
fastly compute serve --watch
2529
```
2630

27-
Then, run the build:
28-
29-
```shell
30-
cmake --build build
31-
```
32-
33-
Now you should be able to use the [Fastly
34-
CLI](https://www.fastly.com/documentation/reference/cli/) to run your Compute
35-
app locally:
36-
37-
```shell
38-
fastly compute serve -C examples --file build/main.wasm
39-
```
31+
> [!note]
32+
> This relies on `scripts.build` in the quickstart's `fastly.toml`. You can use
33+
> that as a baseline for your own command running setup.
4034
4135
And you can curl the app directly from there:
4236

@@ -49,7 +43,8 @@ curl -d "hello, world!" http://127.0.0.1:7676/
4943
> binary, though that will remove useful debug symbols:
5044
>
5145
> ```shell
52-
> /opt/wasi-sdk/bin/strip build/main.wasm
46+
> # You can add this to your fastly.toml build script
47+
> /opt/wasi-sdk/bin/strip bin/main.wasm
5348
> ```
5449
5550
✨Happy hacking!

quickstart/fastly.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,6 @@ service_id = ""
1212
[local_server]
1313
backends.fastly.url = "https://www.fastly.com"
1414
backends.wikipedia.url = "https://en.wikipedia.org"
15+
16+
[scripts]
17+
build = "cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=/opt/wasi-sdk/share/cmake/wasi-sdk-p1.cmake && cmake --build build && cp build/main.wasm bin/main.wasm"

0 commit comments

Comments
 (0)