Skip to content

Conversation

@hoffie
Copy link
Member

@hoffie hoffie commented Feb 22, 2022

Short description of changes

The autobuild-produced Debian/Ubuntu packages use another debian/control file than manual builds. This is done by copying a special copy of the control file to the right place.

86807c1 (squash of 3dadf23 and others) from #2138 mistakenly (I think?) removed this logic.

This results in broken dependencies (especially visible on Ubuntu 18.04) and wrong maintainer information:

root@71dafa5ca28f:/downloads# dpkg-deb --info jamulus_headless_3.8.1_ubuntu_amd64.deb | grep -P 'Depends|Maintainer'
 Maintainer: "corrados" <nomail@example.com>
 Depends: libqt5core5a (>= 5.5.0), libqt5network5 (>= 5.0.2), libqt5xml5 (>= 5.0.2)

root@71dafa5ca28f:/downloads# dpkg-deb --info jamulus_headless_3.8.2_ubuntu_amd64.deb | grep -P 'Depends|Maintainer'            
 Maintainer: "Marc Landolt jr" <debian@marclandolt.ch>
 Depends: libc6 (>= 2.27), libgcc-s1 (>= 3.0), libqt5core5a (>= 5.9.0~beta), libqt5network5 (>= 5.8.0), libqt5xml5 (>= 5.0.2), libstdc++6 (>= 7), adduser

We should also decide what to do regarding 3.8.2:

  1. Take the new 3.8.2 .deb (app version remaining at 3.8.2) from this PR, remove the existing .deb from the release and upload the new one (maybe with a -1 suffix to make clear that the file has been updated)
  2. Release 3.8.3 as a bug fix release. Downside: Will trigger irrelevant update notifications and confusion for non Ubuntu-18.04 users
  3. Release 3.8.2.1. Downside: We've never tested this versioning scheme. I wouldn't do that.
  4. Release 3.9.0nightly and point Ubuntu 18.04 users to this version (maybe add hint to the announcement)
  5. Do nothing and state "3.8.2 is broken on Ubuntu 18.04; please use 3.8.1 and wait for the next release". Ubuntu 18.04 is really old, but still supported until 2023. People do use it as Ubuntu 18.04: Version 3.8.2 fails to install due to bad dep libgcc-s1 (>= 3.0) #2422 shows.

I'd tend towards option 1.

Context: Fixes an issue?

Fixes #2422

Does this change need documentation? What needs to be documented and how?

Yes:

  • Release body
  • Github Announcement
  • Facebook announcement

Status of this Pull Request

Needs verification/testing.

What is missing until this pull request can be merged?

Needs verification/testing.

Checklist

  • I've verified that this Pull Request follows the general code principles
  • I tested my code and it does what I want
  • My code follows the style guide
  • I waited some time after this Pull Request was opened and all GitHub checks completed without errors.
  • I've filled all the content above

The autobuild-produced Debian/Ubuntu packages use another
`debian/control` file than manual builds. This is done by copying a
special copy of the `control` file to the right place.

86807c1 mistakenly removed this logic.

This results in broken dependencies (especially visible on Ubuntu 18.04)
and wrong maintainer information.

Fixes jamulussoftware#2422
@hoffie
Copy link
Member Author

hoffie commented Feb 22, 2022

The deb from https://github.com/hoffie/jamulus/actions/runs/1884500159 (0f9e948) installs for me on Ubuntu 18.04 (should be identical to this PR's artifact). So this PR fixes #2422.
As my PR is based on r3_8_2, this PR's checks will already generate a file which we could use for option (1) mentioned above.

@hoffie
Copy link
Member Author

hoffie commented Feb 22, 2022

@npostavs If you could have a look here to confirm that the debian/control modification was really an unintended change, this would be highly appreciated. If it was intended we will likely have to find another fix.

@hoffie
Copy link
Member Author

hoffie commented Feb 23, 2022

As my PR is based on r3_8_2, this PR's checks will already generate a file which we could use for option (1) mentioned above.

Hmm, for some reason¹ the checks in this PR list a totally different commit ID than my branch: https://github.com/jamulussoftware/jamulus/runs/5296375135?check_suite_focus=true

Therefore, we can't use those packages 1:1. This run on my repo/branch would work though: https://github.com/hoffie/jamulus/actions/runs/1884500159

¹ Maybe some auto-rebase by Github?

@npostavs
Copy link
Contributor

@npostavs If you could have a look here to confirm that the debian/control modification was really an unintended change, this would be highly appreciated. If it was intended we will likely have to find another fix.

Hmm, I think I copied it from @ann0see's patch in #1767; I agree it looks like a mistake.

Copy link
Member

@ann0see ann0see left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. Seems like a mistake. I would replace the deb file and give a small announcement

@pljones
Copy link
Collaborator

pljones commented Feb 23, 2022

Yep, I'd go with "a -1 suffix" -- assuming the default deb didn't have a suffix. Otherwise, increment the suffix.

lwks-12.5.0-amd64.deb would go to lwks-12.5.0-1_amd64.deb for a patch release.
mysql-apt-config_0.3.2-1ubuntu14.04_all.deb would go to mysql-apt-config_0.3.2-2ubuntu14.04_all.deb for the second patch release.

(Why am I keeping ancient .deb files in my Downloads directory..?)

@ann0see ann0see added the bug Something isn't working label Feb 23, 2022
@hoffie
Copy link
Member Author

hoffie commented Feb 23, 2022

Yep, I'd go with "a -1 suffix" -- assuming the default deb didn't have a suffix. Otherwise, increment the suffix.

If we wanted to do that properly (probably a good idea...), then we'll have to bump debian_revision via an additional changelog entry: https://docs.huihoo.com/debian/manuals/maint-guide/ch-update.en.html#s-newrevision

I can do that on a temporary tag or branch.

@pljones
Copy link
Collaborator

pljones commented Feb 23, 2022

OK, so:

  • we need the actual fix merged to master. But that won't create a 3.8.2 release build
  • we need an "actual" 3.8.2 release build with "_1" appended (in full, something like jamulus_3.8.2_1ubuntu_amd64.deb
  • that needs building somehow

Then, once it's built, we need the existing 3.8.2 release note updated.

(Should we be using "ubuntu" in the .deb name, by the way?)

Right?

Copy link
Member

@softins softins left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving this as the correct fix to master. I think the ChangeLog entry is only needed in master, not for a revised 3.8.2 release, as the bug was just a regression, and there was no intended change from 3.8.1.

Happy just to replace the debs with working ones in the existing release page - both standard and headless. I don't have a strong view about whether to change the filename.

@softins
Copy link
Member

softins commented Feb 23, 2022

I've also verified on a new Ubuntu18 VM that the current release debs don't install, and @hoffie's ones from https://github.com/hoffie/jamulus/actions/runs/1884500159 do install fine.

@ann0see ann0see merged commit 0cb5e26 into jamulussoftware:master Feb 23, 2022
@pljones
Copy link
Collaborator

pljones commented Feb 23, 2022

Ideally our CI/CD processes would catch things like this as regressions to stop them happening again.

How long would it take to have a step spin up an Ubuntu docker image and install the .deb, checking it (a) installed okay; (b) runs on the default port; (c) a client (inside the container) can connect to it. All headless.

@ann0see
Copy link
Member

ann0see commented Feb 23, 2022

Certainly testing like that is possible. But how would we check this specifically?

@pljones
Copy link
Collaborator

pljones commented Feb 23, 2022

The deploy would fail. If it fails, it needs fixing. It could fail for many reasons. It could install and still not work, hence the "can a client connect" check. We're not checking a "real" deploy - with firewalls, etc - just a sanity check.

@ann0see
Copy link
Member

ann0see commented Feb 23, 2022

ok. So something like

  1. install .deb file
  2. spin up server (jamulus -n - s -T [other args to check] &)
  3. connect to localhost headless (jamulus -n -c localhost -6 [...])
  4. if exited with non zero exit code: fail ci else (kill after x seconds)

@pljones
Copy link
Collaborator

pljones commented Feb 23, 2022

Yeah. I don't know how headless client works too well, to be honest - the "zero status code" might be tricky :).

@ann0see
Copy link
Member

ann0see commented Feb 23, 2022

Yes. That’s why a timeout would be good. Or we could abuse json-rpc

@pljones
Copy link
Collaborator

pljones commented Feb 23, 2022

Or we could abuse json-rpc

Having that in would really help for testing.

@hoffie
Copy link
Member Author

hoffie commented Feb 23, 2022

@pljones @ann0see I've opened #2428 to track the CI idea.

(Should we be using "ubuntu" in the .deb name, by the way?)

I wondered about that as well. It think it should not. I've opened #2429 for that.

@softins
Copy link
Member

softins commented Feb 24, 2022

Certainly testing like that is possible. But how would we check this specifically?

Well this issue was the debs were uninstallable. Since we are building on a fresh ubuntu-18, it should be possible just to try apt install the built debs within the same container, and raise an error if they fail. That would have caught this issue without needing to try running the installed binary.

@hoffie hoffie deleted the autobuild-fix-debian-control branch March 9, 2022 00:13
@ann0see
Copy link
Member

ann0see commented Mar 9, 2022

CHANGELOG: Bug: Fix dependency issue to allow Jamulus being installed on Ubuntu 18.04 (ported from last release to upstream)

@ann0see ann0see added this to the Release 3.9.0 milestone Mar 9, 2022
@ann0see
Copy link
Member

ann0see commented Jul 25, 2022

@pljones I just shortened the changelog.

@pljones
Copy link
Collaborator

pljones commented Jul 26, 2022

"(ported from last release to upstream)" is wrong. We don't have an upstream. If someone else who packages our build changes our build, they are downstream of us and we're backporting.

Was this specific to 18.04 (i.e. no earlier or later version)?

@ann0see
Copy link
Member

ann0see commented Jul 26, 2022

I think the issue only appeared on this specific version.
As far as I remember, what really happened was that the release was fixed first and then the fix was applied to master. So it's about our packaging

@pljones
Copy link
Collaborator

pljones commented Jul 26, 2022

OK. It shouldn't really have been done that way around - it should have been tested on a branch, merged to master, then back ported to created the 3.8.2.1 release...

I'll go with:
Bug Fix: Build: .deb dependency fix to allow Jamulus being installed on Ubuntu 18.04

@ann0see
Copy link
Member

ann0see commented Jul 26, 2022

That’s also ok.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Ubuntu 18.04: Version 3.8.2 fails to install due to bad dep libgcc-s1 (>= 3.0)

5 participants