Mercurial
annotate gui_ze/gui_ze.bzl @ 176:fed99fc04e12 hg-web
[HgWeb] Problem with the emscript lol
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Wed, 21 Jan 2026 19:32:08 -0800 |
| parents | 71ad34a8bc9a |
| children | 8cf4ec5e2191 |
| rev | line source |
|---|---|
|
154
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
1 def _wasm_binary_impl(ctx): |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
2 """ |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
3 Compile C source to WASM using clang --target=wasm32. |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
4 No libc - suitable for standalone WASM modules. |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
5 |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
6 Requires LLVM with wasm32 support (e.g., Homebrew LLVM on macOS). |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
7 """ |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
8 src = ctx.file.src |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
9 out = ctx.actions.declare_file(ctx.label.name + ".wasm") |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
10 |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
11 # Shell script to find clang with wasm support and set PATH for wasm-ld |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
12 setup_cmd = """ |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
13 export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH" |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
14 if [ -x /opt/homebrew/opt/llvm/bin/clang ]; then |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
15 CLANG=/opt/homebrew/opt/llvm/bin/clang |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
16 elif [ -x /usr/local/opt/llvm/bin/clang ]; then |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
17 CLANG=/usr/local/opt/llvm/bin/clang |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
18 else |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
19 CLANG=clang |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
20 fi |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
21 """ |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
22 |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
23 # Build clang command |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
24 cmd_parts = [ |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
25 setup_cmd, |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
26 "$CLANG", |
|
168
f3084bca7317
[Misc] Fixed all errors and all tests should pass now.
MrJuneJune <me@mrjunejune.com>
parents:
156
diff
changeset
|
27 "--target=wasm32-unknown-unknown", |
|
154
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
28 "-O2", |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
29 "-Wl,--no-entry", |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
30 "-Wl,--export-dynamic", |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
31 ] |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
32 |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
33 # Add exported functions |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
34 for fn in ctx.attr.exports: |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
35 cmd_parts.append("-Wl,--export=" + fn) |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
36 |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
37 cmd_parts.append("-o") |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
38 cmd_parts.append(out.path) |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
39 cmd_parts.append(src.path) |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
40 |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
41 ctx.actions.run_shell( |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
42 inputs = [src], |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
43 outputs = [out], |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
44 command = " ".join(cmd_parts), |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
45 progress_message = "Compiling {} to WASM".format(src.basename), |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
46 execution_requirements = {"no-sandbox": "1"}, |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
47 ) |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
48 |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
49 return [DefaultInfo(files = depset([out]))] |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
50 |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
51 wasm_binary = rule( |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
52 implementation = _wasm_binary_impl, |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
53 attrs = { |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
54 "src": attr.label( |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
55 allow_single_file = [".c"], |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
56 mandatory = True, |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
57 doc = "The C source file to compile", |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
58 ), |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
59 "exports": attr.string_list( |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
60 default = [], |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
61 doc = "List of function names to export (without leading underscore)", |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
62 ), |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
63 }, |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
64 ) |
|
bdcc610eeed8
[Markdown Converter][GuiZe] Added markdown coverter in C and wasm rule sets. Needs further view on this as I haven't taken a look. Written by Claude.
June Park <parkjune1995@gmail.com>
parents:
128
diff
changeset
|
65 |
|
8
98f96b8032e5
[GuiZe] Creating custom bazel rule to deploy to github easily.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
66 def _foo_impl(ctx): |
|
12
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
67 out = ctx.actions.declare_file(ctx.label.name) |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
68 ctx.actions.write( |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
69 output = out, |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
70 content = "Hello!\n", |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
71 ) |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
72 return [DefaultInfo(files = depset([out]))] |
|
8
98f96b8032e5
[GuiZe] Creating custom bazel rule to deploy to github easily.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
73 |
|
98f96b8032e5
[GuiZe] Creating custom bazel rule to deploy to github easily.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
74 foo_binary = rule( |
|
98f96b8032e5
[GuiZe] Creating custom bazel rule to deploy to github easily.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
75 implementation = _foo_impl, |
|
98f96b8032e5
[GuiZe] Creating custom bazel rule to deploy to github easily.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
76 ) |
|
98f96b8032e5
[GuiZe] Creating custom bazel rule to deploy to github easily.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
77 |
|
12
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
78 def _bundle_impl(ctx): |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
79 """ |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
80 bundle binary target into a folder which can later be used to make a post to github easily. |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
81 """ |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
82 binary_target = ctx.attr.binary |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
83 binary = binary_target[DefaultInfo].files.to_list()[0] # First files are binary |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
84 runfiles_files = binary_target[DefaultInfo].default_runfiles.files.to_list() |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
85 |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
86 # Name as output directory |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
87 out_dir = ctx.actions.declare_directory(ctx.label.name) |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
88 |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
89 copy_cmd = [] |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
90 copy_cmd.append("mkdir -p {}".format(out_dir.path)) |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
91 |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
92 for f in runfiles_files: |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
93 if f.path == binary.path: |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
94 continue |
|
15
2b9e75756825
[GuiZe] Updated to handle bundling and created a shee
June Park <parkjune1995@gmail.com>
parents:
12
diff
changeset
|
95 |
|
2b9e75756825
[GuiZe] Updated to handle bundling and created a shee
June Park <parkjune1995@gmail.com>
parents:
12
diff
changeset
|
96 start = 0 |
|
2b9e75756825
[GuiZe] Updated to handle bundling and created a shee
June Park <parkjune1995@gmail.com>
parents:
12
diff
changeset
|
97 for directory in f.path.split("/"): |
|
2b9e75756825
[GuiZe] Updated to handle bundling and created a shee
June Park <parkjune1995@gmail.com>
parents:
12
diff
changeset
|
98 if directory == binary.short_path.split("/")[0]: |
|
2b9e75756825
[GuiZe] Updated to handle bundling and created a shee
June Park <parkjune1995@gmail.com>
parents:
12
diff
changeset
|
99 break |
|
2b9e75756825
[GuiZe] Updated to handle bundling and created a shee
June Park <parkjune1995@gmail.com>
parents:
12
diff
changeset
|
100 start += 1 |
|
2b9e75756825
[GuiZe] Updated to handle bundling and created a shee
June Park <parkjune1995@gmail.com>
parents:
12
diff
changeset
|
101 |
|
12
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
102 # Remove the first folder (output) and last file (actaul files that needed to be copied) |
|
15
2b9e75756825
[GuiZe] Updated to handle bundling and created a shee
June Park <parkjune1995@gmail.com>
parents:
12
diff
changeset
|
103 paths = "/".join(f.path.split("/")[start:-1]) |
|
12
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
104 full_path = "{}/{}".format(out_dir.path, paths) |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
105 copy_cmd.append("mkdir -p {}".format(full_path)) |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
106 copy_cmd.append("cp {} {}".format(f.path, full_path)) |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
107 |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
108 copy_cmd.append("cp {} {}".format(binary.path, out_dir.path)) |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
109 |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
110 ctx.actions.run_shell( |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
111 inputs = runfiles_files, |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
112 outputs = [out_dir], |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
113 command = " && ".join(copy_cmd), |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
114 progress_message = "Bundling {}".format(ctx.label.name), |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
115 ) |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
116 return [DefaultInfo(files = depset([out_dir]))] |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
117 |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
118 bundle = rule( |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
119 implementation = _bundle_impl, |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
120 attrs = { |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
121 "binary": attr.label( |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
122 doc = "The cc_binary target to bundle", |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
123 providers = [DefaultInfo], |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
124 ), |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
125 }, |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
126 ) |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
127 |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
128 |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
129 def _bun_binary_impl(ctx): |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
130 out = ctx.actions.declare_file("bun") |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
131 ctx.actions.run_shell( |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
132 inputs = ctx.files.srcs, |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
133 outputs = [out], |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
134 command = """ |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
135 mkdir -p {outdir} |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
136 unzip -j {src} {inner} -d {outdir} |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
137 chmod +x {outdir}/bun |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
138 """.format( |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
139 outdir = out.dirname, |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
140 src = ctx.files.srcs[0].path, |
|
24
7d3fa1a7a854
[GuiZe] Support x86 chip for bun.
June Park <parkjune1995@gmail.com>
parents:
15
diff
changeset
|
141 inner = ctx.attr.src_folder, |
|
12
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
142 out = out.path, |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
143 ), |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
144 ) |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
145 return DefaultInfo( |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
146 files = depset([out]), |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
147 executable = out, |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
148 ) |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
149 |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
150 bun_binary = rule( |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
151 implementation = _bun_binary_impl, |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
152 attrs = { |
|
25
342726584be2
[Bun] Fixed how bun would be ran within bazel.
June Park <parkjune1995@gmail.com>
parents:
24
diff
changeset
|
153 "srcs": attr.label_list(allow_files=True), |
|
342726584be2
[Bun] Fixed how bun would be ran within bazel.
June Park <parkjune1995@gmail.com>
parents:
24
diff
changeset
|
154 "src_folder": attr.string(), |
|
12
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
155 }, |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
156 executable = True, |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
157 ) |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
158 |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
159 def _bun_build_impl(ctx): |
|
15
2b9e75756825
[GuiZe] Updated to handle bundling and created a shee
June Park <parkjune1995@gmail.com>
parents:
12
diff
changeset
|
160 """ |
|
2b9e75756825
[GuiZe] Updated to handle bundling and created a shee
June Park <parkjune1995@gmail.com>
parents:
12
diff
changeset
|
161 Run bun build on the folder |
|
2b9e75756825
[GuiZe] Updated to handle bundling and created a shee
June Park <parkjune1995@gmail.com>
parents:
12
diff
changeset
|
162 |
|
2b9e75756825
[GuiZe] Updated to handle bundling and created a shee
June Park <parkjune1995@gmail.com>
parents:
12
diff
changeset
|
163 This sucks because you need to either copy node module into the root folder where main.ts file |
|
2b9e75756825
[GuiZe] Updated to handle bundling and created a shee
June Park <parkjune1995@gmail.com>
parents:
12
diff
changeset
|
164 exists or copy everything outwards. I chose to do it in this way. |
|
2b9e75756825
[GuiZe] Updated to handle bundling and created a shee
June Park <parkjune1995@gmail.com>
parents:
12
diff
changeset
|
165 |
|
25
342726584be2
[Bun] Fixed how bun would be ran within bazel.
June Park <parkjune1995@gmail.com>
parents:
24
diff
changeset
|
166 TODO: If possible, maybe create a node_module inside of the main target path and create a symlink |
|
342726584be2
[Bun] Fixed how bun would be ran within bazel.
June Park <parkjune1995@gmail.com>
parents:
24
diff
changeset
|
167 TODO: Add a specific path for node_modules |
|
15
2b9e75756825
[GuiZe] Updated to handle bundling and created a shee
June Park <parkjune1995@gmail.com>
parents:
12
diff
changeset
|
168 """ |
|
12
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
169 out = ctx.actions.declare_file(ctx.label.name + ".js") |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
170 inputs = [ctx.file.src] + ctx.files.data |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
171 |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
172 ctx.actions.run_shell( |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
173 inputs = inputs, |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
174 outputs = [out], |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
175 tools = [ctx.executable._bun] + inputs, |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
176 command = """ |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
177 cp -r third_party/bun/** . \ |
|
25
342726584be2
[Bun] Fixed how bun would be ran within bazel.
June Park <parkjune1995@gmail.com>
parents:
24
diff
changeset
|
178 && cp -r {src_folder}/** . \ |
|
176
fed99fc04e12
[HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents:
175
diff
changeset
|
179 && cp -r ./bazel-out/k8-fastbuild/bin/hg-web/src/** src \ |
|
fed99fc04e12
[HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents:
175
diff
changeset
|
180 && ls src \ |
|
175
71ad34a8bc9a
[HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
168
diff
changeset
|
181 && export NODE_PATH=./node_modules && {bun_path} build {input_path} --outfile {output_path} --target browser |
|
12
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
182 """.format( |
|
25
342726584be2
[Bun] Fixed how bun would be ran within bazel.
June Park <parkjune1995@gmail.com>
parents:
24
diff
changeset
|
183 bun_path = ctx.executable._bun.path, |
|
342726584be2
[Bun] Fixed how bun would be ran within bazel.
June Park <parkjune1995@gmail.com>
parents:
24
diff
changeset
|
184 src_folder = ctx.attr.src_folder, |
|
175
71ad34a8bc9a
[HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
168
diff
changeset
|
185 # Fix this lol |
|
71ad34a8bc9a
[HgWeb] Can stream hg response now. Added react page for hg web since we use json anyway.
MrJuneJune <me@mrjunejune.com>
parents:
168
diff
changeset
|
186 input_path = "/".join(ctx.file.src.path.split("/")[-2:]), |
|
25
342726584be2
[Bun] Fixed how bun would be ran within bazel.
June Park <parkjune1995@gmail.com>
parents:
24
diff
changeset
|
187 output_path = out.path, |
|
12
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
188 ), |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
189 progress_message = "Bundling {} with Bun!\n\n".format(ctx.file.src.path), |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
190 ) |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
191 |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
192 return [DefaultInfo(files=depset([out]))] |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
193 |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
194 bun_build = rule( |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
195 implementation = _bun_build_impl, |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
196 attrs = { |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
197 "src": attr.label(allow_single_file = [".ts", ".tsx", ".js", ".jsx"]), |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
198 "_bun": attr.label( |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
199 default = Label("//third_party/bun:bun"), |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
200 executable = True, |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
201 cfg = "exec", |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
202 ), |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
203 "data": attr.label_list(allow_files=True), |
|
25
342726584be2
[Bun] Fixed how bun would be ran within bazel.
June Park <parkjune1995@gmail.com>
parents:
24
diff
changeset
|
204 "src_folder": attr.string(), |
|
12
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
205 }, |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
206 ) |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
207 |
|
156
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
208 def _bun_run_impl(ctx): |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
209 actual_exe = ctx.actions.declare_file(ctx.label.name) |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
210 |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
211 # 1. Get the workspace name (crucial for runfiles paths) |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
212 workspace_name = ctx.workspace_name |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
213 |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
214 # 2. Define the paths relative to the runfiles root |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
215 bun_path = ctx.executable._bun.short_path |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
216 src_path = ctx.file.src.short_path |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
217 |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
218 # 3. Create the launcher script |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
219 # We use a template to handle the environment and pathing |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
220 script_content = """#!/bin/bash |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
221 # Find the runfiles directory |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
222 if [[ -z "$RUNFILES_DIR" ]]; then |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
223 if [[ -d "$0.runfiles" ]]; then |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
224 RUNFILES_DIR="$0.runfiles" |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
225 fi |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
226 fi |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
227 |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
228 # Navigate to the workspace root inside runfiles |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
229 cd "$RUNFILES_DIR/{workspace}" |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
230 pwd |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
231 # Execute bun with the src file and any extra arguments |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
232 exec "./{bun_bin}" run "./{src_file}" "$@" |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
233 """.format( |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
234 workspace = workspace_name, |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
235 bun_bin = bun_path, |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
236 src_file = src_path |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
237 ) |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
238 |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
239 ctx.actions.write( |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
240 output = actual_exe, |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
241 content = script_content, |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
242 is_executable = True, |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
243 ) |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
244 |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
245 return [ |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
246 DefaultInfo( |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
247 executable = actual_exe, |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
248 runfiles = ctx.runfiles( |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
249 files = [ctx.file.src] + ctx.files.data + ctx.files._bun_files |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
250 ).merge(ctx.attr._bun[DefaultInfo].default_runfiles), |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
251 ), |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
252 ] |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
253 |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
254 # TODO: Fix the rules so that it can do relative import. |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
255 bun_run = rule( |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
256 implementation = _bun_run_impl, |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
257 executable = True, |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
258 attrs = { |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
259 "src": attr.label(allow_single_file = True, mandatory = True), |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
260 "data": attr.label_list(allow_files = True), |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
261 "_bun": attr.label( |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
262 default = Label("//third_party/bun:bun"), |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
263 executable = True, |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
264 cfg = "exec" |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
265 ), |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
266 "_bun_files": attr.label(default = Label("//third_party/bun:bun_files")), |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
267 }, |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
268 ) |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
269 |
|
cd35e600ae34
[MarkDown Converter] Fixed few things and made a test
June Park <parkjune1995@gmail.com>
parents:
154
diff
changeset
|
270 |
|
12
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
271 def _move_files_into_dir_impl(ctx): |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
272 srcs = ctx.files.srcs |
|
64
a30944e5719e
Added vibe coded markdown to html script since it is useful for me. Updated Dowa so that it can be compiled without dirnet for windows.
June Park <parkjune1995@gmail.com>
parents:
58
diff
changeset
|
273 outs = [] |
|
12
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
274 for src in srcs: |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
275 out = ctx.actions.declare_file(ctx.attr.dest + "/" + src.basename) |
|
64
a30944e5719e
Added vibe coded markdown to html script since it is useful for me. Updated Dowa so that it can be compiled without dirnet for windows.
June Park <parkjune1995@gmail.com>
parents:
58
diff
changeset
|
276 ctx.actions.run_shell( |
|
a30944e5719e
Added vibe coded markdown to html script since it is useful for me. Updated Dowa so that it can be compiled without dirnet for windows.
June Park <parkjune1995@gmail.com>
parents:
58
diff
changeset
|
277 inputs = [src], |
|
a30944e5719e
Added vibe coded markdown to html script since it is useful for me. Updated Dowa so that it can be compiled without dirnet for windows.
June Park <parkjune1995@gmail.com>
parents:
58
diff
changeset
|
278 outputs = [out], |
|
176
fed99fc04e12
[HgWeb] Problem with the emscript lol
MrJuneJune <me@mrjunejune.com>
parents:
175
diff
changeset
|
279 command = "cp -r \"$1\" \"$2\"", |
|
64
a30944e5719e
Added vibe coded markdown to html script since it is useful for me. Updated Dowa so that it can be compiled without dirnet for windows.
June Park <parkjune1995@gmail.com>
parents:
58
diff
changeset
|
280 arguments = [src.path, out.path], |
|
12
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
281 ) |
|
64
a30944e5719e
Added vibe coded markdown to html script since it is useful for me. Updated Dowa so that it can be compiled without dirnet for windows.
June Park <parkjune1995@gmail.com>
parents:
58
diff
changeset
|
282 outs.append(out) |
|
a30944e5719e
Added vibe coded markdown to html script since it is useful for me. Updated Dowa so that it can be compiled without dirnet for windows.
June Park <parkjune1995@gmail.com>
parents:
58
diff
changeset
|
283 return [DefaultInfo(files = depset(outs))] |
|
12
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
284 |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
285 move_files_into_dir = rule( |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
286 implementation = _move_files_into_dir_impl, |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
287 attrs = { |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
288 "srcs": attr.label_list(allow_files=True), |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
289 "dest": attr.string(), |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
290 }, |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
291 ) |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
292 |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
293 def _move_to_directory_impl(ctx): |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
294 srcs = ctx.files.data |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
295 res = [] |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
296 for src in srcs: |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
297 true = "/".join(src.path.split("/")[2:]) |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
298 path = ctx.attr.dest + "/" + true if ctx.attr.dest != "" else true |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
299 out = ctx.actions.declare_file( |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
300 path |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
301 ); |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
302 ctx.actions.symlink( |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
303 output = out, |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
304 target_file = src, |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
305 ) |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
306 res.append(out) |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
307 return [DefaultInfo(files = depset(res))] |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
308 |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
309 move_to_directory = rule( |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
310 implementation = _move_to_directory_impl, |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
311 attrs = { |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
312 "data": attr.label_list(allow_files=True), |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
313 "dest": attr.string(), |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
314 }, |
|
de54585a40f1
Adding bun and node modules.
June Park <parkjune1995@gmail.com>
parents:
8
diff
changeset
|
315 ) |
|
58
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
316 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
317 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
318 def _macos_app_impl(ctx): |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
319 """Implementation for creating a macOS .app bundle from a binary.""" |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
320 binary = ctx.file.binary |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
321 app_name = ctx.attr.app_name |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
322 bundle_id = ctx.attr.bundle_id |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
323 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
324 # Declare the .app directory as output |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
325 app_dir = ctx.actions.declare_directory(app_name + ".app") |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
326 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
327 ctx.actions.run_shell( |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
328 inputs = [binary], |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
329 outputs = [app_dir], |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
330 command = """ |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
331 set -e |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
332 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
333 APPDIR="{app_dir}" |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
334 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
335 rm -rf "$APPDIR" |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
336 mkdir -p "$APPDIR/Contents/MacOS" |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
337 mkdir -p "$APPDIR/Contents/Resources" |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
338 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
339 cp {binary} "$APPDIR/Contents/MacOS/{app_name}" |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
340 chmod +x "$APPDIR/Contents/MacOS/{app_name}" |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
341 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
342 cat > "$APPDIR/Contents/Info.plist" <<EOF |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
343 <?xml version="1.0" encoding="UTF-8"?> |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
344 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
345 "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
346 <plist version="1.0"> |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
347 <dict> |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
348 <key>CFBundleExecutable</key> |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
349 <string>{app_name}</string> |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
350 <key>CFBundleIdentifier</key> |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
351 <string>{bundle_id}</string> |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
352 <key>CFBundleName</key> |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
353 <string>{app_name}</string> |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
354 <key>CFBundleVersion</key> |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
355 <string>1.0</string> |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
356 </dict> |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
357 </plist> |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
358 EOF |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
359 """.format( |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
360 app_dir = app_dir.path, |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
361 binary = binary.path, |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
362 app_name = app_name, |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
363 bundle_id = bundle_id, |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
364 ), |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
365 progress_message = "Creating macOS app bundle for {}".format(app_name), |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
366 ) |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
367 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
368 return [DefaultInfo(files = depset([app_dir]))] |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
369 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
370 _macos_app = rule( |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
371 implementation = _macos_app_impl, |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
372 attrs = { |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
373 "binary": attr.label( |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
374 allow_single_file = True, |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
375 mandatory = True, |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
376 doc = "The binary to bundle into a .app", |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
377 ), |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
378 "app_name": attr.string( |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
379 mandatory = True, |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
380 doc = "Name of the application", |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
381 ), |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
382 "bundle_id": attr.string( |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
383 mandatory = True, |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
384 doc = "Bundle identifier (e.g., com.example.app)", |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
385 ), |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
386 }, |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
387 ) |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
388 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
389 def _macos_signed_app_impl(ctx): |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
390 """Implementation for signing a macOS .app bundle.""" |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
391 app_dir = ctx.file.app |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
392 app_name = ctx.attr.app_name |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
393 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
394 # Declare the signed .app directory as output |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
395 signed_app_dir = ctx.actions.declare_directory(app_name + "_signed.app") |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
396 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
397 ctx.actions.run_shell( |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
398 inputs = [app_dir], |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
399 outputs = [signed_app_dir], |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
400 command = """ |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
401 set -e |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
402 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
403 APPDIR="{app_dir}" |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
404 SIGNEDDIR="{signed_dir}" |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
405 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
406 rm -rf "$SIGNEDDIR" |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
407 # Use -L to dereference symlinks, as codesign doesn't work with symlinks |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
408 cp -RL "$APPDIR" "$SIGNEDDIR" |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
409 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
410 codesign --deep --force --sign - "$SIGNEDDIR" |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
411 """.format( |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
412 app_dir = app_dir.path, |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
413 signed_dir = signed_app_dir.path, |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
414 ), |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
415 progress_message = "Signing macOS app bundle {}".format(app_name), |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
416 ) |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
417 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
418 return [DefaultInfo(files = depset([signed_app_dir]))] |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
419 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
420 _macos_signed_app = rule( |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
421 implementation = _macos_signed_app_impl, |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
422 attrs = { |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
423 "app": attr.label( |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
424 allow_single_file = True, |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
425 mandatory = True, |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
426 doc = "The .app directory to sign", |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
427 ), |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
428 "app_name": attr.string( |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
429 mandatory = True, |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
430 doc = "Name of the application", |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
431 ), |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
432 }, |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
433 ) |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
434 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
435 def macos_app_and_dmg(name, binary, bundle_id = "com.example.app"): |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
436 """ |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
437 Creates a macOS .app bundle, signs it, and packages it into a DMG. |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
438 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
439 Args: |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
440 name: Base name for the generated targets |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
441 binary: Label of the binary target to bundle |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
442 bundle_id: Bundle identifier for the app (default: com.example.app) |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
443 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
444 Generates: |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
445 {name}_app: The .app bundle |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
446 {name}_signed_app: The signed .app bundle |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
447 {name}_dmg: The final DMG file |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
448 """ |
|
168
f3084bca7317
[Misc] Fixed all errors and all tests should pass now.
MrJuneJune <me@mrjunejune.com>
parents:
156
diff
changeset
|
449 macos_constraint = ["@platforms//os:macos"] |
|
f3084bca7317
[Misc] Fixed all errors and all tests should pass now.
MrJuneJune <me@mrjunejune.com>
parents:
156
diff
changeset
|
450 |
|
58
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
451 # 1. Build the .app bundle |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
452 _macos_app( |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
453 name = name + "_app", |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
454 binary = binary, |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
455 app_name = name, |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
456 bundle_id = bundle_id, |
|
168
f3084bca7317
[Misc] Fixed all errors and all tests should pass now.
MrJuneJune <me@mrjunejune.com>
parents:
156
diff
changeset
|
457 target_compatible_with = macos_constraint, |
|
58
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
458 ) |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
459 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
460 # 2. Sign the .app |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
461 _macos_signed_app( |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
462 name = name + "_signed_app", |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
463 app = ":" + name + "_app", |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
464 app_name = name, |
|
168
f3084bca7317
[Misc] Fixed all errors and all tests should pass now.
MrJuneJune <me@mrjunejune.com>
parents:
156
diff
changeset
|
465 target_compatible_with = macos_constraint, |
|
58
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
466 ) |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
467 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
468 # 3. Create the DMG |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
469 native.genrule( |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
470 name = name + "_dmg", |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
471 srcs = [":" + name + "_signed_app"], |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
472 outs = [name + ".dmg"], |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
473 cmd = """ |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
474 set -e |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
475 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
476 SIGNEDDIR="$(location :{name}_signed_app)" |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
477 |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
478 hdiutil create \ |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
479 -volname {name} \ |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
480 -srcfolder "$$SIGNEDDIR" \ |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
481 -ov -format UDZO "$@" |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
482 """.format(name = name), |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
483 local = 1, # Disable sandboxing for hdiutil |
|
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
484 tags = ["no-sandbox"], |
|
168
f3084bca7317
[Misc] Fixed all errors and all tests should pass now.
MrJuneJune <me@mrjunejune.com>
parents:
156
diff
changeset
|
485 target_compatible_with = macos_constraint, |
|
58
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
25
diff
changeset
|
486 ) |