From: Aleš Mrázek Date: Mon, 10 Oct 2022 13:26:08 +0000 (+0200) Subject: manager: build python modules with meson X-Git-Tag: v6.0.0a1~18^2~18 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=093cbb76ed5dc87eec719761d1963db75d727bf3;p=thirdparty%2Fknot-resolver.git manager: build python modules with meson --- diff --git a/manager/knot_resolver_manager/cli/cmd/meson.build b/manager/knot_resolver_manager/cli/cmd/meson.build new file mode 100644 index 000000000..b113c38e4 --- /dev/null +++ b/manager/knot_resolver_manager/cli/cmd/meson.build @@ -0,0 +1,8 @@ +py3.install_sources( + files( + 'completion.py', + 'config.py', + 'stop.py', + ), + subdir: manager_module_dir / cli_dir / cmd_dir +) diff --git a/manager/knot_resolver_manager/cli/meson.build b/manager/knot_resolver_manager/cli/meson.build new file mode 100644 index 000000000..d81b26a50 --- /dev/null +++ b/manager/knot_resolver_manager/cli/meson.build @@ -0,0 +1,23 @@ +if get_option('manager_client') != 'disabled' + build_manager_client = true +endif + +if build_manager_client + + cmd_dir = 'cmd' + subdir(cmd_dir) + + py3.install_sources( + files( + '__init__.py', + '__main__.py', + ), + subdir: manager_module_dir / cli_dir + ) + + # install_data( + # sources : 'kresctl', + # install_dir: get_option('sbindir'), + # ) + +endif \ No newline at end of file diff --git a/manager/knot_resolver_manager/compat/meson.build b/manager/knot_resolver_manager/compat/meson.build new file mode 100644 index 000000000..372dd45a9 --- /dev/null +++ b/manager/knot_resolver_manager/compat/meson.build @@ -0,0 +1,8 @@ +py3.install_sources( + files( + '__init__.py', + 'asyncio.py', + 'dataclasses.py', + ), + subdir: manager_module_dir / compat_dir +) \ No newline at end of file diff --git a/manager/knot_resolver_manager/datamodel/meson.build b/manager/knot_resolver_manager/datamodel/meson.build new file mode 100644 index 000000000..c5f370623 --- /dev/null +++ b/manager/knot_resolver_manager/datamodel/meson.build @@ -0,0 +1,29 @@ +py3.install_sources( + files( + '__init__.py', + 'cache_schema.py', + 'config_schema.py', + 'dns64_schema.py', + 'dnssec_schema.py', + 'forward_zone_schema.py', + 'logging_schema.py', + 'lua_schema.py', + 'monitoring_schema.py', + 'network_schema.py', + 'options_schema.py', + 'policy_schema.py', + 'rpz_schema.py', + 'slice_schema.py', + 'static_hints_schema.py', + 'stub_zone_schema.py', + 'view_schema.py', + 'webmgmt_schema.py', + ), + subdir: manager_module_dir / datamodel_dir +) + +templates_dir = 'templates' +subdir(templates_dir) + +types_dir = 'types' +subdir(types_dir) \ No newline at end of file diff --git a/manager/knot_resolver_manager/datamodel/templates/macros/meson.build b/manager/knot_resolver_manager/datamodel/templates/macros/meson.build new file mode 100644 index 000000000..940b6e2e5 --- /dev/null +++ b/manager/knot_resolver_manager/datamodel/templates/macros/meson.build @@ -0,0 +1,9 @@ +py3.install_sources( + files( + 'common_macros.lua.j2', + 'network_macros.lua.j2', + 'policy_macros.lua.j2', + 'view_macros.lua.j2', + ), + subdir: manager_module_dir / datamodel_dir / templates_dir / macros_dir +) diff --git a/manager/knot_resolver_manager/datamodel/templates/meson.build b/manager/knot_resolver_manager/datamodel/templates/meson.build new file mode 100644 index 000000000..a7de2b587 --- /dev/null +++ b/manager/knot_resolver_manager/datamodel/templates/meson.build @@ -0,0 +1,24 @@ +macros_dir = 'macros' +subdir(macros_dir) + +py3.install_sources( + files( + 'cache.lua.j2', + 'config.lua.j2', + 'dns64.lua.j2', + 'dnssec.lua.j2', + 'forward_zones.lua.j2', + 'logging.lua.j2', + 'monitoring.lua.j2', + 'network.lua.j2', + 'options.lua.j2', + 'policy.lua.j2', + 'rpz.lua.j2', + 'slices.lua.j2', + 'static_hints.lua.j2', + 'stub_zones.lua.j2', + 'views.lua.j2', + 'webmgmt.lua.j2', + ), + subdir: manager_module_dir / datamodel_dir / templates_dir +) \ No newline at end of file diff --git a/manager/knot_resolver_manager/datamodel/types/meson.build b/manager/knot_resolver_manager/datamodel/types/meson.build new file mode 100644 index 000000000..ca55d7740 --- /dev/null +++ b/manager/knot_resolver_manager/datamodel/types/meson.build @@ -0,0 +1,9 @@ +py3.install_sources( + files( + '__init__.py', + 'base_types.py', + 'enums.py', + 'types.py', + ), + subdir: manager_module_dir / datamodel_dir / types_dir +) \ No newline at end of file diff --git a/manager/knot_resolver_manager/kresd_controller/meson.build b/manager/knot_resolver_manager/kresd_controller/meson.build new file mode 100644 index 000000000..0407ab710 --- /dev/null +++ b/manager/knot_resolver_manager/kresd_controller/meson.build @@ -0,0 +1,10 @@ +supervisord_dir = 'supervisord' +subdir(supervisord_dir) + +py3.install_sources( + files( + '__init__.py', + 'interface.py', + ), + subdir: manager_module_dir / kresd_controller_dir +) diff --git a/manager/knot_resolver_manager/kresd_controller/supervisord/meson.build b/manager/knot_resolver_manager/kresd_controller/supervisord/meson.build new file mode 100644 index 000000000..b63f7c196 --- /dev/null +++ b/manager/knot_resolver_manager/kresd_controller/supervisord/meson.build @@ -0,0 +1,11 @@ +plugin_dir = 'plugin' +subdir(plugin_dir) + +py3.install_sources( + files( + '__init__.py', + 'config_file.py', + 'supervisord.conf.j2' + ), + subdir: manager_module_dir / kresd_controller_dir / supervisord_dir +) diff --git a/manager/knot_resolver_manager/kresd_controller/supervisord/plugin/meson.build b/manager/knot_resolver_manager/kresd_controller/supervisord/plugin/meson.build new file mode 100644 index 000000000..e5a9e9648 --- /dev/null +++ b/manager/knot_resolver_manager/kresd_controller/supervisord/plugin/meson.build @@ -0,0 +1,15 @@ +py3.extension_module( + 'notify', + 'notifymodule.c', + subdir: manager_module_dir / kresd_controller_dir / supervisord_dir / plugin_dir +) + +py3.install_sources( + files( + '__init__.py', + 'fast_rpcinterface.py', + 'manager_lifecycle_monitor.py', + 'stdout_pipe_log.py', + ), + subdir: manager_module_dir / kresd_controller_dir / supervisord_dir / plugin_dir +) \ No newline at end of file diff --git a/manager/knot_resolver_manager/meson.build b/manager/knot_resolver_manager/meson.build new file mode 100644 index 000000000..703cc4583 --- /dev/null +++ b/manager/knot_resolver_manager/meson.build @@ -0,0 +1,30 @@ +cli_dir = 'cli' +subdir(cli_dir) + +compat_dir = 'compat' +subdir(compat_dir) + +datamodel_dir = 'datamodel' +subdir(datamodel_dir) + +kresd_controller_dir = 'kresd_controller' +subdir(kresd_controller_dir) + +utils_dir = 'utils' +subdir(utils_dir) + +py3.install_sources( + files( + '__init__.py', + '__main__.py', + 'config_store.py', + 'constants.py', + 'exceptions.py', + 'kres_manager.py', + 'log.py', + 'main.py', + 'server.py', + 'statistics.py', + ), + subdir: manager_module_dir +) diff --git a/manager/knot_resolver_manager/utils/meson.build b/manager/knot_resolver_manager/utils/meson.build new file mode 100644 index 000000000..f05e19131 --- /dev/null +++ b/manager/knot_resolver_manager/utils/meson.build @@ -0,0 +1,15 @@ +modeling_dir = 'modeling' +subdir('modeling') + +py3.install_sources( + files( + '__init__.py', + 'async_utils.py', + 'custom_atexit.py', + 'functional.py', + 'requests.py', + 'systemd_notify.py', + 'which.py', + ), + subdir: manager_module_dir / utils_dir +) \ No newline at end of file diff --git a/manager/knot_resolver_manager/utils/modeling/meson.build b/manager/knot_resolver_manager/utils/modeling/meson.build new file mode 100644 index 000000000..e663115d3 --- /dev/null +++ b/manager/knot_resolver_manager/utils/modeling/meson.build @@ -0,0 +1,12 @@ +py3.install_sources( + files( + '__init__.py', + 'base_schema.py', + 'base_value_type.py', + 'exceptions.py', + 'parsing.py', + 'query.py', + 'types.py', + ), + subdir: manager_module_dir / utils_dir / modeling_dir +) \ No newline at end of file diff --git a/manager/meson.build b/manager/meson.build index b88445e25..c58514241 100644 --- a/manager/meson.build +++ b/manager/meson.build @@ -2,16 +2,40 @@ # SPDX-License-Identifier: GPL-3.0-or-later build_manager = false +build_manager_client = false + if get_option('manager') != 'disabled' message('--- manager dependencies ---') - python3 = find_program('python3', version: '>=3.6') + python_deps = [ + # 'jinja2', + # 'yaml', + # 'aiohttp', + # 'prometheus_client', + # 'supervisor', + # 'typing_extensions', + ] + + pymod = import('python') + py3 = pymod.find_installation('python3', modules: python_deps) + py3_deps = py3.dependency() + + if py3.language_version().version_compare('<3.6') + error('At least Python 3.6 is required.') + else + build_manager = true + endif - build_manager = true message('----------------------------') +elif get_option('manager') == 'disabled' and get_option('manager_client') == 'enabled' + error('manager client cannot be build without manager') endif if build_manager + + manager_module_dir = 'knot_resolver_manager' + subdir(manager_module_dir) + # YAML config: etc/knot-resolver/config.yml install_data( sources: 'etc/knot-resolver/config.yml', diff --git a/meson.build b/meson.build index 4f6778189..928384756 100644 --- a/meson.build +++ b/meson.build @@ -288,6 +288,7 @@ run_target( s_managed_ta = managed_ta ? 'enabled' : 'disabled' s_install_root_keys = install_root_keys ? 'enabled' : 'disabled' s_build_manager = build_manager ? 'enabled' : 'disabled' +s_build_manager_client = build_manager_client ? 'enabled' : 'disabled' s_build_client = build_client ? 'enabled' : 'disabled' s_build_utils = build_utils ? 'enabled' : 'disabled' s_build_dnstap = build_dnstap ? 'enabled' : 'disabled' @@ -323,6 +324,7 @@ message(''' optional components manager: @0@'''.format(s_build_manager) + ''' + manager_client: @0@'''.format(s_build_manager_client) + ''' client: @0@'''.format(s_build_client) + ''' utils: @0@'''.format(s_build_utils) + ''' dnstap: @0@'''.format(s_build_dnstap) + ''' diff --git a/meson_options.txt b/meson_options.txt index 62679d120..568d96453 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -127,6 +127,18 @@ option( description: 'build manager and its features', ) +option( + 'manager_client', + type: 'combo', + choices: [ + 'auto', + 'enabled', + 'disabled', + ], + value: 'auto', + description: 'build kresctl manager client', +) + option( 'client', type: 'combo',