Title: Experimenting with a new OpenBSD development lab | |
Author: Solène | |
Date: 16 September 2021 | |
Tags: openbsd life | |
Description: | |
# Experimenting | |
This article is not an how to or explaining anything, I just wanted to | |
share how I spend my current free time. It's obviously OpenBSD | |
related. | |
When updating or making new packages, it's important to get the | |
dependencies right, at least for the compilation dependencies it's not | |
hard because you know it's fine once the building process can run | |
entirely, but at run time you may have surprises and discover lacking | |
dependencies. | |
# What's a dependency? | |
Software are made of written text called source code (or code to make | |
it simpler), but to avoid wasting time (because writing code is hard | |
enough already) some people write libraries which are pieces of code | |
made in the purpose of being used by other programs (through fellow | |
developers) to save everyone's time and efforts. | |
A library can propose graphics manipulation, time and date functions, | |
sound decoding etc... and the software we are using rely on A LOT of | |
extra code that comes from other piece of code we have to ship | |
separately. Those are dependencies. | |
There are dependencies required for building a program, they are used | |
to manipulate the source code to transform it into machine readable | |
code, or for organizing the building process to ease the development | |
and so on and there are libraries dependencies which are required for | |
the software to run. The simplest one to understand would be the | |
library to access the audio system of your operating system for an | |
audio player. | |
And finally, we have run time dependencies which can be found upon | |
loading a software or within its use. They may not be well documented | |
in the project so we can't really know they are required until we try | |
to use some feature of the software and it crashes / errors because of | |
something missing. This could be a program that would call an extra | |
program to delegate the resizing of a picture. | |
# What's up? | |
In order to spot these run time dependencies, I've started to use an | |
old laptop (a thinkpad T400 that I absolutely love) with a clean | |
OpenBSD installation, lot of local packages on my network (see it | |
later) and a very clean X environment. | |
The point of this computer is to clean every package, install only one | |
I need to try (pulling the dependencies that come with it) and see if | |
it works under the minimal conditions. They should work with no issue | |
if the packages are correctly done. | |
Once I'm satisfied with the test process, I will clean every packages | |
on the system and try another one. | |
Sometimes, as we have many many packages installed, it happens we have | |
a run time dependency installed by that is not declared in the software | |
package we are working on, and we don't see the failure as the | |
requirement is provided by some other package. By using a clean | |
environment to check every single program separately, I remove the | |
"other packages" that could provide a requirement. | |
# Building | |
When I work on packages I often need to compile many of them, and it | |
takes time, a lot of time, and my laptop usually make a lot of noise | |
and is hot and slow to do something else, it's not very practical. I'm | |
going to setup a dedicated building machine that I will power on when | |
I'll work on ports, and it will be hidden in some isolated corner at | |
home building packages when I need it. That machine is a bit more | |
powerful and will prevent my laptop to be unusable for some time. | |
This machine in combination with the laptop are a great combination to | |
make quick changes and test how it goes. The laptop will pull packages | |
directly from the building machine, and things could be fixed on the | |
building machine quite fast. | |
# The end | |
Contributing to packages is an endless work, making good packages is | |
hard work and requires tests. I'm not really good at doing packages | |
but I want to improve myself in that field and also improve the way we | |
can test packages are working. With these new development environments | |
I hope I will be able to contribute a bit more to the quality of the | |
futures OpenBSD releases. |