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..
cad/freecad
 
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...
As you learn all this, may I humbly suggest creating a port of a "port wizard" program that helps a newbie with porting a program through a series of questions and answers?
 
Well, to teach something, you really have to know a lot about it.
And when you teach you'll learn even more.

Decades ago I taught electronics at a local college for a while. I thought there was nothing I couldn't teach these kids but you'd be surprised how many times I would get stumped by a question they came to me with or a real interesting angle on how something works or should work. Which would lead me to do more studying on my part to figure out some whys and howcomes and educated me even better than I ever was before.
 
It would be nice to see videos. Though, there aren't enough creators. I have written howto's and faq's on other FreeBSD topics. A youtube video is another step, sometimes building of off others written documentation or their own.

I've ported and maintained simple ports before, but I have to relearn and expand my learning of that. While the Porters' manual seems adequate, it takes going over and over, then learning GIT, to understand how to do anything. What confused me about the handbook, is that the quick porting section is actually not an alternative method to slow porting. Quick porting is a precursor needed for slow porting. So slow porting requires use of the information from quick porting. Understanding that makes it easier to look up information needed about that. It may take asking for help in IRC too.

Videos on porting may require many chapters of videos, since the porters handbook has a lot of necessary information. I believe it needs a paid for published book to really pick things up. There might already be sections from FreeBSD Journal that include how to port.

The person asking, while they may not be able to port, try to critique attempts to learn the porting process for a beginner.
However, even though I have read the documentation for ports and packages... it's really not sinking in.
If you were to critique the porting process based on what you read and understood, would what you wrote in this thread be all? If you were to make a video, or even a slideshow with written text, either for public or private, what would it be? How much more would you be willing to learn for this critique?
 
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.
Given that most active projects or new projects are either moving away from GNU Autotools or don't use it at all often in favour of CMake or Meson I wouldn't recommend starting with it and additionally it's a pain to fix when it's broken.

toddg
FreeCAD is already ported but I strongly suggest that you start with something small. Here's a link to an older post touching on your subject.
 
Back
Top