FreeBSD Ports: New Contributors 101
First up, thank you for deciding to dedicate your time and effort to the FreeBSD community and to make things better.
This guide is designed to be lightweight, get you ramped up quickly, and save you time and effort. Is it not exhaustive.
Contents
Get Ready
Create a dedicated Email address. But expect spam (Gmail is good).
Create a FreeBSD Bugzilla account.
- Set your Full Name (for credit in commit logs).
Set DEVELOPER=yes in /etc/make.conf (turns on lots of QA/error/sanity checks).
Get The Tools
At a minimum:
Porttools ports-mgmt/porttools (installs portlint)
Portlint ports-mgmt/portlint
Poudriere ports-mgmt/poudriere
For bonus points:
GitLab, Bitbucket or GitHub account for managing a ports tree
- Mercurial or Git
Your Resources
FreeBSD Ports Monitor (portsmon)
- It's being down for maintenance at the moment (2018.04.28)
Your Support Network
- EFNet IRC: #bsdports, #freebsd-bugbusters
- Libera.Chat IRC: #freebsd-ports, #freebsd (You'll need to register your nickname: /ns help register)
Twitter: @FreeBSDHelp
The Basic Process
Create a place where you'll keep your local ports, ~username/ports is fine.
Setup your ~username/.porttools configuration (read porttools(5)).
- Copy the category/port you want to modify from /usr/ports into your local tree
- Make your changes
- Test your changes (portlint, poudriere, unit tests, etc)
- Submit your changes
Here it is in action
cp -Rp /usr/ports/category/portname ~username/ports/category # make some changes port test # fix reported issues port test port diff
Looks good!
port diff > patch.diff
Create new Bugzilla issue.
Attach patch.diff to issue.
Protips and Magic Incantations
The following work in port directories (ie: category/port)
make makesum When you change what files a port downloads (updates distinfo file)
make makepatch Automatically creates patches in files/ using filename/filename.orig pairs)
make -V VARIABLE Check the value of a make VARIABLE
Other resources
Based on FreeBSD Ports: New Contributors 101 by KubilayKocak