Introduction
Introduction Statistics Contact Development Disclaimer Help
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.
You are viewing proxied material from dataswamp.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.