Project

General

Profile

Bug #3176

osmocom debian packages are not install / upgrade tested

Added by laforge 5 months ago. Updated about 11 hours ago.

Status:
In Progress
Priority:
High
Assignee:
Target version:
-
Start date:
04/16/2018
Due date:
% Done:

100%

Estimated time:
(Total: 0.00 h)
Spec Reference:

Description

We've recently seen some packaging bugs related to library version handling / package naming in both the 'nightly' and the 'latest' feeds that could have been discovered months earlier by automatic testing.

This could e.g. be achieved by some dockefiles which would do things like
  • try to install all packages given feed (nightly or latest) from scratch on the respective base distro (debian 8/9, ...)
  • start with a docker image that has older versions of packages installed already (like nightly from a week ago, or the previous "latest" packages) and try to upgrade all packages

Of course there's no need for Docker, I just think it could come in handy for related tests


Subtasks

OsmoBSC - Bug #3540: Conflicting Debian packages: osmocom-bsc-sccplite and osmo-bsc-mgcpClosedosmith

Bug #3543: Conflicting Debian packages: abisip-find and osmocom-ipaccess-utilsClosedosmith

OsmoBSC - Bug #3544: Conflicting Debian packages: osmo-bsc-* and osmocom-*Closedosmith


Related issues

Related to libosmocore - Bug #3175: Packaging: Upgrading libosmocore impossibel due to dpkg error overwriting libosmoctrl.so.0Feedback2018-04-16

Related to Cellular Network Infrastructure - Feature #1649: automatic nightly build of dpkgs for Debian GNU/LinuxClosed2016-03-11

Related to Cellular Network Infrastructure - Bug #3541: Conflicting Debian packages: python3-osmopy-utils and osmocom-nitbNew2018-09-10

Related to Cellular Network Infrastructure - Feature #3555: debian-repo-install-test: check if binaries report UNKNOWN as version stringResolved2018-09-14

Blocked by SDR (Software Defined Radio) - Bug #3542: Conflicting Debian packages: soapysdr0.5-module-lms7 and soapysdr0.6-module-lms7Feedback2018-09-10

History

#1 Updated by laforge 5 months ago

  • Related to Bug #3175: Packaging: Upgrading libosmocore impossibel due to dpkg error overwriting libosmoctrl.so.0 added

#2 Updated by laforge 5 months ago

  • Related to Feature #1649: automatic nightly build of dpkgs for Debian GNU/Linux added

#3 Updated by laforge 5 months ago

  • Related to Bug #3160: /usr/local/lib/libosmocore.so: undefined reference to `clock_gettime' collect2: ld returned 1 exit status added

#4 Updated by laforge 5 months ago

  • Related to deleted (Bug #3160: /usr/local/lib/libosmocore.so: undefined reference to `clock_gettime' collect2: ld returned 1 exit status)

#5 Updated by neels 5 months ago

What confuses me about this is that we do use docker images that install nightly packages for the docker-playground ttcn3 tests.
On my machine, I rebuild those images many times a week, and I have so far not seen a single failure to install nightly packages via apt.
What am I doing "wrong" to be missing the packaging failures that users reported?

Aren't our ttcn3 jobs rebuilding the "osmo-foo-master" docker images?
They should see the nightly package updates and rebuild every day, right?
And if they fail, hopefully the jenkins jobs result in failure?

#6 Updated by zecke 5 months ago

I assume docker doesn't do upgrades but installs the packages from a clean debian state? The easiest to reproduce would be to put old packages into a docker container and then always upgrade from this old version to a new one (and generate new versioned containers every n-weeks.. to have a kind of rolling upgrade test...)

But doing "full" upgrade tests is complex one would need to upgrade from any combination of base packages to any combination of upgrades. That feels like being 100 or more testcases (sure can be automated but complexity in a test is not nice. E.g. ttcn3 is appealing because it is real programming but that comes at the cost of needing a test for your test). What might be better and easier is to enforce certain packaging standards.

A libfoo.so.3.1.0 should always be in a package called libfoo3? A binary should be in a NAME package.

#7 Updated by laforge 5 months ago

On Tue, Apr 17, 2018 at 12:34:42PM +0000, neels [REDMINE] wrote:

What confuses me about this is that we do use docker images that install nightly packages for the docker-playground ttcn3 tests.

good point.

On my machine, I rebuild those images many times a week, and I have so far not seen a single failure to install nightly packages via apt.

same here. I've never seen any problem whatsoever.

What am I doing "wrong" to be missing the packaging failures that users reported?

maybe:
  • we're typically only installing a single program + its library dependencies,
    i.e. not testing to install all programs at once
  • we're not installing osmo-nitb, as we don't do ttcn3-testing for it
  • we don't test "latest"

Aren't our ttcn3 jobs rebuilding the "osmo-foo-master" docker images?
They should see the nightly package updates and rebuild every day, right?
And if they fail, hopefully the jenkins jobs result in failure?

yes.

#8 Updated by laforge 19 days ago

  • Assignee changed from sysmocom to osmith

#9 Updated by laforge 19 days ago

  • Priority changed from Normal to High

#10 Updated by osmith 10 days ago

  • Status changed from New to In Progress

#11 Updated by osmith 10 days ago

  • % Done changed from 0 to 50

Getting a list of all packages in the repository and installing them in a plain debian:stretch container is working:

https://gerrit.osmocom.org/#/c/docker-playground/+/10862/

However, some packages are conflicting with others. So further development is blocked until that is resolved. I will open new issues for the conflicts.

#12 Updated by laforge 10 days ago

On Mon, Sep 10, 2018 at 12:57:37PM +0000, osmith [REDMINE] wrote:

However, some packages are conflicting with others. So further development is blocked until that is resolved. I will open new issues for the conflicts.

Looking forward to that.

TODO:

minor stylistic note: It makes sense to add thse as checkbox items to this ticket, rather than
in the body/description.

#13 Updated by osmith 10 days ago

  • Blocked by Bug #3542: Conflicting Debian packages: soapysdr0.5-module-lms7 and soapysdr0.6-module-lms7 added

#14 Updated by osmith 10 days ago

  • Checklist item get conflicts in the binary repo resolved added
  • Checklist item run --version on all osmocom binaries in the script added
  • Checklist item code review added
  • Checklist item merge to master added
  • Checklist item create Jenkins CI job that runs the script (once for latest, once for nightly) added

It makes sense to add thse as checkbox items to this ticket, rather than
in the body/description.

Thanks for the hint, done!

#15 Updated by neels 9 days ago

About the conflicts between openbsc.git and the newer gits, if you can't find the origin of these packages automatically:
It would be ok to keep a manual list of packages to ignore. We aren't really interested in testing the openbsc.git derived packages.
So you can still discover packages automagically, and skip all those we know to be derived from openbsc.git.

(Once that works, we can still consider checking the old packages in a separate step.
But we don't want to spend time on openbsc.git anymore, and those aren't likely to change anyway,
so that's very very optional.)

#16 Updated by osmith 8 days ago

So you can still discover packages automagically, and skip all those we know to be derived from openbsc.git.

This makes sense, I'll close the OpenBSC conflict related issues (#3540, #3543, #3544) and implement it like that.

Thank you very much for going through all these issues, neels!

#17 Updated by osmith 8 days ago

  • Related to Bug #3541: Conflicting Debian packages: python3-osmopy-utils and osmocom-nitb added

#18 Updated by osmith 8 days ago

  • Checklist item get conflicts in the binary repo resolved set to Done
  • Checklist item run --version on all osmocom binaries in the script set to Done

#19 Updated by osmith 7 days ago

  • % Done changed from 50 to 80

Code is ready for review

(I've set this to 80% instead of 90%, because the Jenkins job is still missing to complete this issue.)

#20 Updated by osmith 6 days ago

  • Related to Feature #3555: debian-repo-install-test: check if binaries report UNKNOWN as version string added

#21 Updated by osmith 2 days ago

  • Checklist item create Jenkins CI job that runs the script (once for latest, once for nightly) set to Done

#23 Updated by osmith 1 day ago

  • Checklist item code review set to Done
  • Checklist item merge to master set to Done

Almost finished - the only missing piece is the jenkins job builder config getting merged to master:

https://gerrit.osmocom.org/#/c/osmo-ci/+/11031/

#24 Updated by osmith about 11 hours ago

  • % Done changed from 90 to 100

#25 Updated by osmith about 11 hours ago

This is finished now. I can't set the status to "Resolved" though, there's only "New", "In Progress", "Feedback", "Stalled".

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 48.8 MB)