Source: openh264
Version: 2.2.0+dfsg-2
Severity: important
Tags: ftbfs
Justification: fails to build from source (but built successfully in the past)
Forwarded: https://github.com/cisco/openh264/issues/3545
Hello,
openh264 currently FTBFS on x32 with the following error:
x86_64-linux-gnux32-g++ -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=.
-specs=/usr/share/dpkg/pie-compile.specs -fstack-protector-strong -Wformat
-Werror=format-security -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=.
-specs=/usr/share/dpkg/pie-compile.specs -fstack-protector-strong -Wformat
-Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -DNDEBUG -m64 -DX86_ASM
-DHAVE_AVX2 -Wall -fno-strict-aliasing -fPIC -MMD -MP -fstack-protector-all
-DGENERATED_VERSION_HEADER -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=.
-specs=/usr/share/dpkg/pie-compile.specs -fstack-protector-strong -Wformat
-Werror=format-security -DHAVE_AVX2 -I./codec/api/svc -I./codec/common/inc
-Icodec/common/inc -c -o codec/common/src/copy_mb.o
codec/common/src/copy_mb.cpp
In file included from /usr/lib/gcc/x86_64-linux-gnux32/11/include/limits.h:203,
from /usr/lib/gcc/x86_64-linux-gnux32/11/include/syslimits.h:7,
from /usr/lib/gcc/x86_64-linux-gnux32/11/include/limits.h:34,
from ./codec/common/inc/typedefs.h:37,
from ./codec/common/inc/copy_mb.h:36,
from codec/common/src/copy_mb.cpp:41:
/usr/include/limits.h:26:10: fatal error: bits/libc-header-start.h: No such
file or directory
26 | #include <bits/libc-header-start.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [codec/common/targets.mk:116: codec/common/src/copy_mb.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /usr/lib/gcc/x86_64-linux-gnux32/11/include/limits.h:203,
from /usr/lib/gcc/x86_64-linux-gnux32/11/include/syslimits.h:7,
from /usr/lib/gcc/x86_64-linux-gnux32/11/include/limits.h:34,
from ./codec/common/inc/typedefs.h:37,
from ./codec/common/inc/wels_common_defs.h:37,
from codec/common/src/common_tables.cpp:33:
/usr/include/limits.h:26:10: fatal error: bits/libc-header-start.h: No such
file or directory
26 | #include <bits/libc-header-start.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [codec/common/targets.mk:116: codec/common/src/common_tables.o]
Error 1
The problem here seems to be the -m64 flag, changing it to -mx32 fixes
this error, but then it fails later with:
/usr/bin/ld: i386:x86-64 architecture of input file
`codec/encoder/core/x86/coeff.o' is incompatible with i386:x64-32 output
/usr/bin/ld: i386:x86-64 architecture of input file
`codec/encoder/core/x86/dct.o' is incompatible with i386:x64-32 output
/usr/bin/ld: i386:x86-64 architecture of input file
`codec/encoder/core/x86/intra_pred.o' is incompatible with i386:x64-32 output
/usr/bin/ld: i386:x86-64 architecture of input file
`codec/encoder/core/x86/matrix_transpose.o' is incompatible with i386:x64-32
output
/usr/bin/ld: i386:x86-64 architecture of input file
`codec/encoder/core/x86/memzero.o' is incompatible with i386:x64-32 output
/usr/bin/ld: i386:x86-64 architecture of input file
`codec/encoder/core/x86/quant.o' is incompatible with i386:x64-32 output
/usr/bin/ld: i386:x86-64 architecture of input file
`codec/encoder/core/x86/sample_sc.o' is incompatible with i386:x64-32 output
/usr/bin/ld: i386:x86-64 architecture of input file
`codec/encoder/core/x86/score.o' is incompatible with i386:x64-32 output
/usr/bin/ld: i386:x86-64 architecture of input file
`codec/decoder/core/x86/dct.o' is incompatible with i386:x64-32 output
/usr/bin/ld: i386:x86-64 architecture of input file
`codec/decoder/core/x86/intra_pred.o' is incompatible with i386:x64-32 output
/usr/bin/ld: i386:x86-64 architecture of input file
`codec/processing/src/x86/denoisefilter.o' is incompatible with i386:x64-32
output
/usr/bin/ld: i386:x86-64 architecture of input file
`codec/processing/src/x86/downsample_bilinear.o' is incompatible with
i386:x64-32 output
/usr/bin/ld: i386:x86-64 architecture of input file
`codec/processing/src/x86/vaa.o' is incompatible with i386:x64-32 output
/usr/bin/ld: i386:x86-64 architecture of input file `codec/common/x86/cpuid.o'
is incompatible with i386:x64-32 output
/usr/bin/ld: i386:x86-64 architecture of input file `codec/common/x86/dct.o' is
incompatible with i386:x64-32 output
/usr/bin/ld: i386:x86-64 architecture of input file
`codec/common/x86/deblock.o' is incompatible with i386:x64-32 output
/usr/bin/ld: i386:x86-64 architecture of input file
`codec/common/x86/expand_picture.o' is incompatible with i386:x64-32 output
/usr/bin/ld: i386:x86-64 architecture of input file
`codec/common/x86/intra_pred_com.o' is incompatible with i386:x64-32 output
/usr/bin/ld: i386:x86-64 architecture of input file
`codec/common/x86/mb_copy.o' is incompatible with i386:x64-32 output
/usr/bin/ld: i386:x86-64 architecture of input file
`codec/common/x86/mc_chroma.o' is incompatible with i386:x64-32 output
/usr/bin/ld: i386:x86-64 architecture of input file
`codec/common/x86/mc_luma.o' is incompatible with i386:x64-32 output
/usr/bin/ld: i386:x86-64 architecture of input file
`codec/common/x86/satd_sad.o' is incompatible with i386:x64-32 output
/usr/bin/ld: i386:x86-64 architecture of input file `codec/common/x86/vaa.o' is
incompatible with i386:x64-32 output
Here again there is a proble when calling nasm with the "-f elf64" flag:
nasm -DUNIX64 -DHAVE_AVX2 -f elf64 -I./codec/common/x86/ -o
codec/encoder/core/x86/coeff.o codec/encoder/core/x86/coeff.asm
It should be "-f elfx32" here
With these two changes, the build is suceeding on x32 architecture
This has been forwarded upstream: https://github.com/cisco/openh264/issues/3545
Kind regards,
Laurent Bigonville
-- System Information:
Debian Release: bookworm/sid
APT prefers unstable-debug
APT policy: (500, 'unstable-debug'), (500, 'unstable'), (1,
'experimental-debug'), (1, 'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 5.17.0-3-amd64 (SMP w/8 CPU threads; PREEMPT)
Locale: LANG=fr_BE.UTF-8, LC_CTYPE=fr_BE.UTF-8 (charmap=UTF-8),
LANGUAGE=fr_BE:fr
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: SELinux: enabled - Mode: Permissive - Policy name: refpolicy