zulip/scripts
Aman Agrawal 75afa9c055 provision: Replace Fedora 38 support with Fedora 43.
Fedora 38 reached end of life upstream; replace it with Fedora 43,
which ships dnf5 and a recent enough groonga to skip the source
build. Concretely, to make `tools/provision` run cleanly on
Fedora 43:

* dnf5 (Fedora 41+) dropped the `groupinstall` alias and no longer
  resolves the "Development Tools" display name, so switch the
  Fedora branch of `setup-yum-repo` to
  `dnf group install development-tools` (by group ID). Move the
  existing CentOS/RHEL `groupinstall` calls into their own branches
  so they keep working on yum/dnf4.

* Map Fedora 43 to PostgreSQL 17, and add `groonga-devel`,
  `xxhash-devel`, `meson`, and `redhat-rpm-config` to the Fedora
  package list. PGroonga 4.0.6 switched its build system to meson;
  on Fedora, PostgreSQL's `pg_config` exports CFLAGS containing
  `-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1` and
  `-specs=.../redhat-annobin-cc1`, and without `redhat-rpm-config`
  the PGroonga build fails with "cannot read spec file".
  `xxhash-devel` is required because `xxhash-libs` is often pulled
  in transitively (by blosc2, pyarrow, etc.) without its headers,
  in which case meson detects libxxhash via pkg-config and skips
  the vendored fallback that would otherwise build it from source.

* Use the packaged groonga from Fedora's main repo (15.0.4 on
  Fedora 43, satisfying PGroonga 4.0.6's >= 14.1.0 requirement)
  instead of compiling groonga from source. This removes the only
  remaining caller of `scripts/lib/build-groonga` and the
  BUILD_GROONGA_FROM_SOURCE plumbing in provision.py, which the
  prior Fedora 38 path was the only user of.

Verified end-to-end on a Fedora 43 host and in a fresh fedora:43
podman container: setup-yum-repo, the package install, and the
PGroonga source build against the system groonga all complete
cleanly.
2026-04-25 22:27:34 -07:00
..
lib provision: Replace Fedora 38 support with Fedora 43. 2026-04-25 22:27:34 -07:00
nagios queue: Allow sharding user_activity worker. 2025-06-06 10:33:20 -07:00
setup install: Support Ubuntu 26.04. 2026-04-22 22:00:04 -07:00
__init__.py Factor out venv-creating code from provision.py. 2016-06-21 11:25:41 -07:00
get-django-setting python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
log-search log-search: Filter to just authed or unauthed requests. 2026-01-20 17:13:28 -08:00
purge-old-deployments ruff: Partially reformat Python with Ruff 0.9 (2025 style). 2025-01-14 09:42:16 -08:00
README.md docs: Apply bullet style changes from Prettier. 2021-09-08 12:06:24 -07:00
refresh-sharding-and-restart restart-server: --tornado-reshard implies --skip-client-reloads. 2025-10-21 11:38:03 -07:00
reload-clients reload-clients: Ensure that Smokescreen does not interfere with reloads. 2025-08-19 23:39:38 -07:00
restart-server restart-server: All realm Tornado ports need a restart when they change. 2025-10-21 11:38:03 -07:00
start-server scripts: Add a start-server as well. 2021-04-21 10:24:08 -07:00
stop-server email-mirror: Add a standalone server that processes incoming email. 2025-05-19 16:39:44 -07:00
upgrade-zulip upgrade: Modify upgrade scripts to handle failure. 2021-06-23 08:42:20 -07:00
upgrade-zulip-from-git upgrade: Modify upgrade scripts to handle failure. 2021-06-23 08:42:20 -07:00
zulip-puppet-apply scripts: Replace parse_os_release with platform.freedesktop_os_release. 2026-02-10 13:38:28 -08:00

This directory contains scripts that:

  • Generally do not require access to Django or the database (those are "management commands"), and thus are suitable to run operationally.

  • Are useful for managing a production deployment of Zulip (many are also used in a Zulip development environment, though development-only scripts live in tools/).

For more details, see https://zulip.readthedocs.io/en/latest/overview/directory-structure.html.