termux-packages icon indicating copy to clipboard operation
termux-packages copied to clipboard

[Bug]: termux-install-biber fails

Open FluttershyDeveloper opened this issue 1 year ago • 4 comments

Problem description

termux-install-biber fails with:

==> Found dependencies: XML::LibXML                                                     ! Installing the dependencies failed: Module 'XML::LibXML' is not installed             ! Bailing out the installation for XML-LibXSLT-2.002001.                                ! Installing the dependencies failed: Module 'XML::LibXML' is not installed, Module 'XML::LibXSLT' is not installed, Module 'XML::LibXML::Simple' is not installed              ! Bailing out the installation for biblatex-biber-2.18.

Trying to install XML::LibXML fails, too. cpanm --force XML::LibXML or: cpan XML::LibXML

[...]

a/data/com.termux/files/usr/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64    -DVERSION=\"2.0208\" -DXS_VERSION=\"2.0208\" -fPIC -Wno-unused-function "-I/data/data/com.termux/files/usr/lib/perl5/5.36.1/aarch64-android/CORE"  -DHAVE_UTF8 perl-libxml-mm.c       perl-libxml-mm.c:142:18: error: incompatible function pointer types passing 'void (void *, void *, xmlChar *)' (aka 'void (void *, void *, unsigned char *)') to parameter of type 'xmlHashScanner' (aka 'void (*)(void *, void *, const unsigned char *)') [-Wincompatible-function-pointer-types]                                                                             xmlHashScan(r, PmmRegistryDumpHashScanner, NULL);                                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~                               /data/data/com.termux/files/usr/include/libxml2/libxml/hash.h:213:22: note: passing argument to parameter 'f' here                                                                                                       xmlHashScanner f,                                                                                      ^                               perl-libxml-mm.c:234:44: error: incompatible function pointer types passing 'void (void *, xmlChar *)' (aka 'void (void *, unsigned char *)') to parameter of type 'xmlHashDeallocator' (aka 'void (*)(void *, const unsigned char *)') [-Wincompatible-function-pointer-types]                                                                                         if( xmlHashRemoveEntry(PmmREGISTRY, name, PmmRegistryHashDeallocator) )                                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~            /data/data/com.termux/files/usr/include/libxml2/libxml/hash.h:160:47: note: passing argument to parameter 'f' here                                                                                         xmlHashDeallocator f);                                                                                     ^                                         perl-libxml-mm.c:301:38: error: incompatible function pointer types passing 'void *(void *, xmlChar *)' (aka 'void *(void *, unsigned char *)') to parameter of type 'xmlHashCopier' (aka 'void *(*)(void *, const unsigned char *)') [-Wincompatible-function-pointer-types]

[...]

What steps will reproduce the bug?

termux-install-biber

What is the expected behavior?

biber has been installed properly.

System information

termux-info:

Termux Variables:
TERMUX_API_VERSION=0.50.1
TERMUX_APK_RELEASE=F_DROID
TERMUX_APP_PACKAGE_MANAGER=apt
TERMUX_APP_PID=16479
TERMUX_IS_DEBUGGABLE_BUILD=0
TERMUX_MAIN_PACKAGE_FORMAT=debian
TERMUX_VERSION=0.118.0
Packages CPU architecture:
aarch64
Subscribed repositories:
# sources.list
deb https://packages-cf.termux.org/apt/termux-main/ stable main
Updatable packages:
All packages up to date
termux-tools version:
1.38.1
Android version:
10
Kernel build information:
Linux localhost 4.14.116 #1 SMP PREEMPT Tue Feb 28 14:49:53 CST 2023 aarch64 Android
Device manufacturer:
HUAWEI
Device model:
MAR-LX1B
LD Variables:
LD_LIBRARY_PATH=
LD_PRELOAD=/data/data/com.termux/files/usr/lib/libtermux-exec.so

FluttershyDeveloper avatar May 03 '23 00:05 FluttershyDeveloper

Resources:

https://github.com/termux/termux-packages/issues/15852 https://bugs.gentoo.org/show_bug.cgi?id=883711 https://github.com/termux/termux-packages/commit/5379e838d564facfd89d0e58ab59c35c67da495f

cpan does not seem to respect *FLAGS. Then we have to patch the source of XML::LibXML. Fortunately termux-install-biber already patches some other modules and so hopefully that can be possible. @Grimler91 What do you think?

FYI, personally as a quick hack on the user side I would use a CC wrapper:

#!/bin/sh
exec clang -Wno-error=incompatible-function-pointer-types "$@"

xtkoba avatar May 03 '23 03:05 xtkoba

By the way, I compiled XML::LibXML by changing the warning level in makefile to -Wno-everything. Then termux-install-biber works as expected.

HOWEVER

It installs biber 2.18, which is incompatible with the latest biblatex!

ERROR - Error: Found biblatex control file version 3.10, expected version 3.9. This means that your biber (2.18) and biblatex (3.19) versions are incompatible. See compat matrix in biblatex or biber PDF documentation. INFO - ERRORS: 1

Need to be fixed ASAP! @Grimler91

P.S. TeXLive is installed with the latest texlive-installer, which was just updated several days ago. See #16494

YijunYuan avatar May 04 '23 06:05 YijunYuan

I am thinking biber should be moved to termux-user-repository in any case since it is just an installation script. I started looking at that some time ago, will have a look at that again and add another patch for this issue while I am at it.

Thanks for reporting the issue!

Grimler91 avatar May 26 '23 21:05 Grimler91

I am thinking biber should be moved to termux-user-repository in any case since it is just an installation script. I started looking at that some time ago, will have a look at that again and add another patch for this issue while I am at it.

Thanks for reporting the issue!

I build biber 2.19 from source, it works fine. (biber 2.20 won't work......)

YijunYuan avatar May 27 '23 02:05 YijunYuan

So, updated biber installer package has been added to the termux-user-repository. To install new version, do:

pkg install tur-repo
pkg install biber-installer
termux-install-biber

Grimler91 avatar Jun 15 '23 20:06 Grimler91