| 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. |