Skip to content
This repository has been archived by the owner on Mar 19, 2021. It is now read-only.

Resolve file conflict with Breaks/Conflicts. #21

Merged
merged 2 commits into from
Feb 19, 2020

Conversation

dobey
Copy link
Member

@dobey dobey commented Feb 19, 2020

This adds a Breaks/Conflicts on libunity-api0 for libunity-api1 to resolve
the installability issue when upgrading a system which already ahs the former
installed, due to the ABI break being released without the package name being
fixed to match. Also change the URL to the GitHub URL.

Fixes #20 and ubports/crossbuilder#27

This adds a Breaks/Conflicts on libunity-api0 for libunity-api1 to resolve
the installability issue when upgrading a system which already ahs the former
installed, due to the ABI break being released without the package name being
fixed to match. Also change the URL to the GitHub URL.

Fixes #20 and ubports/crossbuilder#27
@RAOF
Copy link

RAOF commented Feb 19, 2020

Isn't the right fix here to fix the SONAME of the library so that it matches the package name? Then libunity-api1 wouldn't conflict with libunity-api0.

If there's actually been an ABI break then replacing libunity-api0 with libunity-api1 is likely to result in things crashing.

@dobey
Copy link
Member Author

dobey commented Feb 19, 2020

Isn't the right fix here to fix the SONAME of the library so that it matches the package name? Then libunity-api1 wouldn't conflict with libunity-api0.

The problem is the SONAME was changed before the package name. The package name is correct now, which is why the conflict exists. The conflict exists, because both packages have .so.1 in them.

@RAOF
Copy link

RAOF commented Feb 19, 2020

Aha!

In that case you want Breaks: libunity-api0, Replaces: libunity-api0; Ideally you'd have Breaks: libunity-api0 (> $VERSION_THAT_BROKE) so you can keep the old one installed if necessary.

Breaks+Conflicts doesn't make sense; Conflicts is a strictly stronger restriction that Breaks.

@dobey
Copy link
Member Author

dobey commented Feb 19, 2020

Breaks+Conflicts doesn't make sense; Conflicts is a strictly stronger restriction that Breaks.

Ah, right. So what I want is Conflicts+Replaces instead. I guess I recalled the combination slightly wrong.

Ideally you'd have Breaks: libunity-api0 (> $VERSION_THAT_BROKE) so you can keep the old one installed if necessary.

Ideally this wouldn't have been broken in the first place, but looking through the past commits, I'm unable to find when it was actually broken and made it into the UBports repo. But everything should already be rebuilt against the newer version, so simply forcing the old one out should be fine at this point.

Copy link
Member

@UniversalSuperBox UniversalSuperBox left a comment

Choose a reason for hiding this comment

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

I see now! So, by rebuilding any packages that build-depend on libunity-api-dev, they will automatically get the new unity-api1 package as their dependency. The issue was always one step up, as it were. In this case, I needed to rebuild thumbnailer.

This is still a good fix, since I was not allowed to install the build-deps package instead of ending up with an inconsistent state.

If this looks correct, @RAOF, let's merge it.

@dobey
Copy link
Member Author

dobey commented Feb 19, 2020

(Please Squash and merge if someone other than I merges this)

@UniversalSuperBox UniversalSuperBox merged commit e2dbc86 into xenial Feb 19, 2020
@UniversalSuperBox UniversalSuperBox deleted the xenial_-_fix-conflict branch February 19, 2020 20:21
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

can't build with cross-builder
3 participants