Skip to content

Commit e5068cc

Browse files
build(taskfile): Bump emsdk version to 4.0.23; Extract emsdk and node-modules into sub-taskfiles; Change default task to package. (#139)
Co-authored-by: Junhao Liao <junhao@junhao.ca>
1 parent b991c79 commit e5068cc

File tree

5 files changed

+89
-78
lines changed

5 files changed

+89
-78
lines changed

taskfile.yaml

Lines changed: 18 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,16 @@ version: "3"
33
includes:
44
deps: "taskfiles/deps.yaml"
55
lint: "taskfiles/lint.yaml"
6+
node-modules: "taskfiles/node-modules.yaml"
67
test: "taskfiles/test.yaml"
8+
toolchains: "taskfiles/toolchains.yaml"
79
utils: "tools/yscope-dev-utils/exports/taskfiles/utils/utils.yaml"
810

911
vars:
1012
G_BUILD_DIR: "{{.ROOT_DIR}}/build"
1113
G_CLP_FFI_JS_BUILD_DIR: "{{.G_BUILD_DIR}}/clp-ffi-js"
1214
G_DEPS_DIR: "{{.G_BUILD_DIR}}/deps"
1315
G_DIST_DIR: "{{.ROOT_DIR}}/dist"
14-
G_EMSDK_DIR: "{{.G_BUILD_DIR}}/emsdk"
15-
G_EMSCRIPTEN_CMAKE_TOOLCHAIN_FILE: >-
16-
{{.G_EMSDK_DIR}}/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake
1716

1817
G_CLP_FFI_JS_ENV_NAMES: ["node", "worker"]
1918
G_CLP_FFI_JS_TARGET_PREFIX: "ClpFfiJs-"
@@ -23,39 +22,32 @@ vars:
2322
G_DEPS_CMAKE_SETTINGS_FILE: "{{.G_DEPS_CMAKE_SETTINGS_DIR}}/settings.cmake"
2423

2524
G_CLP_FFI_JS_CHECKSUM: "{{.G_BUILD_DIR}}/clp-ffi-js.md5"
26-
G_EMSDK_CHECKSUM: "{{.G_BUILD_DIR}}/emsdk.md5"
2725

2826
tasks:
2927
default:
30-
deps: ["clp-ffi-js"]
28+
deps: ["package"]
3129

3230
clean:
31+
run: "once"
3332
cmds:
34-
- task: "clean-emsdk"
35-
- task: "clean-clp-ffi-js"
3633
- "rm -rf '{{.G_BUILD_DIR}}'"
37-
38-
clean-emsdk:
39-
cmds:
40-
- "rm -rf '{{.G_EMSDK_DIR}}'"
41-
42-
clean-clp-ffi-js:
43-
cmds:
44-
- "rm -rf '{{.G_CLP_FFI_JS_BUILD_DIR}}'"
34+
- "rm -rf '{{.G_DIST_DIR}}'"
4535

4636
clp-ffi-js:
4737
vars:
4838
CHECKSUM_FILE: "{{.G_CLP_FFI_JS_CHECKSUM}}"
4939
OUTPUT_DIR: "{{.G_CLP_FFI_JS_BUILD_DIR}}"
5040
sources:
5141
- "{{.G_CLP_FFI_JS_BUILD_DIR}}/CMakeCache.txt"
42+
- "{{.G_DEPS_CMAKE_SETTINGS_FILE}}"
5243
- "{{.G_EMSDK_CHECKSUM}}"
5344
- "{{.TASKFILE}}"
5445
- "CMakeLists.txt"
5546
- "src/**/*"
47+
- "taskfiles/**/*"
5648
generates: ["{{.CHECKSUM_FILE}}"]
49+
run: "once"
5750
deps:
58-
- "emsdk"
5951
- task: "utils:checksum:validate"
6052
vars:
6153
CHECKSUM_FILE: "{{.CHECKSUM_FILE}}"
@@ -73,59 +65,19 @@ tasks:
7365
CHECKSUM_FILE: "{{.CHECKSUM_FILE}}"
7466
INCLUDE_PATTERNS: ["{{.OUTPUT_DIR}}"]
7567

76-
emsdk:
77-
vars:
78-
CHECKSUM_FILE: "{{.G_EMSDK_CHECKSUM}}"
79-
EMSDK_VERSION: "4.0.10"
80-
OUTPUT_DIR: "{{.G_EMSDK_DIR}}"
81-
sources: ["{{.TASKFILE}}"]
82-
generates: ["{{.CHECKSUM_FILE}}"]
83-
run: "once"
84-
deps:
85-
- "init"
86-
- task: "utils:checksum:validate"
87-
vars:
88-
CHECKSUM_FILE: "{{.CHECKSUM_FILE}}"
89-
EXCLUDE_PATTERNS: &emsdk_checksum_exclude_paths
90-
- "upstream/emscripten/__pycache__"
91-
- "upstream/emscripten/cache/sanity.txt"
92-
- "upstream/emscripten/cache/symbol_lists"
93-
- "upstream/emscripten/cache/symbol_lists.lock"
94-
- "upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/lto"
95-
- "upstream/emscripten/third_party/leb128/__pycache__"
96-
- "upstream/emscripten/tools/__pycache__"
97-
- "upstream/emscripten/tools/ports/__pycache__"
98-
- "upstream/emscripten/tools/ports/contrib/__pycache__"
99-
INCLUDE_PATTERNS: ["{{.OUTPUT_DIR}}"]
100-
cmds:
101-
- task: "clean-emsdk"
102-
- "git clone https://github.com/emscripten-core/emsdk.git '{{.G_EMSDK_DIR}}'"
103-
- |-
104-
cd "{{.G_EMSDK_DIR}}"
105-
./emsdk install {{.EMSDK_VERSION}}
106-
./emsdk activate {{.EMSDK_VERSION}}
107-
- |-
108-
cd "{{.G_EMSDK_DIR}}/upstream/emscripten"
109-
PATH=$(echo {{.G_EMSDK_DIR}}/node/*/bin):$PATH npm install
110-
# This command must be last
111-
- task: "utils:checksum:compute"
112-
vars:
113-
CHECKSUM_FILE: "{{.CHECKSUM_FILE}}"
114-
EXCLUDE_PATTERNS: *emsdk_checksum_exclude_paths
115-
INCLUDE_PATTERNS: ["{{.OUTPUT_DIR}}"]
116-
11768
package:
11869
vars:
11970
CHECKSUM_FILE: "{{.G_BUILD_DIR}}/{{.TASK}}.md5"
12071
OUTPUT_DIR: "{{.G_DIST_DIR}}"
12172
sources:
73+
- "{{.G_CLP_FFI_JS_CHECKSUM}}"
74+
- "{{.TASKFILE}}"
12275
- "package.json"
12376
- "src/**/*.ts"
12477
- "tsconfig.build.json"
12578
- "tsconfig.json"
126-
- "{{.G_CLP_FFI_JS_CHECKSUM}}"
127-
- "{{.TASKFILE}}"
12879
generates: ["{{.CHECKSUM_FILE}}"]
80+
run: "once"
12981
deps:
13082
- "clp-ffi-js"
13183
- "node-modules"
@@ -134,15 +86,15 @@ tasks:
13486
CHECKSUM_FILE: "{{.CHECKSUM_FILE}}"
13587
INCLUDE_PATTERNS: ["{{.OUTPUT_DIR}}"]
13688
cmds:
137-
- "rm -rf {{.OUTPUT_DIR}}"
89+
- "rm -rf '{{.OUTPUT_DIR}}'"
13890
- for:
13991
var: "G_CLP_FFI_JS_ENV_NAMES"
14092
cmd: >-
14193
rsync -a
14294
"{{.G_CLP_FFI_JS_BUILD_DIR}}/{{.G_CLP_FFI_JS_TARGET_PREFIX}}{{.ITEM}}."{d.ts,js,wasm}
14395
"{{.OUTPUT_DIR}}/"
144-
- "npx tsc -p tsconfig.build.json"
145-
- "npm pack"
96+
- "npm run build:ts -- --outDir '{{.OUTPUT_DIR}}'"
97+
- "npm pack --pack-destination '{{.OUTPUT_DIR}}'"
14698
# This command must be last
14799
- task: "utils:checksum:compute"
148100
vars:
@@ -152,33 +104,23 @@ tasks:
152104
config-cmake-project:
153105
internal: true
154106
sources:
107+
- "{{.G_DEPS_CMAKE_SETTINGS_FILE}}"
155108
- "{{.G_EMSDK_CHECKSUM}}"
156109
- "{{.TASKFILE}}"
157110
- "CMakeLists.txt"
111+
- "taskfiles/**/*"
158112
generates:
159113
- "{{.G_CLP_FFI_JS_BUILD_DIR}}/CMakeCache.txt"
160114
- "{{.G_CLP_FFI_JS_BUILD_DIR}}/compile_commands.json"
161-
deps:
162-
- "deps"
163-
- "emsdk"
115+
run: "once"
116+
deps: ["deps"]
164117
cmd: |-
165118
cmake \
166119
-DCLP_FFI_JS_SUPPORTED_ENVIRONMENTS="{{.G_CLP_FFI_JS_ENV_NAMES | join ";"}}" \
167120
-DCMAKE_TOOLCHAIN_FILE="{{.G_EMSCRIPTEN_CMAKE_TOOLCHAIN_FILE}}" \
168121
-S "{{.ROOT_DIR}}" \
169122
-B "{{.G_CLP_FFI_JS_BUILD_DIR}}"
170123
171-
node-modules:
172-
internal: true
173-
sources:
174-
- "{{.ROOT_DIR}}/package.json"
175-
- "{{.ROOT_DIR}}/package-lock.json"
176-
- "{{.TASKFILE}}"
177-
generates:
178-
- "{{.ROOT_DIR}}/node_modules/**/*"
179-
cmds:
180-
- "npm clean-install"
181-
182124
init:
183125
internal: true
184126
silent: true

taskfiles/deps.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ tasks:
2828
desc: "Download, and install (except for clp) all dependencies using Emscripten toolchain."
2929
run: "once"
3030
deps:
31-
- ":emsdk"
31+
- ":toolchains:emsdk"
3232
cmds:
3333
- task: ":utils:cmake:install-deps-and-generate-settings"
3434
vars:

taskfiles/node-modules.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
version: "3"
2+
3+
tasks:
4+
default:
5+
sources:
6+
- "{{.ROOT_DIR}}/package.json"
7+
- "{{.ROOT_DIR}}/package-lock.json"
8+
- "{{.TASKFILE}}"
9+
generates:
10+
- "{{.ROOT_DIR}}/node_modules/**/*"
11+
run: "once"
12+
cmds:
13+
- "npm clean-install"

taskfiles/test.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ tasks:
55
deps: ["js"]
66

77
init:
8-
deps: [":package", ":node-modules"]
8+
deps: [":node-modules", ":package"]
99
cmd: "npm run test:init"
1010

1111
js:

taskfiles/toolchains.yaml

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
version: "3"
2+
3+
vars:
4+
G_EMSDK_DIR: "{{.G_BUILD_DIR}}/emsdk"
5+
G_EMSCRIPTEN_CMAKE_TOOLCHAIN_FILE: >-
6+
{{.G_EMSDK_DIR}}/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake
7+
G_EMSDK_CHECKSUM: "{{.G_BUILD_DIR}}/emsdk.md5"
8+
9+
tasks:
10+
emsdk:
11+
vars:
12+
CHECKSUM_FILE: "{{.G_EMSDK_CHECKSUM}}"
13+
OUTPUT_DIR: "{{.G_EMSDK_DIR}}"
14+
VERSION: "4.0.23"
15+
sources: ["{{.TASKFILE}}"]
16+
generates: ["{{.CHECKSUM_FILE}}"]
17+
run: "once"
18+
deps:
19+
- ":init"
20+
- task: ":utils:checksum:validate"
21+
vars:
22+
CHECKSUM_FILE: "{{.CHECKSUM_FILE}}"
23+
EXCLUDE_PATTERNS: &emsdk_checksum_exclude_paths
24+
- "upstream/emscripten/__pycache__"
25+
- "upstream/emscripten/cache/sanity.txt"
26+
- "upstream/emscripten/cache/symbol_lists"
27+
- "upstream/emscripten/cache/symbol_lists.lock"
28+
- "upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/lto"
29+
- "upstream/emscripten/third_party/leb128/__pycache__"
30+
- "upstream/emscripten/tools/__pycache__"
31+
- "upstream/emscripten/tools/ports/__pycache__"
32+
- "upstream/emscripten/tools/ports/contrib/__pycache__"
33+
INCLUDE_PATTERNS: ["{{.OUTPUT_DIR}}"]
34+
cmds:
35+
- "rm -rf '{{.G_EMSDK_DIR}}'"
36+
- "rm -rf '{{.G_EMSDK_DIR}}.tar.gz'"
37+
- task: ":utils:remote:download-and-extract-tar"
38+
vars:
39+
CHECKSUM_FILE: "{{.G_EMSDK_DIR}}.tar.gz.md5"
40+
FILE_SHA256: "a91a4c1f42dbb0345faac093161e27d43e9b6964840d8c8d80976ab8d3eaf2d3"
41+
OUTPUT_DIR: "{{.G_EMSDK_DIR}}"
42+
TAR_FILE: "{{.G_EMSDK_DIR}}.tar.gz"
43+
URL: "https://github.com/emscripten-core/emsdk/archive/refs/tags/{{.VERSION}}.tar.gz"
44+
- |-
45+
cd "{{.G_EMSDK_DIR}}"
46+
./emsdk install {{.VERSION}}
47+
./emsdk activate {{.VERSION}}
48+
- |-
49+
cd "{{.G_EMSDK_DIR}}/upstream/emscripten"
50+
PATH="$(echo '{{.G_EMSDK_DIR}}'/node/*/bin):$PATH" npm install
51+
# This command must be last
52+
- task: ":utils:checksum:compute"
53+
vars:
54+
CHECKSUM_FILE: "{{.CHECKSUM_FILE}}"
55+
EXCLUDE_PATTERNS: *emsdk_checksum_exclude_paths
56+
INCLUDE_PATTERNS: ["{{.OUTPUT_DIR}}"]

0 commit comments

Comments
 (0)