Bug#1114618: FTBFS against Octave 10

Rafael Laboissière rafael at debian.org
Tue Sep 9 08:39:11 BST 2025


* Sébastien Villemot <sebastien at debian.org> [2025-09-08 21:01]:

> Le lundi 08 septembre 2025 à 19:43 +0200, Sébastien Villemot a écrit :
>> Le lundi 08 septembre 2025 à 19:25 +0200, Rafael Laboissière a écrit :
>>> * Sébastien Villemot <sebastien at debian.org> [2025-09-07 18:44]:
>>>
>>>> Source: vlfeat
>>>> Version: 0.9.21+full-2.1
>>>> Severity: important
>>>> Tags: ftbfs sid forky
>>>> X-Debbugs-Cc: debian-octave at lists.debian.org
>>>> User: debian-octave at lists.debian.org
>>>> Usertags: octave-10
>>>>
>>>> Dear Maintainer,
>>>>
>>>> vlfeat FTBFS against octave 10 (which currently stands in experimental).
>>>>
>>>> A build log is attached.
>>>
>>> There are loads of error messages like the following one:
>>>
>>> dpkg-shlibdeps: error: cannot find library liboctmex.so.1 needed by debian/octave-vlfeat/usr/lib/x86_64-linux-gnu/octave/site/oct/x86_64-pc-linux-gnu/vlfeat/toolbox/vl_twister.mex (ELF format: 'elf64-x86-64' abi: 'ELF:64:l:amd64:0'; RPATH: '')
>>>
>>> This is strange, because "-L/usr/lib/x86_64-linux-gnu/octave/10.2.0 
>>> -loctmex" is passed to g++ when the .mex files are compiled through 
>>> mkoctfile, like in the following example:
>>>
>>>   CFLAGS="-g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/vlfeat-0.9.21+full=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -g -Wdate-time -D_FORTIFY_SOURCE=2 -std=c99 -Wall -Wextra -Wno-unused-function -Wno-long-long -Wno-variadic-macros  -DNDEBUG -O3  -D_GNU_SOURCE -fno-stack-protector" \
>>>   LDFLAGS="-Wl,-z,relro -Wl,-z,now -Wl,--as-needed -lpthread -lm" \
>>>   /usr/bin/mkoctfile \
>>>      --mex -v \
>>>      --output "toolbox/mex/octave/mexglx/vl_slic.mex" \
>>>        -DVL_DISABLE_SSE2 -DVL_DISABLE_AVX -I. -Itoolbox -I. "./toolbox/slic/vl_slic.c" \
>>>      -Lbin/debian -lvl -lm
>>>   gcc -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-10.2.0/octave/.. -I/usr/include/octave-10.2.0/octave  -pthread -fopenmp -fexceptions -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/vlfeat-0.9.21+full=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -g -Wdate-time -D_FORTIFY_SOURCE=2 -std=c99 -Wall -Wextra -Wno-unused-function -Wno-long-long -Wno-variadic-macros  -DNDEBUG -O3  -D_GNU_SOURCE -fno-stack-protector   -I. -I. -Itoolbox -I.  -DVL_DISABLE_SSE2 -DVL_DISABLE_AVX -DMEX_DEBUG ./toolbox/slic/vl_slic.c -o /tmp/oct-7QRLV6.o
>>>   gcc -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-10.2.0/octave/.. -I/usr/include/octave-10.2.0/octave  -pthread -fopenmp -fexceptions -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/vlfeat-0.9.21+full=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -g -Wdate-time -D_FORTIFY_SOURCE=2 -std=c99 -Wall -Wextra -Wno-unused-function -Wno-long-long -Wno-variadic-macros  -DNDEBUG -O3  -D_GNU_SOURCE -fno-stack-protector   -I. -I. -Itoolbox -I.  -DVL_DISABLE_SSE2 -DVL_DISABLE_AVX -DMEX_DEBUG /tmp/oct-kEsu4D.c -o /tmp/oct-uNoD3P.o
>>>   g++ -I/usr/include/octave-10.2.0/octave/.. -I/usr/include/octave-10.2.0/octave  -pthread -fopenmp -g -O2 -ffile-prefix-map=/build/reproducible-path/vlfeat-0.9.21+full=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection  -o toolbox/mex/octave/mexglx/vl_slic.mex  /tmp/oct-7QRLV6.o /tmp/oct-uNoD3P.o   -Lbin/debian -lvl -lm -shared -Wl,-Bsymbolic -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -lpthread -lm  -L/usr/lib/x86_64-linux-gnu/octave/10.2.0 -loctmex -flto=auto -ffat-lto-objects -Wl,-z,relro
>>>
>>> Any ideas?
>>
>> The problem is that liboctmex.so.1 appears in the dynamic dependencies 
>> of the generated MEX file (technically in the DT_NEEDED ELF section), 
>> but the library is not in a location searched by the dynamic linker 
>> (because it is installed in a private directory, as the other Octave 
>> libraries).
>>
>> This probably needs to be solved at the mkoctfile level.
>>
>> Note that there are many other similar bugs. Once we have found the 
>> correct fix, and assuming that the fix is in src:octave, we’ll reassign 
>> these bugs to octave-dev and merge them.
>
> Actually fixing #1061644 would fix the present FTBFS bug and all the 
> similar ones.
>
> Should I go ahead?

If the fix consists in adding a file to /etc/ld.so.conf.d/, like the 
torsocks package does¹, I guess it will make Lintian unhappy.²

What about installing the liboctmex.so* files in /usr/lib/?

Best,

Rafael

  ¹ https://salsa.debian.org/pkg-privacy-team/torsocks/-/blob/master/debian/rules?ref_type=heads
  ² https://udd.debian.org/lintian-tag/package-modifies-ld.so-search-path?affected=yes



More information about the debian-science-maintainers mailing list