BSDCan2019 - 1.8

BSDCan 2019
The Technical BSD Conference

Brian Callahan
Day Tutorials #1 - 15 May - 2019-05-15
Room DMS 1110
Start time 09:00
Duration 03:00
ID 1037
Event type Workshop
Track Tutorial
Language used for presentation English

OpenBSD porting workshop - all day - AM

Become adept in the world of ports and packages!

OpenBSD ports, used by nearly all users through the package system, is a fun and exciting way to get your toes wet with OpenBSD development. In this hands-on, interactive workshop, we will cover all the basics of the OpenBSD ports infrastructure: how to read a port, how to update a port, and how to create new ports for simple C-based console utilities.

Participants should expect to leave the workshop having the ability to create and send successful patches to do routine updates of application ports, as well as the ability to make new ports for simple console utilities from scratch.

Advanced topics to be covered include Python ports, overriding make targets, handling shared library updates, handling exotic architecture issues, and more complicated testing procedures. Participants will be comfortable navigating a large percentage of real-world porting situations for at least C, C++, and Python software.

The OpenBSD ports system is routinely one of the most utilized aspects of the system--if you've ever typed "pkg_add" then you have benefited from the immense amount of work the OpenBSD porting team deals with on a daily basis to keep the software you love and use as up-to-date as possible. Ports require constant, careful attention to their update process and the creation of new ports for inclusion in the ports tree. More hands are always needed. Additionally, ports work is an excellent introduction to OpenBSD development, and its results are immediately noticeable by all users, especially for more popular ports.

This day-long workshop is a complete crash course to go from having no ports knowledge whatsoever to being able to handle a large percentage of real-world poring situations for at least C, C++, and Python software.

In the first session, we will cover a high-level overview of the ports infrastructure, how to read a port, how to do routine updates of application ports ("leaf ports"), and how to create leaf ports for simple console-based utilities written in C. We will end the session by creating a new port for such a utility together as a group.

In the second session, we will dive into more intermediate and advanced porting topics: how to deal with ports for software written in Python, how to override upstream make invocation for misbehaving ports, how to read and understanding the utilities for shared library updating, and ideal port testing protocols including testing on exotic architectures. The afternoon session will conclude with updating complicated library-based ports and Python ports as a group.

Participants will be able to take the lessons learned in this workshop and be able to be an active participant in ports development, including creating new ports from scratch and updating leaf ports and more complicated ports.

This workshop is ideal for programmers of all skill levels: from the true beginner to the seasoned pro. Some knowledge in Makefiles is helpful but not required.