- LibreSSL (3.7.2 or newer)
- libpfctl (0.4 or newer)
./configure
make
See ./configure -h
to learn how to modify the defaults such as the locations of libraries and header files.
-
Use
freebsd-relayd:
prefix in commit message. -
Use
#if __FreeBSD__
,#endif
to make FreeBSD specific blocks in source files. -
Use
BEGIN FreeBSD-relayd
andEND FreeBSD-relayd
comment markers for FreeBSD-specific blocks.
-
Create a new branch called
release
.git checkout -b release
-
Add the OpenBSD repository as a remote.
git remote add openbsd git@github.com:openbsd/src.git
-
Pull the master branch from the
openbsd
remote and track it asopenbsdmaster
.git fetch openbsd git checkout -b openbsdmaster --track openbsd/master
-
Find the details needed for the final branch name.
The name of the final branch should be in the form of the following scheme:
OSMAJOR.OSMINOR.LATEST_COMMIT_DATE
OSMAJOR
andOSMINOR
are major and minor versions set in the OpenBSD source tree in the master branch.LATEST_COMMIT_DATE
is the commit date of the latest OpenBSD commit in the master branch (e.g.,2014.08.10
).The
OSMAJOR
andOSMINOR
values can be found inshare/mk/sys.mk
:grep "OSM\(AJOR\|INOR\)=" share/mk/sys.mk
LATEST_COMMIT_DATE
can be obtained with the following command:git show --quiet HEAD | grep "Date:"
-
Rename the
release
branch toOSMAJOR.OSMINOR.LATEST_COMMIT_DATE
.git branch -m "release" "OSMAJOR.OSMINOR.LATEST_COMMIT_DATE"
-
Rebase and merge the final branch (
OSMAJOR.OSMINOR.LATEST_COMMIT_DATE
) on top theopenbsdmaster
branch.git rebase --merge openbsdmaster
Resolve conflicts if needed.
-
Check the build process.
./configure make
-
Test relayd.
Currently, the testing procedure is not automated. Testing should include the following steps:
- Create a configuration file for relayd.
- Check the configuration file's syntax:
relayd -n -v -f <config>
. - Run relayd:
relayd -d -v -f <config>
.
-
Publish the final branch to the
freebsd-relayd
repository.git push --set-upstream freebsd-relayd "OSMAJOR.OSMINOR.LATEST_COMMIT_DATE"
-
Tag a release. The tag should follow this format:
OSMAJOR.OSMINOR.LATEST_COMMIT_DATE-pPATCHLEVEL
, wherePATCHLEVEL
is the next tag number on the version branch (starting with 0), e.g.,7.3.2023.05.09-p0
.git tag OSMAJOR.OSMINOR.LATEST_COMMIT_DATE-pPATCHLEVEL
-
Publish the tag.
git push OSMAJOR.OSMINOR.LATEST_COMMIT_DATE-pPATCHLEVEL
-
The release with the release archive will be created automatically by the GitHub Actions as configued in
./.github/workflows/main.yml
.