2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-22 01:59:26 +00:00
Aydın Mercan 5cd6c173ff
replace the build system with meson
Meson is a modern build system that has seen a rise in adoption and some
version of it is available in almost every platform supported.

Compared to automake, meson has the following advantages:

* Meson provides a significant boost to the build and configuration time
  by better exploiting parallelism.

* Meson is subjectively considered to be better in readability.

These merits alone justify experimenting with meson as a way of
improving development time and ergonomics. However, there are some
compromises to ensure the transition goes relatively smooth:

* The system tests currently rely on various files within the source
  directory. Changing this requirement is a non-trivial task that can't
  be currently justified. Currently the last compiled build directory
  writes into the source tree which is in turn used by pytest.

* The minimum version supported has been fixed at 0.61. Increasing this
  value will require choosing a baseline of distributions that can
  package with meson. On the contrary, there will likely be an attempt
  to decrease this value to ensure almost universal support for building
  BIND 9 with meson.
2025-06-11 10:30:12 +03:00

60 lines
1.5 KiB
Python

# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
from pathlib import Path
from typing import Dict
SYSTEM_TEST_DIR_GIT_PATH = "bin/tests/system"
def load_vars_from_build_files() -> Dict[str, str]:
# TOP_BUILDDIR is special, it is always read from the source directory
top_builddir_file = Path(__file__).resolve().parent / ".build_vars" / "TOP_BUILDDIR"
if not top_builddir_file.exists():
raise RuntimeError(
'Uninitialized build variable: "TOP_BUILDDIR". Did you run `meson compile`?'
)
top_builddir = top_builddir_file.read_text(encoding="utf-8").strip()
build_vars = {
"TOP_BUILDDIR": top_builddir,
}
var_dir = (
Path(top_builddir)
/ SYSTEM_TEST_DIR_GIT_PATH
/ "isctest"
/ "vars"
/ ".build_vars"
)
for var in [
"CURL",
"FSTRM_CAPTURE",
"NC",
"PERL",
"PYTEST",
"PYTHON",
"SHELL",
"TOP_SRCDIR",
"XSLTPROC",
]:
var_file = var_dir / var
if var_file.exists():
build_vars[var] = var_file.read_text(encoding="utf-8").strip()
return build_vars
BUILD_VARS = load_vars_from_build_files()