From 489f65bf9c5c55289986333e766c26a5d5b94dbb Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 26 Oct 2022 11:48:09 +0200 Subject: [PATCH 1/4] build/meson fix "gen-metadata-nm-settings-nmcli.xml.in" without enable_docs Fixes: ab8fdb73e6be ('build: commit pre-generated "generate-docs-nm-settings-nmcli.xml" to git') --- src/nmcli/meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nmcli/meson.build b/src/nmcli/meson.build index a122e2af3a..be625fe02e 100644 --- a/src/nmcli/meson.build +++ b/src/nmcli/meson.build @@ -87,7 +87,7 @@ if enable_docs ], ) else - settings_docs_source = configure_file( + gen_metadata_nm_settings_nmcli_xml = configure_file( input: 'generate-docs-nm-settings-nmcli.xml.in', output: '@BASENAME@', configuration: configuration_data(), From 139f4b4b2ee153e728f111143a55d126e7fd0e65 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 26 Oct 2022 09:59:42 +0200 Subject: [PATCH 2/4] build: pass both filenames to "tools/check-compare-generated.sh" script It just feels nicer to be explicit about the filenames and not rely on a specific naming. Also, in meson we can directly pass the target as argument, which expands to the filename but also adds a dependency. --- Makefile.am | 4 ++-- src/libnmc-setting/meson.build | 5 ++--- src/nmcli/meson.build | 5 ++--- tools/check-compare-generated.sh | 11 +++++------ 4 files changed, 11 insertions(+), 14 deletions(-) diff --git a/Makefile.am b/Makefile.am index 0172acec1c..104f955fd8 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2001,7 +2001,7 @@ if BUILD_DOCS src/nmcli/generate-docs-nm-settings-nmcli.xml: src/nmcli/generate-docs-nm-settings-nmcli $(AM_V_GEN) src/nmcli/generate-docs-nm-settings-nmcli > "$@" check-local-generate-docs-nm-settings-nmcli: src/nmcli/generate-docs-nm-settings-nmcli.xml - $(srcdir)/tools/check-compare-generated.sh "$(srcdir)" "$(builddir)" "$<" + $(srcdir)/tools/check-compare-generated.sh "$(srcdir)/src/nmcli/generate-docs-nm-settings-nmcli.xml.in" "$(builddir)/src/nmcli/generate-docs-nm-settings-nmcli.xml" check_local += check-local-generate-docs-nm-settings-nmcli DISTCLEANFILES += src/nmcli/generate-docs-nm-settings-nmcli.xml else @@ -4832,7 +4832,7 @@ $(libnmc_setting_settings_doc_h): src/libnmc-setting/settings-docs-input.xml src $(AM_V_GEN) "$(PYTHON)" $(srcdir)/tools/generate-docs-settings-docs.py --output $@ --xml $< DISTCLEANFILES += $(libnmc_setting_settings_doc_h) check-local-settings-docs: $(libnmc_setting_settings_doc_h) - $(srcdir)/tools/check-compare-generated.sh "$(srcdir)" "$(builddir)" "$(libnmc_setting_settings_doc_h)" + $(srcdir)/tools/check-compare-generated.sh "$(srcdir)/$(libnmc_setting_settings_doc_h).in" "$(builddir)/$(libnmc_setting_settings_doc_h)" check_local += check-local-settings-docs else $(libnmc_setting_settings_doc_h): $(libnmc_setting_settings_doc_h).in src/libnmc-setting/.dirstamp diff --git a/src/libnmc-setting/meson.build b/src/libnmc-setting/meson.build index 49314cad2e..cf8a21fc80 100644 --- a/src/libnmc-setting/meson.build +++ b/src/libnmc-setting/meson.build @@ -31,9 +31,8 @@ if enable_docs 'check-settings-docs', find_program(join_paths(source_root, 'tools', 'check-compare-generated.sh')), args: [ - source_root, - build_root, - 'src/libnmc-setting/settings-docs.h', + source_root + '/src/libnmc-setting/settings-docs.h.in', + settings_docs_source, ], ) else diff --git a/src/nmcli/meson.build b/src/nmcli/meson.build index be625fe02e..0daeb5b7cb 100644 --- a/src/nmcli/meson.build +++ b/src/nmcli/meson.build @@ -81,9 +81,8 @@ if enable_docs 'check-local-generate-docs-nm-settings-nmcli', find_program(join_paths(source_root, 'tools', 'check-compare-generated.sh')), args: [ - source_root, - build_root, - 'src/nmcli/generate-docs-nm-settings-nmcli.xml', + source_root + '/src/nmcli/generate-docs-nm-settings-nmcli.xml.in', + generate_docs_nm_settings_nmcli_xml, ], ) else diff --git a/tools/check-compare-generated.sh b/tools/check-compare-generated.sh index 44b70f95c6..b66c5a1031 100755 --- a/tools/check-compare-generated.sh +++ b/tools/check-compare-generated.sh @@ -2,17 +2,16 @@ set -e -srcdir="$1" -builddir="$2" -doc_h="$3" +f_commited="$1" +f_generated="$2" [ -n "$NMTST_NO_CHECK_SETTINGS_DOCS" ] && exit 0 -cmp -s "${srcdir}/${doc_h}.in" "${builddir}/${doc_h}" && exit 0 +cmp -s "$f_commited" "$f_generated" && exit 0 if [ "$NM_TEST_REGENERATE" = 1 ] ; then - cp -f "${builddir}/${doc_h}" "${srcdir}/${doc_h}.in" + cp -f "$f_generated" "$f_commited" else - echo "*** Error: the generated file '${builddir}/${doc_h}' differs from the source file '${srcdir}/${doc_h}.in'. You probably should copy the generated file over to the source file. You can skip this test by setting NMTST_NO_CHECK_SETTINGS_DOCS=yes. You can also automatically copy the file by rerunning the test with NM_TEST_REGENERATE=1" + echo "*** Error: the generated file '$f_generated' differs from the source file '$f_commited'. You probably should copy the generated file over to the source file. You can skip this test by setting NMTST_NO_CHECK_SETTINGS_DOCS=yes. You can also automatically copy the file by rerunning the test with NM_TEST_REGENERATE=1" exit 1 fi From 1bfe908c2ef0766439a9a09469994769545c61f9 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 26 Oct 2022 10:19:19 +0200 Subject: [PATCH 3/4] nmcli: rename "generate-docs-nm-settings-nmcli" to "gen-metadata-nm-settings-nmcli" This is the better name, becuse this is not in particular about "docs". It's about generating an XML with the information from the settings meta data for nmcli. We will do something similar with the libnm-core meta data. --- .gitignore | 12 +++--- Makefile.am | 38 +++++++++---------- man/meson.build | 2 +- ...cli.c => gen-metadata-nm-settings-nmcli.c} | 0 ... => gen-metadata-nm-settings-nmcli.xml.in} | 0 src/nmcli/meson.build | 22 +++++------ 6 files changed, 38 insertions(+), 36 deletions(-) rename src/nmcli/{generate-docs-nm-settings-nmcli.c => gen-metadata-nm-settings-nmcli.c} (100%) rename src/nmcli/{generate-docs-nm-settings-nmcli.xml.in => gen-metadata-nm-settings-nmcli.xml.in} (100%) diff --git a/.gitignore b/.gitignore index dda11fa675..3bcb240e9b 100644 --- a/.gitignore +++ b/.gitignore @@ -176,8 +176,8 @@ test-*.trs /src/nm-cloud-setup/tests/test-cloud-setup-general /src/nmcli/nmcli -/src/nmcli/generate-docs-nm-settings-nmcli -/src/nmcli/generate-docs-nm-settings-nmcli.xml +/src/nmcli/gen-metadata-nm-settings-nmcli +/src/nmcli/gen-metadata-nm-settings-nmcli.xml /src/nm-online/nm-online @@ -341,6 +341,7 @@ test-*.trs /include/ /initscript/*/[Nn]etwork[Mm]anager /initscript/Slackware/rc.networkmanager +/intltool-* /introspection/nmdbus-*.c /introspection/nmdbus-*.h /introspection/nmdbus-*.xml @@ -393,7 +394,9 @@ test-*.trs /libnm/tests/test-nm-client /libnm/tests/test-remote-settings-client /libnm/tests/test-secret-agent +/m4/intltool.m4 /man/nm-settings.xml +/po/.intltool-merge-cache /policy/org.freedesktop.NetworkManager.policy /policy/org.freedesktop.NetworkManager.policy.in /shared/nm-glib-aux/tests/test-json-aux @@ -439,6 +442,8 @@ test-*.trs /src/nm-priv-helper/org.freedesktop.nm-priv-helper.service /src/nm-sudo/nm-sudo /src/nm-sudo/org.freedesktop.nm.sudo.service +/src/nmcli/generate-docs-nm-settings-nmcli +/src/nmcli/generate-docs-nm-settings-nmcli.xml /src/platform/tests/dump /src/platform/tests/monitor /src/platform/tests/platform @@ -482,6 +487,3 @@ test-*.trs /src/tests/test-systemd /src/tests/test-utils /src/tests/test-wired-defname -/intltool-* -/m4/intltool.m4 -/po/.intltool-merge-cache diff --git a/Makefile.am b/Makefile.am index 104f955fd8..04d394afae 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1982,7 +1982,7 @@ src/libnm-client-impl/libnm.typelib: src/libnm-client-impl/libnm.gir INTROSPECTION_GIRS += src/libnm-client-impl/NM-1.0.gir libnm_noinst_data = \ - src/nmcli/generate-docs-nm-settings-nmcli.xml \ + src/nmcli/gen-metadata-nm-settings-nmcli.xml \ man/nm-settings-docs-dbus.xml \ man/nm-settings-docs-nmcli.xml \ src/libnm-client-impl/nm-property-infos-dbus.xml \ @@ -1995,19 +1995,19 @@ libnm_noinst_data = \ noinst_DATA += $(libnm_noinst_data) -EXTRA_DIST += src/nmcli/generate-docs-nm-settings-nmcli.xml.in +EXTRA_DIST += src/nmcli/gen-metadata-nm-settings-nmcli.xml.in if BUILD_DOCS -src/nmcli/generate-docs-nm-settings-nmcli.xml: src/nmcli/generate-docs-nm-settings-nmcli - $(AM_V_GEN) src/nmcli/generate-docs-nm-settings-nmcli > "$@" -check-local-generate-docs-nm-settings-nmcli: src/nmcli/generate-docs-nm-settings-nmcli.xml - $(srcdir)/tools/check-compare-generated.sh "$(srcdir)/src/nmcli/generate-docs-nm-settings-nmcli.xml.in" "$(builddir)/src/nmcli/generate-docs-nm-settings-nmcli.xml" -check_local += check-local-generate-docs-nm-settings-nmcli -DISTCLEANFILES += src/nmcli/generate-docs-nm-settings-nmcli.xml +src/nmcli/gen-metadata-nm-settings-nmcli.xml: src/nmcli/gen-metadata-nm-settings-nmcli + $(AM_V_GEN) src/nmcli/gen-metadata-nm-settings-nmcli > "$@" +check-local-gen-metadata-nm-settings-nmcli: src/nmcli/gen-metadata-nm-settings-nmcli.xml + $(srcdir)/tools/check-compare-generated.sh "$(srcdir)/src/nmcli/gen-metadata-nm-settings-nmcli.xml.in" "$(builddir)/src/nmcli/gen-metadata-nm-settings-nmcli.xml" +check_local += check-local-gen-metadata-nm-settings-nmcli +DISTCLEANFILES += src/nmcli/gen-metadata-nm-settings-nmcli.xml else -src/nmcli/generate-docs-nm-settings-nmcli.xml: src/nmcli/generate-docs-nm-settings-nmcli.xml.in +src/nmcli/gen-metadata-nm-settings-nmcli.xml: src/nmcli/gen-metadata-nm-settings-nmcli.xml.in $(AM_V_GEN) cp $^ $@ -check-local-generate-docs-nm-settings-nmcli: +check-local-gen-metadata-nm-settings-nmcli: endif libnm_docs_sources = $(src_libnm_core_impl_lib_c_settings_real) @@ -2030,7 +2030,7 @@ src/libnm-client-impl/nm-settings-docs-gir.xml: tools/generate-docs-nm-settings- --gir $(builddir)/src/libnm-client-impl/NM-1.0.gir \ --output $@ -man/nm-settings-docs-nmcli.xml: src/nmcli/generate-docs-nm-settings-nmcli.xml src/libnm-client-impl/nm-property-infos-nmcli.xml src/libnm-client-impl/nm-settings-docs-gir.xml tools/generate-docs-nm-settings-docs-merge.py man/common.ent +man/nm-settings-docs-nmcli.xml: src/nmcli/gen-metadata-nm-settings-nmcli.xml src/libnm-client-impl/nm-property-infos-nmcli.xml src/libnm-client-impl/nm-settings-docs-gir.xml tools/generate-docs-nm-settings-docs-merge.py man/common.ent $(AM_V_GEN) "$(PYTHON)" $(srcdir)/tools/generate-docs-nm-settings-docs-merge.py --only-from-first $@ $(wordlist 1,3,$^) src/libnmc-setting/settings-docs-input.xml: src/libnm-client-impl/nm-property-infos-nmcli.xml src/libnm-client-impl/nm-settings-docs-gir.xml tools/generate-docs-nm-settings-docs-merge.py @@ -4973,17 +4973,17 @@ endif ############################################################################### -noinst_PROGRAMS += src/nmcli/generate-docs-nm-settings-nmcli +noinst_PROGRAMS += src/nmcli/gen-metadata-nm-settings-nmcli -src_nmcli_generate_docs_nm_settings_nmcli_SOURCES = \ - src/nmcli/generate-docs-nm-settings-nmcli.c \ +src_nmcli_gen_metadata_nm_settings_nmcli_SOURCES = \ + src/nmcli/gen-metadata-nm-settings-nmcli.c \ $(NULL) -src_nmcli_generate_docs_nm_settings_nmcli_CPPFLAGS = \ +src_nmcli_gen_metadata_nm_settings_nmcli_CPPFLAGS = \ $(clients_cppflags) \ $(NULL) -src_nmcli_generate_docs_nm_settings_nmcli_LDADD = \ +src_nmcli_gen_metadata_nm_settings_nmcli_LDADD = \ src/libnmc-setting/libnmc-setting.la \ src/libnmc-base/libnmc-base.la \ src/libnm-client-aux-extern/libnm-client-aux-extern.la \ @@ -4998,13 +4998,13 @@ src_nmcli_generate_docs_nm_settings_nmcli_LDADD = \ $(GLIB_LIBS) \ $(NULL) -src_nmcli_generate_docs_nm_settings_nmcli_LDFLAGS = \ +src_nmcli_gen_metadata_nm_settings_nmcli_LDFLAGS = \ -Wl,--version-script="$(srcdir)/linker-script-binary.ver" \ $(SANITIZER_EXEC_LDFLAGS) \ $(NULL) -$(src_nmcli_generate_docs_nm_settings_nmcli_OBJECTS): $(src_libnm_core_public_mkenums_h) -$(src_nmcli_generate_docs_nm_settings_nmcli_OBJECTS): $(src_libnm_client_public_mkenums_h) +$(src_nmcli_gen_metadata_nm_settings_nmcli_OBJECTS): $(src_libnm_core_public_mkenums_h) +$(src_nmcli_gen_metadata_nm_settings_nmcli_OBJECTS): $(src_libnm_client_public_mkenums_h) ############################################################################### diff --git a/man/meson.build b/man/meson.build index c814604402..356759bafb 100644 --- a/man/meson.build +++ b/man/meson.build @@ -87,7 +87,7 @@ if enable_introspection join_paths(meson.source_root(), 'tools', 'generate-docs-nm-settings-docs-merge.py'), '--only-from-first', '@OUTPUT@', - generate_docs_nm_settings_nmcli_xml, + gen_metadata_nm_settings_nmcli_xml, nm_property_infos_xml[name], nm_settings_docs_xml_gir, ], diff --git a/src/nmcli/generate-docs-nm-settings-nmcli.c b/src/nmcli/gen-metadata-nm-settings-nmcli.c similarity index 100% rename from src/nmcli/generate-docs-nm-settings-nmcli.c rename to src/nmcli/gen-metadata-nm-settings-nmcli.c diff --git a/src/nmcli/generate-docs-nm-settings-nmcli.xml.in b/src/nmcli/gen-metadata-nm-settings-nmcli.xml.in similarity index 100% rename from src/nmcli/generate-docs-nm-settings-nmcli.xml.in rename to src/nmcli/gen-metadata-nm-settings-nmcli.xml.in diff --git a/src/nmcli/meson.build b/src/nmcli/meson.build index 0daeb5b7cb..7e3c44bfaa 100644 --- a/src/nmcli/meson.build +++ b/src/nmcli/meson.build @@ -45,10 +45,10 @@ executable( endif -generate_docs_nm_settings_nmcli = executable( - 'generate-docs-nm-settings-nmcli', +gen_metadata_nm_settings_nmcli = executable( + 'gen-metadata-nm-settings-nmcli', files( - 'generate-docs-nm-settings-nmcli.c', + 'gen-metadata-nm-settings-nmcli.c', ), dependencies: [ libnm_dep, @@ -70,24 +70,24 @@ generate_docs_nm_settings_nmcli = executable( ) if enable_docs - generate_docs_nm_settings_nmcli_xml = custom_target( - 'generate-docs-nm-settings-nmcli.xml', - output: 'generate-docs-nm-settings-nmcli.xml', - command: [ generate_docs_nm_settings_nmcli ], + gen_metadata_nm_settings_nmcli_xml = custom_target( + 'gen-metadata-nm-settings-nmcli.xml', + output: 'gen-metadata-nm-settings-nmcli.xml', + command: [ gen_metadata_nm_settings_nmcli ], capture: true, ) test( - 'check-local-generate-docs-nm-settings-nmcli', + 'check-local-gen-metadata-nm-settings-nmcli', find_program(join_paths(source_root, 'tools', 'check-compare-generated.sh')), args: [ - source_root + '/src/nmcli/generate-docs-nm-settings-nmcli.xml.in', - generate_docs_nm_settings_nmcli_xml, + source_root + '/src/nmcli/gen-metadata-nm-settings-nmcli.xml.in', + gen_metadata_nm_settings_nmcli_xml, ], ) else gen_metadata_nm_settings_nmcli_xml = configure_file( - input: 'generate-docs-nm-settings-nmcli.xml.in', + input: 'gen-metadata-nm-settings-nmcli.xml.in', output: '@BASENAME@', configuration: configuration_data(), ) From d699f76855d2957c6f33a0e401b881c39540adb6 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 26 Oct 2022 10:24:07 +0200 Subject: [PATCH 4/4] libnm: generate "gen-metadata-nm-settings-libnm-core.xml" with meta data libnm-core-impl has lots of internal meta data about the properties. In particular, which properties exist (their names), and their D-Bus type. We should use this information for our manual pages. For example, currently `man nm-settings-dbus` has nonsense like: "Value Type: array of string", when it should be reall "as". In a first step, generate an XML with that meta data for later use. --- .gitignore | 2 + Makefile.am | 49 + .../gen-metadata-nm-settings-libnm-core.c | 77 ++ ...gen-metadata-nm-settings-libnm-core.xml.in | 1135 +++++++++++++++++ src/libnm-core-impl/meson.build | 49 + 5 files changed, 1312 insertions(+) create mode 100644 src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.c create mode 100644 src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.xml.in diff --git a/.gitignore b/.gitignore index 3bcb240e9b..bb2b8e6bed 100644 --- a/.gitignore +++ b/.gitignore @@ -145,6 +145,8 @@ test-*.trs /src/libnm-core-impl/tests/test-need-secrets /src/libnm-core-impl/tests/test-secrets /src/libnm-core-impl/tests/test-setting +/src/libnm-core-impl/gen-metadata-nm-settings-libnm-core +/src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.xml /src/libnm-glib-aux/tests/test-json-aux /src/libnm-glib-aux/tests/test-shared-general /src/libnm-platform/tests/test-nm-platform diff --git a/Makefile.am b/Makefile.am index 04d394afae..8e60a5f5bd 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1848,6 +1848,39 @@ EXTRA_DIST += src/libnm-client-public/meson.build ############################################################################### +noinst_PROGRAMS += src/libnm-core-impl/gen-metadata-nm-settings-libnm-core + +src_libnm_core_impl_gen_metadata_nm_settings_libnm_core_SOURCES = \ + src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.c \ + $(NULL) + +src_libnm_core_impl_gen_metadata_nm_settings_libnm_core_CPPFLAGS = \ + $(clients_cppflags) \ + $(NULL) + +src_libnm_core_impl_gen_metadata_nm_settings_libnm_core_LDADD = \ + src/libnm-core-impl/libnm-core-impl.la \ + src/libnm-crypto/libnm-crypto.la \ + $(libnm_crypto_lib) \ + src/libnm-core-aux-intern/libnm-core-aux-intern.la \ + src/libnm-base/libnm-base.la \ + src/libnm-systemd-shared/libnm-systemd-shared.la \ + src/libnm-log-null/libnm-log-null.la \ + src/libnm-glib-aux/libnm-glib-aux.la \ + src/libnm-std-aux/libnm-std-aux.la \ + src/c-siphash/libc-siphash.la \ + $(GLIB_LIBS) \ + $(NULL) + +src_libnm_core_impl_gen_metadata_nm_settings_libnm_core_LDFLAGS = \ + -Wl,--version-script="$(srcdir)/linker-script-binary.ver" \ + $(SANITIZER_EXEC_LDFLAGS) \ + $(NULL) + +$(src_libnm_core_impl_gen_metadata_nm_settings_libnm_core_OBJECTS): $(src_libnm_core_public_mkenums_h) + +############################################################################### + noinst_LTLIBRARIES += src/libnm-client-impl/libnm-client-impl.la src_libnm_client_impl_libnm_client_impl_la_CPPFLAGS = \ @@ -1982,6 +2015,7 @@ src/libnm-client-impl/libnm.typelib: src/libnm-client-impl/libnm.gir INTROSPECTION_GIRS += src/libnm-client-impl/NM-1.0.gir libnm_noinst_data = \ + src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.xml \ src/nmcli/gen-metadata-nm-settings-nmcli.xml \ man/nm-settings-docs-dbus.xml \ man/nm-settings-docs-nmcli.xml \ @@ -2010,6 +2044,21 @@ src/nmcli/gen-metadata-nm-settings-nmcli.xml: src/nmcli/gen-metadata-nm-settings check-local-gen-metadata-nm-settings-nmcli: endif +EXTRA_DIST += src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.xml.in + +if BUILD_DOCS +src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.xml: src/libnm-core-impl/gen-metadata-nm-settings-libnm-core + $(AM_V_GEN) src/libnm-core-impl/gen-metadata-nm-settings-libnm-core > "$@" +check-local-gen-metadata-nm-settings-libnm-core: src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.xml + $(srcdir)/tools/check-compare-generated.sh "$(srcdir)/src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.xml.in" "$(builddir)/src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.xml" +check_local += check-local-gen-metadata-nm-settings-libnm-core +DISTCLEANFILES += src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.xml +else +src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.xml: src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.xml.in + $(AM_V_GEN) cp $^ $@ +check-local-gen-metadata-nm-settings-libnm-core: +endif + libnm_docs_sources = $(src_libnm_core_impl_lib_c_settings_real) src/libnm-client-impl/nm-property-infos-%.xml: tools/generate-docs-nm-property-infos.py src/libnm-core-impl/libnm-core-impl.la $(libnm_docs_sources) diff --git a/src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.c b/src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.c new file mode 100644 index 0000000000..eeadb19c32 --- /dev/null +++ b/src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.c @@ -0,0 +1,77 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ + +#include "libnm-core-impl/nm-default-libnm-core.h" + +#include "libnm-core-intern/nm-meta-setting-base.h" +#include "libnm-core-intern/nm-core-internal.h" + +#define INDENT 4 + +static char * +_xml_escape_attribute(const char *value) +{ + gs_free char *s = NULL; + + s = g_markup_escape_text(value, -1); + return g_strdup_printf("\"%s\"", s); +} + +static const char * +_indent_level(guint num_spaces) +{ + static const char spaces[] = " "; + + nm_assert(num_spaces < G_N_ELEMENTS(spaces)); + return &spaces[G_N_ELEMENTS(spaces) - num_spaces - 1]; +} + +int +main(int argc, char *argv[]) +{ + const NMSettInfoSetting *sett_info_settings = nmtst_sett_info_settings(); + NMMetaSettingType meta_type; + + g_print("\n"); + for (meta_type = 0; meta_type < _NM_META_SETTING_TYPE_NUM; meta_type++) { + const NMSettInfoSetting *sis = &sett_info_settings[meta_type]; + const NMMetaSettingInfo *msi = &nm_meta_setting_infos[meta_type]; + nm_auto_unref_gtypeclass NMSettingClass *klass = NULL; + gs_free char *tmp_s1 = NULL; + gs_free char *tmp_s2 = NULL; + guint prop_idx; + GType gtype; + + gtype = msi->get_setting_gtype(); + klass = g_type_class_ref(gtype); + + g_print("%ssetting_name))); + g_print(" >\n"); + + for (prop_idx = 0; prop_idx < sis->property_infos_len; prop_idx++) { + const NMSettInfoProperty *sip = &sis->property_infos[prop_idx]; + gs_free char *tmp2 = NULL; + gs_free char *tmp3 = NULL; + + g_print("%sname))); + if (sip->is_deprecated) + g_print("\n%sis-deprecated=\"1\"", _indent_level(2 * INDENT + 10)); + if (sip->property_type->dbus_type) { + g_print( + "\n%sdbus-type=%s", + _indent_level(2 * INDENT + 10), + (tmp3 = _xml_escape_attribute((const char *) sip->property_type->dbus_type))); + } + if (sip->dbus_deprecated) { + nm_assert(sip->property_type->dbus_type); + g_print("\n%sdbus-deprecated=\"1\"", _indent_level(2 * INDENT + 10)); + } + g_print(" />\n"); + } + + g_print("%s\n", _indent_level(INDENT)); + } + g_print("\n"); + return 0; +} diff --git a/src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.xml.in b/src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.xml.in new file mode 100644 index 0000000000..dfda03ac07 --- /dev/null +++ b/src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.xml.in @@ -0,0 +1,1135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/libnm-core-impl/meson.build b/src/libnm-core-impl/meson.build index 83c290857c..2de3ff0849 100644 --- a/src/libnm-core-impl/meson.build +++ b/src/libnm-core-impl/meson.build @@ -88,3 +88,52 @@ libnm_core_impl = static_library( uuid_dep, ], ) + +############################################################################### + +gen_metadata_nm_settings_libnm_core = executable( + 'gen-metadata-nm-settings-libnm-core', + files( + 'gen-metadata-nm-settings-libnm-core.c', + ), + dependencies: [ + libnm_core_public_dep, + ], + link_with: [ + libnm_core_aux_intern, + libnm_core_impl, + libnm_crypto, + libnm_base, + libnm_systemd_shared, + libnm_log_null, + libnm_glib_aux, + libnm_std_aux, + libc_siphash, + ], + link_args: ldflags_linker_script_binary, + link_depends: linker_script_binary, +) + +if enable_docs + gen_metadata_nm_settings_libnm_core_xml = custom_target( + 'gen-metadata-nm-settings-libnm-core.xml', + output: 'gen-metadata-nm-settings-libnm-core.xml', + command: [ gen_metadata_nm_settings_libnm_core ], + capture: true, + ) + + test( + 'check-local-gen-metadata-nm-settings-libnm-core', + find_program(join_paths(source_root, 'tools', 'check-compare-generated.sh')), + args: [ + source_root + '/src/libnm-core-impl/gen-metadata-nm-settings-libnm-core.xml.in', + gen_metadata_nm_settings_libnm_core_xml, + ], + ) +else + gen_metadata_nm_settings_libnm_core_xml = configure_file( + input: 'gen-metadata-nm-settings-libnm-core.xml.in', + output: '@BASENAME@', + configuration: configuration_data(), + ) +endif