Comments (20)
Huh… I thought we were really careful. My guess is that compiling in C++14 mode yields different symbol names. Meh.
I'll bump the sonames of both libraries & prepare new releases.
from libebml.
@marillat Please note that we've decided to tackle of couple of merge requests & change ideas that we've been pondering & postponing till the next ABI break for some time now. This means that the next version of libEBML will not be released as soon as I initially thought. Also, it won't be API-compatible anymore, requiring new releases of software using it.
You'll have to decide what you want to do with the latest, ABI-breaking-but-not-soname-bumping release — probably just ignore/skip it.
from libebml.
Thanks, I already reverted libEBML to 1.4.2
I'll wait for the next release.
from libebml.
I'm re-opening the issue until the new releases have been made, even though the "fix" has already been committed.
from libebml.
For others coming here looking for solutions, there are basically two:
- Skip this release & keep your distro on 1.4.2 for the time being
- Keep using 1.4.3, but re-compile all libraries & applications using it (e.g. libMatroska, MKVToolNix, VLC, potentially others)
As stated above, we plan to release new versions of both libraries that will have their sonames/soversions bumped properly. As these will also break the API in certain ways, they will also require new releases of software using the libraries. The changes will be pretty small (e.g. see this commit in MKVToolNix — basically only swapping uint32
with the proper type, size_t
, and fixing a couple of compiler warnings resulting from the different data type). It'll likely be a couple of days (weeks?) until those new releases are done.
from libebml.
In Debian only 3 applications are using ebml/matroska MKVToolNix, gerbera and vlc
And we have largely the time to rebuild these packages as the Soft Freeze for the next release is scheduled in February 2023.
from libebml.
I just reinstall MKVToolNix and it still will not launch with 1.4.3.
from libebml.
@Locutus64 Yes, you must install 1.4.2
from libebml.
Installed the Flatpak for MKVToolNix and it seems to be working fine now.
from libebml.
It may be worth adding abidiff
from libabigail
to CI for future.
from libebml.
@thesamesam That sounds interesting. Is there a Github workflows config we can take a look at as inspiration?
from libebml.
@thesamesam That sounds interesting. Is there a Github workflows config we can take a look at as inspiration?
Sure! I originally got the idea from OpenZFS (see https://github.com/openzfs/zfs/blob/master/.github/workflows/checkstyle.yaml#L40), but managarm's setup is easier to read & understand I reckon: https://github.com/managarm/mlibc/blob/master/.github/workflows/abidiff.yml. @ArsenArsen added it there after I mentioned it in passing!
from libebml.
Thanks! I'll take a look.
from libebml.
I can't use mkvextract on Arch Linux and can't downgrade libebml, someone has a workaround ?
from libebml.
Re-compile MKVToolNix.
from libebml.
Re-compile MKVToolNix.
Hello @mbunkus, thanks for your answer!
This commands don't works :
sudo pacman -Rsn mkvtoolnix-cli
sudo pacman -S mkvtoolnix-cli
from libebml.
Re-compile, not just re-install. If you don't know how to do that, please ask on the Arch Linux forums.
from libebml.
@robUx4 As our release of 2.0.0 will still take a bit of time, I plan on releasing libEBML 1.4.4 & libMatroska 1.7.1 which will be ABI-compatible again with libEBML 1.4.2 & libMatroska 1.6.3 respectively. For that I've created the branch v1.4.4
starting at tag release-1.4.3
. I'll do similar things for libMatroska.
The tool @thesamesam mentioned, abidiff
from the libabigail
package, is a god-send for this type of purpose. It allowed me to identify the commits that break the ABI due to removed or changed symbols. Reverting those two commits on top of v1.4.4
(release-1.4.3
) was conflict-free. The result was a new shared library that didn't have an ABI diff to the one produced by compiling release-1.4.2
.
I've opened a PR into v1.4.4
that contains the reverts.
The reason is that, as you can see here, several distros have already updated, and a lot of users are confused & complaining. The easiest solution seems to be to produce new versions quickly that are ABI-compatible so that distros can update to those. It'll take the pressure of us of releasing our planned, API-breaking 2.0.0.
from libebml.
Re-compile, not just re-install. If you don't know how to do that, please ask on the Arch Linux forums.
It's good with theses commands :
yay -G mkvtoolnix-cli
cd mkvtoolnix/repos/extra-x86_64
makepkg -si
Thanks!
from libebml.
libEBML 1.4.4 & libMatroska 1.7.1 have been released. They restore ABI compatibility with prior versions which the most recent releases (1.4.3 & 1.7.0 respectively) unfortunately broke.
More concrete: the new libEBML release 1.4.4 is ABI-compatible with 1.4.2 & 1.4.1 again (probably even further back). However, 1.4.3 is compatible with neighter its predecessor 1.4.2 nor the new one, 1.4.4.
Similarly for libMatroska: the new 1.7.1 is ABI-compatible with 1.6.3 & 1.6.2 again. However, 1.7.0 is compatible neither its predecessor 1.6.3 nor the new one, 1.7.1.
If you had already upgraded to 1.4.3 & re-compiled applications using them, you'll have to re-re-compile with after upgrading to 1.4.4. However, if you hadn't done the re-compiling yet (meaning they'd work with 1.4.2 but not 1.4.3), upgrading to 1.4.4 should work without recompiling. Similarly for libMatroska.
I'm sorry for the inconvenience.
from libebml.
Related Issues (20)
- EbmlId doesn't have a copy assignment operator anymore HOT 2
- Validate EbmlId on creation/Don't set the size on creation HOT 3
- Use [[nodiscard]] on some methods HOT 1
- FIx handling of broken UTF-8 data HOT 2
- Add the doctype(s)+version(s) an element is allowed in HOT 2
- run source through clang-format HOT 1
- Switch to C++17 HOT 4
- Handle reading empty elements
- Backport some fixes on 1.x HOT 1
- Stack corruption in EbmlElement.cpp MakeRenderHead() HOT 3
- find_if to find conversions HOT 4
- Move the size information in EbmlCallbacks HOT 2
- Show the CMake configuration at the end of configuration
- Add code coverage in the CI
- Use the EbmlDocVersion constraints when checking/adding mandatory elements
- Handle global elements as a list of EbmlCallbacks
- Use std::optional for element value+value is set
- Make ShouldWrite policy a state of each element
- make the library fully usable without RTTI
- allow reading at the top level with EbmlHead+doctype top elements HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from libebml.