Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

revision bumps for giflib #47141

Closed
wants to merge 3 commits into from
Closed

revision bumps for giflib #47141

wants to merge 3 commits into from

Conversation

Bo98
Copy link
Member

@Bo98 Bo98 commented Nov 25, 2019

#46991 (comment)

I've verified from the bottles that all of these had at least one file linking to giflib compatibility version 8.0.0.

@Bo98 Bo98 mentioned this pull request Nov 25, 2019
@Bo98
Copy link
Member Author

Bo98 commented Nov 25, 2019

EFL appears to not compile anymore on Xcode 11. :(

Maybe best just to drop it from here and focus on fixing it by #46826?
The mono-libgdiplus revision bump is kinda important to fix dafny, which is needed to do any sort of update/revision bump of z3, which is needed for Python 3.8.

@Bo98
Copy link
Member Author

Bo98 commented Nov 25, 2019

Dropping EFL from this pull request.

@Bo98 Bo98 closed this in 6ef6f26 Nov 25, 2019
@Bo98 Bo98 deleted the giflib branch November 25, 2019 19:20
@antoniovs1029
Copy link

Hi. So I was having some problems with mono-libgdiplus that got resolved after this PR got merged.

Since I am new to homebrew I am just curious to know what you changed so that I can learn about it. I believe your change on the revision number of mono-libgdiplus.rb in this PR is meant to make brew download the build from:

https://homebrew.bintray.com/bottles/mono-libgdiplus-6.0.4_1.high_sierra.bottle.tar.gz

So my question is what has changed between mono-libgdiplus-6.0.4_1.high_sierra.bottle.tar.gz and mono-libgdiplus-6.0.4.high_sierra.bottle.tar.gz?

Thanks for solving this problem!

@Bo98
Copy link
Member Author

Bo98 commented Nov 25, 2019

Thanks for reaching out @antoniovs1029.

mono-libgdiplus contains a dependency on giflib. A little over a week ago, that dependency was updated (#41436). Typically, unless there was binary compatibility changes, this isn't much of a problem and doesn't require rebuilding anything depending on it.

In #46991, there was an attempt to update z3. Due to a symlink issue, dafny also had to be updated at the same time. It was when the CI was running tests for dafny that it discovered loading issues, curiously only on macOS High Sierra and not on Mojave or Catalina. You can see from discussions there that we eventually found the cause after enabling Mono debug outputs:

Incompatible library version: libgdiplus.dylib requires version 8.0.0 or later, but libgif.7.dylib provides version 0.0.0'.

Due to build system changes upstream in giflib, the "compatibility version" of the dylib is actually now an earlier version (0.0.0) which you shouldn't really ever do. When you link a binary against a library the compatibility version of the library is stored in the binary. If the binary detects that the library on disk is older than the compatibility version it was linked to, it will refuse to load - as was above. (Why it worked on Mojave and Catalina is a bit of a mystery.) The compatibility version is to ensure that if a binary is using newer API that it will never try to load an older library.

The fix was to "revision bump" mono-libgdiplus which effectively means we rebuild it from source again and create a new bottle. The revision number increase (instead of just replacing the existing bottle) also means end users will be offered the update as it forms a part of the version number (6.0.4_1).

Before the rebuild, this was mono-libgdiplus was linked to giflib:

/usr/local/opt/giflib/lib/libgif.7.dylib (compatibility version 8.0.0, current version 8.0.0)

And now this is how the linkage looks:

/usr/local/opt/giflib/lib/libgif.dylib (compatibility version 0.0.0, current version 7.2.0)

@lock lock bot added the outdated PR was locked due to age label Jan 1, 2020
@lock lock bot locked as resolved and limited conversation to collaborators Jan 1, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
outdated PR was locked due to age
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants