Maintaining node.js on FreeBSD
After a series of PRs with patches to keep the FreeBSD node.js ports up-to-date with upstream, I became the maintainer for all the www/node*
FreeBSD ports on 2016-04-11. I was humbled and honored to be offered the chance, and I accepted without hesitation.
My first FreeBSD port maintainership
This is my first real port maintainership as well, if we ignore the net/py-s3transfer
port I added as a dependency for devel/awscli
.
The upstream node.js project does a good job of keeping FreeBSD builds working, and they even run the test suite regularly on FreeBSD as well. This makes my job as maintainer really easy. When a new version of node.js is released, usually all I need to do is bump the version in the Makefile
and run make makesum
before generating the patch for a PR.
I do quite a bit of testing of the www/node*
ports myself, and I thought it might be interesting to describe how I do it.
AWS EC2
To be able to run builds, I need a build machine. I could have used my NAS at home, but I opted for a t2.medium
AWS EC2 instance instead. It’s running 10.3-RELEASE, but I’ve been testing builds on every supported 9.x and 10.x release.
git
I have been using git for a long time, and it is the tool I am most comfortable with. I have a clone of the ports mirror from Github cloned in /usr/ports
, and I use several branches to keep track of the changes that I do. This makes it easy for me push my changes to my own Github fork and generate patches from there when creating and updating PRs.
poudriere
Building patches with various combinations of options is best done with poudriere. I’ve setup jails for 9.3-RELEASE, 10.1-RELEASE, 10.2-RELEASE, and 10.3-RELEASE, for both i386 and amd64. I’ve set it up to use the /usr/ports
directory for all jails, so I can make modifications there and quickly run poudriere bulk
or poudriere testport
on my changes.
Ready, set, go!
I feel like I’ve got a pretty good setup. I’ve been able to do some bigger changes to the port, beyond the normal version bumps. I hope to be able to consolidate all of the ports to reduce duplication and limit the number of identical deltas in PR patches. Beyond that, I’m really not sure what I’ll do with it. Only time will tell.
:)