+1 Maintenance Report

Zixing Liu zixing.liu at canonical.com
Mon Sep 23 17:51:02 UTC 2024


# +1 Maintenance Report

I was on +1 maintenance on the week of 2024-09-16.

The previous +1 maintenance report (by Paul Mars) is here:
https://lists.ubuntu.com/archives/ubuntu-devel/2024-September/043123.html.

## Details

I spent much time on the FFmpeg 7 transition (NBS items).
The most common reason for the failure was that `AVChannelLayout` is
no longer a bitmask (typed as `unsigned int` in C) but a `struct`,
while the `channels` attribute was removed from `AVChannel` and needs
to be accessed through `AVChannelLayout` via the `nb_channels`
attribute.
FFmpeg 7 also removed some old APIs that were deprecated since FFmpeg 5.

Since I don't have permission to upload packages, most of the changes
described are proposed as merge proposals.

### r-bioc-affxparser

armhf was marked unbuildable for this package. Upon investigation,
this package actually builds correctly on armhf and also passes the
unit tests.
This package is blocking the majority of the R ecosystem packages from
migrating.

https://code.launchpad.net/~liushuyu-011/ubuntu/+source/r-bioc-affxparser/+git/r-bioc-affxparser/+merge/473317

### ocaml-re

This package contains a broken `sed` command in the autopkgtest test
script that breaks the unit test code.
Correcting the `sed` command to properly remove the `(rule ...)`
expression from the unit test prologue was the fix.
This package is blocking a lot of packages in the Ocaml ecosystem.

https://code.launchpad.net/~liushuyu-011/ubuntu/+source/ocaml-re/+git/ocaml-re/+merge/473319

### dvbcut

This software used too many old FFmpeg APIs (e.g. accessing codec
parameters through `codec` instead of `codecpar`), I have backported
two upstream patches to fix the issues to build on FFmpeg 6.

It was still not enough to fix the build failure on FFmpeg 7; the next
problem was that the `picture_number` counters were removed.
This software wants to know where the `picture` transition happens
(the `picture_number` value changed). Upon some digging, it seems to
be really finding where the I-frames are in the MPEG streams.
I have introduced a patch to find the I-frames by checking whether
FFmpeg thinks the current frame is a keyframe (I or IDR-frame).

https://code.launchpad.net/~liushuyu-011/ubuntu/+source/dvbcut/+git/dvbcut/+merge/473324

### aubio

This software has multiple issues:

- On the FFmpeg front, it used `channels` and set the channel count as
a number. I have backported two upstream patches to fix this API
issue.
On the Python front, it had issues with the regular expressions in the
binding generator script, which produced incorrect header files.
Another issue was in its glue code, where the CV-qualifiers of
multiple pointer types were mismatched. I have made a patch to fix
these issues.

https://code.launchpad.net/~liushuyu-011/ubuntu/+source/aubio/+git/aubio/+merge/473379

### notcurses

This software used some old FFmpeg APIs to access the frame duration
information. I have backported an upstream patch to fix this API
issue.
The package itself did not include the
`/usr/share/dpkg/architecture.mk` file but referenced multiple
`DEB_*_ARCH` variables in the `debian/rules` file. I don't know how it
was built previously.

https://code.launchpad.net/~liushuyu-011/ubuntu/+source/notcurses/+git/notcurses/+merge/473382

### pqiv

This package needs a no-change rebuild (did not caught by the
transition tracker?)

https://code.launchpad.net/~liushuyu-011/ubuntu/+source/pqiv/+git/pqiv/+merge/473386

### moc

This software used the `channels` attribute to access the audio
channel information; as previously discussed, this is no longer
possible in FFmpeg 7.
I have created a patch to fix this issue.

https://code.launchpad.net/~liushuyu-011/ubuntu/+source/moc/+git/moc/+merge/473387

### janus

This software used the `channels` attribute to access the audio
channel information; as previously discussed, this is no longer
possible in FFmpeg 7.
I have created a patch to fix this issue.

https://code.launchpad.net/~liushuyu-011/ubuntu/+source/janus/+git/janus/+merge/473389

### performous

This software contains a lot of API compatibility issues. I have
backported an upstream patch to fix this.
The patch has been heavily modified due to we are packaging an older
version of this software.

https://code.launchpad.net/~liushuyu-011/ubuntu/+source/performous/+git/performous/+merge/473476

### openboard

This software used the `channels` attribute to access the audio
channel information; as previously discussed, this is no longer
possible in FFmpeg 7.
I have backported an upstream patch to fix this issue.

https://code.launchpad.net/~liushuyu-011/ubuntu/+source/openboard/+git/openboard/+merge/473395

### zoneminder

This software contains a lot of API compatibility issues. A lot of
pre-FFmpeg 5 APIs were used.
I have adapted an upstream patch to fix this.
The patch has been heavily modified because we are packaging an older
version of this software.

https://code.launchpad.net/~liushuyu-011/ubuntu/+source/zoneminder/+git/zoneminder/+merge/473472

### libopenshot

This software used the `channels` attribute to calculate how many
audio samples to copy, and as previously discussed, this is no longer
possible in FFmpeg 7.
I have backported an upstream patch to fix this issue.

https://code.launchpad.net/~liushuyu-011/ubuntu/+source/libopenshot/+git/libopenshot/+merge/473479

**The following are packages that are part of the archive rebuild
test. I have fixed these packages as part of the +1 maintenance.**

## zsh

Due to the GCC 14 transition, many of the broken compiler tests inside
`configure.ac` caused the program to mid-build.
I have backported an upstream patch to correct the tests.

Another issue was that the `boolcodes` variable has a different
linkage and type (`static char*`) in the source file than declared in
the header file (`const char* const`).
I have created a patch to fix this mistake.

https://code.launchpad.net/~liushuyu-011/ubuntu/+source/zsh/+git/zsh/+merge/473532

## kbd

Due to the GCC 14 transition, `kbd` no longer builds due to missing C
standard library headers.
I have created a patch to add missing headers.

https://code.launchpad.net/~liushuyu-011/ubuntu/+source/kbd/+git/kbd/+merge/473534

## aptdaemon

Due to the Python 3.12 transition, `setuptools` no longer provides a
test driver. This package still expects the `setup.py test` to launch
the test suite.
I have changed the `debian/rules` script to use the `nosetests3` driver instead.
I also discovered that the `test_cdrom` is very flaky (with a chance
of passing of about 60%), so I have disabled this test to avoid
randomly failing the build.

https://code.launchpad.net/~liushuyu-011/ubuntu/+source/aptdaemon/+git/aptdaemon/+merge/473537



More information about the ubuntu-devel mailing list