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.
 
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.
I wish bmake from NetBSD would get more attention than GNU tools. Cmake is good, though, it's universal for Microsoft too. It has lots of dependencies, due to the tools being universal and trying to cover everything.

IIRC, Meson saved headaches, when it was used to build packages of Xorg. It saved headaches for the maintainers for some packages, so they didn't have to build it nearly every day, for it to not have broken components. It must have been one of the drivers or open source components having to do with 2D/3D rendering or acceleration.
 
Thank you for the replies. Y'all are awesome.

I've been offline since posting this, learning about bectl, gpt labels, and encrypted zfs drives. I borked my laptop but now I understand more about these things and my machine is back online... so I can respond:

* Once I go down this path, I'll follow cracauer@ and diizzy 's advice and start with something simple and small.
* Phishfry I'll take a look. I was looking on FreeCAD.org and it looked like someone had started a port and stopped about 9 or 10 years ago.
* sidetone I'm not really critiquing the porting docs. I don't know if they are missing anything yet. I'll have to spend a lot more time on this before I can come to a conclusion or offer any constructive help. But once I grok it, I'll take another pass and offer suggestions.
 
I'm not really critiquing the porting docs. I don't know if they are missing anything yet.
Porting process for beginners, not the documents. Maybe, it can come from somewhere, but anyone who has tried porting, but hasn't completed it, maybe lacks to understand what else is needed. I would also lack, and may struggle to explain the learning curve to get anything done in regards to porting.

If I were to critique porting or maintaining a port, it would take a lot of effort again, and asking for help. I'd have to relearn GIT and the porters handbook. I don't have the means, patience and time for that within the year.

A single video isn't going to teach someone how to port. A single video could show a full example of a porting process. It would need to be videos of a semester of computer class on porting.

If anything, I would be interested in investigating the potential for a standardized porting process using bmake or how to reform the porting process.
 
Back
Top