Skip to content

Conversation

@TomJo2000
Copy link
Member

This took me the better part of a day since it just turned into one thing after the other.
To quickly summarize the things I ran into without inducing madness in the reader:

  • I updated the homepage, the previous one was a redirect to the new one.
  • Surprise sidequest number 1: The SOVERSION wasn't bumped despite the apparent scheme being Major + Minor since 2.14
    (Put a pin in that...)
  • Doxygen is now required to build any and all docs for libxml2
    • Suprise sidequest number 2: Can't get Autotools to recognize doxygen, alright... Meson it is then.
      Had to get that working by overwriting termux_step_configure() but that worked without issues.
  • LZMA support was removed
  • Enable Zlib support
  • Enable ICU support
  • Enable history and readline support for xmllint's shell mode.
  • Surprise sidequest number 3: libxml2-python-static is empty now.
    I checked the Arch package, that's just how it is now.
    • Do a sanity check for everything that's in the build directory and what ends up in the packages.
      There is no more gtk-doc, but a shit ton of html ones.
  • Surprise sidequest number 4: The xmlcatalog.1 and xmllint.1 manpages are ending up in man instead of man/man1
    This seems like an error in the CMakeLists.txt.
    (Put a pin in that...)
    https://gitlab.gnome.org/GNOME/libxml2/-/blob/2.15/CMakeLists.txt?ref_type=heads#L570-580

So, that pin from earlier.
@Biswa96 pointed me at this.
https://discourse.gnome.org/t/stepping-down-as-libxml2-maintainer/31398
It looks like Libxml2 is effectively without an upstream maintainer at this time, which partially explains some of the jank I encountered this update cycle.

I also had a look at the Meson summary and tried enabling

-Dthread-alloc=enabled
-Dtls=enabled # (thread local storage, not transport layer security)
It builds with those but throws some compiler warnings.

../src/globals.c:208:13: warning: no previous extern declaration for non-static variable 'xmlFree' [-Wmissing-variable-declarations]
  208 | xmlFreeFunc xmlFree = free;
      |             ^
../src/globals.c:208:1: note: declare 'static' if the variable is not intended to be used outside of this translation unit
  208 | xmlFreeFunc xmlFree = free;
      | ^
../src/globals.c:209:15: warning: no previous extern declaration for non-static variable 'xmlMalloc' [-Wmissing-variable-declarations]
  209 | xmlMallocFunc xmlMalloc = malloc;
      |               ^
../src/globals.c:209:1: note: declare 'static' if the variable is not intended to be used outside of this translation unit
  209 | xmlMallocFunc xmlMalloc = malloc;
      | ^
../src/globals.c:210:15: warning: no previous extern declaration for non-static variable 'xmlMallocAtomic' [-Wmissing-variable-declarations]
  210 | xmlMallocFunc xmlMallocAtomic = malloc;
      |               ^
../src/globals.c:210:1: note: declare 'static' if the variable is not intended to be used outside of this translation unit
  210 | xmlMallocFunc xmlMallocAtomic = malloc;
      | ^
../src/globals.c:211:16: warning: no previous extern declaration for non-static variable 'xmlRealloc' [-Wmissing-variable-declarations]
  211 | xmlReallocFunc xmlRealloc = realloc;
      |                ^
../src/globals.c:211:1: note: declare 'static' if the variable is not intended to be used outside of this translation unit
  211 | xmlReallocFunc xmlRealloc = realloc;
      | ^
../src/globals.c:212:15: warning: no previous extern declaration for non-static variable 'xmlMemStrdup' [-Wmissing-variable-declarations]
  212 | xmlStrdupFunc xmlMemStrdup = xmlPosixStrdup;
      |               ^
../src/globals.c:212:1: note: declare 'static' if the variable is not intended to be used outside of this translation unit
  212 | xmlStrdupFunc xmlMemStrdup = xmlPosixStrdup;
      | ^
5 warnings generated.

And I'm not up for a 5th sidequest today.

@TomJo2000
Copy link
Member Author

TomJo2000 commented Oct 11, 2025

Finished the rebuild testing.
Only ran into a couple packages that wouldn't build.

Previous error

Looks like a double prefix error.

CMake Error in src/modules/rubberband/CMakeLists.txt:
  Imported target "PkgConfig::rubberband" includes non-existent path

    "/data/data/com.termux/files/usr/data/data/com.termux/files/usr/include"

  in its INTERFACE_INCLUDE_DIRECTORIES.  Possible reasons include:

  * The path was deleted, renamed, or moved to another location.

  * An install or uninstall procedure did not complete successfully.

  * The installation package was faulty and references files it does not
  provide.

@Biswa96
Copy link
Member

Biswa96 commented Oct 11, 2025

  • Looks like a double prefix error.

@TomJo2000
Copy link
Member Author

I got xmlsec to build, but I haven't root caused the cause of its build error.
It looks like oldenc changed from xmlChar to const xmlChar, and it's not happy about discarding the const qualifier.

@Biswa96
Copy link
Member

Biswa96 commented Oct 12, 2025

It looks like oldenc changed from xmlChar to const xmlChar, and it's not happy about discarding the const qualifier.

That compiler error was fixed in this upstream commit lsh123/xmlsec@ef0e3b5. It will be added to xmlsec 1.3.8 release.

@TomJo2000
Copy link
Member Author

I'll make a backport patch and rip out my non-fix fix.

@robertkirkman
Copy link
Member

The problem with webkit2gtk-4.1 and webkitgtk-6.0 is that they have /home/builder/.termux-build/webkit2gtk-4.1/src/Source/ThirdParty/skia/src/core/SkTHash.h:523:32: error: 'pair' is a private member of 'std::pair<unsigned short, SkPDFFont>' with NDK r28c. Unfortunately I don't know how to fix that currently.

@TomJo2000
Copy link
Member Author

TomJo2000 commented Oct 12, 2025

Okay so that isn't Libxml2 related then, right?

@robertkirkman
Copy link
Member

robertkirkman commented Oct 12, 2025

Correct, however if libxml2 is bumped without rebuilding them I assume the existing builds of them in the packages could stop working.

@TomJo2000
Copy link
Member Author

That only leaves clamav unaccounted for.

@TomJo2000
Copy link
Member Author

  • xmlsec just took care of itself d11f24a.

- Remove `libxml2-python-static` subpackage (empty)
- Update project homepage (previous is a redirect)
- Use Meson build system
- Enable ICU support
- Enable history and readline support for `xmllint`
- Cleanup assorted jank
@TomJo2000
Copy link
Member Author

Patching out doxygen from the doc/meson.build was pretty easy, so we don't need to add it to the build container.

@TomJo2000
Copy link
Member Author

All tests I've done on the reverse dependencies for Libxml2 have come up fine,so this should be good to merge.
And if I did miss something I'm sure we'll hear about it very soon seeing as a ton of packages depend on Libxml2 either directly or through one of their dependencies.

@TomJo2000 TomJo2000 merged commit a224ca8 into termux:master Oct 17, 2025
11 checks passed
@TomJo2000 TomJo2000 deleted the libxml2.15 branch October 17, 2025 23:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants