commit | 2441d37331d6c76d3e9ed8f6dab4ba4d8d84f65b | [log] [tgz] |
---|---|---|
author | Mitchell Kember <mkember@google.com> | Thu Mar 17 18:30:21 2022 +0000 |
committer | Mitchell Kember <mkember@google.com> | Thu Mar 17 18:30:21 2022 +0000 |
tree | e0ce133e61d6c097529063cf6ee0604033c152a7 | |
parent | a5898e810b31872d6610d18057b5282937fc67d3 [diff] |
Match zircon/vdso/zx/BUILD.gn logic This CL restricts compilation of library zx to only include zx_common.fidl and rights.fidl, matching zircon/vdso/zx/BUILD.gn. Previously it globbed all *.fidl files, which is only used for the fidlc -> kazoo flow, not the fidlc -> fidlgen flow. The latter started breaking on the latest fidlgen deployment because fidlgen_cpp code was not expecting to see JSON IR entries arising from including all the vdso *.fidl files, e.g. the PacketUser union. Test: manually tested the fxbug.dev/95560 repro Fixed: 95560 Bug: 90838 Change-Id: Iaa668742ff381dde5c38787fc82b8ebfdd134f51 Reviewed-on: https://fuchsia-review.googlesource.com/c/fidlbolt/+/658466 Reviewed-by: Yifei Teng <yifeit@google.com>
fidlbolt is web app for exploring FIDL code and bytes, inspired by Matt Godbolt's Compiler Explorer.
To run a local fidlbolt server:
fx build host_x64/{fidlc,fidlgen_{llcpp,hlcpp,rust,go,dart}} zircon/tools
.make run
.http://localhost:8080
.If you don't want changes in the Fuchsia tree (e.g. rebuilding fidlc or changing FIDL libraries) to affect the running fidlbolt, run ./prepare_deployment.sh
and use make run DEPLOYMENT=1
instead.
The backend is written in Go. It uses net/http to serve static files and handle POST requests.
The frontend is written in Elm and TypeScript. It uses webpack for bundling.
To set up the frontend:
sudo apt-get install npm
.cd frontend && npm ci
(using ci
instead of install
ensures a repeatable build).Then, use one of the commands listed in npm run
:
npm run dev
: build in development modenpm run watch
: rebuild in development mode on every file changenpm run tc
: typecheck TypeScript filesnpm run lint
: run eslint on TypeScript filesnpm run fix
: format and fix lint issues in TypeScript and Elm filesnpm run build
: build in production modeThe build commands read files in frontend/src/
and generate output in frontend/dist/
.
If you are developing on Linux, ./watch.sh
provides an easy workflow. It automatically watches code in the frontend (using npm run watch
) and backend (using inotifywait), rebuilding and restarting the server as necessary. It does not perform hot/live reloading: you still need to refresh the browser manually to see changes.
Before making a CL, always run make format
.
The project uses Docker for containerized deployment.
To build and run a new image locally:
sudo apt-get install docker-ce
../prepare_deployment.sh
docker image build -t fidlbolt .
docker container run --publish 8080:8080 --detach --name fb fidlbolt
You might need to use sudo
with the Docker commands.