From: Philip Prindeville Date: Sun, 31 May 2026 19:40:17 +0000 (-0600) Subject: kea: update to 3.2.0 X-Git-Url: http://git.99rst.org/?a=commitdiff_plain;h=1c117427299b6316200abca78ad8fc3905d5184c;p=openwrt-packages.git kea: update to 3.2.0 Update to LTS version, which includes support for NAKing unknown class requests. https://gitlab.isc.org/isc-projects/kea/-/issues/4110 Signed-off-by: Philip Prindeville --- diff --git a/net/kea/Makefile b/net/kea/Makefile index 6f6e8c4ad..bf984720c 100644 --- a/net/kea/Makefile +++ b/net/kea/Makefile @@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=kea -PKG_VERSION:=3.0.3 -PKG_RELEASE:=2 +PKG_VERSION:=3.2.0 +PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=https://ftp.isc.org/isc/kea/$(PKG_VERSION) -PKG_HASH:=09702ddb078b637e85de9236cbedd3fb9d7af7c6e797026c538b45748ad4d631 +PKG_HASH:=14bf695d37b65b9b1bf550fea5d0adaf9806c50e5419ef2a176a4b8e9aade3df PKG_MAINTAINER:=Philip Prindeville , Noah Meyerhans PKG_LICENSE:=MPL-2.0 @@ -258,9 +258,7 @@ endef define Package/kea-ctrl/install $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/kea $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/keactrl $(1)/usr/sbin/keactrl - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/kea-ctrl-agent $(1)/usr/sbin/kea-ctrl-agent $(CP) $(PKG_INSTALL_DIR)/etc/kea/keactrl.conf $(1)/etc/kea/ - $(CP) $(PKG_INSTALL_DIR)/etc/kea/kea-ctrl-agent.conf $(1)/etc/kea/ endef define Package/kea-lfc/install diff --git a/net/kea/patches/020-boost-system.patch b/net/kea/patches/020-boost-system.patch deleted file mode 100644 index 16273a4b6..000000000 --- a/net/kea/patches/020-boost-system.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/meson.build -+++ b/meson.build -@@ -189,7 +189,7 @@ message(f'Detected system "@SYSTEM@".') - - #### Dependencies - --boost_dep = dependency('boost', version: '>=1.66', modules: ['system']) -+boost_dep = dependency('boost', version: '>=1.66') - dl_dep = dependency('dl') - threads_dep = dependency('threads') - add_project_dependencies(boost_dep, dl_dep, threads_dep, language: ['cpp']) diff --git a/net/kea/patches/030-cpp.patch b/net/kea/patches/030-cpp.patch deleted file mode 100644 index c6ffafa5b..000000000 --- a/net/kea/patches/030-cpp.patch +++ /dev/null @@ -1,320 +0,0 @@ ---- a/meson.build -+++ b/meson.build -@@ -300,7 +300,6 @@ endif - # Google Test - GTEST_DEP = dependency( - 'gtest', -- fallback: ['gtest', 'gtest_dep'], - required: FUZZ_OPT.enabled() or TESTS_OPT.enabled(), - ) - -@@ -363,167 +362,80 @@ conf_data.set('HAVE_PGSQL', POSTGRESQL_D - - #### Compiler Checks - --# The required keyword in cpp.run() is an 1.5.0 feature. --result = cpp.run( -- fs.read('compiler-checks/get-cpp-standard.cc'), -- name: 'Get cpp standard', --) --if result.returncode() == 0 -- cpp_standard = result.stdout().strip() --else -- error('C++ standard is unknown') --endif --message(f'Detected C++ standard (__cplusplus value) is @cpp_standard@.') --cpp_std_opt = get_option('cpp_std') --no_cpp_std_opt_msg = 'Please set a C++ standard by passing the -D cpp_std argument to meson.' --cpp_std_opt_msg = f'-D cpp_std=@cpp_std_opt@ is not enough.' --if cpp_standard.version_compare('<201100') -- msgs = [ -- 'Kea requires at least C++11 to build.', -- 'Recommended C++ standard is C++14 but some dependencies require at least C++20', -- ] -- if cpp_std_opt == 'none' -- msgs += no_cpp_std_opt_msg -- else -- msgs += cpp_std_opt_msg -- endif -- error('\n'.join(msgs)) --endif --if cpp_standard.version_compare('<201400') -- result = cpp.run( -- fs.read('compiler-checks/boost-math-cpp14.cc'), -- name: 'BOOST_MATH_REQUIRES_CPP14', -- dependencies: [boost_dep, threads_dep], -- ) -- if result.returncode() != 0 -- msgs = ['Boost Math requires at least C++14.'] -- if cpp_std_opt == 'none' -- msgs += no_cpp_std_opt_msg -- else -- msgs += cpp_std_opt_msg -- endif -- error('\n'.join(msgs)) -- endif --endif --if NETCONF_DEP.found() and cpp_standard.version_compare('<202000') -- msgs = ['NETCONF dependency requires at least C++20.'] -- if cpp_std_opt == 'none' -- msgs += no_cpp_std_opt_msg -- else -- msgs += cpp_std_opt_msg -- endif -- if netconf_opt.enabled() -- error('\n'.join(msgs)) -- else -- msgs += 'Disabling NETCONF.' -- warning('\n'.join(msgs)) -- NETCONF_DEP = disabler() -- endif --endif --if CRYPTO_DEP.name() == botan.name() and cpp_standard.version_compare('<202000') -- msgs = ['Botan dependency requires at least C++20.'] -- if cpp_std_opt == 'none' -- msgs += no_cpp_std_opt_msg -- else -- msgs += cpp_std_opt_msg -- endif -- error('\n'.join(msgs)) --endif -- --result = cpp.run( -- fs.read('compiler-checks/boost-has-threads.cc'), -- dependencies: [boost_dep, threads_dep], -- name: 'BOOST_HAS_THREADS', --) --if result.returncode() != 0 -- error('boost is not configured to use threads') --endif -- --if cpp.has_header('boost/regex.h', dependencies: [boost_dep], required: false) -- result = cpp.run( -- fs.read('compiler-checks/boost-regex.cc'), -- dependencies: [boost_dep, threads_dep], -- name: 'GET_SYSTEM_VS_BOOST_REGEX_HEADER', -- ) -- if result.returncode() != 0 -- error('boost/regex.h is used in place of system regex.h') -- endif --endif -- --result = cpp.run( -+result = cpp.compiles( - fs.read('compiler-checks/chrono-same-duration.cc'), - name: 'CHRONO_SAME_DURATION', - ) --conf_data.set('CHRONO_SAME_DURATION', result.returncode() == 0) -+conf_data.set('CHRONO_SAME_DURATION', result) - - if CRYPTO_DEP.name() == openssl.name() -- result1 = cpp.run( -+ result1 = cpp.compiles( - fs.read('compiler-checks/have-generic-tls-method.cc'), - name: 'HAVE_GENERIC_TLS_METHOD', - dependencies: [boost_dep, CRYPTO_DEP, threads_dep], - ) -- result2 = cpp.run( -+ result2 = cpp.compiles( - fs.read('compiler-checks/stream-truncated-error.cc'), - name: 'HAVE_STREAM_TRUNCATED_ERROR', - dependencies: [boost_dep, CRYPTO_DEP, threads_dep], - ) -- if result1.returncode() != 0 or result2.returncode() != 0 -+ if not result1 or not result2 - error('Boost TLS support broken.') - endif - endif - - if CRYPTO_DEP.name() == botan.name() -- result = cpp.run( -+ result = cpp.compiles( - fs.read('compiler-checks/botan-hash.cc'), - name: 'CHECK_BOTAN_LIBRARY', - dependencies: [boost_dep, CRYPTO_DEP, threads_dep], - ) -- if result.returncode() != 0 -+ if not result - error('Botan library does not work.') - endif - endif - --result = cpp.run( -+result = cpp.compiles( - fs.read('compiler-checks/have-optreset.cc'), - name: 'HAVE_OPTRESET', - ) --conf_data.set('HAVE_OPTRESET', result.returncode() == 0) -+conf_data.set('HAVE_OPTRESET', result) - --result = cpp.run(fs.read('compiler-checks/have-sa-len.cc'), name: 'HAVE_SA_LEN') --conf_data.set('HAVE_SA_LEN', result.returncode() == 0) -+result = cpp.compiles(fs.read('compiler-checks/have-sa-len.cc'), name: 'HAVE_SA_LEN') -+conf_data.set('HAVE_SA_LEN', result) - --result = cpp.run( -+result = cpp.compiles( - fs.read('compiler-checks/log4cplus-initializer.cc'), - name: 'LOG4CPLUS_INITIALIZER_H', - dependencies: [LOG4CPLUS_DEP], - ) --conf_data.set('LOG4CPLUS_INITIALIZER_H', result.returncode() == 0) -+conf_data.set('LOG4CPLUS_INITIALIZER_H', result) - - if MYSQL_DEP.found() -- result = cpp.run( -+ result = cpp.compiles( - fs.read('compiler-checks/mysql-my-bool.cc'), - name: 'MYSQL_MY_BOOL', - dependencies: [MYSQL_DEP], - ) -- conf_data.set('HAVE_MYSQL_MY_BOOL', result.returncode() == 0) -+ conf_data.set('HAVE_MYSQL_MY_BOOL', result) - -- result = cpp.run( -+ result = cpp.compiles( - fs.read('compiler-checks/mysql-get-option.cc'), - name: 'HAVE_MYSQL_GET_OPTION', - dependencies: [MYSQL_DEP], - ) -- conf_data.set('HAVE_MYSQL_GET_OPTION', result.returncode() == 0) -+ conf_data.set('HAVE_MYSQL_GET_OPTION', result) - endif - --result = cpp.run( -+result = cpp.compiles( - fs.read('compiler-checks/fuzzing-with-clusterfuzzlite.cc'), - name: 'FUZZING_WITH_CLUSTERFUZZLITE', - ) --FUZZING_WITH_CLUSTERFUZZLITE = result.returncode() == 0 -+FUZZING_WITH_CLUSTERFUZZLITE = result - - have_afl = false --result = cpp.run(fs.read('compiler-checks/have-afl.cc'), name: 'HAVE_AFL') --if result.returncode() == 0 -+result = cpp.compiles(fs.read('compiler-checks/have-afl.cc'), name: 'HAVE_AFL') -+if result - have_afl = true - endif - conf_data.set('HAVE_AFL', have_afl) -@@ -534,22 +446,22 @@ if GTEST_DEP.found() - if GTEST_DEP.type_name() == 'internal' - conf_data.set('HAVE_CREATE_UNIFIED_DIFF', true) - else -- result = cpp.run( -+ result = cpp.compiles( - fs.read('compiler-checks/have-create-unified-diff.cc'), - name: 'HAVE_CREATE_UNIFIED_DIFF', - dependencies: [GTEST_DEP], - ) -- conf_data.set('HAVE_CREATE_UNIFIED_DIFF', result.returncode() == 0) -+ conf_data.set('HAVE_CREATE_UNIFIED_DIFF', result) - endif - endif - - if KRB5_DEP.found() -- result = cpp.run( -+ result = cpp.compiles( - fs.read('compiler-checks/have-gss-str-to-oid.cc'), - name: 'HAVE_GSS_STR_TO_OID', - dependencies: [KRB5_DEP], - ) -- conf_data.set('HAVE_GSS_STR_TO_OID', result.returncode() == 0) -+ conf_data.set('HAVE_GSS_STR_TO_OID', result) - endif - - #### Other checks. -@@ -753,7 +665,7 @@ if result.returncode() == 0 - else - report_conf_data.set('CXX_VERSION', 'unknown') - endif --report_conf_data.set('CXX_STANDARD', cpp_standard) -+report_conf_data.set('CXX_STANDARD', '20') - compile_args += cpp_args_opt - report_conf_data.set('CXX_ARGS', ' '.join(compile_args)) - report_conf_data.set('LD_ID', cpp.get_linker_id()) -@@ -762,29 +674,25 @@ report_conf_data.set('LD_ARGS', ' '.join - report_conf_data.set('PYTHON_PATH', PYTHON.full_path()) - report_conf_data.set('PYTHON_VERSION', PYTHON.version()) - report_conf_data.set('PKGPYTHONDIR', PKGPYTHONDIR) --result = cpp.run( -+result = cpp.compiles( - fs.read('compiler-checks/get-boost-version.cc'), - dependencies: [boost_dep, threads_dep], - name: 'Get Boost version', - ) --if result.returncode() == 0 -- report_conf_data.set('BOOST_VERSION', result.stdout().strip()) -+if result -+ report_conf_data.set('BOOST_VERSION', boost_dep.version()) - else - report_conf_data.set('BOOST_VERSION', 'unknown version') - endif - if CRYPTO_DEP.name() == botan.name() - report_conf_data.set('CRYPTO_NAME', 'Botan') - report_conf_data.set('SPACES', ' ') -- result = cpp.run( -+ result = cpp.compiles( - fs.read('compiler-checks/get-botan-version.cc'), - name: 'Get Botan version', - dependencies: [CRYPTO_DEP], - ) -- if result.returncode() == 0 -- version = result.stdout().strip() -- else -- version = botan.version() -- endif -+ version = botan.version() - if version == 'unknown' - version = 'unknown version' - endif -@@ -792,31 +700,23 @@ if CRYPTO_DEP.name() == botan.name() - elif CRYPTO_DEP.name() == openssl.name() - report_conf_data.set('CRYPTO_NAME', 'OpenSSL') - report_conf_data.set('SPACES', ' ') -- result = cpp.run( -+ result = cpp.compiles( - fs.read('compiler-checks/get-openssl-version.cc'), - name: 'Get OpenSSL version', - dependencies: [CRYPTO_DEP], - ) -- if result.returncode() == 0 -- version = result.stdout().strip() -- else -- version = openssl.version() -- endif -+ version = openssl.version() - if version == 'unknown' - version = 'unknown version' - endif - report_conf_data.set('CRYPTO_VERSION', version) - endif --result = cpp.run( -+result = cpp.compiles( - fs.read('compiler-checks/get-log4cplus-version.cc'), - name: 'Get Log4cplus version', - dependencies: [LOG4CPLUS_DEP], - ) --if result.returncode() == 0 -- version = result.stdout().strip() --else -- version = log4cplus.version() --endif -+version = LOG4CPLUS_DEP.version() - if version == 'unknown' - version = 'unknown version' - endif -@@ -1091,13 +991,6 @@ pkg.generate( - - #### More Custom Targets - --if TARGETS_GEN_MESSAGES.length() > 0 -- alias_target('messages', TARGETS_GEN_MESSAGES) --else -- error( -- 'No messages to generate. This is probably an error in the meson.build files.', -- ) --endif - if TARGETS_GEN_PARSER.length() > 0 - alias_target('parser', TARGETS_GEN_PARSER) - else diff --git a/net/kea/patches/040-boost-189.patch b/net/kea/patches/040-boost-189.patch deleted file mode 100644 index 20e1677f2..000000000 --- a/net/kea/patches/040-boost-189.patch +++ /dev/null @@ -1,40 +0,0 @@ ---- a/src/lib/asiodns/io_fetch.cc -+++ b/src/lib/asiodns/io_fetch.cc -@@ -67,7 +67,7 @@ struct IOFetchData : boost::noncopyable - OutputBufferPtr msgbuf; // Wire buffer for question - OutputBufferPtr received; // Received data put here - IOFetch::Callback* callback; // Called on I/O Completion -- boost::asio::deadline_timer timer; // Timer to measure timeouts -+ boost::asio::steady_timer timer; // Timer to measure timeouts - IOFetch::Protocol protocol; // Protocol being used - size_t cumulative; // Cumulative received amount - size_t expected; // Expected amount of data -@@ -227,7 +227,7 @@ IOFetch::operator()(boost::system::error - // If we timeout, we stop, which cancels outstanding I/O operations and - // shuts down everything. - if (data_->timeout != -1) { -- data_->timer.expires_from_now(boost::posix_time::milliseconds( -+ data_->timer.expires_after(std::chrono::milliseconds( - data_->timeout)); - data_->timer.async_wait(std::bind(&IOFetch::stop, *this, - TIME_OUT)); ---- a/src/lib/asiolink/interval_timer.cc -+++ b/src/lib/asiolink/interval_timer.cc -@@ -88,7 +88,7 @@ private: - IOServicePtr io_service_; - - /// @brief The asio timer. -- boost::asio::deadline_timer timer_; -+ boost::asio::steady_timer timer_; - - /// @brief Controls how the timer behaves after expiration. - IntervalTimer::Mode mode_; -@@ -141,7 +141,7 @@ void - IntervalTimerImpl::update() { - try { - // Update expire time to (current time + interval_). -- timer_.expires_from_now(boost::posix_time::millisec(long(interval_))); -+ timer_.expires_after(std::chrono::milliseconds(interval_)); - // Reset timer. - // Pass a function bound with a shared_ptr to this. - timer_.async_wait(std::bind(&IntervalTimerImpl::callback, diff --git a/net/kea/patches/050-boost-static-assert.patch b/net/kea/patches/050-boost-static-assert.patch deleted file mode 100644 index cda832844..000000000 --- a/net/kea/patches/050-boost-static-assert.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- a/src/lib/log/logger_level_impl.cc -+++ b/src/lib/log/logger_level_impl.cc -@@ -10,6 +10,7 @@ - #include - #include - #include -+#include - - #include - ---- a/src/lib/dns/rdataclass.cc -+++ b/src/lib/dns/rdataclass.cc -@@ -24,6 +24,7 @@ - #include - #include - #include -+#include - - #include - #include diff --git a/net/kea/patches/100-oopenssl-deprecated.patch b/net/kea/patches/100-oopenssl-deprecated.patch deleted file mode 100644 index b6e23f65d..000000000 --- a/net/kea/patches/100-oopenssl-deprecated.patch +++ /dev/null @@ -1,61 +0,0 @@ -commit b664f981aff4b3a0622d63c0f955effc909a0c8f -Author: Philip Prindeville -Date: Thu Feb 5 14:47:50 2026 -0700 - - [#4338] Build with current Openssl API - ---- a/meson.build -+++ b/meson.build -@@ -331,6 +331,12 @@ elif CRYPTO_DEP.name() == openssl.name() - required: true, - ) - message('Using OpenSSL.') -+ if cpp.has_function('SSL_get1_peer_certificate', prefix: '#include ', dependencies: openssl) -+ conf_data.set('HAVE_NEW_SSL_API', 1) -+ endif -+ if cpp.has_function('OpenSSL_version', prefix: '#include ', dependencies: openssl) -+ conf_data.set('HAVE_OPENSSL_VERSION', 1) -+ endif - else - error('Dependency not found: neither Botan nor OpenSSL.') - endif ---- a/src/lib/asiolink/openssl_tls.h -+++ b/src/lib/asiolink/openssl_tls.h -@@ -171,7 +171,11 @@ public: - /// - /// @return The commonName part of the subjectName or the empty string. - virtual std::string getSubject() { -+#ifdef HAVE_NEW_SSL_API -+ ::X509* cert = ::SSL_get1_peer_certificate(this->native_handle()); -+#else - ::X509* cert = ::SSL_get_peer_certificate(this->native_handle()); -+#endif - if (!cert) { - return (""); - } -@@ -205,7 +209,11 @@ public: - /// - /// @return The commonName part of the issuerName or the empty string. - virtual std::string getIssuer() { -+#ifdef HAVE_NEW_SSL_API -+ ::X509* cert = ::SSL_get1_peer_certificate(this->native_handle()); -+#else - ::X509* cert = ::SSL_get_peer_certificate(this->native_handle()); -+#endif - if (!cert) { - return (""); - } ---- a/src/lib/cryptolink/openssl_link.cc -+++ b/src/lib/cryptolink/openssl_link.cc -@@ -77,7 +77,11 @@ CryptoLink::initialize(CryptoLink& c) { - - std::string - CryptoLink::getVersion() { -+#ifdef HAVE_OPENSSL_VERSION -+ return (OpenSSL_version(OPENSSL_VERSION)); -+#else - return (SSLeay_version(SSLEAY_VERSION)); -+#endif - } - - } // namespace cryptolink