Build fails on armhf/arm64 due to missing dependency when dependency exists

Asked by Jasem Mutlaq on 2017-11-27

I have several recipes that have been running for _years_ without issues on armhf/arm64, but in the last few days, builds now fail due to missing libindi-dev dependency.

https://launchpadlibrarian.net/347093345/buildlog_ubuntu-artful-arm64.indi-asi_0.7~201711252258~ubuntu17.10.1_BUILDING.txt.gz

But libindi-dev is building fine within the same PPA for all arch, including armhf/arm64 here:

https://code.launchpad.net/~mutlaqja/+recipe/libindi-master-daily

There isn't any obvious error, so what's going on here?

Question information

Language:
English Edit question
Status:
Solved
For:
Launchpad itself Edit question
Assignee:
No assignee Edit question
Solved by:
Colin Watson
Solved:
2017-11-27
Last query:
2017-11-27
Last reply:
2017-11-27
William Grant (wgrant) said : #1

When apt says "but it is not going to be installed", it really means that the dependency's dependencies can't be satisfied, not that it is missing entirely.

You'll need to try to install indi-asi's build dependencies locally. I suspect they'll install fine up to libindi-dev, but then when you try to install libindi-dev you'll get a more specific error message.

Jasem Mutlaq (mutlaqja) said : #2

that's exactly what I did. I install libindi-dev on a Raspberry PI and it installed just fine without any errors.

Jasem Mutlaq (mutlaqja) said : #3

Also note that it builds just fine on 32/64 bit, it's only limited to arm architecture even though there is no arm-specific package.

Best Colin Watson (cjwatson) said : #4

This was a temporary situation. Here's what happened:

 * libindi-dev depends on libindi1, which depends on libindi-data (>= ${binary:Version}) or similar, which is Architecture: all.
 * Architecture: all binary packages are only built on a single architecture (nowadays usually amd64) and the result is published for all architectures. This means that, unless you have some kind of more complicated gating mechanism in place to ensure consistency, it's possible to end up with temporary failures when builds happen at different times on different architectures.
 * https://code.launchpad.net/~mutlaqja/+archive/ubuntu/ppa/+build/13776695 (libindi/arm64) finished at 2017-11-25 22:50:47 UTC, while https://code.launchpad.net/~mutlaqja/+archive/ubuntu/ppa/+build/13776694 (libindi/amd64) finished at 2017-11-25 23:34:47 UTC. Therefore, in the window between the arm64 build being published (probably a few minutes after 22:50:47) and the amd64 build being published, libindi-dev would have been uninstallable on arm64.
 * https://code.launchpad.net/~mutlaqja/+archive/ubuntu/ppa/+build/13777030 (indi-asi/arm64) finished at 2017-11-25 23:01:18 UTC, so was very likely in that window.

Normally you don't notice this because the amd64 builds are usually faster, but that isn't guaranteed. (And I think your dependency structure is essentially correct, so if I were you I would resist the temptation to make changes there to avoid this problem; the most robust fix would be to build in a separate PPA and copy into this one after the builds complete, but since that would involve some automation on your end it may not be worth it.)

I've retried your indi-asi builds for artful and they seem happier now. You'll probably want to go through https://code.launchpad.net/~mutlaqja/+archive/ubuntu/ppa/+packages yourself and retry any other builds that may have been affected.

Jasem Mutlaq (mutlaqja) said : #5

Thank you for your detailed response. Now it makes sense and I was able to build it again without issues. Issue resolved!

Jasem Mutlaq (mutlaqja) said : #6

Thanks Colin Watson, that solved my question.