Bug#1067562: FTBFS: missing symbols on 32-bit architectures

2024-04-03 Thread Thomas Orgis
Am Wed, 03 Apr 2024 20:46:29 +0200
schrieb Simon Chopin : 

> I just uploaded the attached debdiff to Ubuntu to both fix the FTBFS and
> start the t64 transition for this package, based on the following
> comment:

Are you able to test this for the dev snapshot of mpg123 before I do
the next release?

http://mpg123.org/snapshot/mpg123-1.32.6-dev+20240403022201.tar.bz2

This gets rid of the ambiguous symbols for this type of build (or
should, at least), leaving only those with 64 and _64 suffix (where
applicable).

This at least avoids the subtle memory-corrupting ABI mismatch. Any
binaries built with enabled large file support continue to work,
anyway. That ABI is stable.

If I get an OK that this really fires as supposed on Debian builds,
I'll release 1.32.6.


Alrighty then,

Thomas



Bug#1067562: FTBFS: missing symbols on 32-bit architectures

2024-04-03 Thread Simon Chopin
Source: mpg123
Followup-For: Bug #1067562
X-Debbugs-Cc: scho...@ubuntu.com
Control: tags -1 ftbfs patch

Hi,

I just uploaded the attached debdiff to Ubuntu to both fix the FTBFS and
start the t64 transition for this package, based on the following
comment:

> the non-suffixed functions now work with 64 bit offsets, where they
> formerly worked with 32 bit off_t arguments. This could be considered
> ABI breakage, too.

That's definitely an ABI break, so the transition is necessary in any
case. We can always add back the compat layer if we deem it necessary.


-- System Information:
Debian Release: trixie/sid
  APT prefers noble-updates
  APT policy: (500, 'noble-updates'), (500, 'noble'), (100, 'noble-proposed')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 6.8.0-20-generic (SMP w/8 CPU threads; PREEMPT)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_USER, TAINT_OOT_MODULE
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
diff -Nru mpg123-1.32.5/debian/changelog mpg123-1.32.5/debian/changelog
--- mpg123-1.32.5/debian/changelog  2024-03-31 10:08:02.0 +0200
+++ mpg123-1.32.5/debian/changelog  2024-04-03 20:29:56.0 +0200
@@ -1,3 +1,13 @@
+mpg123 (1.32.5-1ubuntu1) noble; urgency=medium
+
+  [ Steve Langasek ]
+  * Rename libraries for 64-bit time_t transition. (Closes: #1063140)
+
+  [ Simon Chopin ]
+  * Only include 32bit compat symbols on i386 arches (Closes: #1067562)
+
+ -- Simon Chopin   Wed, 03 Apr 2024 20:29:56 +0200
+
 mpg123 (1.32.5-1build2) noble; urgency=medium
 
   * No-change rebuild for CVE-2024-3094
diff -Nru mpg123-1.32.5/debian/control mpg123-1.32.5/debian/control
--- mpg123-1.32.5/debian/control2024-03-12 07:39:44.0 +0100
+++ mpg123-1.32.5/debian/control2024-04-03 20:20:46.0 +0200
@@ -43,7 +43,10 @@
  OSS4, the Advanced Linux Sound Architecture (ALSA), JACK, PortAudio,
  PulseAudio, OpenAL and the Network Audio System (NAS).
 
-Package: libmpg123-0
+Package: libmpg123-0t64
+Provides: ${t64:Provides}
+Replaces: libmpg123-0
+Breaks: libmpg123-0 (<< ${source:Version})
 Multi-Arch: same
 Architecture: any
 Section: libs
@@ -57,7 +60,10 @@
  This package contains the C libraries needed to run executables that use
  the mpg123 library.
 
-Package: libout123-0
+Package: libout123-0t64
+Provides: ${t64:Provides}
+Replaces: libout123-0
+Breaks: libout123-0 (<< ${source:Version})
 Multi-Arch: same
 Architecture: any
 Section: libs
@@ -70,7 +76,10 @@
  .
  This package contains the shared out123 library.
 
-Package: libsyn123-0
+Package: libsyn123-0t64
+Provides: ${t64:Provides}
+Replaces: libsyn123-0
+Breaks: libsyn123-0 (<< ${source:Version})
 Multi-Arch: same
 Architecture: any
 Section: libs
@@ -88,9 +97,9 @@
 Architecture: any
 Section: libdevel
 Depends:
- libmpg123-0 (= ${binary:Version}),
- libout123-0 (= ${binary:Version}),
- libsyn123-0 (= ${binary:Version}),
+ libmpg123-0t64 (= ${binary:Version}),
+ libout123-0t64 (= ${binary:Version}),
+ libsyn123-0t64 (= ${binary:Version}),
  ${misc:Depends}
 Description: MPEG layer 1/2/3 audio decoder (development files)
  mpg123 is a real time MPEG 1.0/2.0/2.5 audio player/decoder for layers
diff -Nru mpg123-1.32.5/debian/libmpg123-0.install 
mpg123-1.32.5/debian/libmpg123-0.install
--- mpg123-1.32.5/debian/libmpg123-0.install2023-10-01 15:44:05.0 
+0200
+++ mpg123-1.32.5/debian/libmpg123-0.install1970-01-01 01:00:00.0 
+0100
@@ -1 +0,0 @@
-usr/lib/*/libmpg123.so.0*
diff -Nru mpg123-1.32.5/debian/libmpg123-0.lintian-overrides 
mpg123-1.32.5/debian/libmpg123-0.lintian-overrides
--- mpg123-1.32.5/debian/libmpg123-0.lintian-overrides  2023-10-01 
15:44:05.0 +0200
+++ mpg123-1.32.5/debian/libmpg123-0.lintian-overrides  1970-01-01 
01:00:00.0 +0100
@@ -1,2 +0,0 @@
-# The SSE, 3DNowExt, 3DNow, and MMX decoders use non-pic assembly code.
-libmpg123-0 [i386]: specific-address-in-shared-library
diff -Nru mpg123-1.32.5/debian/libmpg123-0.symbols 
mpg123-1.32.5/debian/libmpg123-0.symbols
--- mpg123-1.32.5/debian/libmpg123-0.symbols2023-10-02 21:38:58.0 
+0200
+++ mpg123-1.32.5/debian/libmpg123-0.symbols1970-01-01 01:00:00.0 
+0100
@@ -1,160 +0,0 @@
-libmpg123.so.0 libmpg123-0 #MINVER#
- mpg123_add_string@Base 1.6.2
- mpg123_add_substring@Base 1.6.2
- mpg123_chomp_string@Base 1.15.1
- mpg123_clip@Base 1.6.2
- mpg123_close@Base 1.6.2
- 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.3
- mpg123_decode_frame@Base 1.6.2
- mpg123_decode_frame_64@Base 1.13.7
- mpg123_decoder@Base 1.6.2
- mpg123_decoders@Base 1.6.2
- 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.3
- mpg123_enc_from_id3@Base 1.9.1
- mpg123_enc_from_id3_2@Base 1.28.0
- 

Bug#1067562: FTBFS: missing symbols on 32-bit architectures

2024-03-23 Thread Thomas Orgis
Am Sat, 23 Mar 2024 21:59:54 +0500
schrieb Andrey Rakhmatullin : 

> Source: mpg123
> Version: 1.32.5-1
> Severity: serious
> Tags: ftbfs
> 
> https://buildd.debian.org/status/fetch.php?pkg=mpg123=armel=1.32.5-1%2Bb1=1711185338=0

This is being discussued in

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1063140

The build log shows this:

  largefile sensitive . no
  default offsets . 64

The new 64 bit time_t setup also fixes off_t to be 64 bits and so the
mpg123 build figures that you don't need 32 bit offset symbols. Also
the non-suffixed functions now work with 64 bit offsets, where they
formerly worked with 32 bit off_t arguments. This could be considered
ABI breakage, too.

We should figure out what the desired state is here. Should the ABI
stay the same as before? Then the _FILE_OFFSET_BITS=64 needs to be ignored
for the libmpg123 build.


Also, I notice this: Why do you have --with-cpu=generic_fpu there? You
really should either use one of

arm_fpu  Pack neon and generic[[_dither]] decoders, for ARM 
processors with FPU and/or NEON
arm_nofpuUse code optimized for ARM processors with fixed point 
arithmetic

for 32 bit ARM and 

   aarch64  Pack neon64 and generic[[_dither]] decoders, for 64bit 
ARM processors

for 64 bit ARM.

http://mpg123.org/benchmark/mpg123-1.23.8_arm_fpu_BananaPi_Allwinner_H3@1200MHz_bananian-jessie.txt
#mpg123 benchmark (user CPU time in seconds for decoding)
#decodert_s16/s t_f32/s
NEON18.06   21.54
generic 35.10   32.39
generic_dither  35.98   33.30

http://mpg123.org/benchmark/mpg123-1.23.8_arm_nofpu_BananaPi_Allwinner_H3@1200MHz_bananian-jessie.txt
#mpg123 benchmark (user CPU time in seconds for decoding)
#decodert_s16/s t_f32/s
ARM 36.02   34.32

With NEON, you got a factor of two for 16 bit output. Hm. Generic
with FPU doesn't look that bad compared to the plain ARM assembly. But when we
are talking about ARMs with NEON, one really should use that. Hm I also have

http://mpg123.org/benchmark/mpg123-r3525_Raspberry-Pi_raspian.txt
#mpg123 benchmark (user CPU time in seconds for decoding)
#decodert_s16/s t_f32/s
ARM 86.26   90.66
generic 102.80  100.06
generic_dither  121.10  100.84

So this nofpu build still shows some benefit from the plain ARM
assembly, too.

Is there a special reason why Debian avoids using the optimized decoders on ARM?


Alrighty then,

Thomas



Bug#1067562: FTBFS: missing symbols on 32-bit architectures

2024-03-23 Thread Andrey Rakhmatullin
Source: mpg123
Version: 1.32.5-1
Severity: serious
Tags: ftbfs

https://buildd.debian.org/status/fetch.php?pkg=mpg123=armel=1.32.5-1%2Bb1=1711185338=0

Symbols marked (arch-bits=32|arch=!x32) disappeared on armel/armhf/powerpc,
probably because of time_t changes?


-- System Information:
Debian Release: trixie/sid
  APT prefers unstable-debug
  APT policy: (500, 'unstable-debug'), (500, 'testing-debug'), (500, 
'unstable'), (500, 'testing'), (101, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 6.7.9-amd64 (SMP w/4 CPU threads; PREEMPT)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE, 
TAINT_UNSIGNED_MODULE
Locale: LANG=ru_RU.UTF-8, LC_CTYPE=ru_RU.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled