Skip to content

Commit 5cdd796

Browse files
authored
examples: add jwt example (#43)
* examples: add jwt example * nits: run python formatting * nits
1 parent 173c29b commit 5cdd796

File tree

9 files changed

+120
-3
lines changed

9 files changed

+120
-3
lines changed

.github/workflows/tests.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,12 @@ jobs:
6767
uses: actions/checkout@v4
6868
with:
6969
submodules: true
70-
- name: "Build Rabe"
70+
- name: "Build Rabe and JWT"
7171
run: |
7272
export PATH=$PATH:/root/.cargo/env
7373
rustup default stable
7474
rustup target add wasm32-wasip1
75-
./bin/inv_wrapper.sh rabe
75+
./bin/inv_wrapper.sh rabe jwt
7676
- name: "Build FFmpeg"
7777
run: ./bin/inv_wrapper.sh ffmpeg
7878
- name: "Build ImageMagick"
@@ -292,6 +292,12 @@ jobs:
292292
# if: "contains(env.FAASM_WASM_VM, 'wamr')"
293293
# timeout-minutes: 1
294294
# run: faasmctl invoke rabe test
295+
# TODO(faasm-bump): this is working, but we need to cut a new faasm release, uncomment
296+
# when we do
297+
# - name: "Run Rabe test"
298+
# if: "contains(env.FAASM_WASM_VM, 'wamr')"
299+
# timeout-minutes: 1
300+
# run: faasmctl invoke jwt test
295301
- name: "Print logs in case of failure"
296302
if: failure()
297303
run: faasmctl logs -s worker

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,6 @@
5151
path = examples/rabe
5252
url = https://github.com/faasm/rabe.git
5353
branch = faasm
54+
[submodule "examples/tless-jwt"]
55+
path = examples/tless-jwt
56+
url = https://github.com/faasm/tless-jwt.git

docker/build.dockerfile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ RUN mkdir -p code \
4747
&& git submodule update --init -f examples/libpng \
4848
&& git submodule update --init -f examples/polybench \
4949
&& git submodule update --init -f examples/rabe \
50-
&& git submodule update --init -f examples/tensorflow
50+
&& git submodule update --init -f examples/tensorflow \
51+
&& git submodule update --init -f examples/tless-jwt
5152

5253
# Build the examples and demo functions
5354
ENV PATH=${PATH}:/root/.cargo/bin
@@ -63,6 +64,7 @@ RUN cd /code/examples \
6364
&& inv polybench --native \
6465
# Build the WASM applications
6566
&& inv ffmpeg \
67+
&& inv jwt \
6668
# ImageMagick needs libpng
6769
&& inv libpng imagemagick \
6870
&& inv kernels \
@@ -75,6 +77,7 @@ RUN cd /code/examples \
7577
&& inv tensorflow \
7678
# These demo functions link with the cross-compiled static libraries
7779
&& inv func ffmpeg check \
80+
&& inv func jwt test \
7881
&& inv func lammps chain \
7982
&& inv func mpi migrate \
8083
&& inv func rabe test \

examples/tless-jwt

Submodule tless-jwt added at 23fbc96

func/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ function(faasm_example_func func_name file_name)
3232
endfunction(faasm_example_func)
3333

3434
add_subdirectory(ffmpeg)
35+
add_subdirectory(jwt)
3536
add_subdirectory(lammps)
3637
add_subdirectory(mpi)
3738
add_subdirectory(rabe)

func/jwt/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
set(FAASM_USER jwt)
2+
3+
faasm_example_func(test test.cpp)
4+
target_link_libraries(jwt_test libtless-jwt-cpp.a libtless-jwt.a)

func/jwt/test.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#include <tless_jwt.h>
2+
3+
#include <iostream>
4+
#include <string>
5+
6+
// g++ main.cpp -L./target/debug -ltless_jwt
7+
// ./a.out
8+
// $ Verified!
9+
// $ Not verified :-(
10+
int main()
11+
{
12+
std::string goodJwt = "eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vZmFhc21hdHRwcm92LmV1czIuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsImtpZCI6IkowcEFQZGZYWEhxV1dpbWdySDg1M3dNSWRoNS9mTGUxejZ1U1hZUFhDYTA9IiwidHlwIjoiSldUIn0.eyJleHAiOjE3MjgwOTAxMTMsImlhdCI6MTcyODA2MTMxMywiaXMtZGVidWdnYWJsZSI6dHJ1ZSwiaXNzIjoiaHR0cHM6Ly9mYWFzbWF0dHByb3YuZXVzMi5hdHRlc3QuYXp1cmUubmV0IiwianRpIjoiNmQyNWIyMjNlMmJhMTFkNmExMWY4NWE2Y2RiYzE1NzcwNjE2ODJkMDczM2NmNGM2NWZiYjU4ZWJlODg4YTMzOSIsIm1hYS1hdHRlc3RhdGlvbmNvbGxhdGVyYWwiOnsicWVpZGNlcnRzaGFzaCI6ImE2NGQ2NDkxOTg1MDdkOGI1N2UzM2Y2M2FiMjY2ODM4ZjQzZjMyN2JkNGFhY2M3ODUxMGI2OTc2ZWQwNDZlMTAiLCJxZWlkY3JsaGFzaCI6ImFkZmExOTQyNDIwZTY5ZGY1MTE4ZmYwMDZiNTNhZTFlNWRmZDkxZTVhNTcxMjQyOTczMTI2Yjg2MGFkNWViMTMiLCJxZWlkaGFzaCI6Ijc3MDFmNjQ3MDBiN2Y1MDVkN2I0YjdhOTNlNDVkNWNkZThjZmM4NjViNjBmMWRkNDllY2JlZTk3OTBjMzM3MmUiLCJxdW90ZWhhc2giOiI0NDNmN2JmY2QxN2U0YjI3NmQ1ODI1Nzk0MTJiZmE2YjNjMWI5YTU2N2FlZjE1YmE1ZDJiNDdiZTRhMGVlOWVhIiwidGNiaW5mb2NlcnRzaGFzaCI6ImE2NGQ2NDkxOTg1MDdkOGI1N2UzM2Y2M2FiMjY2ODM4ZjQzZjMyN2JkNGFhY2M3ODUxMGI2OTc2ZWQwNDZlMTAiLCJ0Y2JpbmZvY3JsaGFzaCI6ImFkZmExOTQyNDIwZTY5ZGY1MTE4ZmYwMDZiNTNhZTFlNWRmZDkxZTVhNTcxMjQyOTczMTI2Yjg2MGFkNWViMTMiLCJ0Y2JpbmZvaGFzaCI6IjY4NjRjNjg3NGMyZWYzNmJjOTJlNTg3ZTAwOTMwYmYzZWEwYmM0ODYyZDA2YjBmYmU2YWY4NjMyN2UwNGMzNTcifSwibmJmIjoxNzI4MDYxMzEzLCJwcm9kdWN0LWlkIjowLCJzZ3gtbXJlbmNsYXZlIjoiNjUwNmIzYmI2NmFlMTQ0MWYyYzIwODZlMjM0MGYzNzY2M2YyZDU4ZmJhYTViZDYwMWE3MTFiMDRiNDk3ZTE0NSIsInNneC1tcnNpZ25lciI6IjgzZDcxOWU3N2RlYWNhMTQ3MGY2YmFmNjJhNGQ3NzQzMDNjODk5ZGI2OTAyMGY5YzcwZWUxZGZjMDhjN2NlOWUiLCJzdm4iOjAsInRlZSI6InNneCIsIngtbXMtYXR0ZXN0YXRpb24tdHlwZSI6InNneCIsIngtbXMtcG9saWN5Ijp7ImlzLWRlYnVnZ2FibGUiOnRydWUsInByb2R1Y3QtaWQiOjAsInNneC1tcmVuY2xhdmUiOiI2NTA2YjNiYjY2YWUxNDQxZjJjMjA4NmUyMzQwZjM3NjYzZjJkNThmYmFhNWJkNjAxYTcxMWIwNGI0OTdlMTQ1Iiwic2d4LW1yc2lnbmVyIjoiODNkNzE5ZTc3ZGVhY2ExNDcwZjZiYWY2MmE0ZDc3NDMwM2M4OTlkYjY5MDIwZjljNzBlZTFkZmMwOGM3Y2U5ZSIsInN2biI6MCwidGVlIjoic2d4In0sIngtbXMtcG9saWN5LWhhc2giOiJPd0V2cFNWRVdBNWVpc0NFbmNCdDhOU1pGTFlEUktvTGFvT05Qclpnb2VZIiwieC1tcy1zZ3gtY29sbGF0ZXJhbCI6eyJxZWlkY2VydHNoYXNoIjoiYTY0ZDY0OTE5ODUwN2Q4YjU3ZTMzZjYzYWIyNjY4MzhmNDNmMzI3YmQ0YWFjYzc4NTEwYjY5NzZlZDA0NmUxMCIsInFlaWRjcmxoYXNoIjoiYWRmYTE5NDI0MjBlNjlkZjUxMThmZjAwNmI1M2FlMWU1ZGZkOTFlNWE1NzEyNDI5NzMxMjZiODYwYWQ1ZWIxMyIsInFlaWRoYXNoIjoiNzcwMWY2NDcwMGI3ZjUwNWQ3YjRiN2E5M2U0NWQ1Y2RlOGNmYzg2NWI2MGYxZGQ0OWVjYmVlOTc5MGMzMzcyZSIsInF1b3RlaGFzaCI6IjQ0M2Y3YmZjZDE3ZTRiMjc2ZDU4MjU3OTQxMmJmYTZiM2MxYjlhNTY3YWVmMTViYTVkMmI0N2JlNGEwZWU5ZWEiLCJ0Y2JpbmZvY2VydHNoYXNoIjoiYTY0ZDY0OTE5ODUwN2Q4YjU3ZTMzZjYzYWIyNjY4MzhmNDNmMzI3YmQ0YWFjYzc4NTEwYjY5NzZlZDA0NmUxMCIsInRjYmluZm9jcmxoYXNoIjoiYWRmYTE5NDI0MjBlNjlkZjUxMThmZjAwNmI1M2FlMWU1ZGZkOTFlNWE1NzEyNDI5NzMxMjZiODYwYWQ1ZWIxMyIsInRjYmluZm9oYXNoIjoiNjg2NGM2ODc0YzJlZjM2YmM5MmU1ODdlMDA5MzBiZjNlYTBiYzQ4NjJkMDZiMGZiZTZhZjg2MzI3ZTA0YzM1NyJ9LCJ4LW1zLXNneC1pcy1kZWJ1Z2dhYmxlIjp0cnVlLCJ4LW1zLXNneC1tcmVuY2xhdmUiOiI2NTA2YjNiYjY2YWUxNDQxZjJjMjA4NmUyMzQwZjM3NjYzZjJkNThmYmFhNWJkNjAxYTcxMWIwNGI0OTdlMTQ1IiwieC1tcy1zZ3gtbXJzaWduZXIiOiI4M2Q3MTllNzdkZWFjYTE0NzBmNmJhZjYyYTRkNzc0MzAzYzg5OWRiNjkwMjBmOWM3MGVlMWRmYzA4YzdjZTllIiwieC1tcy1zZ3gtcHJvZHVjdC1pZCI6MCwieC1tcy1zZ3gtcmVwb3J0LWRhdGEiOiI1MmM0YmJjZWViNTkxMjRkNTg0NzQzZTc1MGQ0NmNhN2FiOTU2YzlkZDAzMmU4ODcyYjM3MjcwNWZhOWRlNGUzYTliZTVkZGVkNzM0Yzg1Nzg1NDM0NTNiOWE5OGFjYjQxOTUxNDYzYjUxZGUzNjIzYzRiNjc5NWM1MjYyZmE1MyIsIngtbXMtc2d4LXN2biI6MCwieC1tcy1zZ3gtdGNiaWRlbnRpZmllciI6IjEwIiwieC1tcy12ZXIiOiIxLjAifQ.2MHmljiFFxQzlU3qLHoEGx2wcyvXXOyLUdaMzekYiuG2ZiEh4H-g1PI-TymWpdUFkT-0a2zw06tdP0IOWmbvqF-uSta3wlINN1LmsBapZiLBwxYH2otTvr1z9oy1iRMhe44x_fOplLLmL4buaw4xjm1zqzKtHHpwQUQCWVAyZF9BQ3-yi6ssf-4HYBr-8bvwbxHR8HbAgAdC8meAjkV8Z15V0BF3cnC8hkjbq-OlAAzgFORL6nNpQy_CXp6LgPknInubBECxMU6ybRk-_MI1jqy6Ko-rTHYbAC0bmZiM3VwILDEQDLnT-3EcMfELaYHmRTH7I8LKHbQxDbSOw-ydKA";
13+
std::string badJwt = "eyJmbmciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vZmFhc21hdHRwcm92LmV1czIuYXR0ZXN0LmF6dXJlLm5ldC9jZXJ0cyIsImtpZCI6IkowcEFQZGZYWEhxV1dpbWdySDg1M3dNSWRoNS9mTGUxejZ1U1hZUFhDYTA9IiwidHlwIjoiSldUIn0.eyJleHAiOjE3MjgwOTAxMTMsImlhdCI6MTcyODA2MTMxMywiaXMtZGVidWdnYWJsZSI6dHJ1ZSwiaXNzIjoiaHR0cHM6Ly9mYWFzbWF0dHByb3YuZXVzMi5hdHRlc3QuYXp1cmUubmV0IiwianRpIjoiNmQyNWIyMjNlMmJhMTFkNmExMWY4NWE2Y2RiYzE1NzcwNjE2ODJkMDczM2NmNGM2NWZiYjU4ZWJlODg4YTMzOSIsIm1hYS1hdHRlc3RhdGlvbmNvbGxhdGVyYWwiOnsicWVpZGNlcnRzaGFzaCI6ImE2NGQ2NDkxOTg1MDdkOGI1N2UzM2Y2M2FiMjY2ODM4ZjQzZjMyN2JkNGFhY2M3ODUxMGI2OTc2ZWQwNDZlMTAiLCJxZWlkY3JsaGFzaCI6ImFkZmExOTQyNDIwZTY5ZGY1MTE4ZmYwMDZiNTNhZTFlNWRmZDkxZTVhNTcxMjQyOTczMTI2Yjg2MGFkNWViMTMiLCJxZWlkaGFzaCI6Ijc3MDFmNjQ3MDBiN2Y1MDVkN2I0YjdhOTNlNDVkNWNkZThjZmM4NjViNjBmMWRkNDllY2JlZTk3OTBjMzM3MmUiLCJxdW90ZWhhc2giOiI0NDNmN2JmY2QxN2U0YjI3NmQ1ODI1Nzk0MTJiZmE2YjNjMWI5YTU2N2FlZjE1YmE1ZDJiNDdiZTRhMGVlOWVhIiwidGNiaW5mb2NlcnRzaGFzaCI6ImE2NGQ2NDkxOTg1MDdkOGI1N2UzM2Y2M2FiMjY2ODM4ZjQzZjMyN2JkNGFhY2M3ODUxMGI2OTc2ZWQwNDZlMTAiLCJ0Y2JpbmZvY3JsaGFzaCI6ImFkZmExOTQyNDIwZTY5ZGY1MTE4ZmYwMDZiNTNhZTFlNWRmZDkxZTVhNTcxMjQyOTczMTI2Yjg2MGFkNWViMTMiLCJ0Y2JpbmZvaGFzaCI6IjY4NjRjNjg3NGMyZWYzNmJjOTJlNTg3ZTAwOTMwYmYzZWEwYmM0ODYyZDA2YjBmYmU2YWY4NjMyN2UwNGMzNTcifSwibmJmIjoxNzI4MDYxMzEzLCJwcm9kdWN0LWlkIjowLCJzZ3gtbXJlbmNsYXZlIjoiNjUwNmIzYmI2NmFlMTQ0MWYyYzIwODZlMjM0MGYzNzY2M2YyZDU4ZmJhYTViZDYwMWE3MTFiMDRiNDk3ZTE0NSIsInNneC1tcnNpZ25lciI6IjgzZDcxOWU3N2RlYWNhMTQ3MGY2YmFmNjJhNGQ3NzQzMDNjODk5ZGI2OTAyMGY5YzcwZWUxZGZjMDhjN2NlOWUiLCJzdm4iOjAsInRlZSI6InNneCIsIngtbXMtYXR0ZXN0YXRpb24tdHlwZSI6InNneCIsIngtbXMtcG9saWN5Ijp7ImlzLWRlYnVnZ2FibGUiOnRydWUsInByb2R1Y3QtaWQiOjAsInNneC1tcmVuY2xhdmUiOiI2NTA2YjNiYjY2YWUxNDQxZjJjMjA4NmUyMzQwZjM3NjYzZjJkNThmYmFhNWJkNjAxYTcxMWIwNGI0OTdlMTQ1Iiwic2d4LW1yc2lnbmVyIjoiODNkNzE5ZTc3ZGVhY2ExNDcwZjZiYWY2MmE0ZDc3NDMwM2M4OTlkYjY5MDIwZjljNzBlZTFkZmMwOGM3Y2U5ZSIsInN2biI6MCwidGVlIjoic2d4In0sIngtbXMtcG9saWN5LWhhc2giOiJPd0V2cFNWRVdBNWVpc0NFbmNCdDhOU1pGTFlEUktvTGFvT05Qclpnb2VZIiwieC1tcy1zZ3gtY29sbGF0ZXJhbCI6eyJxZWlkY2VydHNoYXNoIjoiYTY0ZDY0OTE5ODUwN2Q4YjU3ZTMzZjYzYWIyNjY4MzhmNDNmMzI3YmQ0YWFjYzc4NTEwYjY5NzZlZDA0NmUxMCIsInFlaWRjcmxoYXNoIjoiYWRmYTE5NDI0MjBlNjlkZjUxMThmZjAwNmI1M2FlMWU1ZGZkOTFlNWE1NzEyNDI5NzMxMjZiODYwYWQ1ZWIxMyIsInFlaWRoYXNoIjoiNzcwMWY2NDcwMGI3ZjUwNWQ3YjRiN2E5M2U0NWQ1Y2RlOGNmYzg2NWI2MGYxZGQ0OWVjYmVlOTc5MGMzMzcyZSIsInF1b3RlaGFzaCI6IjQ0M2Y3YmZjZDE3ZTRiMjc2ZDU4MjU3OTQxMmJmYTZiM2MxYjlhNTY3YWVmMTViYTVkMmI0N2JlNGEwZWU5ZWEiLCJ0Y2JpbmZvY2VydHNoYXNoIjoiYTY0ZDY0OTE5ODUwN2Q4YjU3ZTMzZjYzYWIyNjY4MzhmNDNmMzI3YmQ0YWFjYzc4NTEwYjY5NzZlZDA0NmUxMCIsInRjYmluZm9jcmxoYXNoIjoiYWRmYTE5NDI0MjBlNjlkZjUxMThmZjAwNmI1M2FlMWU1ZGZkOTFlNWE1NzEyNDI5NzMxMjZiODYwYWQ1ZWIxMyIsInRjYmluZm9oYXNoIjoiNjg2NGM2ODc0YzJlZjM2YmM5MmU1ODdlMDA5MzBiZjNlYTBiYzQ4NjJkMDZiMGZiZTZhZjg2MzI3ZTA0YzM1NyJ9LCJ4LW1zLXNneC1pcy1kZWJ1Z2dhYmxlIjp0cnVlLCJ4LW1zLXNneC1tcmVuY2xhdmUiOiI2NTA2YjNiYjY2YWUxNDQxZjJjMjA4NmUyMzQwZjM3NjYzZjJkNThmYmFhNWJkNjAxYTcxMWIwNGI0OTdlMTQ1IiwieC1tcy1zZ3gtbXJzaWduZXIiOiI4M2Q3MTllNzdkZWFjYTE0NzBmNmJhZjYyYTRkNzc0MzAzYzg5OWRiNjkwMjBmOWM3MGVlMWRmYzA4YzdjZTllIiwieC1tcy1zZ3gtcHJvZHVjdC1pZCI6MCwieC1tcy1zZ3gtcmVwb3J0LWRhdGEiOiI1MmM0YmJjZWViNTkxMjRkNTg0NzQzZTc1MGQ0NmNhN2FiOTU2YzlkZDAzMmU4ODcyYjM3MjcwNWZhOWRlNGUzYTliZTVkZGVkNzM0Yzg1Nzg1NDM0NTNiOWE5OGFjYjQxOTUxNDYzYjUxZGUzNjIzYzRiNjc5NWM1MjYyZmE1MyIsIngtbXMtc2d4LXN2biI6MCwieC1tcy1zZ3gtdGNiaWRlbnRpZmllciI6IjEwIiwieC1tcy12ZXIiOiIxLjAifQ.2MHmljiFFxQzlU3qLHoEGx2wcyvXXOyLUdaMzekYiuG2ZiEh4H-g1PI-TymWpdUFkT-0a2zw06tdP0IOWmbvqF-uSta3wlINN1LmsBapZiLBwxYH2otTvr1z9oy1iRMhe44x_fOplLLmL4buaw4xjm1zqzKtHHpwQUQCWVAyZF9BQ3-yi6ssf-4HYBr-8bvwbxHR8HbAgAdC8meAjkV8Z15V0BF3cnC8hkjbq-OlAAzgFORL6nNpQy_CXp6LgPknInubBECxMU6ybRk-_MI1jqy6Ko-rTHYbAC0bmZiM3VwILDEQDLnT-3EcMfELaYHmRTH7I8LKHbQxDbSOw-ydKA";
14+
15+
if (tless::verify_jwt(goodJwt)) {
16+
std::cout << "Verified!" << std::endl;
17+
} else {
18+
std::cerr << "Not verified :-(" << std::endl;
19+
}
20+
21+
if (tless::verify_jwt(badJwt)) {
22+
std::cout << "Verified!" << std::endl;
23+
} else {
24+
std::cerr << "Not verified :-(" << std::endl;
25+
}
26+
27+
return 0;
28+
}

tasks/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from . import func
99
from . import git
1010
from . import imagemagick
11+
from . import jwt
1112
from . import kernels
1213
from . import lammps
1314
from . import libpng
@@ -26,6 +27,7 @@
2627
func,
2728
git,
2829
imagemagick,
30+
jwt,
2931
kernels,
3032
lammps,
3133
libpng,

tasks/jwt.py

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
from faasmtools.build import CMAKE_TOOLCHAIN_FILE, get_faasm_build_env_dict
2+
from invoke import task
3+
from os import environ, makedirs
4+
from os.path import exists, join
5+
from shutil import copy, rmtree
6+
from subprocess import run
7+
from tasks.env import EXAMPLES_DIR
8+
9+
10+
@task(default=True)
11+
def build(ctx, clean=False):
12+
"""
13+
Compile TLess-JWT library (in Rust) and C++ bindings into a WASM library
14+
"""
15+
jwt_dir = join(EXAMPLES_DIR, "tless-jwt", "jwt-verify")
16+
17+
if clean:
18+
rmtree(join(jwt_dir, "target"))
19+
20+
# First, cross-compile the rust library to WASM
21+
cargo_cmd = "cargo build --release --target=wasm32-wasip1"
22+
run(cargo_cmd, shell=True, check=True, cwd=jwt_dir)
23+
24+
# Install it in the WASM sysroot
25+
build_env = get_faasm_build_env_dict()
26+
src_lib = join(
27+
jwt_dir, "target", "wasm32-wasip1", "release", "libtless_jwt.a"
28+
)
29+
dst_lib = join(build_env["FAASM_WASM_LIB_INSTALL_DIR"], "libtless-jwt.a")
30+
copy(src_lib, dst_lib)
31+
32+
# Build the CPP bindings library, and cross-compile it to WASM
33+
rabe_cpp_dir = join(jwt_dir, "cpp-bindings")
34+
build_dir = join(rabe_cpp_dir, "build")
35+
36+
if clean and exists(build_dir):
37+
rmtree(build_dir)
38+
if not exists(build_dir):
39+
makedirs(build_dir)
40+
41+
cmake_cmd = [
42+
"cmake",
43+
"-GNinja",
44+
"-DCMAKE_BUILD_TYPE=Release",
45+
"-DCMAKE_TOOLCHAIN_FILE={}".format(CMAKE_TOOLCHAIN_FILE),
46+
rabe_cpp_dir,
47+
]
48+
cmake_cmd = " ".join(cmake_cmd)
49+
print(cmake_cmd)
50+
51+
work_env = environ.copy()
52+
work_env.update(get_faasm_build_env_dict())
53+
print(build_dir)
54+
run(cmake_cmd, shell=True, check=True, cwd=build_dir, env=work_env)
55+
run("ninja", shell=True, check=True, cwd=build_dir)
56+
57+
# Install the library in the WASM sysroot
58+
src_lib = join(build_dir, "libtless-jwt-cpp.a")
59+
dst_lib = join(
60+
build_env["FAASM_WASM_LIB_INSTALL_DIR"], "libtless-jwt-cpp.a"
61+
)
62+
copy(src_lib, dst_lib)
63+
64+
# Install the header in the WASM sysroot too
65+
src_header = join(rabe_cpp_dir, "tless_jwt.h")
66+
dst_header = join(
67+
build_env["FAASM_WASM_HEADER_INSTALL_DIR"], "tless_jwt.h"
68+
)
69+
copy(src_header, dst_header)

0 commit comments

Comments
 (0)