]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#3732] Remove unnecessary kludge section from netconf fallback that searched in...
authorAndrei Pavel <andrei@isc.org>
Wed, 26 Mar 2025 13:17:59 +0000 (15:17 +0200)
committerAndrei Pavel <andrei@isc.org>
Fri, 4 Apr 2025 09:37:21 +0000 (12:37 +0300)
config-report.sh.in
meson.build
src/share/yang/modules/utils/meson.build
subprojects/netconf/meson.build

index 56d146f217a7f0a4408fb772eb482527206474c8..1af984ebde209831325623ed874efeb71b00a549 100755 (executable)
@@ -11,61 +11,61 @@ add_to_report <<HERE_DOCUMENT
     -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 
 Package:
-  Name:              @PACKAGE_NAME@
-  Version:           @PACKAGE_VERSION@
-  Extended version:  @EXTENDED_VERSION@
-  Version type:      @PACKAGE_VERSION_TYPE@
-  OS Family:         @OS_TYPE@
+  Name:               @PACKAGE_NAME@
+  Version:            @PACKAGE_VERSION@
+  Extended version:   @EXTENDED_VERSION@
+  Version type:       @PACKAGE_VERSION_TYPE@
+  OS Family:          @OS_TYPE@
 
-  Prefix:            @PREFIX@
-  Hooks directory:   @HOOKS_DIR@
-  Premium hooks:     @PREMIUM@
+  Prefix:             @PREFIX@
+  Hooks directory:    @HOOKS_DIR@
+  Premium hooks:      @PREMIUM@
 
-Meson Version:     @MESON_VERSION@
-Meson info:        @MESON_INFO@
-Build Options:     @BUILD_OPTIONS@
+Meson Version:        @MESON_VERSION@
+Meson info:           @MESON_INFO@
+Build Options:        @BUILD_OPTIONS@
 
 HERE_DOCUMENT
 
 add_to_report <<HERE_DOCUMENT
 C++ Compiler:
-  CXX:             @CXX@
-  CXX_ID:          @CXX_ID@
-  CXX_VERSION:     @CXX_VERSION@
-  CXX_STANDARD:    @CXX_STANDARD@
-  CXX_ARGS:        @CXX_ARGS@
-  LD_ID:           @LD_ID@
-  LD_ARGS:         @LD_ARGS@
+  CXX:                @CXX@
+  CXX_ID:             @CXX_ID@
+  CXX_VERSION:        @CXX_VERSION@
+  CXX_STANDARD:       @CXX_STANDARD@
+  CXX_ARGS:           @CXX_ARGS@
+  LD_ID:              @LD_ID@
+  LD_ARGS:            @LD_ARGS@
 
 HERE_DOCUMENT
 
 add_to_report <<HERE_DOCUMENT
 Python:
-  PYTHON:          @PYTHON_PATH@
-  PYTHON_VERSION:  @PYTHON_VERSION@
-  PKGPYTHONDIR:    @PKGPYTHONDIR@
+  PYTHON:             @PYTHON_PATH@
+  PYTHON_VERSION:     @PYTHON_VERSION@
+  PKGPYTHONDIR:       @PKGPYTHONDIR@
 
-Boost:             @BOOST_VERSION@
+Boost:                @BOOST_VERSION@
 
 @CRYPTO_NAME@:@SPACES@@CRYPTO_VERSION@
 
-Log4cplus:         @LOG4CPLUS_VERSION@
+Log4cplus:            @LOG4CPLUS_VERSION@
 
-Flex:              @FLEX@
-Bison:             @BISON@
+Flex:                 @FLEX@
+Bison:                @BISON@
 
 HERE_DOCUMENT
 
 if test '@HAVE_MYSQL@' != 'no'; then
 add_to_report <<HERE_DOCUMENT
-MySQL:             @MYSQL_VERSION@
+MySQL:                @MYSQL_VERSION@
 
 HERE_DOCUMENT
 
 else
 
 add_to_report <<HERE_DOCUMENT
-MySQL:             no
+MySQL:                no
 
 HERE_DOCUMENT
 fi
@@ -73,14 +73,14 @@ fi
 if test '@HAVE_PGSQL@' != 'no'; then
 
 add_to_report <<HERE_DOCUMENT
-PostgreSQL:        @PGSQL_VERSION@
+PostgreSQL:           @PGSQL_VERSION@
 
 HERE_DOCUMENT
 
 else
 
 add_to_report <<HERE_DOCUMENT
-PostgreSQL:        no
+PostgreSQL:           no
 
 HERE_DOCUMENT
 fi
@@ -88,29 +88,31 @@ fi
 if test '@HAVE_NETCONF@' != 'no'; then
 add_to_report <<HERE_DOCUMENT
 Netconf:
-  LIBYANG:         @LIBYANG_VERSION@
-  LIBYANGCPP:      @LIBYANGCPP_VERSION@
-  LIBYANG_PREFIX:  @LIBYANG_PREFIX@
-  SYSREPO:         @SYSREPO_VERSION@
-  SYSREPOCPP:      @SYSREPOCPP_VERSION@
-  SYSREPO_PREFIX:  @SYSREPO_PREFIX@
+  YANG:               @YANG_VERSION@
+  YANG_PREFIX:        @YANG_PREFIX@
+  YANGCPP:            @YANGCPP_VERSION@
+  YANGCPP_PREFIX:     @YANGCPP_PREFIX@
+  SYSREPO:            @SYSREPO_VERSION@
+  SYSREPO_PREFIX:     @SYSREPO_PREFIX@
+  SYSREPOCPP:         @SYSREPOCPP_VERSION@
+  SYSREPOCPP_PREFIX:  @SYSREPOCPP_PREFIX@
 
 HERE_DOCUMENT
 else
 add_to_report <<HERE_DOCUMENT
-Netconf:           no
+Netconf:              no
 
 HERE_DOCUMENT
 fi
 
 if test '@HAVE_GTEST@' != 'no'; then
 add_to_report <<HERE_DOCUMENT
-Google Test:       @GTEST_VERSION@
+Google Test:          @GTEST_VERSION@
 
 HERE_DOCUMENT
 else
 add_to_report <<HERE_DOCUMENT
-Google Test:       no
+Google Test:          no
 
 HERE_DOCUMENT
 fi
@@ -118,21 +120,21 @@ fi
 if test '@HAVE_KRB5@' != 'no'; then
 add_to_report <<HERE_DOCUMENT
 Kerberos5 GSS-API:
-  VERSION:         @KRB5_GSSAPI_VERSION@
-  VENDOR:          @KRB5_GSSAPI_VENDOR@
+  VERSION:            @KRB5_GSSAPI_VERSION@
+  VENDOR:             @KRB5_GSSAPI_VENDOR@
 
 HERE_DOCUMENT
 else
 add_to_report <<HERE_DOCUMENT
-Kerberos5 GSS-API: no
+Kerberos5 GSS-API:    no
 
 HERE_DOCUMENT
 fi
 
 add_to_report <<HERE_DOCUMENT
 Developer:
-  Tests:           @TESTS_ENABLED@
-  Fuzzing:         @FUZZ_ENABLED@
-  Valgrind:        @VALGRIND@
-  AFL:             @HAVE_AFL@
+  Tests:              @TESTS_ENABLED@
+  Fuzzing:            @FUZZ_ENABLED@
+  Valgrind:           @VALGRIND@
+  AFL:                @HAVE_AFL@
 HERE_DOCUMENT
index 558c42bd31849381722da053c2de72dc38874787..0f6f10f98e8e230f0cf7266325b46ba9a991b0ba 100644 (file)
@@ -223,7 +223,7 @@ NETCONF_DEP = dependency(
     required: netconf_opt,
 )
 if netconf_opt.enabled() and NETCONF_DEP.get_variable(
-    'libyang_prefix',
+    'yang-prefix',
     default_value: 'unknown',
 ) == 'unknown'
     error('Dependency not found: NETCONF.')
@@ -541,11 +541,26 @@ conf_data.set('PACKAGE_VERSION_TYPE', f'"@package_version_type@"')
 compile_args = []
 link_args = []
 
+# TODO: Use $ORIGIN
 # $ORIGIN documented at https://www.man7.org/linux/man-pages/man8/ld.so.8.html
+# It is preferable since it would allow Kea to start even if the installation is moved.
+# We have to be careful at making executables work both in the build directory and in the installation directory.
+# Also, Meson might use it by default, but might not use it on all systems, so lots of variables...
 # EXECUTABLE_RPATH = f'$ORIGIN/../@LIBDIR@'
 # HOOK_RPATH = '$ORIGIN/../..'
+
 BUILD_RPATH = TOP_BUILD_DIR / 'src/lib'
 INSTALL_RPATH = PREFIX / LIBDIR
+
+# Add rpaths for NETCONF dependencies.
+if NETCONF_DEP.found()
+    foreach i : ['yang', 'yang-cpp', 'sysrepo', 'sysrepo-cpp']
+        libdir = NETCONF_DEP.get_variable(f'@i@-libdir')
+        BUILD_RPATH += f':@libdir@'
+        INSTALL_RPATH += f':@libdir@'
+    endforeach
+endif
+
 # rpmbuild complains about rpaths to standard locations so let us conform to
 # its liking and remove them. And let's do it consistently for all packages.
 if kea_pkg_type_in_configure != ''
@@ -661,7 +676,7 @@ else
 endif
 if CRYPTO_DEP.name() == botan.name()
     report_conf_data.set('CRYPTO_NAME', 'Botan')
-    report_conf_data.set('SPACES', '             ')
+    report_conf_data.set('SPACES', '                ')
     result = cpp.run(
         fs.read('compiler-checks/get-botan-version.cc'),
         name: 'Get Botan version',
@@ -678,7 +693,7 @@ if CRYPTO_DEP.name() == botan.name()
     report_conf_data.set('CRYPTO_VERSION', version)
 elif CRYPTO_DEP.name() == openssl.name()
     report_conf_data.set('CRYPTO_NAME', 'OpenSSL')
-    report_conf_data.set('SPACES', '           ')
+    report_conf_data.set('SPACES', '              ')
     result = cpp.run(
         fs.read('compiler-checks/get-openssl-version.cc'),
         name: 'Get OpenSSL version',
@@ -743,49 +758,59 @@ endif
 if NETCONF_DEP.found()
     report_conf_data.set('HAVE_NETCONF', 'yes')
     report_conf_data.set(
-        'LIBYANG_PREFIX',
-        NETCONF_DEP.get_variable('libyang_prefix', default_value: 'unknown'),
+        'YANG_VERSION',
+        NETCONF_DEP.get_variable(
+            'yang-version',
+            default_value: 'unknown version',
+        ),
     )
     report_conf_data.set(
-        'SYSREPO_PREFIX',
-        NETCONF_DEP.get_variable('sysrepo_prefix', default_value: 'unknown'),
+        'YANG_PREFIX',
+        NETCONF_DEP.get_variable('yang-prefix', default_value: 'unknown'),
     )
     report_conf_data.set(
-        'LIBYANG_VERSION',
+        'YANGCPP_VERSION',
         NETCONF_DEP.get_variable(
-            'libyang_version',
+            'yang-cpp-version',
             default_value: 'unknown version',
         ),
     )
     report_conf_data.set(
-        'LIBYANGCPP_VERSION',
-        NETCONF_DEP.get_variable(
-            'libyangcpp_version',
-            default_value: 'unknown version',
-        ),
+        'YANGCPP_PREFIX',
+        NETCONF_DEP.get_variable('yang-cpp-prefix', default_value: 'unknown'),
     )
     report_conf_data.set(
         'SYSREPO_VERSION',
         NETCONF_DEP.get_variable(
-            'sysrepo_version',
+            'sysrepo-version',
             default_value: 'unknown version',
         ),
     )
+    report_conf_data.set(
+        'SYSREPO_PREFIX',
+        NETCONF_DEP.get_variable('sysrepo-prefix', default_value: 'unknown'),
+    )
     report_conf_data.set(
         'SYSREPOCPP_VERSION',
         NETCONF_DEP.get_variable(
-            'sysrepocpp_version',
+            'sysrepo-cpp-version',
             default_value: 'unknown version',
         ),
     )
+    report_conf_data.set(
+        'SYSREPOCPP_PREFIX',
+        NETCONF_DEP.get_variable('sysrepo-cpp-prefix', default_value: 'unknown'),
+    )
 else
     report_conf_data.set('HAVE_NETCONF', 'no')
-    report_conf_data.set('LIBYANG_PREFIX', 'no')
-    report_conf_data.set('SYSREPO_PREFIX', 'no')
-    report_conf_data.set('LIBYANG_VERSION', 'no')
-    report_conf_data.set('LIBYANGCPP_VERSION', 'no')
+    report_conf_data.set('YANG_VERSION', 'no')
+    report_conf_data.set('YANG_PREFIX', 'no')
+    report_conf_data.set('YANGCPP_VERSION', 'no')
+    report_conf_data.set('YANGCPP_PREFIX', 'no')
     report_conf_data.set('SYSREPO_VERSION', 'no')
+    report_conf_data.set('SYSREPO_PREFIX', 'no')
     report_conf_data.set('SYSREPOCPP_VERSION', 'no')
+    report_conf_data.set('SYSREPOCPP_PREFIX', 'no')
 endif
 if FUZZ_OPT.enabled() or TESTS_OPT.enabled()
     report_conf_data.set('HAVE_GTEST', 'yes')
index 7ff86ad5301bd0e1c22089ca0c701714920ae544..6444675d1d9204b8a4f684856deb61ee230f8584 100644 (file)
@@ -8,11 +8,11 @@ yang_utils_conf_data.set('datarootdir', PREFIX / DATADIR)
 yang_utils_conf_data.set('prefix', PREFIX)
 yang_utils_conf_data.set(
     'LIBYANG_PREFIX',
-    NETCONF_DEP.get_variable('libyang_prefix'),
+    NETCONF_DEP.get_variable('yang-prefix'),
 )
 yang_utils_conf_data.set(
     'SYSREPO_PREFIX',
-    NETCONF_DEP.get_variable('sysrepo_prefix'),
+    NETCONF_DEP.get_variable('sysrepo-prefix'),
 )
 
 configure_file(
index 94af1a54e007e4f66d842f9e40ece17d4c728e88..2219dab27074eaba962a6c97378fee99afecde72 100644 (file)
@@ -10,39 +10,13 @@ foreach dep : ['yang', 'yang-cpp', 'sysrepo', 'sysrepo-cpp']
         continue
     endif
 
-    # Try adding lib to it. libyang and libyang-cpp define the wrong pkg-config.
+    # Try adding lib to it. yang and yang-cpp define the wrong pkg-config.
     netconf_deps = netconf_deps + {
         dep: dependency('lib' + dep, required: false),
     }
     if netconf_deps[dep].found()
         continue
     endif
-
-    # Search in /opt.
-    foreach prefix : ['', 'lib']
-        path = f'/opt/@prefix@@dep@'
-        lib = cpp.find_library(dep, dirs: [f'/@path@/lib'], required: false)
-        if lib.found()
-            netconf_deps = netconf_deps + {
-                dep: declare_dependency(
-                    dependencies: [lib],
-                    include_directories: include_directories(f'/@path@/include'),
-                    variables: {'prefix': f'@path@'},
-                ),
-            }
-            if SYSTEM == 'darwin'
-                add_project_link_arguments(
-                    f'-Wl,-rpath,@path@/lib',
-                    language: 'cpp',
-                )
-            else
-                add_project_link_arguments(
-                    f'-Wl,-rpath=@path@/lib',
-                    language: 'cpp',
-                )
-            endif
-        endif
-    endforeach
 endforeach
 
 all_deps_found = true
@@ -55,48 +29,22 @@ endforeach
 
 if all_deps_found
     variables = {}
-    if netconf_deps['yang'].found()
-        libyang_prefix = netconf_deps['yang'].get_variable('prefix')
-        libyang_version = netconf_deps['yang'].version()
-        if libyang_version == 'unknown'
-            libyang_version = 'unknown version'
-        endif
-    else
-        libyang_prefix = 'unknown'
-        libyang_version = 'unknown version'
-    endif
-    variables += {'libyang_prefix': libyang_prefix}
-    variables += {'libyang_version': libyang_version}
-    if netconf_deps['yang-cpp'].found()
-        libyangcpp_version = netconf_deps['yang-cpp'].version()
-        if libyangcpp_version == 'unknown'
-            libyangcpp_version = 'unknown version'
-        endif
-    else
-        libyangcpp_version = 'unknown version'
-    endif
-    variables += {'libyangcpp_version': libyangcpp_version}
-    if netconf_deps['sysrepo'].found()
-        sysrepo_prefix = netconf_deps['sysrepo'].get_variable('prefix')
-        sysrepo_version = netconf_deps['sysrepo'].version()
-        if sysrepo_version == 'unknown'
-            sysrepo_version = 'unknown version'
-        endif
-    else
-        sysrepo_prefix = 'unknown'
-        sysrepo_version = 'unknown version'
-    endif
-    variables += {'sysrepo_prefix': sysrepo_prefix}
-    variables += {'sysrepo_version': sysrepo_version}
-    if netconf_deps['sysrepo-cpp'].found()
-        sysrepocpp_version = netconf_deps['sysrepo-cpp'].version()
-        if sysrepocpp_version == 'unknown'
-            sysrepocpp_version = 'unknown version'
+    foreach i : ['yang', 'yang-cpp', 'sysrepo', 'sysrepo-cpp']
+        if netconf_deps[i].found()
+            libdir = netconf_deps[i].get_variable('libdir')
+            prefix = netconf_deps[i].get_variable('prefix')
+            version = netconf_deps[i].version()
+            if version == 'unknown'
+                version = 'unknown version'
+            endif
+        else
+            prefix = 'unknown'
+            version = 'unknown version'
         endif
-    else
-        sysrepocpp_version = 'unknown version'
-    endif
-    variables += {'sysrepocpp_version': sysrepocpp_version}
+        variables += {f'@i@-libdir': libdir}
+        variables += {f'@i@-prefix': prefix}
+        variables += {f'@i@-version': version}
+    endforeach
     netconf = declare_dependency(
         dependencies: [
             netconf_deps['yang'],