Hi Thomas On 2024-04-03 08:09:59 +0200, Thomas Orgis wrote: > Hi again, > > (after Easter hiatus … or rather xz backdoor meltdown?) > > I had a stab at this, detecting a system that forces 64 bit offsets on > a 32 bit base in configure. This is to ensure that you do not encounter > the same symbol (like mpg123_tell() on two builds of the library on the > same platform offering a differing ABI (32 or 64 bit argument or return > value). > > This is supposed to look like that: > > $ CPPFLAGS=-D_FILE_OFFSET_BITS=64 ./configure > […] > checking switched off_t size... 8 > checking unswitched off_t size... 4 > checking size of off_t... 8 > configure: Detected system with enforced 64 bit offsets, dropping suffixless > symbols for uncryptic ABI breakage. > checking if native off_t is already 64 bits... yes > […] > default offsets ......... 64 > explicit 64 bit offsets . no > forced 64 bit offsets ... yes > […] > > This removes the ambiguous symbols from libmpg123.so and libsyn123.so. > With unchanged soversion, client code built for the earlier version > before the off_t/time_t 64 bit switch will fall in two categories: > > 1. Built with enabled large file support: Continues to work, no > breakage. > > 2. Built without large file support: Will break early at runtime > linking stage. > > There might be applications that just use API not affected by off_t > changes and thus are fine either way. > > Can you verify that the prospective 1.32.6 (named 1.32.6-dev) under > > http://mpg123.org/snapshot/mpg123-1.32.6-dev+20240403022201.tar.bz2 > > works fine in the debian build and meets expectations? I'd do a proper > release of it soon, then.
Now I get the following on arm{hf,el}: --- debian/libmpg123-0.symbols (libmpg123-0_1.32.6~dev+20240403022201-1_armhf) +++ dpkg-gensymbolspYII3c 2024-04-03 09:52:12.863133592 +0000 @@ -8,8 +8,8 @@ mpg123_current_decoder@Base 1.7.2 mpg123_decode@Base 1.6.2 mpg123_decode_frame64@Base 1.32.3 - mpg123_decode_frame@Base 1.6.2 - (arch-bits=32|arch=!x32)mpg123_decode_frame_32@Base 1.13.7 +#MISSING: 1.32.6~dev+20240403022201-1# mpg123_decode_frame@Base 1.6.2 +#MISSING: 1.32.6~dev+20240403022201-1# (arch-bits=32|arch=!x32)mpg123_decode_frame_32@Base 1.13.7 mpg123_decode_frame_64@Base 1.13.7 mpg123_decoder@Base 1.6.2 mpg123_decoders@Base 1.6.2 @@ -31,8 +31,8 @@ mpg123_feature@Base 1.10.0 mpg123_feed@Base 1.6.2 mpg123_feedseek64@Base 1.32.3 - mpg123_feedseek@Base 1.6.2 - (arch-bits=32|arch=!x32)mpg123_feedseek_32@Base 1.13.7 +#MISSING: 1.32.6~dev+20240403022201-1# mpg123_feedseek@Base 1.6.2 +#MISSING: 1.32.6~dev+20240403022201-1# (arch-bits=32|arch=!x32)mpg123_feedseek_32@Base 1.13.7 mpg123_feedseek_64@Base 1.13.7 mpg123_fmt2@Base 1.26.0 mpg123_fmt@Base 1.6.2 @@ -45,18 +45,18 @@ mpg123_format_none@Base 1.6.2 mpg123_format_support@Base 1.6.2 mpg123_framebyframe_decode64@Base 1.32.3 - mpg123_framebyframe_decode@Base 1.10.0 - (arch-bits=32|arch=!x32)mpg123_framebyframe_decode_32@Base 1.13.7 +#MISSING: 1.32.6~dev+20240403022201-1# mpg123_framebyframe_decode@Base 1.10.0 +#MISSING: 1.32.6~dev+20240403022201-1# (arch-bits=32|arch=!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.3 - mpg123_framelength@Base 1.23.8 - (arch-bits=32|arch=!x32)mpg123_framelength_32@Base 1.23.8 +#MISSING: 1.32.6~dev+20240403022201-1# mpg123_framelength@Base 1.23.8 +#MISSING: 1.32.6~dev+20240403022201-1# (arch-bits=32|arch=!x32)mpg123_framelength_32@Base 1.23.8 mpg123_framelength_64@Base 1.23.8 mpg123_framepos64@Base 1.32.3 - mpg123_framepos@Base 1.14.0 - (arch-bits=32|arch=!x32)mpg123_framepos_32@Base 1.14.0 +#MISSING: 1.32.6~dev+20240403022201-1# mpg123_framepos@Base 1.14.0 +#MISSING: 1.32.6~dev+20240403022201-1# (arch-bits=32|arch=!x32)mpg123_framepos_32@Base 1.14.0 mpg123_framepos_64@Base 1.14.0 mpg123_free@Base 1.26.0 mpg123_free_string@Base 1.6.2 @@ -77,16 +77,16 @@ mpg123_id3@Base 1.6.2 mpg123_id3_raw@Base 1.26.0 mpg123_index64@Base 1.32.3 - mpg123_index@Base 1.6.2 - (arch-bits=32|arch=!x32)mpg123_index_32@Base 1.13.7 +#MISSING: 1.32.6~dev+20240403022201-1# mpg123_index@Base 1.6.2 +#MISSING: 1.32.6~dev+20240403022201-1# (arch-bits=32|arch=!x32)mpg123_index_32@Base 1.13.7 mpg123_index_64@Base 1.13.7 mpg123_info2@Base 1.28.0 mpg123_info@Base 1.6.2 mpg123_init@Base 1.6.2 mpg123_init_string@Base 1.6.2 mpg123_length64@Base 1.32.3 - mpg123_length@Base 1.6.2 - (arch-bits=32|arch=!x32)mpg123_length_32@Base 1.13.7 +#MISSING: 1.32.6~dev+20240403022201-1# mpg123_length@Base 1.6.2 +#MISSING: 1.32.6~dev+20240403022201-1# (arch-bits=32|arch=!x32)mpg123_length_32@Base 1.13.7 mpg123_length_64@Base 1.13.7 mpg123_libversion@Base 1.32.3 mpg123_meta_check@Base 1.6.2 @@ -95,18 +95,18 @@ mpg123_new@Base 1.6.2 mpg123_new_pars@Base 1.6.2 mpg123_new_string@Base 1.26.0 - mpg123_open@Base 1.6.2 - (arch-bits=32|arch=!x32)mpg123_open_32@Base 1.13.7 +#MISSING: 1.32.6~dev+20240403022201-1# mpg123_open@Base 1.6.2 +#MISSING: 1.32.6~dev+20240403022201-1# (arch-bits=32|arch=!x32)mpg123_open_32@Base 1.13.7 mpg123_open_64@Base 1.13.7 - mpg123_open_fd@Base 1.6.2 - (arch-bits=32|arch=!x32)mpg123_open_fd_32@Base 1.13.7 +#MISSING: 1.32.6~dev+20240403022201-1# mpg123_open_fd@Base 1.6.2 +#MISSING: 1.32.6~dev+20240403022201-1# (arch-bits=32|arch=!x32)mpg123_open_fd_32@Base 1.13.7 mpg123_open_fd_64@Base 1.13.7 mpg123_open_feed@Base 1.6.2 - mpg123_open_fixed@Base 1.26.0 - (arch-bits=32|arch=!x32)mpg123_open_fixed_32@Base 1.26.0 +#MISSING: 1.32.6~dev+20240403022201-1# mpg123_open_fixed@Base 1.26.0 +#MISSING: 1.32.6~dev+20240403022201-1# (arch-bits=32|arch=!x32)mpg123_open_fixed_32@Base 1.26.0 mpg123_open_fixed_64@Base 1.26.0 - mpg123_open_handle@Base 1.12.1 - (arch-bits=32|arch=!x32)mpg123_open_handle_32@Base 1.13.7 +#MISSING: 1.32.6~dev+20240403022201-1# mpg123_open_handle@Base 1.12.1 +#MISSING: 1.32.6~dev+20240403022201-1# (arch-bits=32|arch=!x32)mpg123_open_handle_32@Base 1.13.7 mpg123_open_handle_64@Base 1.13.7 mpg123_outblock@Base 1.6.2 mpg123_par2@Base 1.28.0 @@ -116,18 +116,18 @@ mpg123_parnew@Base 1.6.2 mpg123_plain_strerror@Base 1.6.2 mpg123_position64@Base 1.32.3 - mpg123_position@Base 1.6.2 - (arch-bits=32|arch=!x32)mpg123_position_32@Base 1.13.7 +#MISSING: 1.32.6~dev+20240403022201-1# mpg123_position@Base 1.6.2 +#MISSING: 1.32.6~dev+20240403022201-1# (arch-bits=32|arch=!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.3 mpg123_replace_buffer@Base 1.6.2 - mpg123_replace_reader@Base 1.6.2 - (arch-bits=32|arch=!x32)mpg123_replace_reader_32@Base 1.13.7 +#MISSING: 1.32.6~dev+20240403022201-1# mpg123_replace_reader@Base 1.6.2 +#MISSING: 1.32.6~dev+20240403022201-1# (arch-bits=32|arch=!x32)mpg123_replace_reader_32@Base 1.13.7 mpg123_replace_reader_64@Base 1.13.7 - mpg123_replace_reader_handle@Base 1.12.1 - (arch-bits=32|arch=!x32)mpg123_replace_reader_handle_32@Base 1.13.7 +#MISSING: 1.32.6~dev+20240403022201-1# mpg123_replace_reader_handle@Base 1.12.1 +#MISSING: 1.32.6~dev+20240403022201-1# (arch-bits=32|arch=!x32)mpg123_replace_reader_handle_32@Base 1.13.7 mpg123_replace_reader_handle_64@Base 1.13.7 mpg123_reset_eq@Base 1.6.2 mpg123_resize_string@Base 1.6.2 @@ -135,20 +135,20 @@ mpg123_same_string@Base 1.26.0 mpg123_scan@Base 1.6.2 mpg123_seek64@Base 1.32.3 - mpg123_seek@Base 1.6.2 - (arch-bits=32|arch=!x32)mpg123_seek_32@Base 1.13.7 +#MISSING: 1.32.6~dev+20240403022201-1# mpg123_seek@Base 1.6.2 +#MISSING: 1.32.6~dev+20240403022201-1# (arch-bits=32|arch=!x32)mpg123_seek_32@Base 1.13.7 mpg123_seek_64@Base 1.13.7 mpg123_seek_frame64@Base 1.32.3 - mpg123_seek_frame@Base 1.6.2 - (arch-bits=32|arch=!x32)mpg123_seek_frame_32@Base 1.13.7 +#MISSING: 1.32.6~dev+20240403022201-1# mpg123_seek_frame@Base 1.6.2 +#MISSING: 1.32.6~dev+20240403022201-1# (arch-bits=32|arch=!x32)mpg123_seek_frame_32@Base 1.13.7 mpg123_seek_frame_64@Base 1.13.7 mpg123_set_filesize64@Base 1.32.3 - mpg123_set_filesize@Base 1.6.2 - (arch-bits=32|arch=!x32)mpg123_set_filesize_32@Base 1.13.7 +#MISSING: 1.32.6~dev+20240403022201-1# mpg123_set_filesize@Base 1.6.2 +#MISSING: 1.32.6~dev+20240403022201-1# (arch-bits=32|arch=!x32)mpg123_set_filesize_32@Base 1.13.7 mpg123_set_filesize_64@Base 1.13.7 mpg123_set_index64@Base 1.32.3 - mpg123_set_index@Base 1.10.0 - (arch-bits=32|arch=!x32)mpg123_set_index_32@Base 1.13.7 +#MISSING: 1.32.6~dev+20240403022201-1# mpg123_set_index@Base 1.10.0 +#MISSING: 1.32.6~dev+20240403022201-1# (arch-bits=32|arch=!x32)mpg123_set_index_32@Base 1.13.7 mpg123_set_index_64@Base 1.13.7 mpg123_set_moreinfo@Base 1.26.0 mpg123_set_string@Base 1.6.2 @@ -160,20 +160,20 @@ mpg123_strlen@Base 1.13.7 mpg123_supported_decoders@Base 1.6.2 mpg123_tell64@Base 1.32.3 - mpg123_tell@Base 1.6.2 - (arch-bits=32|arch=!x32)mpg123_tell_32@Base 1.13.7 +#MISSING: 1.32.6~dev+20240403022201-1# mpg123_tell@Base 1.6.2 +#MISSING: 1.32.6~dev+20240403022201-1# (arch-bits=32|arch=!x32)mpg123_tell_32@Base 1.13.7 mpg123_tell_64@Base 1.13.7 mpg123_tell_stream64@Base 1.32.3 - mpg123_tell_stream@Base 1.6.2 - (arch-bits=32|arch=!x32)mpg123_tell_stream_32@Base 1.13.7 +#MISSING: 1.32.6~dev+20240403022201-1# mpg123_tell_stream@Base 1.6.2 +#MISSING: 1.32.6~dev+20240403022201-1# (arch-bits=32|arch=!x32)mpg123_tell_stream_32@Base 1.13.7 mpg123_tell_stream_64@Base 1.13.7 mpg123_tellframe64@Base 1.32.3 - mpg123_tellframe@Base 1.6.2 - (arch-bits=32|arch=!x32)mpg123_tellframe_32@Base 1.13.7 +#MISSING: 1.32.6~dev+20240403022201-1# mpg123_tellframe@Base 1.6.2 +#MISSING: 1.32.6~dev+20240403022201-1# (arch-bits=32|arch=!x32)mpg123_tellframe_32@Base 1.13.7 mpg123_tellframe_64@Base 1.13.7 mpg123_timeframe64@Base 1.32.3 - mpg123_timeframe@Base 1.6.2 - (arch-bits=32|arch=!x32)mpg123_timeframe_32@Base 1.13.7 +#MISSING: 1.32.6~dev+20240403022201-1# mpg123_timeframe@Base 1.6.2 +#MISSING: 1.32.6~dev+20240403022201-1# (arch-bits=32|arch=!x32)mpg123_timeframe_32@Base 1.13.7 mpg123_timeframe_64@Base 1.13.7 mpg123_tpf@Base 1.6.2 mpg123_volume@Base 1.6.2 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.6~dev+20240403022201-1_armhf) +++ dpkg-gensymbols0VudKK 2024-04-03 09:52:13.071134835 +0000 @@ -32,15 +32,15 @@ syn123_resample_incount@Base 1.26.0 syn123_resample_inexpect@Base 1.26.0 syn123_resample_intotal64@Base 1.32.3 - syn123_resample_intotal@Base 1.26.2 - (arch-bits=32|arch=!x32)syn123_resample_intotal_32@Base 1.26.2 +#MISSING: 1.32.6~dev+20240403022201-1# syn123_resample_intotal@Base 1.26.2 +#MISSING: 1.32.6~dev+20240403022201-1# (arch-bits=32|arch=!x32)syn123_resample_intotal_32@Base 1.26.2 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.3 syn123_resample_total64@Base 1.32.3 - syn123_resample_total@Base 1.26.2 - (arch-bits=32|arch=!x32)syn123_resample_total_32@Base 1.26.2 +#MISSING: 1.32.6~dev+20240403022201-1# syn123_resample_total@Base 1.26.2 +#MISSING: 1.32.6~dev+20240403022201-1# (arch-bits=32|arch=!x32)syn123_resample_total_32@Base 1.26.2 syn123_resample_total_64@Base 1.26.0 syn123_setup_filter@Base 1.26.0 syn123_setup_geiger@Base 1.26.0 dh_makeshlibs: error: failing due to earlier errors >From your explanation above, this is what I expected. The builds on 64 bit architectures and i386 are unaffected. > It's up to you (Debian) to decide what to do with binary package naming > for the transition (it is your business anyway;-), but I feel strongly > about the change to avoid an existing symbol changing ABI with subtle > breakage. If you feel strongly about this, I think the best option would be to bump SONAME of the libraries upstream … but this can be done later during the release cycle and we do the package rename for now to move the transition along. Cheers -- Sebastian Ramacher