Bazel
-
rules_vivado drives the AMD/Xilinx Vivado FPGA toolchain from Bazel: compile, simulate, synthesize, place-and-route, generate a bitstream, and program the device, all as ordinary build actions instead of clicks in a GUI …
-
My homelab has no servers I care about. Every machine in it, the build servers, the workstation, even the CI, is ephemeral: it can be destroyed at any moment, by me or by the provider, and reconstituted from scratch in …
-
This is a description of how I build programmable hardware. Everything that goes into Cocoapuffs, my RISC-V system-on-chip on an Artix-7 FPGA: the RTL, the firmware, the simulations, the synthesis, the bitstream, and the …
-
Fuchsia’s Zircon kernel now boots on Cocoapuffs, my homebrew RISC-V system-on-chip on an AMD Artix-7 FPGA: as far as I know, the first Fuchsia boot on programmable hardware. The boot video and the full chain, from a SERV …
-
I’m excited to announce the release of bazel_local_nix 0.1.0! bazel_local_nix provides Bazel rules that make Nix packages available inside a Bazel workspace without a host-level Nix installation and without nix-portable. …
-
tl;dr: I revived the upspin project source code. See it at https://github.com/filmil/upspin, and https://github.com/filmil/upspin-gdrive. Read on to learn what that actually means. History Upspin was a project intended …
-
Synod is a distributed Paxos coordination agent implemented in Go. It manages a highly available, synchronized Key-Value store across a network of peers using the Paxos consensus algorithm. It allows multiple dynamically …
-
mkill is a Go program that continuously monitors memory usage of the programs owned by the current user. It kills the program with the sharpest rise in memory utilization when the overall system memory occupancy goes …
-
A link page of interesting libraries and utilities I found. Libraries, utilities, etc. https://registry.bazel.build/modules/rules_verilator https://github.com/lromor/fpga-assembler …
-
fshlib fshlib is a simple shell library for logging. It provides a set of functions to log messages with different severity levels. Github repo: https://github.com/filmil/fshlib Usage To use the library, source the …
-
note to self: do not remove .bazelversion from projects The other day, I was pondering whether to keep setting particular bazel version in projects. I even removed some, to see what would become of it. Since I use the …
-
This repository provides Bazel rules for creating self-extracting archives (“shar"s) out of shell binaries. See section “what is this” below for details. Details at: https://github.com/filmil/rules_shar Usage To use the …
-
Bazel rules to support a debian rootfs The idea of this repository is to provide a hermetic, ephemeral and reproducible repository of prebuilt binaries, which can then be brought into bazel builds to remove the …
-
This is another piece of news in my quest for hermetic, ephemeral, and reproducible builds (“HER”). If you read my articles in the past months or so, you may have noticed that I am looking for good ways of creating …
-
This is a collection of links to interesting articles and knowledge sources about the Bazel build system that I found. I’m motivated to do this after spending considerable time developing a thing that already existed. …
-
This is another piece of news in my quest for hermetic, ephemeral, and reproducible builds (“HER”). If you read my articles in the past months or so, you may have noticed that I am looking for good ways of creating …
-
Update 2025-10-19: I made a searchable index of modules available from my registry at https://www.hdlfactory.com/bazel-registry. As Bazel 9.0 promises to disable the old dependency management approaches based on …
-
lit2md: a literate program converter from code to Markdown lit2md is a simplistic literate programming (LP) converter. See at: https://github.com/filmil/lit2md It takes a source code file annotated with special …
-
Decentralized Downloads for Bazel: Introducing bazel_rules_bt In the world of reproducible builds and efficient dependency management, Bazel stands out as a powerful tool. However, fetching large or uncommon dependencies …
-
rules_nixpkgs use This is a run-down of tips and tricks for the use of rules_nixpkgs, a rule set for bringing in nix packages for use in bazel. I got involved with the use of rules_nixpkgs as a result of my work on …
-
Bid allows you to create a build rule that runs a single bazel build action inside a Docker container. And if you can run a single action, you can run more if you so choose. This helps you if you must use software which …
-
Other formats: Original content is at: https://github.com/filmil/bazel-ebook The rendered HTML edition at: https://hdlfactory.com/bazel_ebook_html/ Introduction This repository is a set of bazel build rules that allow …
-
From zero to RISC-V in hardware, in 6 minutes Program your FPGA with a one-liner command. It’s a kind of magic. This is a project in sustainable FPGA development that I have been working on. It ties together several …
-
Be forewarned: HER builds with nix require a functional ranlib This is something seldom known, and a very sharp corner to cut yourself on. But you really want to know if you are using nix. I lost an entire day trying to …
-
bazel rules for GHDL I present to you https://github.com/filmil/bazel_rules_ghdl: a set of bazel rules for converting VHDL into Verilog. This for example allows running VHDL code in a Verilator simulation. Commercial …
-
bazel rules for a riscv64 bare metal rust compiler This article assumes that you have bazel installed via the bazelisk method. This is the latest example in my repository at: https://github.com/filmil/bazel-experiments …
-
bazel installation via the bazelisk method Here is how I install bazel. I use this installation method on all of my machines. I do not think it is practical to go about this any other way. It is implied in all of my …
-
bazel rules for a riscv64 bare metal GCC compiler The repository https://github.com/filmil/bazel_rules_gcc_riscv64_baremetal contains bazel rules that can be used for a hermetic bare metal GCC cross-compiler for a 64-bit …
-
Summary This short note defines the notions of hermetic, ephemeral and reproducible software build, as used in my writing. I call this “her” for short. Hermetic A build is said to be hermetic, if each build step only has …
-
Summary I bother with bazel. Here is why. Background Bazel is a build system. Originally created at Google for internal purposes, then eventually open sourced. Since then, it has not been universally accepted. You can …
-
You, too, can have a fully hermetic, reproducible, and ephemeral bazel build. If you are in a hurry, fast forward to https://github.com/filmil/bazel_local_nix Intro While looking for non-invasive and reproducible ways to …
-
Bazel does not like FIFOs Perhaps obvious in retrospect, but it is not possible for a bazel build artifact to generate a named pipe in the filesystem. The after-step checks will object if an output directory contains at …
-
TIM-011 was an 8-bit teaching computer that was ostensibly developed by IMP in what is now Serbia. It is hard to develop for any machine without a way to test quickly whether your work results in something usable. Since …
-
Update 2026-04-17: Bazoekt has been modernized and revived. Sourcegraph has taken over maintenance of zoekt, but what they actually did was disable the old repo and dismantle the zoekt infrastructure, so it couldn’t be …
-
Excavating an unknown file from a foreign_cc rule I discovered this trick recently, while trying (and mostly failing) to build a library. I discovered that it is possible to excavate an arbitrary file from the resulting …
-
TIM-011 gets a C runtime library TIM-011 was an 8-bit teaching computer that was ostensibly developed by IMP in what is now Serbia. Now that https://github.com/filmil/tim011-tools/issues/3 has been fixed, the TIM-011 …
-
I was a bit hard pressed to find all the proper work attribution. Please let me know if you have data to contribute. TIM-011 TIM-011 was an 8-bit teaching computer that was ostensibly developed by IMP in what is now …
-
Often needed little bits of bazel knowledge that I tend to forget. Module extensions Reminder about module extensions. # Also instead of `http.bzl`, `git.bzl` etc. http_file = …
-
Here is an example python Flask app built with Bazel. See README.md for instructions. Running the app will start a local dev server for Flask and you should be able to direct your browser at it and see the result. Based …
-
Update 2023-08-17: This is now a feature in bazel, see https://github.com/bazelbuild/bazel/issues/18766 for details. It is available starting bazel version 6.3.0. Use additional_compiler_input parameter to cc_library …
-
Summary The bazel build system has rules available to build C or C++ code from external repositories that use other more “conventional” build tools. By this I mean the usual suspects: GNU autotools, GNU make and cmake. …