Skip to content

Upgrade TatoVM to Debian bookworm#3281

Open
jiru wants to merge 14 commits intodevfrom
bookworm
Open

Upgrade TatoVM to Debian bookworm#3281
jiru wants to merge 14 commits intodevfrom
bookworm

Conversation

@jiru
Copy link
Copy Markdown
Member

@jiru jiru commented Apr 24, 2026

Work to get #3259 done.

  • Update system to Debian bookworm
  • Replace missing or incompatible packages by alternatives
    • Install PHP 7.4 from external repository
    • Manually install composer and transifex-client
  • Update Manticore to latest version (to solve dependency problem)
  • Reduce disk space usage by removing unnecessary packages (build dependencies and old kernels)

jiru added 10 commits April 22, 2026 09:37
Debian bookworm ships with PHP 8.2 but we still need 7.4.

This commit can be reverted once Tatoeba supports PHP 8.
Debian ships with a composer package that depends on some PHP symphony
packages that only work with PHP 8, so we need to use a different source.

This commit can be reverted once Tatoeba supports PHP 8.
The debian package transifex-client no longer exists in bookworm,
so we need to get it from a different source.
The Manticore version we use (3.3.0) depends on libssl1.1, which is not
distributed any more on Debian bookworm. Since we need to update Manticore
at some point anyway, I’ll just update it now so that it solves this
dependency problem.

The language packs are included in the main package.

Closes #3127.
Unattended upgrades are enabled and nice, but they have the side-effect of
adding a new kernel while we are building tatovm. To work around this issue,
we just stop them at the beginning of build process, and they will get
started again after the next reboot, that is to say when tatovm consumers
will spin their instance of tatovm.
Separate installation of runtime dependencies and build dependencies,
and remove build dependencies at the end.

It is quite tricky to actually remove all build dependencies because
"apt-get install" followed by "apt-get remove" will leave a lot of packages
installed, so we rely on "dpkg --get-selections" and "dpkg --set-selections"
to save and restore the entire list of installed packages.
Building external tools (sinoparserd, Tatodetect, tatowiki and tatomecab)
requires quite some RAM, and sometimes the compilation process is killed by
OOM killer. To work around this issue, we get some extra RAM by building
external tools *before* installing Manticore, Mariadb, nginx and php-fpm.

There is just tatowiki that requires nginx to be installed
because it installs an nginx configuration file.
Executing "apt-get dselect-upgrade" in a9f4f01
installs the latest kernel, resulting in two kernels installed. We want to only
keep one kernel to save disk space, so this commit adds an extra step to switch
to the newly installed kernel by rebooting, and to remove any old kernel.
@jiru jiru marked this pull request as ready for review April 27, 2026 16:57
jiru added 3 commits April 28, 2026 07:20
A newer version of the underlying library that generates localized dates
(I guess it’s libicu) now inserts a non-breaking space (U+202F) between
the time and "AM" or "PM".
There is this annoying warning everytime you run apt-get update:

> N: Repository 'Debian bookworm' changed its 'non-free component' value from 'non-free' to 'non-free non-free-firmware'
> N: More information about this can be found online in the Release notes at: https://www.debian.org/releases/bookworm/amd64/release-notes/ch-information.html#non-free-split

I figured out tatovm does not use any non-free package, so we might as well
remove it from source.list and try to keep tatovm from using proprietary
components now and in the future.
Manticore automatically starts on boot, but on the very first `vagrant up`
it will initially fail to read its configuration file, because the config
is autogenerated by CakePHP, and CakePHP is not there yet.

CakePHP is installed during initial provisioning with ./tools/codeinit.py,
so we restart manticore right after that to make sure it starts.
* OS updated to Debian bookworm
* Manticore updated to version 25.0.0
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.

1 participant