006-use-the-src

Tues Sept 21, 2021

Use the source, Luke!

One of the main reasons to use a FOSS OS is that you can see the code! For me as a dev, it's been a lifechanging experience. Often it's faster to just look at the code than try to decipher Stack Overflow answers, and I always learn more that way!

Another perk of the *BSD's is that all of their source is in one repo. This can of course make SCM slow, but from a curious-developer perspective it's a dream come true.

OpenBSD uses cvs(1) to manage their source, but they publish a read-only git(1) mirror to GitHub, which I like to use for familiarity sake.

Traditionally, all the source lives in /usr/src , and OpenBSD expects you to put it there (for build purposes).

To get it, first add yourself to the wsrc and wobj groups so you can build without doas

# usermod -G wsrc,wobj <user>

Then clone a bare repo to /var/git (default /usr/src not big enough for .git)

# mkdir /var/git
# chmod 775 /var/git
# chown root:wsrc /var/git
$ cd /var/git
$ git clone --bare https://github.com/openbsd/src

Now check out a new worktree at /usr/src

$ git -C /var/git/src.git worktree add /usr/src

Finally find your favorite tool and build it

$ cd /usr/src/bin/ed
$ make obj  # for out of tree build, see make(1) OBJDIR
$ make
$ ./obj/ed

How cool is that?