ABI break in 1.32.2 compared to 1.31.x
Brought to you by:
sobukus
Even with 1.32.2 some symbols are gone. From a local build of the Debian package (on amd64, haven't checked a 32 bit build yet):
--- debian/libmpg123-0.symbols (libmpg123-0_1.32.2-1_amd64)
+++ dpkg-gensymbolsb3pGZR 2023-10-01 09:48:46.589724278 +0000
@@ -7,6 +7,7 @@
mpg123_copy_string@Base 1.6.2
mpg123_current_decoder@Base 1.7.2
mpg123_decode@Base 1.6.2
+ mpg123_decode_frame64@Base 1.32.2-1
mpg123_decode_frame@Base 1.6.2
(arch-bits=32|arch=!kfreebsd-any !x32)mpg123_decode_frame_32@Base 1.13.7
mpg123_decode_frame_64@Base 1.13.7
@@ -15,6 +16,7 @@
mpg123_delete@Base 1.6.2
mpg123_delete_pars@Base 1.6.2
mpg123_delete_string@Base 1.26.0
+ mpg123_distversion@Base 1.32.2-1
mpg123_enc_from_id3@Base 1.9.1
mpg123_enc_from_id3_2@Base 1.28.0
mpg123_encodings@Base 1.6.2
@@ -28,6 +30,7 @@
mpg123_feature2@Base 1.26.0
mpg123_feature@Base 1.10.0
mpg123_feed@Base 1.6.2
+ mpg123_feedseek64@Base 1.32.2-1
mpg123_feedseek@Base 1.6.2
(arch-bits=32|arch=!kfreebsd-any !x32)mpg123_feedseek_32@Base 1.13.7
mpg123_feedseek_64@Base 1.13.7
@@ -41,14 +44,17 @@
mpg123_format_all@Base 1.6.2
mpg123_format_none@Base 1.6.2
mpg123_format_support@Base 1.6.2
+ mpg123_framebyframe_decode64@Base 1.32.2-1
mpg123_framebyframe_decode@Base 1.10.0
(arch-bits=32|arch=!kfreebsd-any !x32)mpg123_framebyframe_decode_32@Base 1.13.7
mpg123_framebyframe_decode_64@Base 1.13.7
mpg123_framebyframe_next@Base 1.10.0
mpg123_framedata@Base 1.14.0
+ mpg123_framelength64@Base 1.32.2-1
mpg123_framelength@Base 1.23.8
(arch-bits=32|arch=!kfreebsd-any !x32)mpg123_framelength_32@Base 1.23.8
mpg123_framelength_64@Base 1.23.8
+ mpg123_framepos64@Base 1.32.2-1
mpg123_framepos@Base 1.14.0
(arch-bits=32|arch=!kfreebsd-any !x32)mpg123_framepos_32@Base 1.14.0
mpg123_framepos_64@Base 1.14.0
@@ -70,6 +76,7 @@
mpg123_icy@Base 1.6.2
mpg123_id3@Base 1.6.2
mpg123_id3_raw@Base 1.26.0
+ mpg123_index64@Base 1.32.2-1
mpg123_index@Base 1.6.2
(arch-bits=32|arch=!kfreebsd-any !x32)mpg123_index_32@Base 1.13.7
mpg123_index_64@Base 1.13.7
@@ -77,9 +84,11 @@
mpg123_info@Base 1.6.2
mpg123_init@Base 1.6.2
mpg123_init_string@Base 1.6.2
+ mpg123_length64@Base 1.32.2-1
mpg123_length@Base 1.6.2
(arch-bits=32|arch=!kfreebsd-any !x32)mpg123_length_32@Base 1.13.7
mpg123_length_64@Base 1.13.7
+ mpg123_libversion@Base 1.32.2-1
mpg123_meta_check@Base 1.6.2
mpg123_meta_free@Base 1.14.0
mpg123_move_string@Base 1.26.0
@@ -106,11 +115,13 @@
mpg123_param@Base 1.6.2
mpg123_parnew@Base 1.6.2
mpg123_plain_strerror@Base 1.6.2
+ mpg123_position64@Base 1.32.2-1
mpg123_position@Base 1.6.2
(arch-bits=32|arch=!kfreebsd-any !x32)mpg123_position_32@Base 1.13.7
mpg123_position_64@Base 1.13.7
mpg123_rates@Base 1.6.2
mpg123_read@Base 1.6.2
+ mpg123_reader64@Base 1.32.2-1
mpg123_replace_buffer@Base 1.6.2
mpg123_replace_reader@Base 1.6.2
(arch-bits=32|arch=!kfreebsd-any !x32)mpg123_replace_reader_32@Base 1.13.7
@@ -123,15 +134,19 @@
mpg123_safe_buffer@Base 1.6.2
mpg123_same_string@Base 1.26.0
mpg123_scan@Base 1.6.2
+ mpg123_seek64@Base 1.32.2-1
mpg123_seek@Base 1.6.2
(arch-bits=32|arch=!kfreebsd-any !x32)mpg123_seek_32@Base 1.13.7
mpg123_seek_64@Base 1.13.7
+ mpg123_seek_frame64@Base 1.32.2-1
mpg123_seek_frame@Base 1.6.2
(arch-bits=32|arch=!kfreebsd-any !x32)mpg123_seek_frame_32@Base 1.13.7
mpg123_seek_frame_64@Base 1.13.7
+ mpg123_set_filesize64@Base 1.32.2-1
mpg123_set_filesize@Base 1.6.2
(arch-bits=32|arch=!kfreebsd-any !x32)mpg123_set_filesize_32@Base 1.13.7
mpg123_set_filesize_64@Base 1.13.7
+ mpg123_set_index64@Base 1.32.2-1
mpg123_set_index@Base 1.10.0
(arch-bits=32|arch=!kfreebsd-any !x32)mpg123_set_index_32@Base 1.13.7
mpg123_set_index_64@Base 1.13.7
@@ -144,15 +159,19 @@
mpg123_strerror@Base 1.6.2
mpg123_strlen@Base 1.13.7
mpg123_supported_decoders@Base 1.6.2
+ mpg123_tell64@Base 1.32.2-1
mpg123_tell@Base 1.6.2
(arch-bits=32|arch=!kfreebsd-any !x32)mpg123_tell_32@Base 1.13.7
mpg123_tell_64@Base 1.13.7
+ mpg123_tell_stream64@Base 1.32.2-1
mpg123_tell_stream@Base 1.6.2
(arch-bits=32|arch=!kfreebsd-any !x32)mpg123_tell_stream_32@Base 1.13.7
mpg123_tell_stream_64@Base 1.13.7
+ mpg123_tellframe64@Base 1.32.2-1
mpg123_tellframe@Base 1.6.2
(arch-bits=32|arch=!kfreebsd-any !x32)mpg123_tellframe_32@Base 1.13.7
mpg123_tellframe_64@Base 1.13.7
+ mpg123_timeframe64@Base 1.32.2-1
mpg123_timeframe@Base 1.6.2
(arch-bits=32|arch=!kfreebsd-any !x32)mpg123_timeframe_32@Base 1.13.7
mpg123_timeframe_64@Base 1.13.7
dpkg-gensymbols: warning: some new symbols appeared in the symbols file: see diff output below
dpkg-gensymbols: warning: debian/libout123-0/DEBIAN/symbols doesn't match completely debian/libout123-0.symbols
--- debian/libout123-0.symbols (libout123-0_1.32.2-1_amd64)
+++ dpkg-gensymbolsWcTZlu 2023-10-01 09:48:46.681724891 +0000
@@ -4,6 +4,7 @@
out123_continue@Base 1.23.8
out123_del@Base 1.23.8
out123_devices@Base 1.28.0
+ out123_distversion@Base 1.32.2-1
out123_drain@Base 1.23.8
out123_driver_info@Base 1.23.8
out123_drivers@Base 1.23.8
@@ -20,6 +21,7 @@
out123_getformat@Base 1.23.8
out123_getparam2@Base 1.28.0
out123_getparam@Base 1.23.8
+ out123_libversion@Base 1.32.2-1
out123_ndrain@Base 1.23.8
out123_new@Base 1.23.8
out123_open@Base 1.23.8
dpkg-gensymbols: warning: some new symbols appeared in the symbols file: see diff output below
dpkg-gensymbols: error: some symbols or patterns disappeared in the symbols file: see diff output below
dpkg-gensymbols: warning: debian/libsyn123-0/DEBIAN/symbols doesn't match completely debian/libsyn123-0.symbols
--- debian/libsyn123-0.symbols (libsyn123-0_1.32.2-1_amd64)
+++ dpkg-gensymbolsaIsKli 2023-10-01 09:48:46.769725476 +0000
@@ -6,6 +6,7 @@
syn123_db2lin@Base 1.26.0
syn123_deinterleave@Base 1.26.0
syn123_del@Base 1.26.0
+ syn123_distversion@Base 1.32.2-1
syn123_dither@Base 1.26.0
syn123_drop_filter@Base 1.26.0
syn123_filter@Base 1.26.0
@@ -13,6 +14,7 @@
syn123_host2le@Base 1.26.0
syn123_interleave@Base 1.26.0
syn123_le2host@Base 1.26.0
+ syn123_libversion@Base 1.32.2-1
syn123_lin2db@Base 1.26.0
syn123_mix@Base 1.26.0
syn123_mixenc@Base 1.26.0
@@ -26,16 +28,20 @@
syn123_resample_expect@Base 1.26.0
syn123_resample_fillcount@Base 1.26.0
syn123_resample_history@Base 1.26.0
+ syn123_resample_in@Base 1.32.2-1
syn123_resample_incount@Base 1.26.0
syn123_resample_inexpect@Base 1.26.0
+ syn123_resample_intotal64@Base 1.32.2-1
syn123_resample_intotal@Base 1.26.2
- syn123_resample_intotal_32@Base 1.26.2
- syn123_resample_intotal_64@Base 1.26.0
+#MISSING: 1.32.2-1# syn123_resample_intotal_32@Base 1.26.2
+#MISSING: 1.32.2-1# syn123_resample_intotal_64@Base 1.26.0
syn123_resample_maxincount@Base 1.26.0
syn123_resample_maxrate@Base 1.26.0
+ syn123_resample_out@Base 1.32.2-1
+ syn123_resample_total64@Base 1.32.2-1
syn123_resample_total@Base 1.26.2
- syn123_resample_total_32@Base 1.26.2
- syn123_resample_total_64@Base 1.26.0
+#MISSING: 1.32.2-1# syn123_resample_total_32@Base 1.26.2
+#MISSING: 1.32.2-1# syn123_resample_total_64@Base 1.26.0
syn123_setup_filter@Base 1.26.0
syn123_setup_geiger@Base 1.26.0
syn123_setup_pink@Base 1.26.0
dh_makeshlibs: error: failing due to earlier errors
syn23_resample_total_64 became syn123_resample_total64 (this pattern can also be observed with other symbols). syn123_resample_total_32 is gone.
And here from the 32 bit build:
syn123_resample_intotal_32 is missing here as well.
Note that both builds are done with --enable-lfs-alias.
Last edit: Sebastian Ramacher 2023-10-01
I should've known what mess this ABI reworking becomes. But somehow I feel
a normal call for testing wouldn't have catched these cases. Sorry for puting
you at the test bench.
syn123_resample_total64()
is new API. I need to re-enable exporting of the_32
and_64
wrappers.OK, so a 1.32.3 release is close.
Can you check if https://mpg123.org/snapshot/mpg123-1.32.3-dev+20231001112336.tar.bz2 fixes things?
No.
syn123_resample_total_32
,syn123_resample_total_64
,syn123_resample_intotal_32
, andsyn123_resample_intotal_64
are still missing.OK, can you give me a full config.log, config.h?
I don't see right now what's missing.
The mpg123_*_64 and _32 are there, right?
sent from mobile device, trustworthy or not
Yes, for
mpg123_...
they are there:And there's config.log
Hm, now I see it, too. Sometimes they are there, sometimes not?!
Ah, I got it. The previous snapshot should have been fine for 32 bit, can you confirm?
For 64 bit systems, where
LFS_LARGEFILE_64
is not defined, the aliases were still missing.This is the current respective code block:
A new snapshot has been generated: https://mpg123.org/snapshot/mpg123-1.32.3-dev+20231001115121.tar.bz2
Can you confirm that it is fixed now? The
_32
suffix should only ever be present on 32 bit. The_64
one everywhere.The new snapshot works for me. I get the
_64
symbols everywhere and the_32
symbols on 32 bit builds.Cool. So it should become a release in the coming days. This then is hopefully the sensible upgrade from 1.31 series.
Well, then, I hope 1.32.3 does the trick.