YouTube Video Proposal : New maintainers - Creating a Port/Package

There are several applications that run on Linux that I would like to see on FreeBSD (Martin Tile Server, and FreeCAD come to mind).

However, even though I have read the documentation for ports and packages... it's really not sinking in. What would be helpful would be a video where a newbie (like me) is interacting with someone who actually knows FreeBSD and how to do this.

In the video, the veteran user can guide the new user through the process of:

* creating a port/package
* using poudriere

Other ideas where this might also be useful:

* installing a desktop environment
* installing audio and video drivers
* installing a VPN
* configuring a firewall

I've figured out the last four on this list. And I've figured out how to use `pkg` for my simple use cases. But becoming a maintainer and publishing a new port/package...
 
You should practice by making a port for a simple to integrate program. Something that uses GNU autoconf and make.

Linux binary ports are advanced usage of ports.
 
FreeCAD come to mind).
FreeCAD package just dropped out in Q1 tree. They changed something upstream that broke it.
cad/freecad

If you look at the fallout log you will figure out whats wrong. Why poudriere failed to build it.

Stop.
make: stopped making "build" in /usr/ports/cad/freecad
=>> Cleaning up wrkdir
===> Cleaning for FreeCAD-1.1.1
build of cad/freecad | FreeCAD-1.1.1 ended at Sun Jun 14 18:51:44 UTC 2026
build time: 00:55:16
!!! build failure encountered !!!

[1m/wrkdirs/usr/ports/cad/freecad/work/FreeCAD-1.1.1/src/Mod/TechDraw/Gui/CommandCreateDims.cpp:1106:52: [0m[0;1;31merror: [0m[1mcall to 'abs' is ambiguous[0m
1106 | [0;34mint[0m alpha = std::round(Base::toDegrees(std::abs<[0;34mfloat[0m>(std::atan(type == [0;32m"DistanceY"[0m ? (dx / dy) : (dy / dx)))));[0m
| [0;1;32m ^~~~~~~~~~~~~~~
[0m[1m/usr/include/c++/v1/__math/abs.h:52:52: [0m[0;1;36mnote: [0mcandidate function [with $0 = float][0m
52 | [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI [0;34minline[0m [0;34mint[0m abs([0;34mint[0m __x) _NOEXCEPT {[0m
| [0;1;32m ^
[0m[1m/usr/include/c++/v1/__math/abs.h:57:53: [0m[0;1;36mnote: [0mcandidate function [with $0 = float][0m
57 | [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI [0;34minline[0m [0;34mlong[0m abs([0;34mlong[0m __x) _NOEXCEPT {[0m
| [0;1;32m ^
[0m[1m/usr/include/c++/v1/__math/abs.h:62:58: [0m[0;1;36mnote: [0mcandidate function [with $0 = float][0m
62 | [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI [0;34minline[0m [0;34mlong[0m [0;34mlong[0m abs([0;34mlong[0m [0;34mlong[0m __x) _NOEXCEPT {[0m
| [0;1;32m ^
[0m1 error generated.
gmake[2]: *** [src/Mod/TechDraw/Gui/CMakeFiles/TechDrawGui.dir/build.make:660: src/Mod/TechDraw/Gui/CMakeFiles/TechDrawGui.dir/CommandCreateDims.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
 
You really don't need a video to help you. Just ask detailed questions. There is a great body of live people here to help.

To view a "Package Fallout" on FreshPorts click the Nuclear Shield icon. Then you have different arch builds and dates to look at. There is even a log.
Scroll to bottom of log and see the failure reason.

I don't see a bug report for this so check with maintainer. See if they need a hand.

Do note the COMMIT History at the bottom of the FreeCAD FreshPorts page.
Christoph has been working hard on getting it back..
 
To quote some TV actor...
Well, to teach something, you really have to know a lot about it.
Practice makes perfect is my point. Become a master user before leaping to port maintainer. No offense intended.
 
Back
Top