Mathias' Blog

Occasional musings and technical posts…

03 Dec 2021

LXD Packaging Report, 32bit edition

We’ll start today with a PSA: 32bit architectures still exist.

Similar to C, golang has an int variable type whose size depends on the actual architecture that the code is compiled for. Usually this doesn’t cause an issue, but sometimes it does. Like when dealing with large numbers (cryptography, or computing exponents) that can overflow a 32bit value, or if you have code that assumes pointers will always be 8 bytes long. It was interesting to see packages hitting the various Debian buildds, and then noticing patterns with 32bit builds failing. So, this is a good reminder for everyone that while 32bit architectures may no longer be as common, they still exist and it’s a good idea to occasionally check that your code works on them.

Also similar to C, golang has int32 and int64 variable types that explicitly set the size of the variable, regardless of the architecture. If you use these, then you don’t have unexpected issues when your code is compiled on a 32bit system and suddenly int is smaller than on a 64bit system.

In other news, last week I was able to successfully compile LXD for the first time, using only properly-packaged dependencies! A handful of packages still need to pass through NEW before all the dependencies are available in the archive, but this is a big step. Several of LXD’s tests fail, but it’s encouraging to see that the army of unpackaged dependencies is finally under control. :)

NEW/updated packages accepted into unstable:

  • gobgp
  • golang-github-canonical-go-dqlite
  • golang-github-duo-labs-webauthn
  • golang-github-fxamacker-cbor
  • golang-github-go-ldap-ldap
  • golang-github-jochenvg-go-udev
  • golang-github-juju-cmd
  • golang-github-juju-gomaasapi
  • golang-github-mhilton-openid
  • golang-github-yohcop-openid-go
  • golang-gopkg-goose.v1
  • golang-gopkg-lxc-go-lxc.v2
  • golang-gopkg-macaroon-bakery.v2
  • golang-gopkg-retry.v1
  • golang-petname

NEW packages pending upload:

  • golang-github-digitalocean-go-libvirt

Pending updates to existing packages:

  • golang-github-digitalocean-go-qemu

As usual, thanks to Aloïs Micard for continued feedback and sponsoring my changes.