diff options
Diffstat (limited to 'www')
86 files changed, 5289 insertions, 732 deletions
diff --git a/www/chromium/Makefile b/www/chromium/Makefile index 7ce5d02167fe..7dd66eaf8686 100644 --- a/www/chromium/Makefile +++ b/www/chromium/Makefile @@ -1,5 +1,5 @@ PORTNAME= chromium -PORTVERSION= 136.0.7103.92 +PORTVERSION= 136.0.7103.113 PULSEMV= 16 PULSEV= ${PULSEMV}.1 CATEGORIES= www wayland diff --git a/www/chromium/distinfo b/www/chromium/distinfo index 8897a937751d..89fdf6cdec3c 100644 --- a/www/chromium/distinfo +++ b/www/chromium/distinfo @@ -1,7 +1,7 @@ -TIMESTAMP = 1746600351 -SHA256 (chromium-136.0.7103.92.tar.xz) = 3fa7f88ef186566948367bf1e9a9f0612e753fc69285c1654728f6a015cd4cf2 -SIZE (chromium-136.0.7103.92.tar.xz) = 7188412240 +TIMESTAMP = 1747298146 +SHA256 (chromium-136.0.7103.113.tar.xz) = 7c765bd13df842a28bb52279b8d711411ac6082151473e07bd70b9a482c0a0ac +SIZE (chromium-136.0.7103.113.tar.xz) = 7196537592 SHA256 (pulseaudio-16.1.tar.gz) = 027266c62f2a84422ac45fa721a649508f0f1628fb1fd9242315ac54ce2d7c92 SIZE (pulseaudio-16.1.tar.gz) = 2763111 -SHA256 (chromium-136.0.7103.92-testdata.tar.xz) = 6e5bb3fba5b61ffc9e91b9d2fc9cc758bebe4d16806a68b1a32b189193c78256 -SIZE (chromium-136.0.7103.92-testdata.tar.xz) = 651393856 +SHA256 (chromium-136.0.7103.113-testdata.tar.xz) = cbf264643986db5b7aa91843ea64a1b9e23d00bb226b234d4f60788469a58ef8 +SIZE (chromium-136.0.7103.113-testdata.tar.xz) = 651614116 diff --git a/www/chromium/files/patch-third__party_blink_renderer_platform_runtime__enabled__features.json5 b/www/chromium/files/patch-third__party_blink_renderer_platform_runtime__enabled__features.json5 index a797353d5556..919aec74e31b 100644 --- a/www/chromium/files/patch-third__party_blink_renderer_platform_runtime__enabled__features.json5 +++ b/www/chromium/files/patch-third__party_blink_renderer_platform_runtime__enabled__features.json5 @@ -1,4 +1,4 @@ ---- third_party/blink/renderer/platform/runtime_enabled_features.json5.orig 2025-05-05 10:57:53 UTC +--- third_party/blink/renderer/platform/runtime_enabled_features.json5.orig 2025-05-15 08:40:59 UTC +++ third_party/blink/renderer/platform/runtime_enabled_features.json5 @@ -434,7 +434,7 @@ name: "AppTitle", @@ -45,7 +45,7 @@ status: "stable", public: true, base_feature: "none", -@@ -4636,7 +4636,7 @@ +@@ -4635,7 +4635,7 @@ name: "UnrestrictedSharedArrayBuffer", base_feature: "none", origin_trial_feature_name: "UnrestrictedSharedArrayBuffer", @@ -54,7 +54,7 @@ }, // Enables using policy-controlled feature "usb-unrestricted" to allow // isolated context to access protected USB interface classes and to -@@ -4811,7 +4811,7 @@ +@@ -4810,7 +4810,7 @@ { name: "WebAppScopeExtensions", origin_trial_feature_name: "WebAppScopeExtensions", @@ -63,7 +63,7 @@ status: "experimental", base_feature: "none", }, -@@ -5086,7 +5086,7 @@ +@@ -5085,7 +5085,7 @@ { name: "WebIdentityDigitalCredentials", origin_trial_feature_name: "WebIdentityDigitalCredentials", diff --git a/www/chromium/files/patch-ui_ozone_platform_wayland_host_wayland__frame__manager.cc b/www/chromium/files/patch-ui_ozone_platform_wayland_host_wayland__frame__manager.cc new file mode 100644 index 000000000000..e106ca3408e3 --- /dev/null +++ b/www/chromium/files/patch-ui_ozone_platform_wayland_host_wayland__frame__manager.cc @@ -0,0 +1,13 @@ +--- ui/ozone/platform/wayland/host/wayland_frame_manager.cc.orig 2025-05-13 08:59:54 UTC ++++ ui/ozone/platform/wayland/host/wayland_frame_manager.cc +@@ -461,8 +461,10 @@ std::optional<bool> WaylandFrameManager::ApplySurfaceC + surface->UpdateBufferDamageRegion( + gfx::ToEnclosingRectIgnoringError(surface_damage)); + ++#if !BUILDFLAG(IS_BSD) + if (!config.access_fence_handle.is_null()) + surface->set_acquire_fence(std::move(config.access_fence_handle)); ++#endif + + bool needs_commit = false; + diff --git a/www/dokuwiki/Makefile b/www/dokuwiki/Makefile index eb1c2bda90f8..bb4f18db5594 100644 --- a/www/dokuwiki/Makefile +++ b/www/dokuwiki/Makefile @@ -16,7 +16,7 @@ LICENSE_FILE_GPLv2= ${WRKSRC}/COPYING LICENSE_FILE_GPLv2+ = ${WRKSRC}/vendor/geshi/geshi/LICENSE LICENSE_FILE_MIT= ${WRKSRC}/vendor/composer/LICENSE -DIST_VER= ${PORTNAME}-2024-02-06b +DIST_VER= ${PORTNAME}-2025-05-14 USES= cpe php:web,flavors shebangfix tar:tgz USE_PHP= ctype filter gd iconv mbstring ldap pdo_mysql session simplexml xml zlib NO_ARCH= YES diff --git a/www/dokuwiki/distinfo b/www/dokuwiki/distinfo index 4761b07e5644..68ad36c6e7b1 100644 --- a/www/dokuwiki/distinfo +++ b/www/dokuwiki/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1722925621 -SHA256 (dokuwiki-2024-02-06b.tgz) = 7ac919bc298c049af15764f3563ec3012cd158945ef2a22348684df701a19ba3 -SIZE (dokuwiki-2024-02-06b.tgz) = 4206676 +TIMESTAMP = 1747474694 +SHA256 (dokuwiki-2025-05-14.tgz) = b913bf2cbea6fe9956c32572837617d4d8ee766d122155eb4722b24d526dacd4 +SIZE (dokuwiki-2025-05-14.tgz) = 4251299 diff --git a/www/dokuwiki/pkg-plist b/www/dokuwiki/pkg-plist index 21f45af86def..d4dab2c95ada 100644 --- a/www/dokuwiki/pkg-plist +++ b/www/dokuwiki/pkg-plist @@ -131,8 +131,9 @@ %%WWWDIR%%/inc/Feed/FeedItemProcessor.php %%WWWDIR%%/inc/Feed/FeedMediaProcessor.php %%WWWDIR%%/inc/Feed/FeedPageProcessor.php -%%WWWDIR%%/inc/FeedParser.php -%%WWWDIR%%/inc/FeedParserFile.php +%%WWWDIR%%/inc/Feed/FeedParser.php +%%WWWDIR%%/inc/Feed/FeedParserFile.php +%%WWWDIR%%/inc/Feed/FeedParserItem.php %%WWWDIR%%/inc/File/MediaFile.php %%WWWDIR%%/inc/File/MediaResolver.php %%WWWDIR%%/inc/File/PageFile.php @@ -164,6 +165,7 @@ %%WWWDIR%%/inc/Input/Input.php %%WWWDIR%%/inc/Input/Post.php %%WWWDIR%%/inc/Input/Server.php +%%WWWDIR%%/inc/Ip.php %%WWWDIR%%/inc/JWT.php %%WWWDIR%%/inc/JpegMeta.php %%WWWDIR%%/inc/Logger.php @@ -279,6 +281,16 @@ %%WWWDIR%%/inc/Subscriptions/SubscriberRegexBuilder.php %%WWWDIR%%/inc/Subscriptions/SubscriptionSender.php %%WWWDIR%%/inc/TaskRunner.php +%%WWWDIR%%/inc/TreeBuilder/AbstractBuilder.php +%%WWWDIR%%/inc/TreeBuilder/ControlPageBuilder.php +%%WWWDIR%%/inc/TreeBuilder/Node/AbstractNode.php +%%WWWDIR%%/inc/TreeBuilder/Node/ExternalLink.php +%%WWWDIR%%/inc/TreeBuilder/Node/Top.php +%%WWWDIR%%/inc/TreeBuilder/Node/WikiNamespace.php +%%WWWDIR%%/inc/TreeBuilder/Node/WikiPage.php +%%WWWDIR%%/inc/TreeBuilder/Node/WikiStartpage.php +%%WWWDIR%%/inc/TreeBuilder/PageTreeBuilder.php +%%WWWDIR%%/inc/TreeBuilder/TreeSort.php %%WWWDIR%%/inc/Ui/Admin.php %%WWWDIR%%/inc/Ui/Backlinks.php %%WWWDIR%%/inc/Ui/Diff.php @@ -497,6 +509,10 @@ %%WWWDIR%%/inc/lang/bn/editrev.txt %%WWWDIR%%/inc/lang/bn/index.txt %%WWWDIR%%/inc/lang/bn/lang.php +%%WWWDIR%%/inc/lang/br/admin.txt +%%WWWDIR%%/inc/lang/br/adminplugins.txt +%%WWWDIR%%/inc/lang/br/backlinks.txt +%%WWWDIR%%/inc/lang/br/conflict.txt %%WWWDIR%%/inc/lang/ca-valencia/admin.txt %%WWWDIR%%/inc/lang/ca-valencia/adminplugins.txt %%WWWDIR%%/inc/lang/ca-valencia/backlinks.txt @@ -1742,6 +1758,9 @@ %%WWWDIR%%/inc/lang/mk/recent.txt %%WWWDIR%%/inc/lang/mk/showrev.txt %%WWWDIR%%/inc/lang/ml/admin.txt +%%WWWDIR%%/inc/lang/ml/adminplugins.txt +%%WWWDIR%%/inc/lang/ml/backlinks.txt +%%WWWDIR%%/inc/lang/ml/conflict.txt %%WWWDIR%%/inc/lang/ml/jquery.ui.datepicker.js %%WWWDIR%%/inc/lang/mr/admin.txt %%WWWDIR%%/inc/lang/mr/backlinks.txt @@ -3277,6 +3296,7 @@ %%WWWDIR%%/lib/plugins/authpdo/lang/uk/settings.php %%WWWDIR%%/lib/plugins/authpdo/lang/vi/lang.php %%WWWDIR%%/lib/plugins/authpdo/lang/vi/settings.php +%%WWWDIR%%/lib/plugins/authpdo/lang/zh-tw/lang.php %%WWWDIR%%/lib/plugins/authpdo/lang/zh/lang.php %%WWWDIR%%/lib/plugins/authpdo/lang/zh/settings.php %%WWWDIR%%/lib/plugins/authpdo/plugin.info.txt @@ -3507,9 +3527,27 @@ %%WWWDIR%%/lib/plugins/config/plugin.info.txt %%WWWDIR%%/lib/plugins/config/settings/config.metadata.php %%WWWDIR%%/lib/plugins/config/style.css -%%WWWDIR%%/lib/plugins/extension/_test/extension.test.php +%%WWWDIR%%/lib/plugins/extension/Exception.php +%%WWWDIR%%/lib/plugins/extension/Extension.php +%%WWWDIR%%/lib/plugins/extension/Gui.php +%%WWWDIR%%/lib/plugins/extension/GuiAdmin.php +%%WWWDIR%%/lib/plugins/extension/GuiExtension.php +%%WWWDIR%%/lib/plugins/extension/Installer.php +%%WWWDIR%%/lib/plugins/extension/Local.php +%%WWWDIR%%/lib/plugins/extension/Manager.php +%%WWWDIR%%/lib/plugins/extension/Notice.php +%%WWWDIR%%/lib/plugins/extension/Repository.php +%%WWWDIR%%/lib/plugins/extension/_test/ExtensionTest.php +%%WWWDIR%%/lib/plugins/extension/_test/InstallerTest.php +%%WWWDIR%%/lib/plugins/extension/_test/LocalTest.php +%%WWWDIR%%/lib/plugins/extension/_test/ManagerTest.php %%WWWDIR%%/lib/plugins/extension/_test/testdata/either1/script.js %%WWWDIR%%/lib/plugins/extension/_test/testdata/eithersub2/either2/script.js +%%WWWDIR%%/lib/plugins/extension/_test/testdata/multi/mpl1/plugin.info.txt +%%WWWDIR%%/lib/plugins/extension/_test/testdata/multi/mpl2/plugin.info.txt +%%WWWDIR%%/lib/plugins/extension/_test/testdata/multi/mpl3/plugin.info.txt +%%WWWDIR%%/lib/plugins/extension/_test/testdata/multi/mtpl4/template.info.txt +%%WWWDIR%%/lib/plugins/extension/_test/testdata/multi/mtpl5/template.info.txt %%WWWDIR%%/lib/plugins/extension/_test/testdata/plgfoo5/plugin.info.txt %%WWWDIR%%/lib/plugins/extension/_test/testdata/plgsub3/plugin3/syntax.php %%WWWDIR%%/lib/plugins/extension/_test/testdata/plgsub4/plugin4/plugin.info.txt @@ -3527,25 +3565,20 @@ %%WWWDIR%%/lib/plugins/extension/action.php %%WWWDIR%%/lib/plugins/extension/admin.php %%WWWDIR%%/lib/plugins/extension/admin.svg -%%WWWDIR%%/lib/plugins/extension/all.less %%WWWDIR%%/lib/plugins/extension/cli.php -%%WWWDIR%%/lib/plugins/extension/helper/extension.php -%%WWWDIR%%/lib/plugins/extension/helper/gui.php -%%WWWDIR%%/lib/plugins/extension/helper/list.php -%%WWWDIR%%/lib/plugins/extension/helper/repository.php -%%WWWDIR%%/lib/plugins/extension/images/bug.gif -%%WWWDIR%%/lib/plugins/extension/images/disabled.png -%%WWWDIR%%/lib/plugins/extension/images/donate.png -%%WWWDIR%%/lib/plugins/extension/images/down.png -%%WWWDIR%%/lib/plugins/extension/images/enabled.png +%%WWWDIR%%/lib/plugins/extension/helper.php +%%WWWDIR%%/lib/plugins/extension/images/bug.svg +%%WWWDIR%%/lib/plugins/extension/images/coffee.svg +%%WWWDIR%%/lib/plugins/extension/images/error.svg +%%WWWDIR%%/lib/plugins/extension/images/fire.svg %%WWWDIR%%/lib/plugins/extension/images/icons.xcf +%%WWWDIR%%/lib/plugins/extension/images/info.svg %%WWWDIR%%/lib/plugins/extension/images/license.txt %%WWWDIR%%/lib/plugins/extension/images/overlay.png %%WWWDIR%%/lib/plugins/extension/images/plugin.png -%%WWWDIR%%/lib/plugins/extension/images/tag.png +%%WWWDIR%%/lib/plugins/extension/images/security.svg %%WWWDIR%%/lib/plugins/extension/images/template.png -%%WWWDIR%%/lib/plugins/extension/images/up.png -%%WWWDIR%%/lib/plugins/extension/images/warning.png +%%WWWDIR%%/lib/plugins/extension/images/warning.svg %%WWWDIR%%/lib/plugins/extension/lang/bg/intro_install.txt %%WWWDIR%%/lib/plugins/extension/lang/bg/intro_plugins.txt %%WWWDIR%%/lib/plugins/extension/lang/bg/intro_search.txt @@ -3639,6 +3672,7 @@ %%WWWDIR%%/lib/plugins/extension/lang/ko/intro_search.txt %%WWWDIR%%/lib/plugins/extension/lang/ko/intro_templates.txt %%WWWDIR%%/lib/plugins/extension/lang/ko/lang.php +%%WWWDIR%%/lib/plugins/extension/lang/lt/lang.php %%WWWDIR%%/lib/plugins/extension/lang/lv/intro_templates.txt %%WWWDIR%%/lib/plugins/extension/lang/lv/lang.php %%WWWDIR%%/lib/plugins/extension/lang/nl/intro_install.txt @@ -3718,9 +3752,13 @@ %%WWWDIR%%/lib/plugins/logviewer/lang/fr/intro.txt %%WWWDIR%%/lib/plugins/logviewer/lang/fr/lang.php %%WWWDIR%%/lib/plugins/logviewer/lang/fr/nolog.txt +%%WWWDIR%%/lib/plugins/logviewer/lang/hu/intro.txt %%WWWDIR%%/lib/plugins/logviewer/lang/hu/lang.php +%%WWWDIR%%/lib/plugins/logviewer/lang/hu/nolog.txt %%WWWDIR%%/lib/plugins/logviewer/lang/it/lang.php %%WWWDIR%%/lib/plugins/logviewer/lang/ja/lang.php +%%WWWDIR%%/lib/plugins/logviewer/lang/ko/intro.txt +%%WWWDIR%%/lib/plugins/logviewer/lang/ko/lang.php %%WWWDIR%%/lib/plugins/logviewer/lang/pl/intro.txt %%WWWDIR%%/lib/plugins/logviewer/lang/pl/lang.php %%WWWDIR%%/lib/plugins/logviewer/lang/pl/nolog.txt @@ -3733,6 +3771,7 @@ %%WWWDIR%%/lib/plugins/logviewer/lang/ru/intro.txt %%WWWDIR%%/lib/plugins/logviewer/lang/ru/lang.php %%WWWDIR%%/lib/plugins/logviewer/lang/ru/nolog.txt +%%WWWDIR%%/lib/plugins/logviewer/lang/sk/lang.php %%WWWDIR%%/lib/plugins/logviewer/lang/vi/intro.txt %%WWWDIR%%/lib/plugins/logviewer/lang/vi/lang.php %%WWWDIR%%/lib/plugins/logviewer/lang/vi/nolog.txt @@ -4441,6 +4480,7 @@ %%WWWDIR%%/lib/scripts/jquery/update.sh %%WWWDIR%%/lib/scripts/jquery/versions %%WWWDIR%%/lib/scripts/linkwiz.js +%%WWWDIR%%/lib/scripts/linkwiz.test.js %%WWWDIR%%/lib/scripts/locktimer.js %%WWWDIR%%/lib/scripts/media.js %%WWWDIR%%/lib/scripts/page.js @@ -4562,6 +4602,8 @@ %%WWWDIR%%/lib/tpl/dokuwiki/lang/sk/lang.php %%WWWDIR%%/lib/tpl/dokuwiki/lang/sk/style.txt %%WWWDIR%%/lib/tpl/dokuwiki/lang/sv/lang.php +%%WWWDIR%%/lib/tpl/dokuwiki/lang/uk/lang.php +%%WWWDIR%%/lib/tpl/dokuwiki/lang/uk/style.txt %%WWWDIR%%/lib/tpl/dokuwiki/lang/vi/lang.php %%WWWDIR%%/lib/tpl/dokuwiki/lang/vi/style.txt %%WWWDIR%%/lib/tpl/dokuwiki/lang/zh-tw/style.txt @@ -4753,7 +4795,7 @@ %%WWWDIR%%/vendor/geshi/geshi/src/geshi/netrexx.php %%WWWDIR%%/vendor/geshi/geshi/src/geshi/newlisp.php %%WWWDIR%%/vendor/geshi/geshi/src/geshi/nginx.php -%%WWWDIR%%/vendor/geshi/geshi/src/geshi/nimrod.php +%%WWWDIR%%/vendor/geshi/geshi/src/geshi/nim.php %%WWWDIR%%/vendor/geshi/geshi/src/geshi/nsis.php %%WWWDIR%%/vendor/geshi/geshi/src/geshi/oberon2.php %%WWWDIR%%/vendor/geshi/geshi/src/geshi/objc.php @@ -4893,6 +4935,7 @@ %%WWWDIR%%/vendor/openpsa/universalfeedcreator/lib/Creator/GPXCreator.php %%WWWDIR%%/vendor/openpsa/universalfeedcreator/lib/Creator/HTMLCreator.php %%WWWDIR%%/vendor/openpsa/universalfeedcreator/lib/Creator/JSCreator.php +%%WWWDIR%%/vendor/openpsa/universalfeedcreator/lib/Creator/JSONCreator.php %%WWWDIR%%/vendor/openpsa/universalfeedcreator/lib/Creator/KMLCreator.php %%WWWDIR%%/vendor/openpsa/universalfeedcreator/lib/Creator/MBOXCreator.php %%WWWDIR%%/vendor/openpsa/universalfeedcreator/lib/Creator/OPMLCreator.php @@ -4927,6 +4970,16 @@ %%WWWDIR%%/vendor/paragonie/random_compat/lib/random.php %%WWWDIR%%/vendor/paragonie/random_compat/psalm-autoload.php %%WWWDIR%%/vendor/paragonie/random_compat/psalm.xml +%%WWWDIR%%/vendor/php81_bc/strftime/.editorconfig +%%WWWDIR%%/vendor/php81_bc/strftime/LICENSE +%%WWWDIR%%/vendor/php81_bc/strftime/README.md +%%WWWDIR%%/vendor/php81_bc/strftime/autoload.php +%%WWWDIR%%/vendor/php81_bc/strftime/composer.json +%%WWWDIR%%/vendor/php81_bc/strftime/example.php +%%WWWDIR%%/vendor/php81_bc/strftime/src/AbstractLocaleFormatter.php +%%WWWDIR%%/vendor/php81_bc/strftime/src/DateLocaleFormatter.php +%%WWWDIR%%/vendor/php81_bc/strftime/src/IntlLocaleFormatter.php +%%WWWDIR%%/vendor/php81_bc/strftime/src/php-8.1-strftime.php %%WWWDIR%%/vendor/phpseclib/phpseclib/AUTHORS %%WWWDIR%%/vendor/phpseclib/phpseclib/BACKERS.md %%WWWDIR%%/vendor/phpseclib/phpseclib/LICENSE @@ -5093,8 +5146,10 @@ %%WWWDIR%%/vendor/phpseclib/phpseclib/phpseclib/Exception/FileNotFoundException.php %%WWWDIR%%/vendor/phpseclib/phpseclib/phpseclib/Exception/InconsistentSetupException.php %%WWWDIR%%/vendor/phpseclib/phpseclib/phpseclib/Exception/InsufficientSetupException.php +%%WWWDIR%%/vendor/phpseclib/phpseclib/phpseclib/Exception/InvalidPacketLengthException.php %%WWWDIR%%/vendor/phpseclib/phpseclib/phpseclib/Exception/NoKeyLoadedException.php %%WWWDIR%%/vendor/phpseclib/phpseclib/phpseclib/Exception/NoSupportedAlgorithmsException.php +%%WWWDIR%%/vendor/phpseclib/phpseclib/phpseclib/Exception/TimeoutException.php %%WWWDIR%%/vendor/phpseclib/phpseclib/phpseclib/Exception/UnableToConnectException.php %%WWWDIR%%/vendor/phpseclib/phpseclib/phpseclib/Exception/UnsupportedAlgorithmException.php %%WWWDIR%%/vendor/phpseclib/phpseclib/phpseclib/Exception/UnsupportedCurveException.php diff --git a/www/domoticz-devel/Makefile b/www/domoticz-devel/Makefile index e8954e448702..7f56841b2567 100644 --- a/www/domoticz-devel/Makefile +++ b/www/domoticz-devel/Makefile @@ -11,8 +11,6 @@ WWW= https://www.domoticz.com LICENSE= GPLv3 LICENSE_FILE= ${WRKSRC}/License.txt -BROKEN= fails to build with Boost>=1.87 - LIB_DEPENDS= libcurl.so:ftp/curl \ libboost_system.so:devel/boost-libs \ libjsoncpp.so:devel/jsoncpp \ diff --git a/www/domoticz-devel/files/patch-pr6252 b/www/domoticz-devel/files/patch-pr6252 new file mode 100644 index 000000000000..34c4efd3f4e4 --- /dev/null +++ b/www/domoticz-devel/files/patch-pr6252 @@ -0,0 +1,2178 @@ +Fix for boost 1.87 + +Removed the diff for the msbuild project files, didn't apply cleanly and not relevant anyway. +This will merged in the next stable of domoticz. + +Pullrequest: https://github.com/domoticz/domoticz/pull/6252 +Patch: https://patch-diff.githubusercontent.com/raw/domoticz/domoticz/pull/6252.patch-diff + +diff --git hardware/ASyncSerial.cpp hardware/ASyncSerial.cpp +index 52c950d..6147cdb 100644 +--- hardware/ASyncSerial.cpp ++++ hardware/ASyncSerial.cpp +@@ -54,7 +54,7 @@ public: + { + } + +- boost::asio::io_service io; ///< Io service object ++ boost::asio::io_context io; ///< Io service object + boost::asio::serial_port port; ///< Serial port object + boost::thread backgroundThread; ///< Thread that runs read/write operations + bool open{ false }; ///< True if port open +@@ -117,10 +117,10 @@ void AsyncSerial::open(const std::string& devname, unsigned int baud_rate, + throw; + } + +- pimpl->io.reset(); ++ pimpl->io.restart(); + +- // This gives some work to the io_service before it is started +- pimpl->io.post([this] { return doRead(); }); ++ // This gives some work to the io_context before it is started ++ boost::asio::post(pimpl->io, [this] { return doRead(); }); + + boost::thread t([p = &pimpl->io] { p->run(); }); + pimpl->backgroundThread.swap(t); +@@ -149,10 +149,10 @@ void AsyncSerial::openOnlyBaud(const std::string& devname, unsigned int baud_rat + throw; + } + +- pimpl->io.reset(); ++ pimpl->io.restart(); + +- //This gives some work to the io_service before it is started +- pimpl->io.post([this] { return doRead(); }); ++ //This gives some work to the io_context before it is started ++ boost::asio::post(pimpl->io, [this] { return doRead(); }); + + boost::thread t([p = &pimpl->io] { p->run(); }); + pimpl->backgroundThread.swap(t); +@@ -176,9 +176,9 @@ void AsyncSerial::close() + if(!isOpen()) return; + + pimpl->open = false; +- pimpl->io.post([this] { doClose(); }); ++ boost::asio::post(pimpl->io, [this] { doClose(); }); + pimpl->backgroundThread.join(); +- pimpl->io.reset(); ++ pimpl->io.restart(); + if(errorStatus()) + { + throw(boost::system::system_error(boost::system::error_code(), +@@ -192,7 +192,7 @@ void AsyncSerial::write(const char *data, size_t size) + std::lock_guard<std::mutex> l(pimpl->writeQueueMutex); + pimpl->writeQueue.insert(pimpl->writeQueue.end(),data,data+size); + } +- pimpl->io.post([this] { doWrite(); }); ++ boost::asio::post(pimpl->io, [this] { doWrite(); }); + } + + void AsyncSerial::write(const std::string &data) +@@ -201,7 +201,7 @@ void AsyncSerial::write(const std::string &data) + std::lock_guard<std::mutex> l(pimpl->writeQueueMutex); + pimpl->writeQueue.insert(pimpl->writeQueue.end(), data.c_str(), data.c_str()+data.size()); + } +- pimpl->io.post([this] { doWrite(); }); ++ boost::asio::post(pimpl->io, [this] { doWrite(); }); + } + + void AsyncSerial::write(const std::vector<char>& data) +@@ -211,7 +211,7 @@ void AsyncSerial::write(const std::vector<char>& data) + pimpl->writeQueue.insert(pimpl->writeQueue.end(),data.begin(), + data.end()); + } +- pimpl->io.post([this] { doWrite(); }); ++ boost::asio::post(pimpl->io, [this] { doWrite(); }); + } + + void AsyncSerial::writeString(const std::string& s) +@@ -220,7 +220,7 @@ void AsyncSerial::writeString(const std::string& s) + std::lock_guard<std::mutex> l(pimpl->writeQueueMutex); + pimpl->writeQueue.insert(pimpl->writeQueue.end(),s.begin(),s.end()); + } +- pimpl->io.post([this] { doWrite(); }); ++ boost::asio::post(pimpl->io, [this] { doWrite(); }); + } + + void AsyncSerial::doRead() +diff --git hardware/ASyncSerial.h hardware/ASyncSerial.h +index 0a51ef0..de83f8a 100644 +--- hardware/ASyncSerial.h ++++ hardware/ASyncSerial.h +@@ -123,27 +123,27 @@ class AsyncSerial : private domoticz::noncopyable + + /** + * Callback called to start an asynchronous read operation. +- * This callback is called by the io_service in the spawned thread. ++ * This callback is called by the io_context in the spawned thread. + */ + void doRead(); + + /** + * Callback called at the end of the asynchronous operation. +- * This callback is called by the io_service in the spawned thread. ++ * This callback is called by the io_context in the spawned thread. + */ + void readEnd(const boost::system::error_code &error, size_t bytes_transferred); + + /** + * Callback called to start an asynchronous write operation. + * If it is already in progress, does nothing. +- * This callback is called by the io_service in the spawned thread. ++ * This callback is called by the io_context in the spawned thread. + */ + void doWrite(); + + /** + * Callback called at the end of an asynchronuous write operation, + * if there is more data to write, restarts a new write operation. +- * This callback is called by the io_service in the spawned thread. ++ * This callback is called by the io_context in the spawned thread. + */ + void writeEnd(const boost::system::error_code &error); + +diff --git hardware/ASyncTCP.cpp hardware/ASyncTCP.cpp +index a375561..7c3b536 100644 +--- hardware/ASyncTCP.cpp ++++ hardware/ASyncTCP.cpp +@@ -4,213 +4,241 @@ + #include <boost/system/error_code.hpp> // for error_code + #include "../main/Logger.h" + +-struct hostent; +- + #define MAX_TCP_BUFFER_SIZE 4096 + +-#ifndef WIN32 +- #include <unistd.h> //gethostbyname +-#endif +- + #define STATUS_OK(err) !err +- +-ASyncTCP::ASyncTCP(const bool secure) ++#define STATUS_ERR(err) err ++ ++ASyncTCP::ASyncTCP(const bool secure) : ++ m_Tcpwork(boost::asio::make_work_guard(m_io_context)) ++ , m_Socket(m_io_context) ++ , m_Resolver(m_io_context) ++ , m_ReconnectTimer(m_io_context) ++ , m_TimeoutTimer(m_io_context) ++ , m_SendStrand(m_io_context) + #ifdef WWW_ENABLE_SSL +- : mSecure(secure) ++ , m_bSecure(secure) + #endif + { + m_pRXBuffer = new uint8_t[MAX_TCP_BUFFER_SIZE]; + #ifdef WWW_ENABLE_SSL + mContext.set_verify_mode(boost::asio::ssl::verify_none); +- if (mSecure) ++ if (m_bSecure) + { +- mSslSocket.reset(new boost::asio::ssl::stream<boost::asio::ip::tcp::socket>(mIos, mContext)); ++ m_SslSocket.reset(new boost::asio::ssl::stream<boost::asio::ip::tcp::socket>(m_io_context, mContext)); + } + #endif + } + + ASyncTCP::~ASyncTCP() + { +- assert(mTcpthread == nullptr); +- mIsTerminating = true; +- if (mTcpthread) ++ assert(m_Tcpthread == nullptr); ++ m_bIsTerminating = true; ++ if (m_Tcpthread) + { + //This should never happen. terminate() never called!! +- _log.Log(LOG_ERROR, "ASyncTCP: Workerthread not closed. terminate() never called!!!"); +- mIos.stop(); +- if (mTcpthread) ++ _log.Log(LOG_ERROR, "ASyncTCP: Worker thread not closed. terminate() never called!!!"); ++ m_io_context.stop(); ++ if (m_Tcpthread) + { +- mTcpthread->join(); +- mTcpthread.reset(); ++ m_Tcpthread->join(); ++ m_Tcpthread.reset(); + } + } + if (m_pRXBuffer != nullptr) + delete[] m_pRXBuffer; + } + +-void ASyncTCP::SetReconnectDelay(int32_t Delay) ++void ASyncTCP::SetReconnectDelay(const int32_t Delay) + { +- mReconnectDelay = Delay; ++ m_iReconnectDelay = Delay; + } + + void ASyncTCP::connect(const std::string& ip, uint16_t port) + { +- assert(!mSocket.is_open()); +- if (mSocket.is_open()) ++ assert(!m_Socket.is_open()); ++ if (m_Socket.is_open()) + { + _log.Log(LOG_ERROR, "ASyncTCP: connect called while socket is still open. !!!"); + terminate(); + } + +- // RK: We reset mIos here because it might have been stopped in terminate() +- mIos.reset(); +- // RK: After the reset, we need to provide it work anew +- mTcpwork = std::make_shared<boost::asio::io_service::work>(mIos); +- if (!mTcpthread) +- mTcpthread = std::make_shared<std::thread>([p = &mIos] { p->run(); }); +- +- mIp = ip; +- mPort = port; ++ m_IP = ip; ++ m_Port = port; + std::string port_str = std::to_string(port); +- boost::asio::ip::tcp::resolver::query query(ip, port_str); + timeout_start_timer(); +- mResolver.async_resolve(query, [this](auto &&err, auto &&iter) { cb_resolve_done(err, iter); }); ++ ++ m_Resolver.async_resolve( ++ ip, port_str, ++ [this](const boost::system::error_code& error, const boost::asio::ip::tcp::resolver::results_type& endpoints) { ++ handle_resolve(error, endpoints); ++ } ++ ); ++ ++ // RK: We restart m_io_context here because it might have been stopped in terminate() ++ m_io_context.restart(); ++ // RK: After the reset, we need to provide it work anew ++ m_Tcpwork.reset(); ++ m_Tcpwork.emplace(boost::asio::make_work_guard(m_io_context)); ++ if (!m_Tcpthread) ++ m_Tcpthread = std::make_shared<std::thread>([p = &m_io_context] { p->run(); }); + } + +-void ASyncTCP::cb_resolve_done(const boost::system::error_code& error, boost::asio::ip::tcp::resolver::iterator endpoint_iterator) ++void ASyncTCP::handle_resolve(const boost::system::error_code& error, const boost::asio::ip::tcp::resolver::results_type &endpoints) + { +- if (mIsTerminating) return; ++ if (m_bIsTerminating) return; + +- if (STATUS_OK(error)) +- { +- connect_start(endpoint_iterator); +- } +- else ++ if (STATUS_ERR(error)) + { + process_error(error); ++ return; + } +-} +- +-void ASyncTCP::connect_start(boost::asio::ip::tcp::resolver::iterator& endpoint_iterator) +-{ +- if (mIsConnected) return; +- +- mEndPoint = *endpoint_iterator++; ++ if (m_bIsConnected) return; + + timeout_start_timer(); ++ + #ifdef WWW_ENABLE_SSL +- if (mSecure) ++ if (m_bSecure) + { + // we reset the ssl socket, because the ssl context needs to be reinitialized after a reconnect +- mSslSocket.reset(new boost::asio::ssl::stream<boost::asio::ip::tcp::socket>(mIos, mContext)); +- mSslSocket->lowest_layer().async_connect(mEndPoint, [this, endpoint_iterator](auto &&err) mutable { cb_connect_done(err, endpoint_iterator); }); ++ m_SslSocket.reset(new boost::asio::ssl::stream<boost::asio::ip::tcp::socket>(m_io_context, mContext)); ++ boost::asio::async_connect(m_SslSocket->lowest_layer(), endpoints, ++ [this](const boost::system::error_code& error, const boost::asio::ip::tcp::endpoint& endpoint) ++ { ++ handle_connect(error, endpoint); ++ } ++ ); + } + else + #endif + { +- mSocket.async_connect(mEndPoint, [this, endpoint_iterator](auto &&err) mutable { cb_connect_done(err, endpoint_iterator); }); ++ boost::asio::async_connect(m_Socket, endpoints, ++ [this](const boost::system::error_code& error, const boost::asio::ip::tcp::endpoint& endpoint) ++ { ++ handle_connect(error, endpoint); ++ } ++ ); + } + } + +-void ASyncTCP::cb_connect_done(const boost::system::error_code& error, boost::asio::ip::tcp::resolver::iterator &endpoint_iterator) ++void ASyncTCP::handle_connect(const boost::system::error_code& error, const boost::asio::ip::tcp::endpoint& /*endpoint*/) + { +- if (mIsTerminating) return; ++ if (m_bIsTerminating) return; + +- if (STATUS_OK(error)) ++ if (STATUS_ERR(error)) + { ++ process_error(error); ++ return; ++ } + #ifdef WWW_ENABLE_SSL +- if (mSecure) +- { +- timeout_start_timer(); +- mSslSocket->async_handshake(boost::asio::ssl::stream_base::client, [this](auto &&err) { cb_handshake_done(err); }); +- } +- else +-#endif +- { +- process_connection(); +- } ++ if (m_bSecure) ++ { ++ timeout_start_timer(); ++ m_SslSocket->async_handshake(boost::asio::ssl::stream_base::client, ++ [this](const boost::system::error_code& error) { ++ cb_handshake_done(error); ++ } ++ ); + } +- else ++ else ++#endif + { +- if (endpoint_iterator != boost::asio::ip::tcp::resolver::iterator()) +- { +- // The connection failed. Try the next endpoint in the list. +- connect_start(endpoint_iterator); +- return; +- } +- process_error(error); ++ process_connection(); + } + } + + #ifdef WWW_ENABLE_SSL + void ASyncTCP::cb_handshake_done(const boost::system::error_code& error) + { +- if (mIsTerminating) return; ++ if (m_bIsTerminating) return; + +- if (STATUS_OK(error)) +- { +- process_connection(); +- } +- else ++ if (STATUS_ERR(error)) + { + process_error(error); ++ return; + } ++ process_connection(); ++#endif + } ++ ++void ASyncTCP::process_connection() ++{ ++ m_bIsConnected = true; ++#ifdef WWW_ENABLE_SSL ++ ++ if (!m_bSecure) + #endif ++ { ++ // RK: only if non-secure ++ boost::asio::socket_base::keep_alive option(true); ++ m_Socket.set_option(option); ++ } ++ OnConnect(); ++ do_read_start(); ++ do_write_start(); ++} + + void ASyncTCP::reconnect_start_timer() + { +- if (mIsReconnecting) return; ++ if (m_bIsReconnecting) return; + +- if (mReconnectDelay != 0) ++ if (m_iReconnectDelay != 0) + { +- mIsReconnecting = true; +- +- mReconnectTimer.expires_from_now(boost::posix_time::seconds(mReconnectDelay)); +- mReconnectTimer.async_wait([this](auto &&err) { cb_reconnect_start(err); }); ++ m_bIsReconnecting = true; ++ ++ m_ReconnectTimer.expires_from_now(boost::posix_time::seconds(m_iReconnectDelay)); ++ m_ReconnectTimer.async_wait( ++ [this](const boost::system::error_code& error) { ++ cb_reconnect_start(error); ++ } ++ ); + } + } + + void ASyncTCP::cb_reconnect_start(const boost::system::error_code& error) + { +- mIsReconnecting = false; +- mReconnectTimer.cancel(); +- mTimeoutTimer.cancel(); ++ m_bIsReconnecting = false; ++ m_ReconnectTimer.cancel(); ++ m_TimeoutTimer.cancel(); + +- if (mIsConnected) return; ++ if (m_bIsConnected) return; + if (error) return; // timer was cancelled + + do_close(); +- connect(mIp, mPort); ++ connect(m_IP, m_Port); + } + + + void ASyncTCP::terminate(const bool silent) + { +- mIsTerminating = true; ++ m_bIsTerminating = true; + disconnect(silent); +- mTcpwork.reset(); +- mIos.stop(); +- if (mTcpthread) ++ m_Tcpwork.reset(); ++ m_io_context.stop(); ++ if (m_Tcpthread) + { +- mTcpthread->join(); +- mTcpthread.reset(); ++ m_Tcpthread->join(); ++ m_Tcpthread.reset(); + } +- mIsReconnecting = false; +- mIsConnected = false; +- mWriteQ.clear(); +- mIsTerminating = false; ++ m_bIsReconnecting = false; ++ m_bIsConnected = false; ++ m_WriteQ.clear(); ++ m_bIsTerminating = false; + } + + void ASyncTCP::disconnect(const bool silent) + { +- mReconnectTimer.cancel(); +- mTimeoutTimer.cancel(); +- if (!mTcpthread) return; ++ m_ReconnectTimer.cancel(); ++ m_TimeoutTimer.cancel(); ++ if (!m_Tcpthread) return; + + try + { +- mIos.post([this] { do_close(); }); ++ boost::asio::post(m_io_context, ++ [this] { ++ do_close(); ++ } ++ ); + } + catch (...) + { +@@ -223,62 +251,68 @@ void ASyncTCP::disconnect(const bool silent) + + void ASyncTCP::do_close() + { +- if (mIsReconnecting) { ++ if (m_bIsReconnecting) { + return; + } +- mReconnectTimer.cancel(); +- mTimeoutTimer.cancel(); ++ m_ReconnectTimer.cancel(); ++ m_TimeoutTimer.cancel(); + boost::system::error_code ec; + #ifdef WWW_ENABLE_SSL +- if (mSecure) ++ if (m_bSecure) + { +- if (mSslSocket->lowest_layer().is_open()) ++ if (m_SslSocket->lowest_layer().is_open()) + { +- mSslSocket->lowest_layer().shutdown(boost::asio::ip::tcp::socket::shutdown_both, ec); +- mSslSocket->lowest_layer().close(ec); ++ m_SslSocket->lowest_layer().shutdown(boost::asio::ip::tcp::socket::shutdown_both, ec); ++ m_SslSocket->lowest_layer().close(ec); + } + } + else + #endif + { +- if (mSocket.is_open()) ++ if (m_Socket.is_open()) + { +- mSocket.close(ec); ++ m_Socket.close(ec); + } + } + } + + void ASyncTCP::do_read_start() + { +- if (mIsTerminating) return; +- if (!mIsConnected) return; ++ if (m_bIsTerminating) return; ++ if (!m_bIsConnected) return; + + timeout_start_timer(); + #ifdef WWW_ENABLE_SSL +- if (mSecure) ++ if (m_bSecure) + { +- mSslSocket->async_read_some(boost::asio::buffer(m_pRXBuffer, MAX_TCP_BUFFER_SIZE), [this](auto &&err, auto bytes) { cb_read_done(err, bytes); }); ++ m_SslSocket->async_read_some(boost::asio::buffer(m_pRXBuffer, MAX_TCP_BUFFER_SIZE), ++ [this](const boost::system::error_code& error, size_t bytes_transferred) { ++ cb_read_done(error, bytes_transferred); ++ } ++ ); + } + else + #endif + { +- mSocket.async_read_some(boost::asio::buffer(m_pRXBuffer, MAX_TCP_BUFFER_SIZE), [this](auto &&err, auto bytes) { cb_read_done(err, bytes); }); ++ m_Socket.async_read_some(boost::asio::buffer(m_pRXBuffer, MAX_TCP_BUFFER_SIZE), ++ [this](const boost::system::error_code& error, size_t bytes_transferred) { ++ cb_read_done(error, bytes_transferred); ++ } ++ ); + } + } + + void ASyncTCP::cb_read_done(const boost::system::error_code& error, size_t bytes_transferred) + { +- if (mIsTerminating) return; ++ if (m_bIsTerminating) return; + +- if (STATUS_OK(error)) +- { +- OnData(m_pRXBuffer, bytes_transferred); +- do_read_start(); +- } +- else ++ if (STATUS_ERR(error)) + { + process_error(error); ++ return; + } ++ OnData(m_pRXBuffer, bytes_transferred); ++ do_read_start(); + } + + void ASyncTCP::write(const uint8_t* pData, size_t length) +@@ -288,77 +322,66 @@ void ASyncTCP::write(const uint8_t* pData, size_t length) + + void ASyncTCP::write(const std::string& msg) + { +- if (!mTcpthread) return; ++ if (!m_Tcpthread) return; + +- mSendStrand.post([this, msg]() { cb_write_queue(msg); }); ++ boost::asio::post(m_SendStrand, [this, msg]() { cb_write_queue(msg); }); + } + + void ASyncTCP::cb_write_queue(const std::string& msg) + { +- mWriteQ.push_back(msg); ++ m_WriteQ.push_back(msg); + +- if (mWriteQ.size() == 1) ++ if (m_WriteQ.size() == 1) + do_write_start(); + } + + void ASyncTCP::do_write_start() + { +- if (mIsTerminating) return; +- if (!mIsConnected) return; +- if (mWriteQ.empty()) ++ if (m_bIsTerminating) return; ++ if (!m_bIsConnected) return; ++ if (m_WriteQ.empty()) + return; + + timeout_start_timer(); + #ifdef WWW_ENABLE_SSL +- if (mSecure) ++ if (m_bSecure) + { +- boost::asio::async_write(*mSslSocket, boost::asio::buffer(mWriteQ.front()), [this](auto &&err, auto) { cb_write_done(err); }); ++ boost::asio::async_write(*m_SslSocket, boost::asio::buffer(m_WriteQ.front()), ++ [this](const boost::system::error_code& error, std::size_t length) { ++ cb_write_done(error, length); ++ } ++ ); + } + else + #endif + { +- boost::asio::async_write(mSocket, boost::asio::buffer(mWriteQ.front()), [this](auto &&err, auto) { cb_write_done(err); }); ++ boost::asio::async_write(m_Socket, boost::asio::buffer(m_WriteQ.front()), ++ [this](const boost::system::error_code& error, std::size_t length) { ++ cb_write_done(error, length); ++ } ++ ); + } + } + +-void ASyncTCP::cb_write_done(const boost::system::error_code& error) ++void ASyncTCP::cb_write_done(const boost::system::error_code& error, std::size_t /*length*/) + { +- if (mIsTerminating) return; ++ if (m_bIsTerminating) return; + +- if (STATUS_OK(error)) +- { +- mWriteQ.pop_front(); +- do_write_start(); +- } +- else ++ if (STATUS_ERR(error)) + { + process_error(error); ++ return; + } +-} +- +-void ASyncTCP::process_connection() +-{ +- mIsConnected = true; +-#ifdef WWW_ENABLE_SSL +- +- if (!mSecure) +-#endif +- { +- // RK: only if non-secure +- boost::asio::socket_base::keep_alive option(true); +- mSocket.set_option(option); +- } +- OnConnect(); +- do_read_start(); ++ m_WriteQ.pop_front(); + do_write_start(); + } + + void ASyncTCP::process_error(const boost::system::error_code& error) + { + do_close(); +- if (mIsConnected) ++ if (m_bIsConnected) + { +- mIsConnected = false; ++ m_bIsConnected = false; + OnDisconnect(); + } + +@@ -369,20 +392,23 @@ void ASyncTCP::process_error(const boost::system::error_code& error) + reconnect_start_timer(); + } + +-/* timeout methods */ + void ASyncTCP::timeout_start_timer() + { +- if (0 == mTimeoutDelay) { ++ if (0 == m_iTimeoutDelay) { + return; + } + timeout_cancel_timer(); +- mTimeoutTimer.expires_from_now(boost::posix_time::seconds(mTimeoutDelay)); +- mTimeoutTimer.async_wait([this](auto &&err) { timeout_handler(err); }); ++ m_TimeoutTimer.expires_from_now(boost::posix_time::seconds(m_iTimeoutDelay)); ++ m_TimeoutTimer.async_wait( ++ [this](const boost::system::error_code& error) { ++ timeout_handler(error); ++ } ++ ); + } + + void ASyncTCP::timeout_cancel_timer() + { +- mTimeoutTimer.cancel(); ++ m_TimeoutTimer.cancel(); + } + + void ASyncTCP::timeout_handler(const boost::system::error_code& error) +@@ -397,5 +423,5 @@ void ASyncTCP::timeout_handler(const boost::system::error_code& error) + + void ASyncTCP::SetTimeout(const uint32_t Timeout) + { +- mTimeoutDelay = Timeout; ++ m_iTimeoutDelay = Timeout; + } +diff --git hardware/ASyncTCP.h hardware/ASyncTCP.h +index cf859bb..a8b3ae2 100644 +--- hardware/ASyncTCP.h ++++ hardware/ASyncTCP.h +@@ -3,39 +3,31 @@ + #include <stddef.h> // for size_t + #include <deque> // for write queue + #include <boost/asio/deadline_timer.hpp> // for deadline_timer +-#include <boost/asio/io_service.hpp> // for io_service ++#include <boost/asio/io_context.hpp> // for io_context + #include <boost/asio/strand.hpp> // for strand + #include <boost/asio/ip/tcp.hpp> // for tcp, tcp::endpoint, tcp::s... + #include <boost/asio/ssl.hpp> // for secure sockets + #include <boost/asio/ssl/stream.hpp> // for secure sockets + #include <exception> // for exception ++#include <optional> // for optional + + #define ASYNCTCP_THREAD_NAME "ASyncTCP" + #define DEFAULT_RECONNECT_TIME 30 + #define DEFAULT_TIMEOUT_TIME 60 + +-namespace boost +-{ +- namespace system +- { +- class error_code; +- } // namespace system +-} // namespace boost +- + class ASyncTCP + { +- protected: ++protected: + ASyncTCP(bool secure = false); + virtual ~ASyncTCP(); +- +- void connect(const std::string &hostname, uint16_t port); ++ void connect(const std::string& hostname, uint16_t port); + void disconnect(bool silent = true); +- void write(const std::string &msg); +- void write(const uint8_t *pData, size_t length); +- void SetReconnectDelay(int32_t Delay = DEFAULT_RECONNECT_TIME); ++ void write(const std::string& msg); ++ void write(const uint8_t* pData, size_t length); ++ void SetReconnectDelay(const int32_t Delay = DEFAULT_RECONNECT_TIME); + bool isConnected() + { +- return mIsConnected; ++ return m_bIsConnected; + }; + void terminate(bool silent = true); + void SetTimeout(uint32_t Timeout = DEFAULT_TIMEOUT_TIME); +@@ -43,65 +35,61 @@ class ASyncTCP + // Callback interface to implement in derived classes + virtual void OnConnect() = 0; + virtual void OnDisconnect() = 0; +- virtual void OnData(const uint8_t *pData, size_t length) = 0; +- virtual void OnError(const boost::system::error_code &error) = 0; +- +- boost::asio::io_service mIos; // protected to allow derived classes to attach timers etc. ++ virtual void OnData(const uint8_t* pData, size_t length) = 0; ++ virtual void OnError(const boost::system::error_code& error) = 0; + +- private: +- void cb_resolve_done(const boost::system::error_code &err, boost::asio::ip::tcp::resolver::iterator endpoint_iterator); +- void connect_start(boost::asio::ip::tcp::resolver::iterator &endpoint_iterator); +- void cb_connect_done(const boost::system::error_code &error, boost::asio::ip::tcp::resolver::iterator &endpoint_iterator); ++ boost::asio::io_context m_io_context; // protected to allow derived classes to attach timers etc. ++private: ++ void handle_resolve(const boost::system::error_code& ec, const boost::asio::ip::tcp::resolver::results_type &results); ++ void handle_connect(const boost::system::error_code& error, const boost::asio::ip::tcp::endpoint& endpoint); + #ifdef WWW_ENABLE_SSL +- void cb_handshake_done(const boost::system::error_code &error); ++ void cb_handshake_done(const boost::system::error_code& error); + #endif + +- /* timeout methods */ + void timeout_start_timer(); + void timeout_cancel_timer(); + void reconnect_start_timer(); +- void timeout_handler(const boost::system::error_code &error); ++ void timeout_handler(const boost::system::error_code& error); + +- void cb_reconnect_start(const boost::system::error_code &error); ++ void cb_reconnect_start(const boost::system::error_code& error); + + void do_close(); + + void do_read_start(); +- void cb_read_done(const boost::system::error_code &error, size_t bytes_transferred); ++ void cb_read_done(const boost::system::error_code& error, size_t bytes_transferred); + +- void cb_write_queue(const std::string &msg); ++ void cb_write_queue(const std::string& msg); + void do_write_start(); +- void cb_write_done(const boost::system::error_code &error); ++ void cb_write_done(const boost::system::error_code& error, size_t length); + + void process_connection(); +- void process_error(const boost::system::error_code &error); ++ void process_error(const boost::system::error_code& error); + +- bool mIsConnected = false; +- bool mIsReconnecting = false; +- bool mIsTerminating = false; ++ bool m_bIsConnected = false; ++ bool m_bIsReconnecting = false; ++ bool m_bIsTerminating = false; + +- boost::asio::io_service::strand mSendStrand{ mIos }; +- std::deque<std::string> mWriteQ; // we need a write queue to allow concurrent writes ++ boost::asio::io_context::strand m_SendStrand; ++ std::deque<std::string> m_WriteQ; // we need a write queue to allow concurrent writes + + uint8_t* m_pRXBuffer = nullptr; + +- int mReconnectDelay = DEFAULT_RECONNECT_TIME; +- int mTimeoutDelay = 0; +- boost::asio::deadline_timer mReconnectTimer{ mIos }; +- boost::asio::deadline_timer mTimeoutTimer{ mIos }; ++ int m_iReconnectDelay = DEFAULT_RECONNECT_TIME; ++ int m_iTimeoutDelay = 0; ++ boost::asio::deadline_timer m_ReconnectTimer; ++ boost::asio::deadline_timer m_TimeoutTimer; + +- std::shared_ptr<std::thread> mTcpthread; +- std::shared_ptr<boost::asio::io_service::work> mTcpwork; ++ std::shared_ptr<std::thread> m_Tcpthread; ++ std::optional<boost::asio::executor_work_guard<boost::asio::io_context::executor_type>> m_Tcpwork; + + #ifdef WWW_ENABLE_SSL +- const bool mSecure; ++ const bool m_bSecure; + boost::asio::ssl::context mContext{ boost::asio::ssl::context::sslv23 }; +- std::shared_ptr<boost::asio::ssl::stream<boost::asio::ip::tcp::socket>> mSslSocket; // the ssl socket ++ std::shared_ptr<boost::asio::ssl::stream<boost::asio::ip::tcp::socket>> m_SslSocket; + #endif +- boost::asio::ip::tcp::socket mSocket{ mIos }; +- boost::asio::ip::tcp::endpoint mEndPoint; +- boost::asio::ip::tcp::resolver mResolver{ mIos }; ++ boost::asio::ip::tcp::socket m_Socket; ++ boost::asio::ip::tcp::resolver m_Resolver; + +- std::string mIp; +- uint16_t mPort; ++ std::string m_IP; ++ uint16_t m_Port; + }; +diff --git hardware/Arilux.cpp hardware/Arilux.cpp +index 400f5a3..20bc373 100644 +--- hardware/Arilux.cpp ++++ hardware/Arilux.cpp +@@ -79,7 +79,7 @@ void Arilux::InsertUpdateSwitch(const std::string &lightName, const int subType, + { + uint32_t sID; + try { +- sID = boost::asio::ip::address_v4::from_string(location).to_ulong(); ++ sID = boost::asio::ip::make_address_v4(location).to_uint(); + } catch (const std::exception &e) { + Log(LOG_ERROR, "Bad IP address: %s (%s)", location.c_str(), e.what()); + return; +@@ -112,8 +112,8 @@ bool Arilux::SendTCPCommand(uint32_t ip,std::vector<unsigned char> &command) + sum = sum & 0xFF; + command.push_back((unsigned char)sum); + +- boost::asio::io_service io_service; +- boost::asio::ip::tcp::socket sendSocket(io_service); ++ boost::asio::io_context io_context; ++ boost::asio::ip::tcp::socket sendSocket(io_context); + boost::asio::ip::address_v4 address(ip); + boost::asio::ip::tcp::endpoint endpoint(address, 5577); + try +diff --git hardware/Kodi.cpp hardware/Kodi.cpp +index b528017..5ababf6 100644 +--- hardware/Kodi.cpp ++++ hardware/Kodi.cpp +@@ -143,14 +143,14 @@ _eNotificationTypes CKodiNode::CKodiStatus::NotificationType() + } + } + +-CKodiNode::CKodiNode(boost::asio::io_service *pIos, const int pHwdID, const int PollIntervalsec, const int pTimeoutMs, ++CKodiNode::CKodiNode(boost::asio::io_context *pIoc, const int pHwdID, const int PollIntervalsec, const int pTimeoutMs, + const std::string& pID, const std::string& pName, const std::string& pIP, const std::string& pPort) + { + m_Busy = false; + m_Stoppable = false; + m_PlaylistPosition = 0; + +- m_Ios = pIos; ++ m_Ioc = pIoc; + m_HwdID = pHwdID; + m_DevID = atoi(pID.c_str()); + sprintf(m_szDevID, "%X%02X%02X%02X", 0, 0, (m_DevID & 0xFF00) >> 8, m_DevID & 0xFF); +@@ -581,11 +581,10 @@ void CKodiNode::handleConnect() + { + m_iMissedPongs = 0; + boost::system::error_code ec; +- boost::asio::ip::tcp::resolver resolver(*m_Ios); +- boost::asio::ip::tcp::resolver::query query(m_IP, (m_Port[0] != '-' ? m_Port : m_Port.substr(1))); +- auto iter = resolver.resolve(query); +- boost::asio::ip::tcp::endpoint endpoint = *iter; +- m_Socket = new boost::asio::ip::tcp::socket(*m_Ios); ++ boost::asio::ip::tcp::resolver resolver(*m_Ioc); ++ auto iter = resolver.resolve(m_IP, (m_Port[0] != '-' ? m_Port : m_Port.substr(1))); ++ boost::asio::ip::tcp::endpoint endpoint = *iter.begin(); ++ m_Socket = new boost::asio::ip::tcp::socket(*m_Ioc); + m_Socket->connect(endpoint, ec); + if (!ec) + { +@@ -975,19 +974,19 @@ void CKodi::Do_Work() + _log.Log(LOG_NORM, "Kodi: (%s) - Restarting thread.", node->m_Name.c_str()); + boost::thread *tAsync = new boost::thread(&CKodiNode::Do_Work, node); + SetThreadName(tAsync->native_handle(), "KodiNode"); +- m_ios.stop(); ++ m_ioc.stop(); + } + if (node->IsOn()) + bWorkToDo = true; + } + +- if (bWorkToDo && m_ios.stopped()) // make sure that there is a boost thread to service i/o operations ++ if (bWorkToDo && m_ioc.stopped()) // make sure that there is a boost thread to service i/o operations + { +- m_ios.reset(); ++ m_ioc.restart(); + // Note that this is the only thread that handles async i/o so we don't + // need to worry about locking or concurrency issues when processing messages + _log.Log(LOG_NORM, "Kodi: Restarting I/O service thread."); +- boost::thread bt([p = &m_ios] { p->run(); }); ++ boost::thread bt([p = &m_ioc] { p->run(); }); + SetThreadName(bt.native_handle(), "KodiIO"); + } + } +@@ -1138,7 +1137,7 @@ void CKodi::ReloadNodes() + { + UnloadNodes(); + +- m_ios.reset(); // in case this is not the first time in ++ m_ioc.restart(); // in case this is not the first time in + + std::vector<std::vector<std::string> > result; + result = m_sql.safe_query("SELECT ID,Name,MacAddress,Timeout FROM WOLNodes WHERE (HardwareID==%d)", m_HwdID); +@@ -1149,7 +1148,7 @@ void CKodi::ReloadNodes() + // create a vector to hold the nodes + for (const auto &sd : result) + { +- auto pNode = std::make_shared<CKodiNode>(&m_ios, m_HwdID, m_iPollInterval, m_iPingTimeoutms, sd[0], sd[1], sd[2], sd[3]); ++ auto pNode = std::make_shared<CKodiNode>(&m_ioc, m_HwdID, m_iPollInterval, m_iPingTimeoutms, sd[0], sd[1], sd[2], sd[3]); + m_pNodes.push_back(pNode); + } + // start the threads to control each kodi +@@ -1161,7 +1160,7 @@ void CKodi::ReloadNodes() + } + sleep_milliseconds(100); + _log.Log(LOG_NORM, "Kodi: Starting I/O service thread."); +- boost::thread bt([p = &m_ios] { p->run(); }); ++ boost::thread bt([p = &m_ioc] { p->run(); }); + SetThreadName(bt.native_handle(), "KodiIO"); + } + } +@@ -1170,10 +1169,10 @@ void CKodi::UnloadNodes() + { + std::lock_guard<std::mutex> l(m_mutex); + +- m_ios.stop(); // stop the service if it is running ++ m_ioc.stop(); // stop the service if it is running + sleep_milliseconds(100); + +- while (((!m_pNodes.empty()) || (!m_ios.stopped()))) ++ while (((!m_pNodes.empty()) || (!m_ioc.stopped()))) + { + for (auto itt = m_pNodes.begin(); itt != m_pNodes.end(); ++itt) + { +diff --git hardware/Kodi.h hardware/Kodi.h +index 14f331c..4435740 100644 +--- hardware/Kodi.h ++++ hardware/Kodi.h +@@ -150,7 +150,7 @@ class CKodiNode : public std::enable_shared_from_this<CKodiNode>, StoppableTask + }; + + public: +- CKodiNode(boost::asio::io_service *, int, int, int, const std::string &, const std::string &, const std::string &, const std::string &); ++ CKodiNode(boost::asio::io_context *, int, int, int, const std::string &, const std::string &, const std::string &, const std::string &); + ~CKodiNode(); + void Do_Work(); + void SendCommand(const std::string &); +@@ -207,7 +207,7 @@ class CKodiNode : public std::enable_shared_from_this<CKodiNode>, StoppableTask + int m_iPollIntSec; + int m_iMissedPongs; + std::string m_sLastMessage; +- boost::asio::io_service *m_Ios; ++ boost::asio::io_context *m_Ioc; + boost::asio::ip::tcp::socket *m_Socket; + std::array<char, 256> m_Buffer; + }; +@@ -243,5 +243,5 @@ class CKodi : public CDomoticzHardwareBase + int m_iPingTimeoutms; + std::shared_ptr<std::thread> m_thread; + std::mutex m_mutex; +- boost::asio::io_service m_ios; ++ boost::asio::io_context m_ioc; + }; +diff --git hardware/MQTTAutoDiscover.h hardware/MQTTAutoDiscover.h +index 0832664..1501d6f 100644 +--- hardware/MQTTAutoDiscover.h ++++ hardware/MQTTAutoDiscover.h +@@ -176,7 +176,7 @@ public: + void on_message(const struct mosquitto_message *message) override; + void on_connect(int rc) override; + void on_disconnect(int rc) override; +- void on_going_down(); ++ void on_going_down() override; + private: + void InsertUpdateSwitch(_tMQTTASensor* pSensor); + +diff --git hardware/PanasonicTV.cpp hardware/PanasonicTV.cpp +index fc57d34..ce20565 100644 +--- hardware/PanasonicTV.cpp ++++ hardware/PanasonicTV.cpp +@@ -356,18 +356,17 @@ std::string CPanasonicNode::handleWriteAndRead(const std::string& pMessageToSend + { + + _log.Debug(DEBUG_HARDWARE, "Panasonic Plugin: (%s) Handling message: '%s'.", m_Name.c_str(), pMessageToSend.c_str()); +- boost::asio::io_service io_service; ++ boost::asio::io_context io_context; + // Get a list of endpoints corresponding to the server name. +- boost::asio::ip::tcp::resolver resolver(io_service); +- boost::asio::ip::tcp::resolver::query query(m_IP, (m_Port[0] != '-' ? m_Port : m_Port.substr(1))); +- auto iter = resolver.resolve(query); ++ boost::asio::ip::tcp::resolver resolver(io_context); ++ auto endpoints = resolver.resolve(m_IP, (m_Port[0] != '-' ? m_Port : m_Port.substr(1))); ++ auto iter = endpoints.begin(); + boost::asio::ip::tcp::endpoint endpoint = *iter; +- boost::asio::ip::tcp::resolver::iterator end; + + // Try each endpoint until we successfully establish a connection. +- boost::asio::ip::tcp::socket socket(io_service); ++ boost::asio::ip::tcp::socket socket(io_context); + boost::system::error_code error = boost::asio::error::host_not_found; +- while (error && iter != end) ++ while (error && iter != endpoints.end()) + { + socket.close(); + if (handleConnect(socket, *iter, error)) +@@ -1060,7 +1059,7 @@ void CPanasonic::ReloadNodes() + { + UnloadNodes(); + +- //m_ios.reset(); // in case this is not the first time in ++ //m_ioc.reset(); // in case this is not the first time in + + std::vector<std::vector<std::string> > result; + result = m_sql.safe_query("SELECT ID,Name,MacAddress,Timeout FROM WOLNodes WHERE (HardwareID==%d)", m_HwdID); +@@ -1088,10 +1087,10 @@ void CPanasonic::UnloadNodes() + { + std::lock_guard<std::mutex> l(m_mutex); + +- m_ios.stop(); // stop the service if it is running ++ m_ioc.stop(); // stop the service if it is running + sleep_milliseconds(100); + +- while (((!m_pNodes.empty()) || (!m_ios.stopped()))) ++ while (((!m_pNodes.empty()) || (!m_ioc.stopped()))) + { + for (auto itt = m_pNodes.begin(); itt != m_pNodes.end(); ++itt) + { +diff --git hardware/PanasonicTV.h hardware/PanasonicTV.h +index b0a94ff..30e1ca1 100644 +--- hardware/PanasonicTV.h ++++ hardware/PanasonicTV.h +@@ -39,7 +39,7 @@ class CPanasonic : public CDomoticzHardwareBase + bool m_bTryIfOff; + std::shared_ptr<std::thread> m_thread; + std::mutex m_mutex; +- boost::asio::io_service m_ios; ++ boost::asio::io_context m_ioc; + + friend class CPanasonicNode; + }; +diff --git hardware/Pinger.cpp hardware/Pinger.cpp +index a66c7a1..e070b29 100644 +--- hardware/Pinger.cpp ++++ hardware/Pinger.cpp +@@ -21,23 +21,23 @@ + #if BOOST_VERSION >= 107000 + #define GET_IO_SERVICE(s) ((boost::asio::io_context&)(s).get_executor().context()) + #else +-#define GET_IO_SERVICE(s) ((s).get_io_service()) ++#define GET_IO_SERVICE(s) ((s).get_io_context()) + #endif + + class pinger + : private domoticz::noncopyable + { + public: +- pinger(boost::asio::io_service &io_service, const char *destination, const int iPingTimeoutms) ++ pinger(boost::asio::io_context &io_context, const char *destination, const int iPingTimeoutms) + : num_replies_(0) + , m_PingState(false) +- , resolver_(io_service) +- , socket_(io_service, boost::asio::ip::icmp::v4()) +- , timer_(io_service) ++ , resolver_(io_context) ++ , socket_(io_context, boost::asio::ip::icmp::v4()) ++ , timer_(io_context) + , sequence_number_(0) + { +- boost::asio::ip::icmp::resolver::query query(boost::asio::ip::icmp::v4(), destination, ""); +- destination_ = *resolver_.resolve(query); ++ auto endpoints = resolver_.resolve(boost::asio::ip::icmp::v4(), destination, ""); ++ destination_ = endpoints.begin()->endpoint(); + + num_tries_ = 1; + PingTimeoutms_ = iPingTimeoutms; +@@ -332,11 +332,11 @@ void CPinger::ReloadNodes() + void CPinger::Do_Ping_Worker(const PingNode &Node) + { + bool bPingOK = false; +- boost::asio::io_service io_service; ++ boost::asio::io_context io_context; + try + { +- pinger p(io_service, Node.IP.c_str(), m_iPingTimeoutms); +- io_service.run(); ++ pinger p(io_context, Node.IP.c_str(), m_iPingTimeoutms); ++ io_context.run(); + if (p.m_PingState == true) + { + bPingOK = true; +diff --git hardware/RFLinkMQTT.h hardware/RFLinkMQTT.h +index e938328..72433b8 100644 +--- hardware/RFLinkMQTT.h ++++ hardware/RFLinkMQTT.h +@@ -46,7 +46,7 @@ protected: + boost::signals2::connection m_sDeviceReceivedConnection; + boost::signals2::connection m_sSwitchSceneConnection; + void selectNextIPAdress( void ); +- virtual bool WriteInt(const std::string &sendString); // override; ++ bool WriteInt(const std::string &sendString) override; + void Do_Work(); + virtual void SendHeartbeat(); + void StopMQTT(); +diff --git hardware/TCPProxy/tcpproxy_server.cpp hardware/TCPProxy/tcpproxy_server.cpp +index 8aceb0b..d77d4bf 100644 +--- hardware/TCPProxy/tcpproxy_server.cpp ++++ hardware/TCPProxy/tcpproxy_server.cpp +@@ -18,12 +18,12 @@ + #if BOOST_VERSION >= 107000 + #define GET_IO_SERVICE(s) ((boost::asio::io_context&)(s).get_executor().context()) + #else +-#define GET_IO_SERVICE(s) ((s).get_io_service()) ++#define GET_IO_SERVICE(s) ((s).get_io_context()) + #endif + + namespace tcp_proxy + { +- bridge::bridge(boost::asio::io_service& ios) ++ bridge::bridge(boost::asio::io_context& ios) + : downstream_socket_(ios), + upstream_socket_(ios) + { +@@ -44,7 +44,7 @@ namespace tcp_proxy + boost::asio::ip::tcp::endpoint end; + + +- boost::asio::io_service &ios= GET_IO_SERVICE(downstream_socket_); ++ boost::asio::io_context &ios= GET_IO_SERVICE(downstream_socket_); + boost::asio::ip::tcp::resolver resolver(ios); + boost::asio::ip::tcp::resolver::query query(upstream_host, upstream_port, boost::asio::ip::resolver_query_base::numeric_service); + auto i = resolver.resolve(query); +@@ -137,10 +137,10 @@ namespace tcp_proxy + } + //Acceptor Class + acceptor::acceptor(const std::string &local_host, unsigned short local_port, const std::string &upstream_host, const std::string &upstream_port) +- : io_service_() ++ : io_context_() + , m_bDoStop(false) + , localhost_address(boost::asio::ip::address_v4::from_string(local_host)) +- , acceptor_(io_service_, boost::asio::ip::tcp::endpoint(localhost_address, local_port)) ++ , acceptor_(io_context_, boost::asio::ip::tcp::endpoint(localhost_address, local_port)) + , upstream_host_(upstream_host) + , upstream_port_(upstream_port) + { +@@ -151,7 +151,7 @@ namespace tcp_proxy + { + try + { +- session_ = std::make_shared<bridge>(io_service_); ++ session_ = std::make_shared<bridge>(io_context_); + session_->sDownstreamData.connect([this](auto d, auto l) { OnDownstreamData(d, l); }); + session_->sUpstreamData.connect([this](auto d, auto l) { OnUpstreamData(d, l); }); + +@@ -169,11 +169,11 @@ namespace tcp_proxy + m_bDoStop=false; + + accept_connections(); +- // The io_service::run() call will block until all asynchronous operations ++ // The io_context::run() call will block until all asynchronous operations + // have finished. While the server is running, there is always at least one + // asynchronous operation outstanding: the asynchronous accept call waiting + // for new incoming connections. +- io_service_.run(); ++ io_context_.run(); + return true; + } + bool acceptor::stop() +@@ -181,14 +181,14 @@ namespace tcp_proxy + m_bDoStop=true; + // Post a call to the stop function so that server::stop() is safe to call + // from any thread. +- io_service_.post([this] { handle_stop(); }); ++ io_context_.post([this] { handle_stop(); }); + return true; + } + + void acceptor::handle_stop() + { + // The server is stopped by canceling all outstanding asynchronous +- // operations. Once all operations have finished the io_service::run() call ++ // operations. Once all operations have finished the io_context::run() call + // will exit. + acceptor_.close(); + //connection_manager_.stop_all(); +diff --git hardware/TCPProxy/tcpproxy_server.h hardware/TCPProxy/tcpproxy_server.h +index 3d1a150..148e65f 100644 +--- hardware/TCPProxy/tcpproxy_server.h ++++ hardware/TCPProxy/tcpproxy_server.h +@@ -10,7 +10,7 @@ namespace tcp_proxy + class bridge : public std::enable_shared_from_this<bridge> + { + public: +- explicit bridge(boost::asio::io_service& ios); ++ explicit bridge(boost::asio::io_context& ios); + boost::asio::ip::tcp::socket& downstream_socket(); + boost::asio::ip::tcp::socket& upstream_socket(); + +@@ -52,8 +52,8 @@ namespace tcp_proxy + void OnUpstreamData(const unsigned char *pData, size_t Len); + void OnDownstreamData(const unsigned char *pData, size_t Len); + +- /// The io_service used to perform asynchronous operations. +- boost::asio::io_service io_service_; ++ /// The io_context used to perform asynchronous operations. ++ boost::asio::io_context io_context_; + bool m_bDoStop; + boost::asio::ip::address_v4 localhost_address; + boost::asio::ip::tcp::acceptor acceptor_; +diff --git hardware/XiaomiDeviceSupport.h hardware/XiaomiDeviceSupport.h +index fad7884..4a76d96 100644 +--- hardware/XiaomiDeviceSupport.h ++++ hardware/XiaomiDeviceSupport.h +@@ -15,6 +15,7 @@ + class XiaomiDeviceSupport + { + public: ++ virtual ~XiaomiDeviceSupport() = default; + /** + * Method to get 'model' corresponding to the ID of the device in case the Gateway API didn't provide it. + * +diff --git hardware/XiaomiGateway.cpp hardware/XiaomiGateway.cpp +index 66acdc5..fb4387a 100644 +--- hardware/XiaomiGateway.cpp ++++ hardware/XiaomiGateway.cpp +@@ -538,12 +538,12 @@ bool XiaomiGateway::SendMessageToGateway(const std::string &controlmessage) + { + std::string message = controlmessage; + bool result = true; +- boost::asio::io_service io_service; +- boost::asio::ip::udp::socket socket_(io_service, boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), 0)); ++ boost::asio::io_context io_context; ++ boost::asio::ip::udp::socket socket_(io_context, boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), 0)); + stdreplace(message, "@gatewaykey", GetGatewayKey()); + std::shared_ptr<std::string> message1(new std::string(message)); + boost::asio::ip::udp::endpoint remote_endpoint_; +- remote_endpoint_ = boost::asio::ip::udp::endpoint(boost::asio::ip::address::from_string(m_GatewayIp), 9898); ++ remote_endpoint_ = boost::asio::ip::udp::endpoint(boost::asio::ip::make_address_v4(m_GatewayIp), 9898); + socket_.send_to(boost::asio::buffer(*message1), remote_endpoint_); + sleep_milliseconds(150); // TODO: reduce or remove sleep + std::array<char, 512> recv_buffer_; +@@ -1015,15 +1015,14 @@ bool XiaomiGateway::StopHardware() + void XiaomiGateway::Do_Work() + { + Log(LOG_STATUS, "XiaomiGateway (ID=%d): Worker started...", m_HwdID); +- boost::asio::io_service io_service; ++ boost::asio::io_context io_context; + // Find the local ip address that is similar to the xiaomi gateway + try + { +- boost::asio::ip::udp::resolver resolver(io_service); +- boost::asio::ip::udp::resolver::query query(boost::asio::ip::udp::v4(), m_GatewayIp, ""); +- auto endpoints = resolver.resolve(query); +- boost::asio::ip::udp::endpoint ep = *endpoints; +- boost::asio::ip::udp::socket socket(io_service); ++ boost::asio::ip::udp::resolver resolver(io_context); ++ auto endpoints = resolver.resolve(boost::asio::ip::udp::v4(), m_GatewayIp, ""); ++ boost::asio::ip::udp::endpoint ep = *endpoints.begin(); ++ boost::asio::ip::udp::socket socket(io_context); + socket.connect(ep); + boost::asio::ip::address addr = socket.local_endpoint().address(); + std::string compareIp = m_GatewayIp.substr(0, (m_GatewayIp.length() - 3)); +@@ -1073,11 +1072,11 @@ void XiaomiGateway::Do_Work() + } + } + +- XiaomiGateway::xiaomi_udp_server udp_server(io_service, m_HwdID, m_GatewayIp, m_LocalIp, m_ListenPort9898, m_OutputMessage, m_IncludeVoltage, this); ++ XiaomiGateway::xiaomi_udp_server udp_server(io_context, m_HwdID, m_GatewayIp, m_LocalIp, m_ListenPort9898, m_OutputMessage, m_IncludeVoltage, this); + boost::thread bt; + if (m_ListenPort9898) + { +- bt = boost::thread([p = &io_service] { p->run(); }); ++ bt = boost::thread([p = &io_context] { p->run(); }); + SetThreadName(bt.native_handle(), "XiaomiGatewayIO"); + } + +@@ -1094,7 +1093,7 @@ void XiaomiGateway::Do_Work() + // Log(LOG_STATUS, "sec_counter %d", sec_counter); + } + } +- io_service.stop(); ++ io_context.stop(); + if (bt.joinable()) + { + bt.join(); +@@ -1178,9 +1177,9 @@ unsigned int XiaomiGateway::GetShortID(const std::string &nodeid) + return sID; + } + +-XiaomiGateway::xiaomi_udp_server::xiaomi_udp_server(boost::asio::io_service &io_service, int m_HwdID, const std::string &gatewayIp, const std::string &localIp, const bool listenPort9898, ++XiaomiGateway::xiaomi_udp_server::xiaomi_udp_server(boost::asio::io_context &io_context, int m_HwdID, const std::string &gatewayIp, const std::string &localIp, const bool listenPort9898, + const bool outputMessage, const bool includeVoltage, XiaomiGateway *parent) +- : socket_(io_service, boost::asio::ip::udp::v4()) ++ : socket_(io_context, boost::asio::ip::udp::v4()) + { + m_HardwareID = m_HwdID; + m_XiaomiGateway = parent; +@@ -1196,8 +1195,8 @@ XiaomiGateway::xiaomi_udp_server::xiaomi_udp_server(boost::asio::io_service &io_ + if (!m_localip.empty()) + { + boost::system::error_code ec; +- boost::asio::ip::address listen_addr = boost::asio::ip::address::from_string(m_localip, ec); +- boost::asio::ip::address mcast_addr = boost::asio::ip::address::from_string("224.0.0.50", ec); ++ boost::asio::ip::address listen_addr = boost::asio::ip::make_address_v4(m_localip, ec); ++ boost::asio::ip::address mcast_addr = boost::asio::ip::make_address_v4("224.0.0.50", ec); + boost::asio::ip::udp::endpoint listen_endpoint(mcast_addr, 9898); + + socket_.bind(boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), 9898)); +@@ -1213,9 +1212,9 @@ XiaomiGateway::xiaomi_udp_server::xiaomi_udp_server(boost::asio::io_service &io_ + socket_.bind(boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), 9898)); + std::shared_ptr<std::string> message(new std::string(R"({"cmd":"whois"})")); + boost::asio::ip::udp::endpoint remote_endpoint; +- remote_endpoint = boost::asio::ip::udp::endpoint(boost::asio::ip::address::from_string("224.0.0.50"), 4321); ++ remote_endpoint = boost::asio::ip::udp::endpoint(boost::asio::ip::make_address_v4("224.0.0.50"), 4321); + socket_.send_to(boost::asio::buffer(*message), remote_endpoint); +- socket_.set_option(boost::asio::ip::multicast::join_group(boost::asio::ip::address::from_string("224.0.0.50"))); ++ socket_.set_option(boost::asio::ip::multicast::join_group(boost::asio::ip::make_address_v4("224.0.0.50"))); + } + } + catch (const boost::system::system_error &ex) +@@ -1720,7 +1719,7 @@ void XiaomiGateway::xiaomi_udp_server::handle_receive(const boost::system::error + message.append("\"}"); + std::shared_ptr<std::string> message1(new std::string(message)); + boost::asio::ip::udp::endpoint remote_endpoint; +- remote_endpoint = boost::asio::ip::udp::endpoint(boost::asio::ip::address::from_string(TrueGateway->GetGatewayIp().c_str()), 9898); ++ remote_endpoint = boost::asio::ip::udp::endpoint(boost::asio::ip::make_address_v4(TrueGateway->GetGatewayIp().c_str()), 9898); + socket_.send_to(boost::asio::buffer(*message1), remote_endpoint); + } + } +@@ -1746,7 +1745,7 @@ void XiaomiGateway::xiaomi_udp_server::handle_receive(const boost::system::error + std::string message = R"({"cmd" : "get_id_list"})"; + std::shared_ptr<std::string> message2(new std::string(message)); + boost::asio::ip::udp::endpoint remote_endpoint; +- remote_endpoint = boost::asio::ip::udp::endpoint(boost::asio::ip::address::from_string(TrueGateway->GetGatewayIp().c_str()), 9898); ++ remote_endpoint = boost::asio::ip::udp::endpoint(boost::asio::ip::make_address_v4(TrueGateway->GetGatewayIp().c_str()), 9898); + socket_.send_to(boost::asio::buffer(*message2), remote_endpoint); + } + } +diff --git hardware/XiaomiGateway.h hardware/XiaomiGateway.h +index dce4b34..1f552f3 100644 +--- hardware/XiaomiGateway.h ++++ hardware/XiaomiGateway.h +@@ -100,7 +100,7 @@ class XiaomiGateway : public CDomoticzHardwareBase + class xiaomi_udp_server + { + public: +- xiaomi_udp_server(boost::asio::io_service &io_service, int m_HwdID, const std::string &gatewayIp, const std::string &localIp, bool listenPort9898, bool outputMessage, ++ xiaomi_udp_server(boost::asio::io_context &io_context, int m_HwdID, const std::string &gatewayIp, const std::string &localIp, bool listenPort9898, bool outputMessage, + bool includeVolage, XiaomiGateway *parent); + ~xiaomi_udp_server() = default; + +diff --git hardware/Yeelight.cpp hardware/Yeelight.cpp +index cdb7889..e5fe8fc 100644 +--- hardware/Yeelight.cpp ++++ hardware/Yeelight.cpp +@@ -93,8 +93,8 @@ void Yeelight::Do_Work() + + try + { +- boost::asio::io_service io_service; +- udp_server server(io_service, m_HwdID); ++ boost::asio::io_context io_context; ++ udp_server server(io_context, m_HwdID); + int sec_counter = YEELIGHT_POLL_INTERVAL - 5; + while (!IsStopRequested(1000)) + { +@@ -105,7 +105,7 @@ void Yeelight::Do_Work() + if (sec_counter % 60 == 0) //poll YeeLights every minute + { + server.start_send(); +- io_service.run(); ++ io_context.run(); + } + } + } +@@ -227,12 +227,11 @@ bool Yeelight::WriteToHardware(const char *pdata, const unsigned char length) + + try + { +- boost::asio::io_service io_service; +- boost::asio::ip::tcp::socket sendSocket(io_service); +- boost::asio::ip::tcp::resolver resolver(io_service); +- boost::asio::ip::tcp::resolver::query query(boost::asio::ip::tcp::v4(), szTmp, "55443"); +- auto iterator = resolver.resolve(query); +- boost::asio::connect(sendSocket, iterator); ++ boost::asio::io_context io_context; ++ boost::asio::ip::tcp::socket sendSocket(io_context); ++ boost::asio::ip::tcp::resolver resolver(io_context); ++ auto endpoints = resolver.resolve(boost::asio::ip::tcp::v4(), szTmp, "55443"); ++ boost::asio::connect(sendSocket, endpoints); + + std::string message; + std::string message2; +@@ -404,8 +403,8 @@ bool Yeelight::WriteToHardware(const char *pdata, const unsigned char length) + std::array<char, 1024> recv_buffer_; + int hardwareId; + +-Yeelight::udp_server::udp_server(boost::asio::io_service& io_service, int m_HwdID) +- : socket_(io_service, boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), 0)) ++Yeelight::udp_server::udp_server(boost::asio::io_context& io_context, int m_HwdID) ++ : socket_(io_context, boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), 0)) + { + socket_.set_option(boost::asio::ip::udp::socket::reuse_address(true)); + socket_.set_option(boost::asio::socket_base::broadcast(true)); +@@ -421,7 +420,7 @@ void Yeelight::udp_server::start_send() + //Log(LOG_STATUS, "start_send.................."); + std::shared_ptr<std::string> message( + new std::string(testMessage)); +- remote_endpoint_ = boost::asio::ip::udp::endpoint(boost::asio::ip::address::from_string("239.255.255.250"), 1982); ++ remote_endpoint_ = boost::asio::ip::udp::endpoint(boost::asio::ip::make_address_v4("239.255.255.250"), 1982); + socket_.send_to(boost::asio::buffer(*message), remote_endpoint_); + sleep_milliseconds(150); + start_receive(); +diff --git hardware/Yeelight.h hardware/Yeelight.h +index fb03c28..3b7b4c3 100644 +--- hardware/Yeelight.h ++++ hardware/Yeelight.h +@@ -25,7 +25,7 @@ class Yeelight : public CDomoticzHardwareBase + class udp_server + { + public: +- udp_server(boost::asio::io_service &io_service, int m_HwdID); ++ udp_server(boost::asio::io_context &io_context, int m_HwdID); + boost::asio::ip::udp::socket socket_; + boost::asio::ip::udp::endpoint remote_endpoint_; + void start_send(); +diff --git hardware/plugins/PluginManager.cpp hardware/plugins/PluginManager.cpp +index 2813112..423edbb 100644 +--- hardware/plugins/PluginManager.cpp ++++ hardware/plugins/PluginManager.cpp +@@ -64,7 +64,7 @@ namespace Plugins { + // PyMODINIT_FUNC PyInit_DomoticzEvents(void); + + std::mutex PluginMutex; // controls accessto the message queue and m_pPlugins map +- boost::asio::io_service ios; ++ boost::asio::io_context ios; + + std::map<int, CDomoticzHardwareBase*> CPluginSystem::m_pPlugins; + std::map<std::string, std::string> CPluginSystem::m_PluginXml; +@@ -315,7 +315,7 @@ namespace Plugins { + // Create initial IO Service thread + ios.restart(); + // Create some work to keep IO Service alive +- auto work = boost::asio::io_service::work(ios); ++ auto work = boost::asio::make_work_guard(ios); + boost::thread_group BoostThreads; + for (int i = 0; i < 1; i++) + { +diff --git hardware/plugins/PluginTransports.cpp hardware/plugins/PluginTransports.cpp +index 52d14e7..f7ace0f 100644 +--- hardware/plugins/PluginTransports.cpp ++++ hardware/plugins/PluginTransports.cpp +@@ -116,15 +116,14 @@ namespace Plugins { + m_bConnected = false; + m_Socket = new boost::asio::ip::tcp::socket(ios); + +- boost::system::error_code ec; +- boost::asio::ip::tcp::resolver::query query(m_IP, m_Port); +- auto iter = m_Resolver.resolve(query); +- boost::asio::ip::tcp::endpoint endpoint = *iter; +- + // + // Async resolve/connect based on http://www.boost.org/doc/libs/1_45_0/doc/html/boost_asio/example/http/client/async_client.cpp + // +- m_Resolver.async_resolve(query, [this](auto &&err, auto end) { handleAsyncResolve(err, end); }); ++ m_Resolver.async_resolve(m_IP, m_Port, ++ [this](auto &&err, auto endpoints) { ++ handleAsyncResolve(err, endpoints); ++ } ++ ); + } + } + catch (std::exception& e) +@@ -139,15 +138,14 @@ namespace Plugins { + return true; + } + +- void CPluginTransportTCP::handleAsyncResolve(const boost::system::error_code & err, boost::asio::ip::tcp::resolver::iterator endpoint_iterator) ++ void CPluginTransportTCP::handleAsyncResolve(const boost::system::error_code & err, boost::asio::ip::tcp::resolver::results_type endpoints) + { + CPlugin* pPlugin = ((CConnection*)m_pConnection)->pPlugin; + AccessPython Guard(pPlugin, "CPluginTransportTCP::handleAsyncResolve"); + + if (!err) + { +- boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator; +- m_Socket->async_connect(endpoint, [this, endpoint_iterator](auto &&err) mutable { handleAsyncConnect(err, ++endpoint_iterator); }); ++ boost::asio::async_connect(*m_Socket, endpoints, [this](auto &&err, const boost::asio::ip::tcp::endpoint &endpoint) mutable { handleAsyncConnect(err, endpoint); }); + } + else + { +@@ -169,7 +167,7 @@ namespace Plugins { + } + } + +- void CPluginTransportTCP::handleAsyncConnect(const boost::system::error_code &err, const boost::asio::ip::tcp::resolver::iterator &endpoint_iterator) ++ void CPluginTransportTCP::handleAsyncConnect(const boost::system::error_code &err, const boost::asio::ip::tcp::endpoint &endpoint) + { + CPlugin* pPlugin = ((CConnection*)m_pConnection)->pPlugin; + AccessPython Guard(pPlugin, "CPluginTransportTCP::handleAsyncResolve"); +@@ -481,7 +479,7 @@ namespace Plugins { + } + }; + +- void CPluginTransportTCPSecure::handleAsyncConnect(const boost::system::error_code &err, const boost::asio::ip::tcp::resolver::iterator &endpoint_iterator) ++ void CPluginTransportTCPSecure::handleAsyncConnect(const boost::system::error_code &err, const boost::asio::ip::tcp::endpoint &endpoint) + { + CPlugin* pPlugin = ((CConnection*)m_pConnection)->pPlugin; + if (!pPlugin) return; +@@ -498,7 +496,7 @@ namespace Plugins { + SSL_set_tlsext_host_name(m_TLSSock->native_handle(), m_IP.c_str()); // Enable SNI + + m_TLSSock->set_verify_mode(boost::asio::ssl::verify_none); +- m_TLSSock->set_verify_callback(boost::asio::ssl::rfc2818_verification(m_IP)); ++ m_TLSSock->set_verify_callback(boost::asio::ssl::host_name_verification(m_IP)); + // m_TLSSock->set_verify_callback([this](auto v, auto &c){ VerifyCertificate(v, c);}); + try + { +@@ -648,7 +646,7 @@ namespace Plugins { + // Hanlde multicast + if (((m_IP.substr(0, 4) >= "224.") && (m_IP.substr(0, 4) <= "239.")) || (m_IP.substr(0, 4) == "255.")) + { +- m_Socket->set_option(boost::asio::ip::multicast::join_group(boost::asio::ip::address::from_string(m_IP.c_str())), ec); ++ m_Socket->set_option(boost::asio::ip::multicast::join_group(boost::asio::ip::make_address_v4(m_IP.c_str())), ec); + m_Socket->set_option(boost::asio::ip::multicast::hops(2), ec); + } + } +@@ -764,7 +762,7 @@ namespace Plugins { + } + else + { +- boost::asio::ip::udp::endpoint destination(boost::asio::ip::address::from_string(m_IP.c_str()), atoi(m_Port.c_str())); ++ boost::asio::ip::udp::endpoint destination(boost::asio::ip::make_address_v4(m_IP.c_str()), atoi(m_Port.c_str())); + size_t bytes_transferred = m_Socket->send_to(boost::asio::buffer(pMessage, pMessage.size()), destination); + } + } +@@ -825,12 +823,14 @@ namespace Plugins { + } + }; + +- void CPluginTransportICMP::handleAsyncResolve(const boost::system::error_code &ec, const boost::asio::ip::icmp::resolver::iterator &endpoint_iterator) ++ void CPluginTransportICMP::handleAsyncResolve(const boost::system::error_code &ec, boost::asio::ip::icmp::resolver::results_type endpoints) + { + if (!ec) + { ++ m_Endpoint = endpoints.begin()->endpoint(); ++ m_IP = m_Endpoint.address().to_string(); ++ + m_bConnected = true; +- m_IP = endpoint_iterator->endpoint().address().to_string(); + + // Listen will fail (10022 - bad parameter) unless something has been sent(?) + std::string body("ping"); +@@ -857,15 +857,11 @@ namespace Plugins { + m_bConnecting = true; + m_Socket = new boost::asio::ip::icmp::socket(ios, boost::asio::ip::icmp::v4()); + +- boost::system::error_code ec; +- boost::asio::ip::icmp::resolver::query query(boost::asio::ip::icmp::v4(), m_IP, ""); +- auto iter = m_Resolver.resolve(query); +- m_Endpoint = *iter; +- +- // +- // Async resolve/connect based on http://www.boost.org/doc/libs/1_51_0/doc/html/boost_asio/example/icmp/ping.cpp +- // +- m_Resolver.async_resolve(query, [this](auto &&err, auto i) { handleAsyncResolve(err, i); }); ++ m_Resolver.async_resolve(boost::asio::ip::icmp::v4(), m_IP, "", ++ [this](auto &&err, auto endpoints) { ++ handleAsyncResolve(err, endpoints); ++ } ++ ); + } + else + { +diff --git hardware/plugins/PluginTransports.h hardware/plugins/PluginTransports.h +index c1cc1e3..79d5725 100644 +--- hardware/plugins/PluginTransports.h ++++ hardware/plugins/PluginTransports.h +@@ -6,7 +6,7 @@ + + namespace Plugins { + +- extern boost::asio::io_service ios; ++ extern boost::asio::io_context ios; + + class CPluginTransport + { +@@ -85,8 +85,8 @@ namespace Plugins { + , m_Socket(nullptr){}; + bool handleConnect() override; + bool handleListen() override; +- virtual void handleAsyncResolve(const boost::system::error_code &err, boost::asio::ip::tcp::resolver::iterator endpoint_iterator); +- virtual void handleAsyncConnect(const boost::system::error_code &err, const boost::asio::ip::tcp::resolver::iterator &endpoint_iterator); ++ virtual void handleAsyncResolve(const boost::system::error_code &err, boost::asio::ip::tcp::resolver::results_type endpoints); ++ virtual void handleAsyncConnect(const boost::system::error_code &err, const boost::asio::ip::tcp::endpoint &endpoint); + virtual void handleAsyncAccept(boost::asio::ip::tcp::socket *pSocket, const boost::system::error_code &error); + void handleRead(const boost::system::error_code &e, std::size_t bytes_transferred) override; + void handleWrite(const std::vector<byte> &pMessage) override; +@@ -111,7 +111,7 @@ namespace Plugins { + : CPluginTransportTCP(HwdID, pConnection, Address, Port) + , m_Context(nullptr) + , m_TLSSock(nullptr){}; +- void handleAsyncConnect(const boost::system::error_code &err, const boost::asio::ip::tcp::resolver::iterator &endpoint_iterator) override; ++ void handleAsyncConnect(const boost::system::error_code &err, const boost::asio::ip::tcp::endpoint &endpoint) override; + void handleRead(const boost::system::error_code &e, std::size_t bytes_transferred) override; + void handleWrite(const std::vector<byte> &pMessage) override; + ~CPluginTransportTCPSecure() override; +@@ -151,7 +151,7 @@ namespace Plugins { + , m_Socket(nullptr) + , m_Timer(nullptr) + , m_SequenceNo(-1){}; +- void handleAsyncResolve(const boost::system::error_code &err, const boost::asio::ip::icmp::resolver::iterator &endpoint_iterator); ++ void handleAsyncResolve(const boost::system::error_code &err, boost::asio::ip::icmp::resolver::results_type endpoints); + bool handleListen() override; + void handleTimeout(const boost::system::error_code &) override; + void handleRead(const boost::system::error_code &e, std::size_t bytes_transferred) override; +diff --git main/WebServerCmds.cpp main/WebServerCmds.cpp +index 7d4a9f2..3586373 100644 +--- main/WebServerCmds.cpp ++++ main/WebServerCmds.cpp +@@ -1632,7 +1632,7 @@ namespace http + ExtraHeaders.push_back("App_Revision: " + std::to_string(iAppRevision)); + ExtraHeaders.push_back("System_Name: " + systemname); + ExtraHeaders.push_back("Machine: " + machine); +- ExtraHeaders.push_back("Type: " + (!bIsBetaChannel) ? "Stable" : "Beta"); ++ ExtraHeaders.push_back("Type: " + std::string(!bIsBetaChannel ? "Stable" : "Beta")); + + if (!HTTPClient::GET(szHistoryURL, ExtraHeaders, historyfile)) + { +diff --git main/mainworker.cpp main/mainworker.cpp +index b5027eb..b8f8dc7 100644 +--- main/mainworker.cpp ++++ main/mainworker.cpp +@@ -1318,7 +1318,7 @@ bool MainWorker::IsUpdateAvailable(const bool bIsForced) + ExtraHeaders.push_back("App_Revision: " + std::to_string(iAppRevision)); + ExtraHeaders.push_back("System_Name: " + m_szSystemName); + ExtraHeaders.push_back("Machine: " + machine); +- ExtraHeaders.push_back("Type: " + (!bIsBetaChannel) ? "Stable" : "Beta"); ++ ExtraHeaders.push_back("Type: " + std::string(!bIsBetaChannel ? "Stable" : "Beta")); + + if (!HTTPClient::GET(szURL, ExtraHeaders, revfile)) + return false; +diff --git plugins/examples/Pinger.py plugins/examples/Pinger.py +index 6b54559..c7a776d 100644 +--- plugins/examples/Pinger.py ++++ plugins/examples/Pinger.py +@@ -3,7 +3,7 @@ + # Author: Dnpwwo, 2017 - 2018 + # + """ +-<plugin key="ICMP" name="Pinger (ICMP)" author="dnpwwo" version="3.1.4"> ++<plugin key="ICMP" name="Pinger (ICMP)" author="dnpwwo" version="3.1.5"> + <description> + ICMP Pinger Plugin.<br/><br/> + Specify comma delimted addresses (IP or DNS names) of devices that are to be pinged.<br/> +@@ -144,8 +144,9 @@ class BasePlugin: + for Device in Devices: + if (("Name" in Devices[Device].Options) and (Devices[Device].Options["Name"] == Connection.Name)): + UpdateDevice(Device, 0, "Off", TimedOut) +- self.icmpConn.Close() +- self.icmpConn = None ++ if (self.icmpConn != None): ++ self.icmpConn.Close() ++ self.icmpConn = None + + def onHeartbeat(self): + Domoticz.Debug("Heartbeating...") +diff --git push/MQTTPush.h push/MQTTPush.h +index 0773b43..d9f9332 100644 +--- push/MQTTPush.h ++++ push/MQTTPush.h +@@ -14,7 +14,7 @@ public: + void on_message(const struct mosquitto_message* message) override; + void on_connect(int rc) override; + void on_disconnect(int rc) override; +- void on_going_down(); ++ void on_going_down() override; + private: + struct _tPushItem + { +diff --git tcpserver/TCPClient.cpp tcpserver/TCPClient.cpp +index d55da10..3eee093 100644 +--- tcpserver/TCPClient.cpp ++++ tcpserver/TCPClient.cpp +@@ -19,7 +19,7 @@ namespace tcp { + delete socket_; + } + +- CTCPClient::CTCPClient(boost::asio::io_service& ios, CTCPServerIntBase* pManager) ++ CTCPClient::CTCPClient(boost::asio::io_context& ios, CTCPServerIntBase* pManager) + : CTCPClientBase(pManager) + { + socket_ = new boost::asio::ip::tcp::socket(ios); +diff --git tcpserver/TCPClient.h tcpserver/TCPClient.h +index df4350d..e7a882b 100644 +--- tcpserver/TCPClient.h ++++ tcpserver/TCPClient.h +@@ -38,7 +38,7 @@ class CTCPClient : public CTCPClientBase, + public std::enable_shared_from_this<CTCPClient> + { + public: +- CTCPClient(boost::asio::io_service& ios, CTCPServerIntBase *pManager); ++ CTCPClient(boost::asio::io_context& ios, CTCPServerIntBase *pManager); + ~CTCPClient() = default; + void start() override; + void stop() override; +diff --git tcpserver/TCPServer.cpp tcpserver/TCPServer.cpp +index 91fdc7e..57f8709 100644 +--- tcpserver/TCPServer.cpp ++++ tcpserver/TCPServer.cpp +@@ -18,14 +18,14 @@ namespace tcp { + + CTCPServerInt::CTCPServerInt(const std::string& address, const std::string& port, CTCPServer* pRoot) : + CTCPServerIntBase(pRoot), +- io_service_(), +- acceptor_(io_service_) ++ io_context_(), ++ acceptor_(io_context_) + { + // Open the acceptor with the option to reuse the address (i.e. SO_REUSEADDR). +- boost::asio::ip::tcp::resolver resolver(io_service_); +- boost::asio::ip::tcp::resolver::query query(address, port); +- boost::asio::ip::tcp::endpoint endpoint = *resolver.resolve(query); +- acceptor_.open(endpoint.protocol()); ++ boost::asio::ip::tcp::resolver resolver(io_context_); ++ boost::asio::ip::basic_resolver<boost::asio::ip::tcp>::results_type endpoints = resolver.resolve(address, port); ++ auto endpoint = *endpoints.begin(); ++ acceptor_.open(endpoint.endpoint().protocol()); + acceptor_.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true)); + // bind to both ipv6 and ipv4 sockets for the "::" address only + if (address == "::") +@@ -35,7 +35,7 @@ namespace tcp { + acceptor_.bind(endpoint); + acceptor_.listen(); + +- new_connection_ = std::make_shared<CTCPClient>(io_service_, this); ++ new_connection_ = std::make_shared<CTCPClient>(io_context_, this); + if (new_connection_ == nullptr) + { + _log.Log(LOG_ERROR, "Error creating new client!"); +@@ -47,24 +47,24 @@ namespace tcp { + + void CTCPServerInt::start() + { +- // The io_service::run() call will block until all asynchronous operations ++ // The io_context::run() call will block until all asynchronous operations + // have finished. While the server is running, there is always at least one + // asynchronous operation outstanding: the asynchronous accept call waiting + // for new incoming connections. +- io_service_.run(); ++ io_context_.run(); + } + + void CTCPServerInt::stop() + { + // Post a call to the stop function so that server::stop() is safe to call + // from any thread. +- io_service_.post([this] { handle_stop(); }); ++ boost::asio::post([this] { handle_stop(); }); + } + + void CTCPServerInt::handle_stop() + { + // The server is stopped by cancelling all outstanding asynchronous +- // operations. Once all operations have finished the io_service::run() call ++ // operations. Once all operations have finished the io_context::run() call + // will exit. + acceptor_.close(); + stopAllClients(); +@@ -88,7 +88,7 @@ namespace tcp { + connections_.insert(new_connection_); + new_connection_->start(); + +- new_connection_.reset(new CTCPClient(io_service_, this)); ++ new_connection_.reset(new CTCPClient(io_context_, this)); + + acceptor_.async_accept(*(new_connection_->socket()), [this](auto&& err) { handleAccept(err); }); + } +diff --git tcpserver/TCPServer.h tcpserver/TCPServer.h +index ca611b1..17284ca 100644 +--- tcpserver/TCPServer.h ++++ tcpserver/TCPServer.h +@@ -70,8 +70,8 @@ private: + /// Handle a request to stop the server. + void handle_stop(); + +- /// The io_service used to perform asynchronous operations. +- boost::asio::io_service io_service_; ++ /// The io_context used to perform asynchronous operations. ++ boost::asio::io_context io_context_; + + boost::asio::ip::tcp::acceptor acceptor_; + +diff --git webserver/cWebem.cpp webserver/cWebem.cpp +index 57d9683..c0d292d 100644 +--- webserver/cWebem.cpp ++++ webserver/cWebem.cpp +@@ -47,13 +47,13 @@ namespace http { + , myRequestHandler(doc_root, this) + // Rene, make sure we initialize m_sessions first, before starting a server + , myServer(server_factory::create(settings, myRequestHandler)) +- , m_io_service() +- , m_session_clean_timer(m_io_service, boost::posix_time::minutes(1)) ++ , m_io_context() ++ , m_session_clean_timer(m_io_context, boost::posix_time::minutes(1)) + { + // associate handler to timer and schedule the first iteration + m_session_clean_timer.async_wait([this](auto &&) { CleanSessions(); }); +- m_io_service_thread = std::make_shared<std::thread>([p = &m_io_service] { p->run(); }); +- SetThreadName(m_io_service_thread->native_handle(), "Webem_ssncleaner"); ++ m_io_context_thread = std::make_shared<std::thread>([p = &m_io_context] { p->run(); }); ++ SetThreadName(m_io_context_thread->native_handle(), "Webem_ssncleaner"); + } + + cWebem::~cWebem() +@@ -93,14 +93,14 @@ namespace http { + // Stop session cleaner + try + { +- if (!m_io_service.stopped()) ++ if (!m_io_context.stopped()) + { +- m_io_service.stop(); ++ m_io_context.stop(); + } +- if (m_io_service_thread) ++ if (m_io_context_thread) + { +- m_io_service_thread->join(); +- m_io_service_thread.reset(); ++ m_io_context_thread->join(); ++ m_io_context_thread.reset(); + } + } + catch (...) +diff --git webserver/cWebem.h webserver/cWebem.h +index 6e3b899..7905c45 100644 +--- webserver/cWebem.h ++++ webserver/cWebem.h +@@ -259,9 +259,9 @@ namespace http + std::string m_webRoot; + /// sessions management + std::mutex m_sessionsMutex; +- boost::asio::io_service m_io_service; ++ boost::asio::io_context m_io_context; + boost::asio::deadline_timer m_session_clean_timer; +- std::shared_ptr<std::thread> m_io_service_thread; ++ std::shared_ptr<std::thread> m_io_context_thread; + }; + + } // namespace server +diff --git webserver/connection.cpp webserver/connection.cpp +index 40f9788..3a70924 100644 +--- webserver/connection.cpp ++++ webserver/connection.cpp +@@ -22,13 +22,13 @@ namespace http { + extern time_t last_write_time(const std::string& path); + + // this is the constructor for plain connections +- connection::connection(boost::asio::io_service &io_service, connection_manager &manager, request_handler &handler, int read_timeout) ++ connection::connection(boost::asio::io_context &io_context, connection_manager &manager, request_handler &handler, int read_timeout) + : send_buffer_(nullptr) + , read_timeout_(read_timeout) +- , read_timer_(io_service, boost::posix_time::seconds(read_timeout)) ++ , read_timer_(io_context, boost::posix_time::seconds(read_timeout)) + , default_abandoned_timeout_(20 * 60) + // 20mn before stopping abandoned connection +- , abandoned_timer_(io_service, boost::posix_time::seconds(default_abandoned_timeout_)) ++ , abandoned_timer_(io_context, boost::posix_time::seconds(default_abandoned_timeout_)) + , connection_manager_(manager) + , request_handler_(handler) + , status_(INITIALIZING) +@@ -39,18 +39,18 @@ namespace http { + keepalive_ = false; + write_in_progress = false; + connection_type = ConnectionType::connection_http; +- socket_ = std::make_unique<boost::asio::ip::tcp::socket>(io_service); ++ socket_ = std::make_unique<boost::asio::ip::tcp::socket>(io_context); + } + + #ifdef WWW_ENABLE_SSL + // this is the constructor for secure connections +- connection::connection(boost::asio::io_service &io_service, connection_manager &manager, request_handler &handler, int read_timeout, boost::asio::ssl::context &context) ++ connection::connection(boost::asio::io_context &io_context, connection_manager &manager, request_handler &handler, int read_timeout, boost::asio::ssl::context &context) + : send_buffer_(nullptr) + , read_timeout_(read_timeout) +- , read_timer_(io_service, boost::posix_time::seconds(read_timeout)) ++ , read_timer_(io_context, boost::posix_time::seconds(read_timeout)) + , default_abandoned_timeout_(20 * 60) + // 20mn before stopping abandoned connection +- , abandoned_timer_(io_service, boost::posix_time::seconds(default_abandoned_timeout_)) ++ , abandoned_timer_(io_context, boost::posix_time::seconds(default_abandoned_timeout_)) + , connection_manager_(manager) + , request_handler_(handler) + , status_(INITIALIZING) +@@ -62,7 +62,7 @@ namespace http { + write_in_progress = false; + connection_type = ConnectionType::connection_http; + socket_ = nullptr; +- sslsocket_ = std::make_unique<ssl_socket>(io_service, context); ++ sslsocket_ = std::make_unique<ssl_socket>(io_context, context); + } + #endif + +@@ -152,9 +152,9 @@ namespace http { + if (error != boost::asio::error::operation_aborted) { + switch (connection_type) { + case ConnectionType::connection_http: +- // Timers should be cancelled before stopping to remove tasks from the io_service. +- // The io_service will stop naturally when every tasks are removed. +- // If timers are not cancelled, the exception ERROR_ABANDONED_WAIT_0 is thrown up to the io_service::run() caller. ++ // Timers should be cancelled before stopping to remove tasks from the io_context. ++ // The io_context will stop naturally when every tasks are removed. ++ // If timers are not cancelled, the exception ERROR_ABANDONED_WAIT_0 is thrown up to the io_context::run() caller. + cancel_abandoned_timeout(); + cancel_read_timeout(); + +@@ -372,7 +372,7 @@ namespace http { + switch (connection_type) + { + case ConnectionType::connection_http: +- begin = boost::asio::buffer_cast<const char*>(_buf.data()); ++ begin = static_cast<const char*>(_buf.data().data()); + try + { + request_parser_.reset(); +@@ -404,7 +404,7 @@ namespace http { + newt = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now()); + } + +- size_t sizeread = begin - boost::asio::buffer_cast<const char*>(_buf.data()); ++ size_t sizeread = begin - static_cast<const char*>(_buf.data().data()); + _buf.consume(sizeread); + reply_.reset(); + const char* pConnection = request_.get_req_header(&request_, "Connection"); +@@ -520,7 +520,7 @@ namespace http { + break; + case ConnectionType::connection_websocket: + case ConnectionType::connection_websocket_closing: +- begin = boost::asio::buffer_cast<const char*>(_buf.data()); ++ begin = static_cast<const char*>(_buf.data().data()); + result = websocket_parser.parse((const unsigned char*)begin, _buf.size(), bytes_consumed, keepalive_); + _buf.consume(bytes_consumed); + if (result) { +diff --git webserver/connection.hpp webserver/connection.hpp +index ce452b5..c1a82c5 100644 +--- webserver/connection.hpp ++++ webserver/connection.hpp +@@ -43,11 +43,11 @@ namespace http { + std::string host_local_endpoint_port_; + std::string host_last_request_uri_; + }; +- /// Construct a connection with the given io_service. +- explicit connection(boost::asio::io_service& io_service, ++ /// Construct a connection with the given io_context. ++ explicit connection(boost::asio::io_context& io_context, + connection_manager& manager, request_handler& handler, int timeout); + #ifdef WWW_ENABLE_SSL +- explicit connection(boost::asio::io_service& io_service, ++ explicit connection(boost::asio::io_context& io_context, + connection_manager& manager, request_handler& handler, int timeout, boost::asio::ssl::context& context); + #endif + ~connection() = default; +diff --git webserver/server.cpp webserver/server.cpp +index da15887..8bdfc13 100644 +--- webserver/server.cpp ++++ webserver/server.cpp +@@ -13,15 +13,15 @@ namespace http { + namespace server { + + server_base::server_base(const server_settings &settings, request_handler &user_request_handler) +- : io_service_() +- , acceptor_(io_service_) ++ : io_context_() ++ , acceptor_(io_context_) + , request_handler_(user_request_handler) + , settings_(settings) + , timeout_(20) + , // default read timeout in seconds + is_running(false) + , is_stop_complete(false) +- , m_heartbeat_timer(io_service_) ++ , m_heartbeat_timer(io_context_) + { + if (!settings.is_enabled()) + { +@@ -39,10 +39,10 @@ namespace server { + } + + // Open the acceptor with the option to reuse the address (i.e. SO_REUSEADDR). +- boost::asio::ip::tcp::resolver resolver(io_service_); +- boost::asio::ip::tcp::resolver::query query(settings_.listening_address, settings_.listening_port); +- boost::asio::ip::tcp::endpoint endpoint = *resolver.resolve(query); +- acceptor_.open(endpoint.protocol()); ++ boost::asio::ip::tcp::resolver resolver(io_context_); ++ boost::asio::ip::basic_resolver<boost::asio::ip::tcp>::results_type endpoints = resolver.resolve(settings_.listening_address, settings_.listening_port); ++ auto endpoint = *endpoints.begin(); ++ acceptor_.open(endpoint.endpoint().protocol()); + acceptor_.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true)); + // bind to both ipv6 and ipv4 sockets for the "::" address only + if (settings_.listening_address == "::") +@@ -59,28 +59,28 @@ namespace server { + } + + void server_base::run() { +- // The io_service::run() call will block until all asynchronous operations ++ // The io_context::run() call will block until all asynchronous operations + // have finished. While the server is running, there is always at least one + // asynchronous operation outstanding: the asynchronous accept call waiting + // for new incoming connections. + try { + is_running = true; + heart_beat(boost::system::error_code()); +- io_service_.run(); ++ io_context_.run(); + is_running = false; + } catch (std::exception& e) { + _log.Log(LOG_ERROR, "[web:%s] exception occurred : '%s' (need to run again)", settings_.listening_port.c_str(), e.what()); + is_running = false; + // Note: if acceptor is up everything is OK, we can call run() again + // but if the exception has broken the acceptor we cannot stop/start it and the next run() will exit immediatly. +- io_service_.reset(); // this call is needed before calling run() again ++ io_context_.restart(); // this call is needed before calling run() again + throw; + } catch (...) { + _log.Log(LOG_ERROR, "[web:%s] unknown exception occurred (need to run again)", settings_.listening_port.c_str()); + is_running = false; + // Note: if acceptor is up everything is OK, we can call run() again + // but if the exception has broken the acceptor we cannot stop/start it and the next run() will exit immediatly. +- io_service_.reset(); // this call is needed before calling run() again ++ io_context_.restart(); // this call is needed before calling run() again + throw; + } + } +@@ -89,12 +89,12 @@ void server_base::run() { + void server_base::stop() { + if (is_running) { + // Post a call to the stop function so that server_base::stop() is safe to call from any thread. +- // Rene, set is_running to false, because the following is an io_service call, which makes is_running ++ // Rene, set is_running to false, because the following is an io_context call, which makes is_running + // never set to false whilst in the call itself + is_running = false; +- io_service_.post([this] { handle_stop(); }); ++ boost::asio::post(io_context_, [this] { handle_stop(); }); + } else { +- // if io_service is not running then the post call will not be performed ++ // if io_context is not running then the post call will not be performed + handle_stop(); + } + +@@ -112,7 +112,7 @@ void server_base::stop() { + } + sleep_milliseconds(500); + } +- io_service_.stop(); ++ io_context_.stop(); + + // Deregister heartbeat + m_mainworker.HeartbeatRemove(std::string("WebServer:") + settings_.listening_port); +@@ -136,7 +136,7 @@ void server_base::heart_beat(const boost::system::error_code& error) + m_mainworker.HeartbeatUpdate(std::string("WebServer:") + settings_.listening_port); + + // Schedule next heartbeat +- m_heartbeat_timer.expires_from_now(std::chrono::seconds(4)); ++ m_heartbeat_timer.expires_after(std::chrono::seconds(4)); + m_heartbeat_timer.async_wait([this](auto &&err) { heart_beat(err); }); + } + } +@@ -148,7 +148,7 @@ server::server(const server_settings &settings, request_handler &user_request_ha + } + + void server::init_connection() { +- new_connection_.reset(new connection(io_service_, connection_manager_, request_handler_, timeout_)); ++ new_connection_.reset(new connection(io_context_, connection_manager_, request_handler_, timeout_)); + } + + /** +@@ -157,7 +157,7 @@ void server::init_connection() { + void server::handle_accept(const boost::system::error_code& e) { + if (!e) { + connection_manager_.start(new_connection_); +- new_connection_.reset(new connection(io_service_, ++ new_connection_.reset(new connection(io_context_, + connection_manager_, request_handler_, timeout_)); + // listen for a subsequent request + acceptor_.async_accept(new_connection_->socket(), [this](auto &&err) { handle_accept(err); }); +@@ -267,7 +267,7 @@ void ssl_server::init_connection() { + } else { + _log.Log(LOG_ERROR, "[web:%s] missing SSL DH parameters file %s!", settings_.listening_port.c_str(), settings_.tmp_dh_file_path.c_str()); + } +- new_connection_.reset(new connection(io_service_, connection_manager_, request_handler_, timeout_, context_)); ++ new_connection_.reset(new connection(io_context_, connection_manager_, request_handler_, timeout_, context_)); + } + + void ssl_server::reinit_connection() +@@ -305,7 +305,7 @@ void ssl_server::reinit_connection() + _log.Log(LOG_ERROR, "[web:%s] missing SSL DH parameters from file %s", settings_.listening_port.c_str(), settings_.tmp_dh_file_path.c_str()); + } + } +- new_connection_.reset(new connection(io_service_, connection_manager_, request_handler_, timeout_, context_)); ++ new_connection_.reset(new connection(io_context_, connection_manager_, request_handler_, timeout_, context_)); + } + + /** +diff --git webserver/server.hpp webserver/server.hpp +index f9e71c5..bd7132a 100644 +--- webserver/server.hpp ++++ webserver/server.hpp +@@ -31,7 +31,7 @@ namespace http + explicit server_base(const server_settings &settings, request_handler &user_request_handler); + virtual ~server_base() = default; + +- /// Run the server's io_service loop. ++ /// Run the server's io_context loop. + void run(); + + /// Stop the server. +@@ -46,8 +46,8 @@ namespace http + protected: + void init(const init_connectionhandler_func &init_connection_handler, accept_handler_func accept_handler); + +- /// The io_service used to perform asynchronous operations. +- boost::asio::io_service io_service_; ++ /// The io_context used to perform asynchronous operations. ++ boost::asio::io_context io_context_; + + /// Acceptor used to listen for incoming connections. + boost::asio::ip::tcp::acceptor acceptor_; diff --git a/www/domoticz/Makefile b/www/domoticz/Makefile index 769b4d500821..51b10699d732 100644 --- a/www/domoticz/Makefile +++ b/www/domoticz/Makefile @@ -1,5 +1,6 @@ PORTNAME= domoticz DISTVERSION= 2024.7 +PORTREVISION= 1 CATEGORIES= www MAINTAINER= kiwi@FreeBSD.org @@ -9,8 +10,6 @@ WWW= https://www.domoticz.com LICENSE= GPLv3 LICENSE_FILE= ${WRKSRC}/License.txt -BROKEN= fails to build with Boost>=1.87 - LIB_DEPENDS= libcurl.so:ftp/curl \ libboost_system.so:devel/boost-libs \ libjsoncpp.so:devel/jsoncpp \ diff --git a/www/domoticz/files/patch-pr6252 b/www/domoticz/files/patch-pr6252 new file mode 100644 index 000000000000..34c4efd3f4e4 --- /dev/null +++ b/www/domoticz/files/patch-pr6252 @@ -0,0 +1,2178 @@ +Fix for boost 1.87 + +Removed the diff for the msbuild project files, didn't apply cleanly and not relevant anyway. +This will merged in the next stable of domoticz. + +Pullrequest: https://github.com/domoticz/domoticz/pull/6252 +Patch: https://patch-diff.githubusercontent.com/raw/domoticz/domoticz/pull/6252.patch-diff + +diff --git hardware/ASyncSerial.cpp hardware/ASyncSerial.cpp +index 52c950d..6147cdb 100644 +--- hardware/ASyncSerial.cpp ++++ hardware/ASyncSerial.cpp +@@ -54,7 +54,7 @@ public: + { + } + +- boost::asio::io_service io; ///< Io service object ++ boost::asio::io_context io; ///< Io service object + boost::asio::serial_port port; ///< Serial port object + boost::thread backgroundThread; ///< Thread that runs read/write operations + bool open{ false }; ///< True if port open +@@ -117,10 +117,10 @@ void AsyncSerial::open(const std::string& devname, unsigned int baud_rate, + throw; + } + +- pimpl->io.reset(); ++ pimpl->io.restart(); + +- // This gives some work to the io_service before it is started +- pimpl->io.post([this] { return doRead(); }); ++ // This gives some work to the io_context before it is started ++ boost::asio::post(pimpl->io, [this] { return doRead(); }); + + boost::thread t([p = &pimpl->io] { p->run(); }); + pimpl->backgroundThread.swap(t); +@@ -149,10 +149,10 @@ void AsyncSerial::openOnlyBaud(const std::string& devname, unsigned int baud_rat + throw; + } + +- pimpl->io.reset(); ++ pimpl->io.restart(); + +- //This gives some work to the io_service before it is started +- pimpl->io.post([this] { return doRead(); }); ++ //This gives some work to the io_context before it is started ++ boost::asio::post(pimpl->io, [this] { return doRead(); }); + + boost::thread t([p = &pimpl->io] { p->run(); }); + pimpl->backgroundThread.swap(t); +@@ -176,9 +176,9 @@ void AsyncSerial::close() + if(!isOpen()) return; + + pimpl->open = false; +- pimpl->io.post([this] { doClose(); }); ++ boost::asio::post(pimpl->io, [this] { doClose(); }); + pimpl->backgroundThread.join(); +- pimpl->io.reset(); ++ pimpl->io.restart(); + if(errorStatus()) + { + throw(boost::system::system_error(boost::system::error_code(), +@@ -192,7 +192,7 @@ void AsyncSerial::write(const char *data, size_t size) + std::lock_guard<std::mutex> l(pimpl->writeQueueMutex); + pimpl->writeQueue.insert(pimpl->writeQueue.end(),data,data+size); + } +- pimpl->io.post([this] { doWrite(); }); ++ boost::asio::post(pimpl->io, [this] { doWrite(); }); + } + + void AsyncSerial::write(const std::string &data) +@@ -201,7 +201,7 @@ void AsyncSerial::write(const std::string &data) + std::lock_guard<std::mutex> l(pimpl->writeQueueMutex); + pimpl->writeQueue.insert(pimpl->writeQueue.end(), data.c_str(), data.c_str()+data.size()); + } +- pimpl->io.post([this] { doWrite(); }); ++ boost::asio::post(pimpl->io, [this] { doWrite(); }); + } + + void AsyncSerial::write(const std::vector<char>& data) +@@ -211,7 +211,7 @@ void AsyncSerial::write(const std::vector<char>& data) + pimpl->writeQueue.insert(pimpl->writeQueue.end(),data.begin(), + data.end()); + } +- pimpl->io.post([this] { doWrite(); }); ++ boost::asio::post(pimpl->io, [this] { doWrite(); }); + } + + void AsyncSerial::writeString(const std::string& s) +@@ -220,7 +220,7 @@ void AsyncSerial::writeString(const std::string& s) + std::lock_guard<std::mutex> l(pimpl->writeQueueMutex); + pimpl->writeQueue.insert(pimpl->writeQueue.end(),s.begin(),s.end()); + } +- pimpl->io.post([this] { doWrite(); }); ++ boost::asio::post(pimpl->io, [this] { doWrite(); }); + } + + void AsyncSerial::doRead() +diff --git hardware/ASyncSerial.h hardware/ASyncSerial.h +index 0a51ef0..de83f8a 100644 +--- hardware/ASyncSerial.h ++++ hardware/ASyncSerial.h +@@ -123,27 +123,27 @@ class AsyncSerial : private domoticz::noncopyable + + /** + * Callback called to start an asynchronous read operation. +- * This callback is called by the io_service in the spawned thread. ++ * This callback is called by the io_context in the spawned thread. + */ + void doRead(); + + /** + * Callback called at the end of the asynchronous operation. +- * This callback is called by the io_service in the spawned thread. ++ * This callback is called by the io_context in the spawned thread. + */ + void readEnd(const boost::system::error_code &error, size_t bytes_transferred); + + /** + * Callback called to start an asynchronous write operation. + * If it is already in progress, does nothing. +- * This callback is called by the io_service in the spawned thread. ++ * This callback is called by the io_context in the spawned thread. + */ + void doWrite(); + + /** + * Callback called at the end of an asynchronuous write operation, + * if there is more data to write, restarts a new write operation. +- * This callback is called by the io_service in the spawned thread. ++ * This callback is called by the io_context in the spawned thread. + */ + void writeEnd(const boost::system::error_code &error); + +diff --git hardware/ASyncTCP.cpp hardware/ASyncTCP.cpp +index a375561..7c3b536 100644 +--- hardware/ASyncTCP.cpp ++++ hardware/ASyncTCP.cpp +@@ -4,213 +4,241 @@ + #include <boost/system/error_code.hpp> // for error_code + #include "../main/Logger.h" + +-struct hostent; +- + #define MAX_TCP_BUFFER_SIZE 4096 + +-#ifndef WIN32 +- #include <unistd.h> //gethostbyname +-#endif +- + #define STATUS_OK(err) !err +- +-ASyncTCP::ASyncTCP(const bool secure) ++#define STATUS_ERR(err) err ++ ++ASyncTCP::ASyncTCP(const bool secure) : ++ m_Tcpwork(boost::asio::make_work_guard(m_io_context)) ++ , m_Socket(m_io_context) ++ , m_Resolver(m_io_context) ++ , m_ReconnectTimer(m_io_context) ++ , m_TimeoutTimer(m_io_context) ++ , m_SendStrand(m_io_context) + #ifdef WWW_ENABLE_SSL +- : mSecure(secure) ++ , m_bSecure(secure) + #endif + { + m_pRXBuffer = new uint8_t[MAX_TCP_BUFFER_SIZE]; + #ifdef WWW_ENABLE_SSL + mContext.set_verify_mode(boost::asio::ssl::verify_none); +- if (mSecure) ++ if (m_bSecure) + { +- mSslSocket.reset(new boost::asio::ssl::stream<boost::asio::ip::tcp::socket>(mIos, mContext)); ++ m_SslSocket.reset(new boost::asio::ssl::stream<boost::asio::ip::tcp::socket>(m_io_context, mContext)); + } + #endif + } + + ASyncTCP::~ASyncTCP() + { +- assert(mTcpthread == nullptr); +- mIsTerminating = true; +- if (mTcpthread) ++ assert(m_Tcpthread == nullptr); ++ m_bIsTerminating = true; ++ if (m_Tcpthread) + { + //This should never happen. terminate() never called!! +- _log.Log(LOG_ERROR, "ASyncTCP: Workerthread not closed. terminate() never called!!!"); +- mIos.stop(); +- if (mTcpthread) ++ _log.Log(LOG_ERROR, "ASyncTCP: Worker thread not closed. terminate() never called!!!"); ++ m_io_context.stop(); ++ if (m_Tcpthread) + { +- mTcpthread->join(); +- mTcpthread.reset(); ++ m_Tcpthread->join(); ++ m_Tcpthread.reset(); + } + } + if (m_pRXBuffer != nullptr) + delete[] m_pRXBuffer; + } + +-void ASyncTCP::SetReconnectDelay(int32_t Delay) ++void ASyncTCP::SetReconnectDelay(const int32_t Delay) + { +- mReconnectDelay = Delay; ++ m_iReconnectDelay = Delay; + } + + void ASyncTCP::connect(const std::string& ip, uint16_t port) + { +- assert(!mSocket.is_open()); +- if (mSocket.is_open()) ++ assert(!m_Socket.is_open()); ++ if (m_Socket.is_open()) + { + _log.Log(LOG_ERROR, "ASyncTCP: connect called while socket is still open. !!!"); + terminate(); + } + +- // RK: We reset mIos here because it might have been stopped in terminate() +- mIos.reset(); +- // RK: After the reset, we need to provide it work anew +- mTcpwork = std::make_shared<boost::asio::io_service::work>(mIos); +- if (!mTcpthread) +- mTcpthread = std::make_shared<std::thread>([p = &mIos] { p->run(); }); +- +- mIp = ip; +- mPort = port; ++ m_IP = ip; ++ m_Port = port; + std::string port_str = std::to_string(port); +- boost::asio::ip::tcp::resolver::query query(ip, port_str); + timeout_start_timer(); +- mResolver.async_resolve(query, [this](auto &&err, auto &&iter) { cb_resolve_done(err, iter); }); ++ ++ m_Resolver.async_resolve( ++ ip, port_str, ++ [this](const boost::system::error_code& error, const boost::asio::ip::tcp::resolver::results_type& endpoints) { ++ handle_resolve(error, endpoints); ++ } ++ ); ++ ++ // RK: We restart m_io_context here because it might have been stopped in terminate() ++ m_io_context.restart(); ++ // RK: After the reset, we need to provide it work anew ++ m_Tcpwork.reset(); ++ m_Tcpwork.emplace(boost::asio::make_work_guard(m_io_context)); ++ if (!m_Tcpthread) ++ m_Tcpthread = std::make_shared<std::thread>([p = &m_io_context] { p->run(); }); + } + +-void ASyncTCP::cb_resolve_done(const boost::system::error_code& error, boost::asio::ip::tcp::resolver::iterator endpoint_iterator) ++void ASyncTCP::handle_resolve(const boost::system::error_code& error, const boost::asio::ip::tcp::resolver::results_type &endpoints) + { +- if (mIsTerminating) return; ++ if (m_bIsTerminating) return; + +- if (STATUS_OK(error)) +- { +- connect_start(endpoint_iterator); +- } +- else ++ if (STATUS_ERR(error)) + { + process_error(error); ++ return; + } +-} +- +-void ASyncTCP::connect_start(boost::asio::ip::tcp::resolver::iterator& endpoint_iterator) +-{ +- if (mIsConnected) return; +- +- mEndPoint = *endpoint_iterator++; ++ if (m_bIsConnected) return; + + timeout_start_timer(); ++ + #ifdef WWW_ENABLE_SSL +- if (mSecure) ++ if (m_bSecure) + { + // we reset the ssl socket, because the ssl context needs to be reinitialized after a reconnect +- mSslSocket.reset(new boost::asio::ssl::stream<boost::asio::ip::tcp::socket>(mIos, mContext)); +- mSslSocket->lowest_layer().async_connect(mEndPoint, [this, endpoint_iterator](auto &&err) mutable { cb_connect_done(err, endpoint_iterator); }); ++ m_SslSocket.reset(new boost::asio::ssl::stream<boost::asio::ip::tcp::socket>(m_io_context, mContext)); ++ boost::asio::async_connect(m_SslSocket->lowest_layer(), endpoints, ++ [this](const boost::system::error_code& error, const boost::asio::ip::tcp::endpoint& endpoint) ++ { ++ handle_connect(error, endpoint); ++ } ++ ); + } + else + #endif + { +- mSocket.async_connect(mEndPoint, [this, endpoint_iterator](auto &&err) mutable { cb_connect_done(err, endpoint_iterator); }); ++ boost::asio::async_connect(m_Socket, endpoints, ++ [this](const boost::system::error_code& error, const boost::asio::ip::tcp::endpoint& endpoint) ++ { ++ handle_connect(error, endpoint); ++ } ++ ); + } + } + +-void ASyncTCP::cb_connect_done(const boost::system::error_code& error, boost::asio::ip::tcp::resolver::iterator &endpoint_iterator) ++void ASyncTCP::handle_connect(const boost::system::error_code& error, const boost::asio::ip::tcp::endpoint& /*endpoint*/) + { +- if (mIsTerminating) return; ++ if (m_bIsTerminating) return; + +- if (STATUS_OK(error)) ++ if (STATUS_ERR(error)) + { ++ process_error(error); ++ return; ++ } + #ifdef WWW_ENABLE_SSL +- if (mSecure) +- { +- timeout_start_timer(); +- mSslSocket->async_handshake(boost::asio::ssl::stream_base::client, [this](auto &&err) { cb_handshake_done(err); }); +- } +- else +-#endif +- { +- process_connection(); +- } ++ if (m_bSecure) ++ { ++ timeout_start_timer(); ++ m_SslSocket->async_handshake(boost::asio::ssl::stream_base::client, ++ [this](const boost::system::error_code& error) { ++ cb_handshake_done(error); ++ } ++ ); + } +- else ++ else ++#endif + { +- if (endpoint_iterator != boost::asio::ip::tcp::resolver::iterator()) +- { +- // The connection failed. Try the next endpoint in the list. +- connect_start(endpoint_iterator); +- return; +- } +- process_error(error); ++ process_connection(); + } + } + + #ifdef WWW_ENABLE_SSL + void ASyncTCP::cb_handshake_done(const boost::system::error_code& error) + { +- if (mIsTerminating) return; ++ if (m_bIsTerminating) return; + +- if (STATUS_OK(error)) +- { +- process_connection(); +- } +- else ++ if (STATUS_ERR(error)) + { + process_error(error); ++ return; + } ++ process_connection(); ++#endif + } ++ ++void ASyncTCP::process_connection() ++{ ++ m_bIsConnected = true; ++#ifdef WWW_ENABLE_SSL ++ ++ if (!m_bSecure) + #endif ++ { ++ // RK: only if non-secure ++ boost::asio::socket_base::keep_alive option(true); ++ m_Socket.set_option(option); ++ } ++ OnConnect(); ++ do_read_start(); ++ do_write_start(); ++} + + void ASyncTCP::reconnect_start_timer() + { +- if (mIsReconnecting) return; ++ if (m_bIsReconnecting) return; + +- if (mReconnectDelay != 0) ++ if (m_iReconnectDelay != 0) + { +- mIsReconnecting = true; +- +- mReconnectTimer.expires_from_now(boost::posix_time::seconds(mReconnectDelay)); +- mReconnectTimer.async_wait([this](auto &&err) { cb_reconnect_start(err); }); ++ m_bIsReconnecting = true; ++ ++ m_ReconnectTimer.expires_from_now(boost::posix_time::seconds(m_iReconnectDelay)); ++ m_ReconnectTimer.async_wait( ++ [this](const boost::system::error_code& error) { ++ cb_reconnect_start(error); ++ } ++ ); + } + } + + void ASyncTCP::cb_reconnect_start(const boost::system::error_code& error) + { +- mIsReconnecting = false; +- mReconnectTimer.cancel(); +- mTimeoutTimer.cancel(); ++ m_bIsReconnecting = false; ++ m_ReconnectTimer.cancel(); ++ m_TimeoutTimer.cancel(); + +- if (mIsConnected) return; ++ if (m_bIsConnected) return; + if (error) return; // timer was cancelled + + do_close(); +- connect(mIp, mPort); ++ connect(m_IP, m_Port); + } + + + void ASyncTCP::terminate(const bool silent) + { +- mIsTerminating = true; ++ m_bIsTerminating = true; + disconnect(silent); +- mTcpwork.reset(); +- mIos.stop(); +- if (mTcpthread) ++ m_Tcpwork.reset(); ++ m_io_context.stop(); ++ if (m_Tcpthread) + { +- mTcpthread->join(); +- mTcpthread.reset(); ++ m_Tcpthread->join(); ++ m_Tcpthread.reset(); + } +- mIsReconnecting = false; +- mIsConnected = false; +- mWriteQ.clear(); +- mIsTerminating = false; ++ m_bIsReconnecting = false; ++ m_bIsConnected = false; ++ m_WriteQ.clear(); ++ m_bIsTerminating = false; + } + + void ASyncTCP::disconnect(const bool silent) + { +- mReconnectTimer.cancel(); +- mTimeoutTimer.cancel(); +- if (!mTcpthread) return; ++ m_ReconnectTimer.cancel(); ++ m_TimeoutTimer.cancel(); ++ if (!m_Tcpthread) return; + + try + { +- mIos.post([this] { do_close(); }); ++ boost::asio::post(m_io_context, ++ [this] { ++ do_close(); ++ } ++ ); + } + catch (...) + { +@@ -223,62 +251,68 @@ void ASyncTCP::disconnect(const bool silent) + + void ASyncTCP::do_close() + { +- if (mIsReconnecting) { ++ if (m_bIsReconnecting) { + return; + } +- mReconnectTimer.cancel(); +- mTimeoutTimer.cancel(); ++ m_ReconnectTimer.cancel(); ++ m_TimeoutTimer.cancel(); + boost::system::error_code ec; + #ifdef WWW_ENABLE_SSL +- if (mSecure) ++ if (m_bSecure) + { +- if (mSslSocket->lowest_layer().is_open()) ++ if (m_SslSocket->lowest_layer().is_open()) + { +- mSslSocket->lowest_layer().shutdown(boost::asio::ip::tcp::socket::shutdown_both, ec); +- mSslSocket->lowest_layer().close(ec); ++ m_SslSocket->lowest_layer().shutdown(boost::asio::ip::tcp::socket::shutdown_both, ec); ++ m_SslSocket->lowest_layer().close(ec); + } + } + else + #endif + { +- if (mSocket.is_open()) ++ if (m_Socket.is_open()) + { +- mSocket.close(ec); ++ m_Socket.close(ec); + } + } + } + + void ASyncTCP::do_read_start() + { +- if (mIsTerminating) return; +- if (!mIsConnected) return; ++ if (m_bIsTerminating) return; ++ if (!m_bIsConnected) return; + + timeout_start_timer(); + #ifdef WWW_ENABLE_SSL +- if (mSecure) ++ if (m_bSecure) + { +- mSslSocket->async_read_some(boost::asio::buffer(m_pRXBuffer, MAX_TCP_BUFFER_SIZE), [this](auto &&err, auto bytes) { cb_read_done(err, bytes); }); ++ m_SslSocket->async_read_some(boost::asio::buffer(m_pRXBuffer, MAX_TCP_BUFFER_SIZE), ++ [this](const boost::system::error_code& error, size_t bytes_transferred) { ++ cb_read_done(error, bytes_transferred); ++ } ++ ); + } + else + #endif + { +- mSocket.async_read_some(boost::asio::buffer(m_pRXBuffer, MAX_TCP_BUFFER_SIZE), [this](auto &&err, auto bytes) { cb_read_done(err, bytes); }); ++ m_Socket.async_read_some(boost::asio::buffer(m_pRXBuffer, MAX_TCP_BUFFER_SIZE), ++ [this](const boost::system::error_code& error, size_t bytes_transferred) { ++ cb_read_done(error, bytes_transferred); ++ } ++ ); + } + } + + void ASyncTCP::cb_read_done(const boost::system::error_code& error, size_t bytes_transferred) + { +- if (mIsTerminating) return; ++ if (m_bIsTerminating) return; + +- if (STATUS_OK(error)) +- { +- OnData(m_pRXBuffer, bytes_transferred); +- do_read_start(); +- } +- else ++ if (STATUS_ERR(error)) + { + process_error(error); ++ return; + } ++ OnData(m_pRXBuffer, bytes_transferred); ++ do_read_start(); + } + + void ASyncTCP::write(const uint8_t* pData, size_t length) +@@ -288,77 +322,66 @@ void ASyncTCP::write(const uint8_t* pData, size_t length) + + void ASyncTCP::write(const std::string& msg) + { +- if (!mTcpthread) return; ++ if (!m_Tcpthread) return; + +- mSendStrand.post([this, msg]() { cb_write_queue(msg); }); ++ boost::asio::post(m_SendStrand, [this, msg]() { cb_write_queue(msg); }); + } + + void ASyncTCP::cb_write_queue(const std::string& msg) + { +- mWriteQ.push_back(msg); ++ m_WriteQ.push_back(msg); + +- if (mWriteQ.size() == 1) ++ if (m_WriteQ.size() == 1) + do_write_start(); + } + + void ASyncTCP::do_write_start() + { +- if (mIsTerminating) return; +- if (!mIsConnected) return; +- if (mWriteQ.empty()) ++ if (m_bIsTerminating) return; ++ if (!m_bIsConnected) return; ++ if (m_WriteQ.empty()) + return; + + timeout_start_timer(); + #ifdef WWW_ENABLE_SSL +- if (mSecure) ++ if (m_bSecure) + { +- boost::asio::async_write(*mSslSocket, boost::asio::buffer(mWriteQ.front()), [this](auto &&err, auto) { cb_write_done(err); }); ++ boost::asio::async_write(*m_SslSocket, boost::asio::buffer(m_WriteQ.front()), ++ [this](const boost::system::error_code& error, std::size_t length) { ++ cb_write_done(error, length); ++ } ++ ); + } + else + #endif + { +- boost::asio::async_write(mSocket, boost::asio::buffer(mWriteQ.front()), [this](auto &&err, auto) { cb_write_done(err); }); ++ boost::asio::async_write(m_Socket, boost::asio::buffer(m_WriteQ.front()), ++ [this](const boost::system::error_code& error, std::size_t length) { ++ cb_write_done(error, length); ++ } ++ ); + } + } + +-void ASyncTCP::cb_write_done(const boost::system::error_code& error) ++void ASyncTCP::cb_write_done(const boost::system::error_code& error, std::size_t /*length*/) + { +- if (mIsTerminating) return; ++ if (m_bIsTerminating) return; + +- if (STATUS_OK(error)) +- { +- mWriteQ.pop_front(); +- do_write_start(); +- } +- else ++ if (STATUS_ERR(error)) + { + process_error(error); ++ return; + } +-} +- +-void ASyncTCP::process_connection() +-{ +- mIsConnected = true; +-#ifdef WWW_ENABLE_SSL +- +- if (!mSecure) +-#endif +- { +- // RK: only if non-secure +- boost::asio::socket_base::keep_alive option(true); +- mSocket.set_option(option); +- } +- OnConnect(); +- do_read_start(); ++ m_WriteQ.pop_front(); + do_write_start(); + } + + void ASyncTCP::process_error(const boost::system::error_code& error) + { + do_close(); +- if (mIsConnected) ++ if (m_bIsConnected) + { +- mIsConnected = false; ++ m_bIsConnected = false; + OnDisconnect(); + } + +@@ -369,20 +392,23 @@ void ASyncTCP::process_error(const boost::system::error_code& error) + reconnect_start_timer(); + } + +-/* timeout methods */ + void ASyncTCP::timeout_start_timer() + { +- if (0 == mTimeoutDelay) { ++ if (0 == m_iTimeoutDelay) { + return; + } + timeout_cancel_timer(); +- mTimeoutTimer.expires_from_now(boost::posix_time::seconds(mTimeoutDelay)); +- mTimeoutTimer.async_wait([this](auto &&err) { timeout_handler(err); }); ++ m_TimeoutTimer.expires_from_now(boost::posix_time::seconds(m_iTimeoutDelay)); ++ m_TimeoutTimer.async_wait( ++ [this](const boost::system::error_code& error) { ++ timeout_handler(error); ++ } ++ ); + } + + void ASyncTCP::timeout_cancel_timer() + { +- mTimeoutTimer.cancel(); ++ m_TimeoutTimer.cancel(); + } + + void ASyncTCP::timeout_handler(const boost::system::error_code& error) +@@ -397,5 +423,5 @@ void ASyncTCP::timeout_handler(const boost::system::error_code& error) + + void ASyncTCP::SetTimeout(const uint32_t Timeout) + { +- mTimeoutDelay = Timeout; ++ m_iTimeoutDelay = Timeout; + } +diff --git hardware/ASyncTCP.h hardware/ASyncTCP.h +index cf859bb..a8b3ae2 100644 +--- hardware/ASyncTCP.h ++++ hardware/ASyncTCP.h +@@ -3,39 +3,31 @@ + #include <stddef.h> // for size_t + #include <deque> // for write queue + #include <boost/asio/deadline_timer.hpp> // for deadline_timer +-#include <boost/asio/io_service.hpp> // for io_service ++#include <boost/asio/io_context.hpp> // for io_context + #include <boost/asio/strand.hpp> // for strand + #include <boost/asio/ip/tcp.hpp> // for tcp, tcp::endpoint, tcp::s... + #include <boost/asio/ssl.hpp> // for secure sockets + #include <boost/asio/ssl/stream.hpp> // for secure sockets + #include <exception> // for exception ++#include <optional> // for optional + + #define ASYNCTCP_THREAD_NAME "ASyncTCP" + #define DEFAULT_RECONNECT_TIME 30 + #define DEFAULT_TIMEOUT_TIME 60 + +-namespace boost +-{ +- namespace system +- { +- class error_code; +- } // namespace system +-} // namespace boost +- + class ASyncTCP + { +- protected: ++protected: + ASyncTCP(bool secure = false); + virtual ~ASyncTCP(); +- +- void connect(const std::string &hostname, uint16_t port); ++ void connect(const std::string& hostname, uint16_t port); + void disconnect(bool silent = true); +- void write(const std::string &msg); +- void write(const uint8_t *pData, size_t length); +- void SetReconnectDelay(int32_t Delay = DEFAULT_RECONNECT_TIME); ++ void write(const std::string& msg); ++ void write(const uint8_t* pData, size_t length); ++ void SetReconnectDelay(const int32_t Delay = DEFAULT_RECONNECT_TIME); + bool isConnected() + { +- return mIsConnected; ++ return m_bIsConnected; + }; + void terminate(bool silent = true); + void SetTimeout(uint32_t Timeout = DEFAULT_TIMEOUT_TIME); +@@ -43,65 +35,61 @@ class ASyncTCP + // Callback interface to implement in derived classes + virtual void OnConnect() = 0; + virtual void OnDisconnect() = 0; +- virtual void OnData(const uint8_t *pData, size_t length) = 0; +- virtual void OnError(const boost::system::error_code &error) = 0; +- +- boost::asio::io_service mIos; // protected to allow derived classes to attach timers etc. ++ virtual void OnData(const uint8_t* pData, size_t length) = 0; ++ virtual void OnError(const boost::system::error_code& error) = 0; + +- private: +- void cb_resolve_done(const boost::system::error_code &err, boost::asio::ip::tcp::resolver::iterator endpoint_iterator); +- void connect_start(boost::asio::ip::tcp::resolver::iterator &endpoint_iterator); +- void cb_connect_done(const boost::system::error_code &error, boost::asio::ip::tcp::resolver::iterator &endpoint_iterator); ++ boost::asio::io_context m_io_context; // protected to allow derived classes to attach timers etc. ++private: ++ void handle_resolve(const boost::system::error_code& ec, const boost::asio::ip::tcp::resolver::results_type &results); ++ void handle_connect(const boost::system::error_code& error, const boost::asio::ip::tcp::endpoint& endpoint); + #ifdef WWW_ENABLE_SSL +- void cb_handshake_done(const boost::system::error_code &error); ++ void cb_handshake_done(const boost::system::error_code& error); + #endif + +- /* timeout methods */ + void timeout_start_timer(); + void timeout_cancel_timer(); + void reconnect_start_timer(); +- void timeout_handler(const boost::system::error_code &error); ++ void timeout_handler(const boost::system::error_code& error); + +- void cb_reconnect_start(const boost::system::error_code &error); ++ void cb_reconnect_start(const boost::system::error_code& error); + + void do_close(); + + void do_read_start(); +- void cb_read_done(const boost::system::error_code &error, size_t bytes_transferred); ++ void cb_read_done(const boost::system::error_code& error, size_t bytes_transferred); + +- void cb_write_queue(const std::string &msg); ++ void cb_write_queue(const std::string& msg); + void do_write_start(); +- void cb_write_done(const boost::system::error_code &error); ++ void cb_write_done(const boost::system::error_code& error, size_t length); + + void process_connection(); +- void process_error(const boost::system::error_code &error); ++ void process_error(const boost::system::error_code& error); + +- bool mIsConnected = false; +- bool mIsReconnecting = false; +- bool mIsTerminating = false; ++ bool m_bIsConnected = false; ++ bool m_bIsReconnecting = false; ++ bool m_bIsTerminating = false; + +- boost::asio::io_service::strand mSendStrand{ mIos }; +- std::deque<std::string> mWriteQ; // we need a write queue to allow concurrent writes ++ boost::asio::io_context::strand m_SendStrand; ++ std::deque<std::string> m_WriteQ; // we need a write queue to allow concurrent writes + + uint8_t* m_pRXBuffer = nullptr; + +- int mReconnectDelay = DEFAULT_RECONNECT_TIME; +- int mTimeoutDelay = 0; +- boost::asio::deadline_timer mReconnectTimer{ mIos }; +- boost::asio::deadline_timer mTimeoutTimer{ mIos }; ++ int m_iReconnectDelay = DEFAULT_RECONNECT_TIME; ++ int m_iTimeoutDelay = 0; ++ boost::asio::deadline_timer m_ReconnectTimer; ++ boost::asio::deadline_timer m_TimeoutTimer; + +- std::shared_ptr<std::thread> mTcpthread; +- std::shared_ptr<boost::asio::io_service::work> mTcpwork; ++ std::shared_ptr<std::thread> m_Tcpthread; ++ std::optional<boost::asio::executor_work_guard<boost::asio::io_context::executor_type>> m_Tcpwork; + + #ifdef WWW_ENABLE_SSL +- const bool mSecure; ++ const bool m_bSecure; + boost::asio::ssl::context mContext{ boost::asio::ssl::context::sslv23 }; +- std::shared_ptr<boost::asio::ssl::stream<boost::asio::ip::tcp::socket>> mSslSocket; // the ssl socket ++ std::shared_ptr<boost::asio::ssl::stream<boost::asio::ip::tcp::socket>> m_SslSocket; + #endif +- boost::asio::ip::tcp::socket mSocket{ mIos }; +- boost::asio::ip::tcp::endpoint mEndPoint; +- boost::asio::ip::tcp::resolver mResolver{ mIos }; ++ boost::asio::ip::tcp::socket m_Socket; ++ boost::asio::ip::tcp::resolver m_Resolver; + +- std::string mIp; +- uint16_t mPort; ++ std::string m_IP; ++ uint16_t m_Port; + }; +diff --git hardware/Arilux.cpp hardware/Arilux.cpp +index 400f5a3..20bc373 100644 +--- hardware/Arilux.cpp ++++ hardware/Arilux.cpp +@@ -79,7 +79,7 @@ void Arilux::InsertUpdateSwitch(const std::string &lightName, const int subType, + { + uint32_t sID; + try { +- sID = boost::asio::ip::address_v4::from_string(location).to_ulong(); ++ sID = boost::asio::ip::make_address_v4(location).to_uint(); + } catch (const std::exception &e) { + Log(LOG_ERROR, "Bad IP address: %s (%s)", location.c_str(), e.what()); + return; +@@ -112,8 +112,8 @@ bool Arilux::SendTCPCommand(uint32_t ip,std::vector<unsigned char> &command) + sum = sum & 0xFF; + command.push_back((unsigned char)sum); + +- boost::asio::io_service io_service; +- boost::asio::ip::tcp::socket sendSocket(io_service); ++ boost::asio::io_context io_context; ++ boost::asio::ip::tcp::socket sendSocket(io_context); + boost::asio::ip::address_v4 address(ip); + boost::asio::ip::tcp::endpoint endpoint(address, 5577); + try +diff --git hardware/Kodi.cpp hardware/Kodi.cpp +index b528017..5ababf6 100644 +--- hardware/Kodi.cpp ++++ hardware/Kodi.cpp +@@ -143,14 +143,14 @@ _eNotificationTypes CKodiNode::CKodiStatus::NotificationType() + } + } + +-CKodiNode::CKodiNode(boost::asio::io_service *pIos, const int pHwdID, const int PollIntervalsec, const int pTimeoutMs, ++CKodiNode::CKodiNode(boost::asio::io_context *pIoc, const int pHwdID, const int PollIntervalsec, const int pTimeoutMs, + const std::string& pID, const std::string& pName, const std::string& pIP, const std::string& pPort) + { + m_Busy = false; + m_Stoppable = false; + m_PlaylistPosition = 0; + +- m_Ios = pIos; ++ m_Ioc = pIoc; + m_HwdID = pHwdID; + m_DevID = atoi(pID.c_str()); + sprintf(m_szDevID, "%X%02X%02X%02X", 0, 0, (m_DevID & 0xFF00) >> 8, m_DevID & 0xFF); +@@ -581,11 +581,10 @@ void CKodiNode::handleConnect() + { + m_iMissedPongs = 0; + boost::system::error_code ec; +- boost::asio::ip::tcp::resolver resolver(*m_Ios); +- boost::asio::ip::tcp::resolver::query query(m_IP, (m_Port[0] != '-' ? m_Port : m_Port.substr(1))); +- auto iter = resolver.resolve(query); +- boost::asio::ip::tcp::endpoint endpoint = *iter; +- m_Socket = new boost::asio::ip::tcp::socket(*m_Ios); ++ boost::asio::ip::tcp::resolver resolver(*m_Ioc); ++ auto iter = resolver.resolve(m_IP, (m_Port[0] != '-' ? m_Port : m_Port.substr(1))); ++ boost::asio::ip::tcp::endpoint endpoint = *iter.begin(); ++ m_Socket = new boost::asio::ip::tcp::socket(*m_Ioc); + m_Socket->connect(endpoint, ec); + if (!ec) + { +@@ -975,19 +974,19 @@ void CKodi::Do_Work() + _log.Log(LOG_NORM, "Kodi: (%s) - Restarting thread.", node->m_Name.c_str()); + boost::thread *tAsync = new boost::thread(&CKodiNode::Do_Work, node); + SetThreadName(tAsync->native_handle(), "KodiNode"); +- m_ios.stop(); ++ m_ioc.stop(); + } + if (node->IsOn()) + bWorkToDo = true; + } + +- if (bWorkToDo && m_ios.stopped()) // make sure that there is a boost thread to service i/o operations ++ if (bWorkToDo && m_ioc.stopped()) // make sure that there is a boost thread to service i/o operations + { +- m_ios.reset(); ++ m_ioc.restart(); + // Note that this is the only thread that handles async i/o so we don't + // need to worry about locking or concurrency issues when processing messages + _log.Log(LOG_NORM, "Kodi: Restarting I/O service thread."); +- boost::thread bt([p = &m_ios] { p->run(); }); ++ boost::thread bt([p = &m_ioc] { p->run(); }); + SetThreadName(bt.native_handle(), "KodiIO"); + } + } +@@ -1138,7 +1137,7 @@ void CKodi::ReloadNodes() + { + UnloadNodes(); + +- m_ios.reset(); // in case this is not the first time in ++ m_ioc.restart(); // in case this is not the first time in + + std::vector<std::vector<std::string> > result; + result = m_sql.safe_query("SELECT ID,Name,MacAddress,Timeout FROM WOLNodes WHERE (HardwareID==%d)", m_HwdID); +@@ -1149,7 +1148,7 @@ void CKodi::ReloadNodes() + // create a vector to hold the nodes + for (const auto &sd : result) + { +- auto pNode = std::make_shared<CKodiNode>(&m_ios, m_HwdID, m_iPollInterval, m_iPingTimeoutms, sd[0], sd[1], sd[2], sd[3]); ++ auto pNode = std::make_shared<CKodiNode>(&m_ioc, m_HwdID, m_iPollInterval, m_iPingTimeoutms, sd[0], sd[1], sd[2], sd[3]); + m_pNodes.push_back(pNode); + } + // start the threads to control each kodi +@@ -1161,7 +1160,7 @@ void CKodi::ReloadNodes() + } + sleep_milliseconds(100); + _log.Log(LOG_NORM, "Kodi: Starting I/O service thread."); +- boost::thread bt([p = &m_ios] { p->run(); }); ++ boost::thread bt([p = &m_ioc] { p->run(); }); + SetThreadName(bt.native_handle(), "KodiIO"); + } + } +@@ -1170,10 +1169,10 @@ void CKodi::UnloadNodes() + { + std::lock_guard<std::mutex> l(m_mutex); + +- m_ios.stop(); // stop the service if it is running ++ m_ioc.stop(); // stop the service if it is running + sleep_milliseconds(100); + +- while (((!m_pNodes.empty()) || (!m_ios.stopped()))) ++ while (((!m_pNodes.empty()) || (!m_ioc.stopped()))) + { + for (auto itt = m_pNodes.begin(); itt != m_pNodes.end(); ++itt) + { +diff --git hardware/Kodi.h hardware/Kodi.h +index 14f331c..4435740 100644 +--- hardware/Kodi.h ++++ hardware/Kodi.h +@@ -150,7 +150,7 @@ class CKodiNode : public std::enable_shared_from_this<CKodiNode>, StoppableTask + }; + + public: +- CKodiNode(boost::asio::io_service *, int, int, int, const std::string &, const std::string &, const std::string &, const std::string &); ++ CKodiNode(boost::asio::io_context *, int, int, int, const std::string &, const std::string &, const std::string &, const std::string &); + ~CKodiNode(); + void Do_Work(); + void SendCommand(const std::string &); +@@ -207,7 +207,7 @@ class CKodiNode : public std::enable_shared_from_this<CKodiNode>, StoppableTask + int m_iPollIntSec; + int m_iMissedPongs; + std::string m_sLastMessage; +- boost::asio::io_service *m_Ios; ++ boost::asio::io_context *m_Ioc; + boost::asio::ip::tcp::socket *m_Socket; + std::array<char, 256> m_Buffer; + }; +@@ -243,5 +243,5 @@ class CKodi : public CDomoticzHardwareBase + int m_iPingTimeoutms; + std::shared_ptr<std::thread> m_thread; + std::mutex m_mutex; +- boost::asio::io_service m_ios; ++ boost::asio::io_context m_ioc; + }; +diff --git hardware/MQTTAutoDiscover.h hardware/MQTTAutoDiscover.h +index 0832664..1501d6f 100644 +--- hardware/MQTTAutoDiscover.h ++++ hardware/MQTTAutoDiscover.h +@@ -176,7 +176,7 @@ public: + void on_message(const struct mosquitto_message *message) override; + void on_connect(int rc) override; + void on_disconnect(int rc) override; +- void on_going_down(); ++ void on_going_down() override; + private: + void InsertUpdateSwitch(_tMQTTASensor* pSensor); + +diff --git hardware/PanasonicTV.cpp hardware/PanasonicTV.cpp +index fc57d34..ce20565 100644 +--- hardware/PanasonicTV.cpp ++++ hardware/PanasonicTV.cpp +@@ -356,18 +356,17 @@ std::string CPanasonicNode::handleWriteAndRead(const std::string& pMessageToSend + { + + _log.Debug(DEBUG_HARDWARE, "Panasonic Plugin: (%s) Handling message: '%s'.", m_Name.c_str(), pMessageToSend.c_str()); +- boost::asio::io_service io_service; ++ boost::asio::io_context io_context; + // Get a list of endpoints corresponding to the server name. +- boost::asio::ip::tcp::resolver resolver(io_service); +- boost::asio::ip::tcp::resolver::query query(m_IP, (m_Port[0] != '-' ? m_Port : m_Port.substr(1))); +- auto iter = resolver.resolve(query); ++ boost::asio::ip::tcp::resolver resolver(io_context); ++ auto endpoints = resolver.resolve(m_IP, (m_Port[0] != '-' ? m_Port : m_Port.substr(1))); ++ auto iter = endpoints.begin(); + boost::asio::ip::tcp::endpoint endpoint = *iter; +- boost::asio::ip::tcp::resolver::iterator end; + + // Try each endpoint until we successfully establish a connection. +- boost::asio::ip::tcp::socket socket(io_service); ++ boost::asio::ip::tcp::socket socket(io_context); + boost::system::error_code error = boost::asio::error::host_not_found; +- while (error && iter != end) ++ while (error && iter != endpoints.end()) + { + socket.close(); + if (handleConnect(socket, *iter, error)) +@@ -1060,7 +1059,7 @@ void CPanasonic::ReloadNodes() + { + UnloadNodes(); + +- //m_ios.reset(); // in case this is not the first time in ++ //m_ioc.reset(); // in case this is not the first time in + + std::vector<std::vector<std::string> > result; + result = m_sql.safe_query("SELECT ID,Name,MacAddress,Timeout FROM WOLNodes WHERE (HardwareID==%d)", m_HwdID); +@@ -1088,10 +1087,10 @@ void CPanasonic::UnloadNodes() + { + std::lock_guard<std::mutex> l(m_mutex); + +- m_ios.stop(); // stop the service if it is running ++ m_ioc.stop(); // stop the service if it is running + sleep_milliseconds(100); + +- while (((!m_pNodes.empty()) || (!m_ios.stopped()))) ++ while (((!m_pNodes.empty()) || (!m_ioc.stopped()))) + { + for (auto itt = m_pNodes.begin(); itt != m_pNodes.end(); ++itt) + { +diff --git hardware/PanasonicTV.h hardware/PanasonicTV.h +index b0a94ff..30e1ca1 100644 +--- hardware/PanasonicTV.h ++++ hardware/PanasonicTV.h +@@ -39,7 +39,7 @@ class CPanasonic : public CDomoticzHardwareBase + bool m_bTryIfOff; + std::shared_ptr<std::thread> m_thread; + std::mutex m_mutex; +- boost::asio::io_service m_ios; ++ boost::asio::io_context m_ioc; + + friend class CPanasonicNode; + }; +diff --git hardware/Pinger.cpp hardware/Pinger.cpp +index a66c7a1..e070b29 100644 +--- hardware/Pinger.cpp ++++ hardware/Pinger.cpp +@@ -21,23 +21,23 @@ + #if BOOST_VERSION >= 107000 + #define GET_IO_SERVICE(s) ((boost::asio::io_context&)(s).get_executor().context()) + #else +-#define GET_IO_SERVICE(s) ((s).get_io_service()) ++#define GET_IO_SERVICE(s) ((s).get_io_context()) + #endif + + class pinger + : private domoticz::noncopyable + { + public: +- pinger(boost::asio::io_service &io_service, const char *destination, const int iPingTimeoutms) ++ pinger(boost::asio::io_context &io_context, const char *destination, const int iPingTimeoutms) + : num_replies_(0) + , m_PingState(false) +- , resolver_(io_service) +- , socket_(io_service, boost::asio::ip::icmp::v4()) +- , timer_(io_service) ++ , resolver_(io_context) ++ , socket_(io_context, boost::asio::ip::icmp::v4()) ++ , timer_(io_context) + , sequence_number_(0) + { +- boost::asio::ip::icmp::resolver::query query(boost::asio::ip::icmp::v4(), destination, ""); +- destination_ = *resolver_.resolve(query); ++ auto endpoints = resolver_.resolve(boost::asio::ip::icmp::v4(), destination, ""); ++ destination_ = endpoints.begin()->endpoint(); + + num_tries_ = 1; + PingTimeoutms_ = iPingTimeoutms; +@@ -332,11 +332,11 @@ void CPinger::ReloadNodes() + void CPinger::Do_Ping_Worker(const PingNode &Node) + { + bool bPingOK = false; +- boost::asio::io_service io_service; ++ boost::asio::io_context io_context; + try + { +- pinger p(io_service, Node.IP.c_str(), m_iPingTimeoutms); +- io_service.run(); ++ pinger p(io_context, Node.IP.c_str(), m_iPingTimeoutms); ++ io_context.run(); + if (p.m_PingState == true) + { + bPingOK = true; +diff --git hardware/RFLinkMQTT.h hardware/RFLinkMQTT.h +index e938328..72433b8 100644 +--- hardware/RFLinkMQTT.h ++++ hardware/RFLinkMQTT.h +@@ -46,7 +46,7 @@ protected: + boost::signals2::connection m_sDeviceReceivedConnection; + boost::signals2::connection m_sSwitchSceneConnection; + void selectNextIPAdress( void ); +- virtual bool WriteInt(const std::string &sendString); // override; ++ bool WriteInt(const std::string &sendString) override; + void Do_Work(); + virtual void SendHeartbeat(); + void StopMQTT(); +diff --git hardware/TCPProxy/tcpproxy_server.cpp hardware/TCPProxy/tcpproxy_server.cpp +index 8aceb0b..d77d4bf 100644 +--- hardware/TCPProxy/tcpproxy_server.cpp ++++ hardware/TCPProxy/tcpproxy_server.cpp +@@ -18,12 +18,12 @@ + #if BOOST_VERSION >= 107000 + #define GET_IO_SERVICE(s) ((boost::asio::io_context&)(s).get_executor().context()) + #else +-#define GET_IO_SERVICE(s) ((s).get_io_service()) ++#define GET_IO_SERVICE(s) ((s).get_io_context()) + #endif + + namespace tcp_proxy + { +- bridge::bridge(boost::asio::io_service& ios) ++ bridge::bridge(boost::asio::io_context& ios) + : downstream_socket_(ios), + upstream_socket_(ios) + { +@@ -44,7 +44,7 @@ namespace tcp_proxy + boost::asio::ip::tcp::endpoint end; + + +- boost::asio::io_service &ios= GET_IO_SERVICE(downstream_socket_); ++ boost::asio::io_context &ios= GET_IO_SERVICE(downstream_socket_); + boost::asio::ip::tcp::resolver resolver(ios); + boost::asio::ip::tcp::resolver::query query(upstream_host, upstream_port, boost::asio::ip::resolver_query_base::numeric_service); + auto i = resolver.resolve(query); +@@ -137,10 +137,10 @@ namespace tcp_proxy + } + //Acceptor Class + acceptor::acceptor(const std::string &local_host, unsigned short local_port, const std::string &upstream_host, const std::string &upstream_port) +- : io_service_() ++ : io_context_() + , m_bDoStop(false) + , localhost_address(boost::asio::ip::address_v4::from_string(local_host)) +- , acceptor_(io_service_, boost::asio::ip::tcp::endpoint(localhost_address, local_port)) ++ , acceptor_(io_context_, boost::asio::ip::tcp::endpoint(localhost_address, local_port)) + , upstream_host_(upstream_host) + , upstream_port_(upstream_port) + { +@@ -151,7 +151,7 @@ namespace tcp_proxy + { + try + { +- session_ = std::make_shared<bridge>(io_service_); ++ session_ = std::make_shared<bridge>(io_context_); + session_->sDownstreamData.connect([this](auto d, auto l) { OnDownstreamData(d, l); }); + session_->sUpstreamData.connect([this](auto d, auto l) { OnUpstreamData(d, l); }); + +@@ -169,11 +169,11 @@ namespace tcp_proxy + m_bDoStop=false; + + accept_connections(); +- // The io_service::run() call will block until all asynchronous operations ++ // The io_context::run() call will block until all asynchronous operations + // have finished. While the server is running, there is always at least one + // asynchronous operation outstanding: the asynchronous accept call waiting + // for new incoming connections. +- io_service_.run(); ++ io_context_.run(); + return true; + } + bool acceptor::stop() +@@ -181,14 +181,14 @@ namespace tcp_proxy + m_bDoStop=true; + // Post a call to the stop function so that server::stop() is safe to call + // from any thread. +- io_service_.post([this] { handle_stop(); }); ++ io_context_.post([this] { handle_stop(); }); + return true; + } + + void acceptor::handle_stop() + { + // The server is stopped by canceling all outstanding asynchronous +- // operations. Once all operations have finished the io_service::run() call ++ // operations. Once all operations have finished the io_context::run() call + // will exit. + acceptor_.close(); + //connection_manager_.stop_all(); +diff --git hardware/TCPProxy/tcpproxy_server.h hardware/TCPProxy/tcpproxy_server.h +index 3d1a150..148e65f 100644 +--- hardware/TCPProxy/tcpproxy_server.h ++++ hardware/TCPProxy/tcpproxy_server.h +@@ -10,7 +10,7 @@ namespace tcp_proxy + class bridge : public std::enable_shared_from_this<bridge> + { + public: +- explicit bridge(boost::asio::io_service& ios); ++ explicit bridge(boost::asio::io_context& ios); + boost::asio::ip::tcp::socket& downstream_socket(); + boost::asio::ip::tcp::socket& upstream_socket(); + +@@ -52,8 +52,8 @@ namespace tcp_proxy + void OnUpstreamData(const unsigned char *pData, size_t Len); + void OnDownstreamData(const unsigned char *pData, size_t Len); + +- /// The io_service used to perform asynchronous operations. +- boost::asio::io_service io_service_; ++ /// The io_context used to perform asynchronous operations. ++ boost::asio::io_context io_context_; + bool m_bDoStop; + boost::asio::ip::address_v4 localhost_address; + boost::asio::ip::tcp::acceptor acceptor_; +diff --git hardware/XiaomiDeviceSupport.h hardware/XiaomiDeviceSupport.h +index fad7884..4a76d96 100644 +--- hardware/XiaomiDeviceSupport.h ++++ hardware/XiaomiDeviceSupport.h +@@ -15,6 +15,7 @@ + class XiaomiDeviceSupport + { + public: ++ virtual ~XiaomiDeviceSupport() = default; + /** + * Method to get 'model' corresponding to the ID of the device in case the Gateway API didn't provide it. + * +diff --git hardware/XiaomiGateway.cpp hardware/XiaomiGateway.cpp +index 66acdc5..fb4387a 100644 +--- hardware/XiaomiGateway.cpp ++++ hardware/XiaomiGateway.cpp +@@ -538,12 +538,12 @@ bool XiaomiGateway::SendMessageToGateway(const std::string &controlmessage) + { + std::string message = controlmessage; + bool result = true; +- boost::asio::io_service io_service; +- boost::asio::ip::udp::socket socket_(io_service, boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), 0)); ++ boost::asio::io_context io_context; ++ boost::asio::ip::udp::socket socket_(io_context, boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), 0)); + stdreplace(message, "@gatewaykey", GetGatewayKey()); + std::shared_ptr<std::string> message1(new std::string(message)); + boost::asio::ip::udp::endpoint remote_endpoint_; +- remote_endpoint_ = boost::asio::ip::udp::endpoint(boost::asio::ip::address::from_string(m_GatewayIp), 9898); ++ remote_endpoint_ = boost::asio::ip::udp::endpoint(boost::asio::ip::make_address_v4(m_GatewayIp), 9898); + socket_.send_to(boost::asio::buffer(*message1), remote_endpoint_); + sleep_milliseconds(150); // TODO: reduce or remove sleep + std::array<char, 512> recv_buffer_; +@@ -1015,15 +1015,14 @@ bool XiaomiGateway::StopHardware() + void XiaomiGateway::Do_Work() + { + Log(LOG_STATUS, "XiaomiGateway (ID=%d): Worker started...", m_HwdID); +- boost::asio::io_service io_service; ++ boost::asio::io_context io_context; + // Find the local ip address that is similar to the xiaomi gateway + try + { +- boost::asio::ip::udp::resolver resolver(io_service); +- boost::asio::ip::udp::resolver::query query(boost::asio::ip::udp::v4(), m_GatewayIp, ""); +- auto endpoints = resolver.resolve(query); +- boost::asio::ip::udp::endpoint ep = *endpoints; +- boost::asio::ip::udp::socket socket(io_service); ++ boost::asio::ip::udp::resolver resolver(io_context); ++ auto endpoints = resolver.resolve(boost::asio::ip::udp::v4(), m_GatewayIp, ""); ++ boost::asio::ip::udp::endpoint ep = *endpoints.begin(); ++ boost::asio::ip::udp::socket socket(io_context); + socket.connect(ep); + boost::asio::ip::address addr = socket.local_endpoint().address(); + std::string compareIp = m_GatewayIp.substr(0, (m_GatewayIp.length() - 3)); +@@ -1073,11 +1072,11 @@ void XiaomiGateway::Do_Work() + } + } + +- XiaomiGateway::xiaomi_udp_server udp_server(io_service, m_HwdID, m_GatewayIp, m_LocalIp, m_ListenPort9898, m_OutputMessage, m_IncludeVoltage, this); ++ XiaomiGateway::xiaomi_udp_server udp_server(io_context, m_HwdID, m_GatewayIp, m_LocalIp, m_ListenPort9898, m_OutputMessage, m_IncludeVoltage, this); + boost::thread bt; + if (m_ListenPort9898) + { +- bt = boost::thread([p = &io_service] { p->run(); }); ++ bt = boost::thread([p = &io_context] { p->run(); }); + SetThreadName(bt.native_handle(), "XiaomiGatewayIO"); + } + +@@ -1094,7 +1093,7 @@ void XiaomiGateway::Do_Work() + // Log(LOG_STATUS, "sec_counter %d", sec_counter); + } + } +- io_service.stop(); ++ io_context.stop(); + if (bt.joinable()) + { + bt.join(); +@@ -1178,9 +1177,9 @@ unsigned int XiaomiGateway::GetShortID(const std::string &nodeid) + return sID; + } + +-XiaomiGateway::xiaomi_udp_server::xiaomi_udp_server(boost::asio::io_service &io_service, int m_HwdID, const std::string &gatewayIp, const std::string &localIp, const bool listenPort9898, ++XiaomiGateway::xiaomi_udp_server::xiaomi_udp_server(boost::asio::io_context &io_context, int m_HwdID, const std::string &gatewayIp, const std::string &localIp, const bool listenPort9898, + const bool outputMessage, const bool includeVoltage, XiaomiGateway *parent) +- : socket_(io_service, boost::asio::ip::udp::v4()) ++ : socket_(io_context, boost::asio::ip::udp::v4()) + { + m_HardwareID = m_HwdID; + m_XiaomiGateway = parent; +@@ -1196,8 +1195,8 @@ XiaomiGateway::xiaomi_udp_server::xiaomi_udp_server(boost::asio::io_service &io_ + if (!m_localip.empty()) + { + boost::system::error_code ec; +- boost::asio::ip::address listen_addr = boost::asio::ip::address::from_string(m_localip, ec); +- boost::asio::ip::address mcast_addr = boost::asio::ip::address::from_string("224.0.0.50", ec); ++ boost::asio::ip::address listen_addr = boost::asio::ip::make_address_v4(m_localip, ec); ++ boost::asio::ip::address mcast_addr = boost::asio::ip::make_address_v4("224.0.0.50", ec); + boost::asio::ip::udp::endpoint listen_endpoint(mcast_addr, 9898); + + socket_.bind(boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), 9898)); +@@ -1213,9 +1212,9 @@ XiaomiGateway::xiaomi_udp_server::xiaomi_udp_server(boost::asio::io_service &io_ + socket_.bind(boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), 9898)); + std::shared_ptr<std::string> message(new std::string(R"({"cmd":"whois"})")); + boost::asio::ip::udp::endpoint remote_endpoint; +- remote_endpoint = boost::asio::ip::udp::endpoint(boost::asio::ip::address::from_string("224.0.0.50"), 4321); ++ remote_endpoint = boost::asio::ip::udp::endpoint(boost::asio::ip::make_address_v4("224.0.0.50"), 4321); + socket_.send_to(boost::asio::buffer(*message), remote_endpoint); +- socket_.set_option(boost::asio::ip::multicast::join_group(boost::asio::ip::address::from_string("224.0.0.50"))); ++ socket_.set_option(boost::asio::ip::multicast::join_group(boost::asio::ip::make_address_v4("224.0.0.50"))); + } + } + catch (const boost::system::system_error &ex) +@@ -1720,7 +1719,7 @@ void XiaomiGateway::xiaomi_udp_server::handle_receive(const boost::system::error + message.append("\"}"); + std::shared_ptr<std::string> message1(new std::string(message)); + boost::asio::ip::udp::endpoint remote_endpoint; +- remote_endpoint = boost::asio::ip::udp::endpoint(boost::asio::ip::address::from_string(TrueGateway->GetGatewayIp().c_str()), 9898); ++ remote_endpoint = boost::asio::ip::udp::endpoint(boost::asio::ip::make_address_v4(TrueGateway->GetGatewayIp().c_str()), 9898); + socket_.send_to(boost::asio::buffer(*message1), remote_endpoint); + } + } +@@ -1746,7 +1745,7 @@ void XiaomiGateway::xiaomi_udp_server::handle_receive(const boost::system::error + std::string message = R"({"cmd" : "get_id_list"})"; + std::shared_ptr<std::string> message2(new std::string(message)); + boost::asio::ip::udp::endpoint remote_endpoint; +- remote_endpoint = boost::asio::ip::udp::endpoint(boost::asio::ip::address::from_string(TrueGateway->GetGatewayIp().c_str()), 9898); ++ remote_endpoint = boost::asio::ip::udp::endpoint(boost::asio::ip::make_address_v4(TrueGateway->GetGatewayIp().c_str()), 9898); + socket_.send_to(boost::asio::buffer(*message2), remote_endpoint); + } + } +diff --git hardware/XiaomiGateway.h hardware/XiaomiGateway.h +index dce4b34..1f552f3 100644 +--- hardware/XiaomiGateway.h ++++ hardware/XiaomiGateway.h +@@ -100,7 +100,7 @@ class XiaomiGateway : public CDomoticzHardwareBase + class xiaomi_udp_server + { + public: +- xiaomi_udp_server(boost::asio::io_service &io_service, int m_HwdID, const std::string &gatewayIp, const std::string &localIp, bool listenPort9898, bool outputMessage, ++ xiaomi_udp_server(boost::asio::io_context &io_context, int m_HwdID, const std::string &gatewayIp, const std::string &localIp, bool listenPort9898, bool outputMessage, + bool includeVolage, XiaomiGateway *parent); + ~xiaomi_udp_server() = default; + +diff --git hardware/Yeelight.cpp hardware/Yeelight.cpp +index cdb7889..e5fe8fc 100644 +--- hardware/Yeelight.cpp ++++ hardware/Yeelight.cpp +@@ -93,8 +93,8 @@ void Yeelight::Do_Work() + + try + { +- boost::asio::io_service io_service; +- udp_server server(io_service, m_HwdID); ++ boost::asio::io_context io_context; ++ udp_server server(io_context, m_HwdID); + int sec_counter = YEELIGHT_POLL_INTERVAL - 5; + while (!IsStopRequested(1000)) + { +@@ -105,7 +105,7 @@ void Yeelight::Do_Work() + if (sec_counter % 60 == 0) //poll YeeLights every minute + { + server.start_send(); +- io_service.run(); ++ io_context.run(); + } + } + } +@@ -227,12 +227,11 @@ bool Yeelight::WriteToHardware(const char *pdata, const unsigned char length) + + try + { +- boost::asio::io_service io_service; +- boost::asio::ip::tcp::socket sendSocket(io_service); +- boost::asio::ip::tcp::resolver resolver(io_service); +- boost::asio::ip::tcp::resolver::query query(boost::asio::ip::tcp::v4(), szTmp, "55443"); +- auto iterator = resolver.resolve(query); +- boost::asio::connect(sendSocket, iterator); ++ boost::asio::io_context io_context; ++ boost::asio::ip::tcp::socket sendSocket(io_context); ++ boost::asio::ip::tcp::resolver resolver(io_context); ++ auto endpoints = resolver.resolve(boost::asio::ip::tcp::v4(), szTmp, "55443"); ++ boost::asio::connect(sendSocket, endpoints); + + std::string message; + std::string message2; +@@ -404,8 +403,8 @@ bool Yeelight::WriteToHardware(const char *pdata, const unsigned char length) + std::array<char, 1024> recv_buffer_; + int hardwareId; + +-Yeelight::udp_server::udp_server(boost::asio::io_service& io_service, int m_HwdID) +- : socket_(io_service, boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), 0)) ++Yeelight::udp_server::udp_server(boost::asio::io_context& io_context, int m_HwdID) ++ : socket_(io_context, boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), 0)) + { + socket_.set_option(boost::asio::ip::udp::socket::reuse_address(true)); + socket_.set_option(boost::asio::socket_base::broadcast(true)); +@@ -421,7 +420,7 @@ void Yeelight::udp_server::start_send() + //Log(LOG_STATUS, "start_send.................."); + std::shared_ptr<std::string> message( + new std::string(testMessage)); +- remote_endpoint_ = boost::asio::ip::udp::endpoint(boost::asio::ip::address::from_string("239.255.255.250"), 1982); ++ remote_endpoint_ = boost::asio::ip::udp::endpoint(boost::asio::ip::make_address_v4("239.255.255.250"), 1982); + socket_.send_to(boost::asio::buffer(*message), remote_endpoint_); + sleep_milliseconds(150); + start_receive(); +diff --git hardware/Yeelight.h hardware/Yeelight.h +index fb03c28..3b7b4c3 100644 +--- hardware/Yeelight.h ++++ hardware/Yeelight.h +@@ -25,7 +25,7 @@ class Yeelight : public CDomoticzHardwareBase + class udp_server + { + public: +- udp_server(boost::asio::io_service &io_service, int m_HwdID); ++ udp_server(boost::asio::io_context &io_context, int m_HwdID); + boost::asio::ip::udp::socket socket_; + boost::asio::ip::udp::endpoint remote_endpoint_; + void start_send(); +diff --git hardware/plugins/PluginManager.cpp hardware/plugins/PluginManager.cpp +index 2813112..423edbb 100644 +--- hardware/plugins/PluginManager.cpp ++++ hardware/plugins/PluginManager.cpp +@@ -64,7 +64,7 @@ namespace Plugins { + // PyMODINIT_FUNC PyInit_DomoticzEvents(void); + + std::mutex PluginMutex; // controls accessto the message queue and m_pPlugins map +- boost::asio::io_service ios; ++ boost::asio::io_context ios; + + std::map<int, CDomoticzHardwareBase*> CPluginSystem::m_pPlugins; + std::map<std::string, std::string> CPluginSystem::m_PluginXml; +@@ -315,7 +315,7 @@ namespace Plugins { + // Create initial IO Service thread + ios.restart(); + // Create some work to keep IO Service alive +- auto work = boost::asio::io_service::work(ios); ++ auto work = boost::asio::make_work_guard(ios); + boost::thread_group BoostThreads; + for (int i = 0; i < 1; i++) + { +diff --git hardware/plugins/PluginTransports.cpp hardware/plugins/PluginTransports.cpp +index 52d14e7..f7ace0f 100644 +--- hardware/plugins/PluginTransports.cpp ++++ hardware/plugins/PluginTransports.cpp +@@ -116,15 +116,14 @@ namespace Plugins { + m_bConnected = false; + m_Socket = new boost::asio::ip::tcp::socket(ios); + +- boost::system::error_code ec; +- boost::asio::ip::tcp::resolver::query query(m_IP, m_Port); +- auto iter = m_Resolver.resolve(query); +- boost::asio::ip::tcp::endpoint endpoint = *iter; +- + // + // Async resolve/connect based on http://www.boost.org/doc/libs/1_45_0/doc/html/boost_asio/example/http/client/async_client.cpp + // +- m_Resolver.async_resolve(query, [this](auto &&err, auto end) { handleAsyncResolve(err, end); }); ++ m_Resolver.async_resolve(m_IP, m_Port, ++ [this](auto &&err, auto endpoints) { ++ handleAsyncResolve(err, endpoints); ++ } ++ ); + } + } + catch (std::exception& e) +@@ -139,15 +138,14 @@ namespace Plugins { + return true; + } + +- void CPluginTransportTCP::handleAsyncResolve(const boost::system::error_code & err, boost::asio::ip::tcp::resolver::iterator endpoint_iterator) ++ void CPluginTransportTCP::handleAsyncResolve(const boost::system::error_code & err, boost::asio::ip::tcp::resolver::results_type endpoints) + { + CPlugin* pPlugin = ((CConnection*)m_pConnection)->pPlugin; + AccessPython Guard(pPlugin, "CPluginTransportTCP::handleAsyncResolve"); + + if (!err) + { +- boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator; +- m_Socket->async_connect(endpoint, [this, endpoint_iterator](auto &&err) mutable { handleAsyncConnect(err, ++endpoint_iterator); }); ++ boost::asio::async_connect(*m_Socket, endpoints, [this](auto &&err, const boost::asio::ip::tcp::endpoint &endpoint) mutable { handleAsyncConnect(err, endpoint); }); + } + else + { +@@ -169,7 +167,7 @@ namespace Plugins { + } + } + +- void CPluginTransportTCP::handleAsyncConnect(const boost::system::error_code &err, const boost::asio::ip::tcp::resolver::iterator &endpoint_iterator) ++ void CPluginTransportTCP::handleAsyncConnect(const boost::system::error_code &err, const boost::asio::ip::tcp::endpoint &endpoint) + { + CPlugin* pPlugin = ((CConnection*)m_pConnection)->pPlugin; + AccessPython Guard(pPlugin, "CPluginTransportTCP::handleAsyncResolve"); +@@ -481,7 +479,7 @@ namespace Plugins { + } + }; + +- void CPluginTransportTCPSecure::handleAsyncConnect(const boost::system::error_code &err, const boost::asio::ip::tcp::resolver::iterator &endpoint_iterator) ++ void CPluginTransportTCPSecure::handleAsyncConnect(const boost::system::error_code &err, const boost::asio::ip::tcp::endpoint &endpoint) + { + CPlugin* pPlugin = ((CConnection*)m_pConnection)->pPlugin; + if (!pPlugin) return; +@@ -498,7 +496,7 @@ namespace Plugins { + SSL_set_tlsext_host_name(m_TLSSock->native_handle(), m_IP.c_str()); // Enable SNI + + m_TLSSock->set_verify_mode(boost::asio::ssl::verify_none); +- m_TLSSock->set_verify_callback(boost::asio::ssl::rfc2818_verification(m_IP)); ++ m_TLSSock->set_verify_callback(boost::asio::ssl::host_name_verification(m_IP)); + // m_TLSSock->set_verify_callback([this](auto v, auto &c){ VerifyCertificate(v, c);}); + try + { +@@ -648,7 +646,7 @@ namespace Plugins { + // Hanlde multicast + if (((m_IP.substr(0, 4) >= "224.") && (m_IP.substr(0, 4) <= "239.")) || (m_IP.substr(0, 4) == "255.")) + { +- m_Socket->set_option(boost::asio::ip::multicast::join_group(boost::asio::ip::address::from_string(m_IP.c_str())), ec); ++ m_Socket->set_option(boost::asio::ip::multicast::join_group(boost::asio::ip::make_address_v4(m_IP.c_str())), ec); + m_Socket->set_option(boost::asio::ip::multicast::hops(2), ec); + } + } +@@ -764,7 +762,7 @@ namespace Plugins { + } + else + { +- boost::asio::ip::udp::endpoint destination(boost::asio::ip::address::from_string(m_IP.c_str()), atoi(m_Port.c_str())); ++ boost::asio::ip::udp::endpoint destination(boost::asio::ip::make_address_v4(m_IP.c_str()), atoi(m_Port.c_str())); + size_t bytes_transferred = m_Socket->send_to(boost::asio::buffer(pMessage, pMessage.size()), destination); + } + } +@@ -825,12 +823,14 @@ namespace Plugins { + } + }; + +- void CPluginTransportICMP::handleAsyncResolve(const boost::system::error_code &ec, const boost::asio::ip::icmp::resolver::iterator &endpoint_iterator) ++ void CPluginTransportICMP::handleAsyncResolve(const boost::system::error_code &ec, boost::asio::ip::icmp::resolver::results_type endpoints) + { + if (!ec) + { ++ m_Endpoint = endpoints.begin()->endpoint(); ++ m_IP = m_Endpoint.address().to_string(); ++ + m_bConnected = true; +- m_IP = endpoint_iterator->endpoint().address().to_string(); + + // Listen will fail (10022 - bad parameter) unless something has been sent(?) + std::string body("ping"); +@@ -857,15 +857,11 @@ namespace Plugins { + m_bConnecting = true; + m_Socket = new boost::asio::ip::icmp::socket(ios, boost::asio::ip::icmp::v4()); + +- boost::system::error_code ec; +- boost::asio::ip::icmp::resolver::query query(boost::asio::ip::icmp::v4(), m_IP, ""); +- auto iter = m_Resolver.resolve(query); +- m_Endpoint = *iter; +- +- // +- // Async resolve/connect based on http://www.boost.org/doc/libs/1_51_0/doc/html/boost_asio/example/icmp/ping.cpp +- // +- m_Resolver.async_resolve(query, [this](auto &&err, auto i) { handleAsyncResolve(err, i); }); ++ m_Resolver.async_resolve(boost::asio::ip::icmp::v4(), m_IP, "", ++ [this](auto &&err, auto endpoints) { ++ handleAsyncResolve(err, endpoints); ++ } ++ ); + } + else + { +diff --git hardware/plugins/PluginTransports.h hardware/plugins/PluginTransports.h +index c1cc1e3..79d5725 100644 +--- hardware/plugins/PluginTransports.h ++++ hardware/plugins/PluginTransports.h +@@ -6,7 +6,7 @@ + + namespace Plugins { + +- extern boost::asio::io_service ios; ++ extern boost::asio::io_context ios; + + class CPluginTransport + { +@@ -85,8 +85,8 @@ namespace Plugins { + , m_Socket(nullptr){}; + bool handleConnect() override; + bool handleListen() override; +- virtual void handleAsyncResolve(const boost::system::error_code &err, boost::asio::ip::tcp::resolver::iterator endpoint_iterator); +- virtual void handleAsyncConnect(const boost::system::error_code &err, const boost::asio::ip::tcp::resolver::iterator &endpoint_iterator); ++ virtual void handleAsyncResolve(const boost::system::error_code &err, boost::asio::ip::tcp::resolver::results_type endpoints); ++ virtual void handleAsyncConnect(const boost::system::error_code &err, const boost::asio::ip::tcp::endpoint &endpoint); + virtual void handleAsyncAccept(boost::asio::ip::tcp::socket *pSocket, const boost::system::error_code &error); + void handleRead(const boost::system::error_code &e, std::size_t bytes_transferred) override; + void handleWrite(const std::vector<byte> &pMessage) override; +@@ -111,7 +111,7 @@ namespace Plugins { + : CPluginTransportTCP(HwdID, pConnection, Address, Port) + , m_Context(nullptr) + , m_TLSSock(nullptr){}; +- void handleAsyncConnect(const boost::system::error_code &err, const boost::asio::ip::tcp::resolver::iterator &endpoint_iterator) override; ++ void handleAsyncConnect(const boost::system::error_code &err, const boost::asio::ip::tcp::endpoint &endpoint) override; + void handleRead(const boost::system::error_code &e, std::size_t bytes_transferred) override; + void handleWrite(const std::vector<byte> &pMessage) override; + ~CPluginTransportTCPSecure() override; +@@ -151,7 +151,7 @@ namespace Plugins { + , m_Socket(nullptr) + , m_Timer(nullptr) + , m_SequenceNo(-1){}; +- void handleAsyncResolve(const boost::system::error_code &err, const boost::asio::ip::icmp::resolver::iterator &endpoint_iterator); ++ void handleAsyncResolve(const boost::system::error_code &err, boost::asio::ip::icmp::resolver::results_type endpoints); + bool handleListen() override; + void handleTimeout(const boost::system::error_code &) override; + void handleRead(const boost::system::error_code &e, std::size_t bytes_transferred) override; +diff --git main/WebServerCmds.cpp main/WebServerCmds.cpp +index 7d4a9f2..3586373 100644 +--- main/WebServerCmds.cpp ++++ main/WebServerCmds.cpp +@@ -1632,7 +1632,7 @@ namespace http + ExtraHeaders.push_back("App_Revision: " + std::to_string(iAppRevision)); + ExtraHeaders.push_back("System_Name: " + systemname); + ExtraHeaders.push_back("Machine: " + machine); +- ExtraHeaders.push_back("Type: " + (!bIsBetaChannel) ? "Stable" : "Beta"); ++ ExtraHeaders.push_back("Type: " + std::string(!bIsBetaChannel ? "Stable" : "Beta")); + + if (!HTTPClient::GET(szHistoryURL, ExtraHeaders, historyfile)) + { +diff --git main/mainworker.cpp main/mainworker.cpp +index b5027eb..b8f8dc7 100644 +--- main/mainworker.cpp ++++ main/mainworker.cpp +@@ -1318,7 +1318,7 @@ bool MainWorker::IsUpdateAvailable(const bool bIsForced) + ExtraHeaders.push_back("App_Revision: " + std::to_string(iAppRevision)); + ExtraHeaders.push_back("System_Name: " + m_szSystemName); + ExtraHeaders.push_back("Machine: " + machine); +- ExtraHeaders.push_back("Type: " + (!bIsBetaChannel) ? "Stable" : "Beta"); ++ ExtraHeaders.push_back("Type: " + std::string(!bIsBetaChannel ? "Stable" : "Beta")); + + if (!HTTPClient::GET(szURL, ExtraHeaders, revfile)) + return false; +diff --git plugins/examples/Pinger.py plugins/examples/Pinger.py +index 6b54559..c7a776d 100644 +--- plugins/examples/Pinger.py ++++ plugins/examples/Pinger.py +@@ -3,7 +3,7 @@ + # Author: Dnpwwo, 2017 - 2018 + # + """ +-<plugin key="ICMP" name="Pinger (ICMP)" author="dnpwwo" version="3.1.4"> ++<plugin key="ICMP" name="Pinger (ICMP)" author="dnpwwo" version="3.1.5"> + <description> + ICMP Pinger Plugin.<br/><br/> + Specify comma delimted addresses (IP or DNS names) of devices that are to be pinged.<br/> +@@ -144,8 +144,9 @@ class BasePlugin: + for Device in Devices: + if (("Name" in Devices[Device].Options) and (Devices[Device].Options["Name"] == Connection.Name)): + UpdateDevice(Device, 0, "Off", TimedOut) +- self.icmpConn.Close() +- self.icmpConn = None ++ if (self.icmpConn != None): ++ self.icmpConn.Close() ++ self.icmpConn = None + + def onHeartbeat(self): + Domoticz.Debug("Heartbeating...") +diff --git push/MQTTPush.h push/MQTTPush.h +index 0773b43..d9f9332 100644 +--- push/MQTTPush.h ++++ push/MQTTPush.h +@@ -14,7 +14,7 @@ public: + void on_message(const struct mosquitto_message* message) override; + void on_connect(int rc) override; + void on_disconnect(int rc) override; +- void on_going_down(); ++ void on_going_down() override; + private: + struct _tPushItem + { +diff --git tcpserver/TCPClient.cpp tcpserver/TCPClient.cpp +index d55da10..3eee093 100644 +--- tcpserver/TCPClient.cpp ++++ tcpserver/TCPClient.cpp +@@ -19,7 +19,7 @@ namespace tcp { + delete socket_; + } + +- CTCPClient::CTCPClient(boost::asio::io_service& ios, CTCPServerIntBase* pManager) ++ CTCPClient::CTCPClient(boost::asio::io_context& ios, CTCPServerIntBase* pManager) + : CTCPClientBase(pManager) + { + socket_ = new boost::asio::ip::tcp::socket(ios); +diff --git tcpserver/TCPClient.h tcpserver/TCPClient.h +index df4350d..e7a882b 100644 +--- tcpserver/TCPClient.h ++++ tcpserver/TCPClient.h +@@ -38,7 +38,7 @@ class CTCPClient : public CTCPClientBase, + public std::enable_shared_from_this<CTCPClient> + { + public: +- CTCPClient(boost::asio::io_service& ios, CTCPServerIntBase *pManager); ++ CTCPClient(boost::asio::io_context& ios, CTCPServerIntBase *pManager); + ~CTCPClient() = default; + void start() override; + void stop() override; +diff --git tcpserver/TCPServer.cpp tcpserver/TCPServer.cpp +index 91fdc7e..57f8709 100644 +--- tcpserver/TCPServer.cpp ++++ tcpserver/TCPServer.cpp +@@ -18,14 +18,14 @@ namespace tcp { + + CTCPServerInt::CTCPServerInt(const std::string& address, const std::string& port, CTCPServer* pRoot) : + CTCPServerIntBase(pRoot), +- io_service_(), +- acceptor_(io_service_) ++ io_context_(), ++ acceptor_(io_context_) + { + // Open the acceptor with the option to reuse the address (i.e. SO_REUSEADDR). +- boost::asio::ip::tcp::resolver resolver(io_service_); +- boost::asio::ip::tcp::resolver::query query(address, port); +- boost::asio::ip::tcp::endpoint endpoint = *resolver.resolve(query); +- acceptor_.open(endpoint.protocol()); ++ boost::asio::ip::tcp::resolver resolver(io_context_); ++ boost::asio::ip::basic_resolver<boost::asio::ip::tcp>::results_type endpoints = resolver.resolve(address, port); ++ auto endpoint = *endpoints.begin(); ++ acceptor_.open(endpoint.endpoint().protocol()); + acceptor_.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true)); + // bind to both ipv6 and ipv4 sockets for the "::" address only + if (address == "::") +@@ -35,7 +35,7 @@ namespace tcp { + acceptor_.bind(endpoint); + acceptor_.listen(); + +- new_connection_ = std::make_shared<CTCPClient>(io_service_, this); ++ new_connection_ = std::make_shared<CTCPClient>(io_context_, this); + if (new_connection_ == nullptr) + { + _log.Log(LOG_ERROR, "Error creating new client!"); +@@ -47,24 +47,24 @@ namespace tcp { + + void CTCPServerInt::start() + { +- // The io_service::run() call will block until all asynchronous operations ++ // The io_context::run() call will block until all asynchronous operations + // have finished. While the server is running, there is always at least one + // asynchronous operation outstanding: the asynchronous accept call waiting + // for new incoming connections. +- io_service_.run(); ++ io_context_.run(); + } + + void CTCPServerInt::stop() + { + // Post a call to the stop function so that server::stop() is safe to call + // from any thread. +- io_service_.post([this] { handle_stop(); }); ++ boost::asio::post([this] { handle_stop(); }); + } + + void CTCPServerInt::handle_stop() + { + // The server is stopped by cancelling all outstanding asynchronous +- // operations. Once all operations have finished the io_service::run() call ++ // operations. Once all operations have finished the io_context::run() call + // will exit. + acceptor_.close(); + stopAllClients(); +@@ -88,7 +88,7 @@ namespace tcp { + connections_.insert(new_connection_); + new_connection_->start(); + +- new_connection_.reset(new CTCPClient(io_service_, this)); ++ new_connection_.reset(new CTCPClient(io_context_, this)); + + acceptor_.async_accept(*(new_connection_->socket()), [this](auto&& err) { handleAccept(err); }); + } +diff --git tcpserver/TCPServer.h tcpserver/TCPServer.h +index ca611b1..17284ca 100644 +--- tcpserver/TCPServer.h ++++ tcpserver/TCPServer.h +@@ -70,8 +70,8 @@ private: + /// Handle a request to stop the server. + void handle_stop(); + +- /// The io_service used to perform asynchronous operations. +- boost::asio::io_service io_service_; ++ /// The io_context used to perform asynchronous operations. ++ boost::asio::io_context io_context_; + + boost::asio::ip::tcp::acceptor acceptor_; + +diff --git webserver/cWebem.cpp webserver/cWebem.cpp +index 57d9683..c0d292d 100644 +--- webserver/cWebem.cpp ++++ webserver/cWebem.cpp +@@ -47,13 +47,13 @@ namespace http { + , myRequestHandler(doc_root, this) + // Rene, make sure we initialize m_sessions first, before starting a server + , myServer(server_factory::create(settings, myRequestHandler)) +- , m_io_service() +- , m_session_clean_timer(m_io_service, boost::posix_time::minutes(1)) ++ , m_io_context() ++ , m_session_clean_timer(m_io_context, boost::posix_time::minutes(1)) + { + // associate handler to timer and schedule the first iteration + m_session_clean_timer.async_wait([this](auto &&) { CleanSessions(); }); +- m_io_service_thread = std::make_shared<std::thread>([p = &m_io_service] { p->run(); }); +- SetThreadName(m_io_service_thread->native_handle(), "Webem_ssncleaner"); ++ m_io_context_thread = std::make_shared<std::thread>([p = &m_io_context] { p->run(); }); ++ SetThreadName(m_io_context_thread->native_handle(), "Webem_ssncleaner"); + } + + cWebem::~cWebem() +@@ -93,14 +93,14 @@ namespace http { + // Stop session cleaner + try + { +- if (!m_io_service.stopped()) ++ if (!m_io_context.stopped()) + { +- m_io_service.stop(); ++ m_io_context.stop(); + } +- if (m_io_service_thread) ++ if (m_io_context_thread) + { +- m_io_service_thread->join(); +- m_io_service_thread.reset(); ++ m_io_context_thread->join(); ++ m_io_context_thread.reset(); + } + } + catch (...) +diff --git webserver/cWebem.h webserver/cWebem.h +index 6e3b899..7905c45 100644 +--- webserver/cWebem.h ++++ webserver/cWebem.h +@@ -259,9 +259,9 @@ namespace http + std::string m_webRoot; + /// sessions management + std::mutex m_sessionsMutex; +- boost::asio::io_service m_io_service; ++ boost::asio::io_context m_io_context; + boost::asio::deadline_timer m_session_clean_timer; +- std::shared_ptr<std::thread> m_io_service_thread; ++ std::shared_ptr<std::thread> m_io_context_thread; + }; + + } // namespace server +diff --git webserver/connection.cpp webserver/connection.cpp +index 40f9788..3a70924 100644 +--- webserver/connection.cpp ++++ webserver/connection.cpp +@@ -22,13 +22,13 @@ namespace http { + extern time_t last_write_time(const std::string& path); + + // this is the constructor for plain connections +- connection::connection(boost::asio::io_service &io_service, connection_manager &manager, request_handler &handler, int read_timeout) ++ connection::connection(boost::asio::io_context &io_context, connection_manager &manager, request_handler &handler, int read_timeout) + : send_buffer_(nullptr) + , read_timeout_(read_timeout) +- , read_timer_(io_service, boost::posix_time::seconds(read_timeout)) ++ , read_timer_(io_context, boost::posix_time::seconds(read_timeout)) + , default_abandoned_timeout_(20 * 60) + // 20mn before stopping abandoned connection +- , abandoned_timer_(io_service, boost::posix_time::seconds(default_abandoned_timeout_)) ++ , abandoned_timer_(io_context, boost::posix_time::seconds(default_abandoned_timeout_)) + , connection_manager_(manager) + , request_handler_(handler) + , status_(INITIALIZING) +@@ -39,18 +39,18 @@ namespace http { + keepalive_ = false; + write_in_progress = false; + connection_type = ConnectionType::connection_http; +- socket_ = std::make_unique<boost::asio::ip::tcp::socket>(io_service); ++ socket_ = std::make_unique<boost::asio::ip::tcp::socket>(io_context); + } + + #ifdef WWW_ENABLE_SSL + // this is the constructor for secure connections +- connection::connection(boost::asio::io_service &io_service, connection_manager &manager, request_handler &handler, int read_timeout, boost::asio::ssl::context &context) ++ connection::connection(boost::asio::io_context &io_context, connection_manager &manager, request_handler &handler, int read_timeout, boost::asio::ssl::context &context) + : send_buffer_(nullptr) + , read_timeout_(read_timeout) +- , read_timer_(io_service, boost::posix_time::seconds(read_timeout)) ++ , read_timer_(io_context, boost::posix_time::seconds(read_timeout)) + , default_abandoned_timeout_(20 * 60) + // 20mn before stopping abandoned connection +- , abandoned_timer_(io_service, boost::posix_time::seconds(default_abandoned_timeout_)) ++ , abandoned_timer_(io_context, boost::posix_time::seconds(default_abandoned_timeout_)) + , connection_manager_(manager) + , request_handler_(handler) + , status_(INITIALIZING) +@@ -62,7 +62,7 @@ namespace http { + write_in_progress = false; + connection_type = ConnectionType::connection_http; + socket_ = nullptr; +- sslsocket_ = std::make_unique<ssl_socket>(io_service, context); ++ sslsocket_ = std::make_unique<ssl_socket>(io_context, context); + } + #endif + +@@ -152,9 +152,9 @@ namespace http { + if (error != boost::asio::error::operation_aborted) { + switch (connection_type) { + case ConnectionType::connection_http: +- // Timers should be cancelled before stopping to remove tasks from the io_service. +- // The io_service will stop naturally when every tasks are removed. +- // If timers are not cancelled, the exception ERROR_ABANDONED_WAIT_0 is thrown up to the io_service::run() caller. ++ // Timers should be cancelled before stopping to remove tasks from the io_context. ++ // The io_context will stop naturally when every tasks are removed. ++ // If timers are not cancelled, the exception ERROR_ABANDONED_WAIT_0 is thrown up to the io_context::run() caller. + cancel_abandoned_timeout(); + cancel_read_timeout(); + +@@ -372,7 +372,7 @@ namespace http { + switch (connection_type) + { + case ConnectionType::connection_http: +- begin = boost::asio::buffer_cast<const char*>(_buf.data()); ++ begin = static_cast<const char*>(_buf.data().data()); + try + { + request_parser_.reset(); +@@ -404,7 +404,7 @@ namespace http { + newt = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now()); + } + +- size_t sizeread = begin - boost::asio::buffer_cast<const char*>(_buf.data()); ++ size_t sizeread = begin - static_cast<const char*>(_buf.data().data()); + _buf.consume(sizeread); + reply_.reset(); + const char* pConnection = request_.get_req_header(&request_, "Connection"); +@@ -520,7 +520,7 @@ namespace http { + break; + case ConnectionType::connection_websocket: + case ConnectionType::connection_websocket_closing: +- begin = boost::asio::buffer_cast<const char*>(_buf.data()); ++ begin = static_cast<const char*>(_buf.data().data()); + result = websocket_parser.parse((const unsigned char*)begin, _buf.size(), bytes_consumed, keepalive_); + _buf.consume(bytes_consumed); + if (result) { +diff --git webserver/connection.hpp webserver/connection.hpp +index ce452b5..c1a82c5 100644 +--- webserver/connection.hpp ++++ webserver/connection.hpp +@@ -43,11 +43,11 @@ namespace http { + std::string host_local_endpoint_port_; + std::string host_last_request_uri_; + }; +- /// Construct a connection with the given io_service. +- explicit connection(boost::asio::io_service& io_service, ++ /// Construct a connection with the given io_context. ++ explicit connection(boost::asio::io_context& io_context, + connection_manager& manager, request_handler& handler, int timeout); + #ifdef WWW_ENABLE_SSL +- explicit connection(boost::asio::io_service& io_service, ++ explicit connection(boost::asio::io_context& io_context, + connection_manager& manager, request_handler& handler, int timeout, boost::asio::ssl::context& context); + #endif + ~connection() = default; +diff --git webserver/server.cpp webserver/server.cpp +index da15887..8bdfc13 100644 +--- webserver/server.cpp ++++ webserver/server.cpp +@@ -13,15 +13,15 @@ namespace http { + namespace server { + + server_base::server_base(const server_settings &settings, request_handler &user_request_handler) +- : io_service_() +- , acceptor_(io_service_) ++ : io_context_() ++ , acceptor_(io_context_) + , request_handler_(user_request_handler) + , settings_(settings) + , timeout_(20) + , // default read timeout in seconds + is_running(false) + , is_stop_complete(false) +- , m_heartbeat_timer(io_service_) ++ , m_heartbeat_timer(io_context_) + { + if (!settings.is_enabled()) + { +@@ -39,10 +39,10 @@ namespace server { + } + + // Open the acceptor with the option to reuse the address (i.e. SO_REUSEADDR). +- boost::asio::ip::tcp::resolver resolver(io_service_); +- boost::asio::ip::tcp::resolver::query query(settings_.listening_address, settings_.listening_port); +- boost::asio::ip::tcp::endpoint endpoint = *resolver.resolve(query); +- acceptor_.open(endpoint.protocol()); ++ boost::asio::ip::tcp::resolver resolver(io_context_); ++ boost::asio::ip::basic_resolver<boost::asio::ip::tcp>::results_type endpoints = resolver.resolve(settings_.listening_address, settings_.listening_port); ++ auto endpoint = *endpoints.begin(); ++ acceptor_.open(endpoint.endpoint().protocol()); + acceptor_.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true)); + // bind to both ipv6 and ipv4 sockets for the "::" address only + if (settings_.listening_address == "::") +@@ -59,28 +59,28 @@ namespace server { + } + + void server_base::run() { +- // The io_service::run() call will block until all asynchronous operations ++ // The io_context::run() call will block until all asynchronous operations + // have finished. While the server is running, there is always at least one + // asynchronous operation outstanding: the asynchronous accept call waiting + // for new incoming connections. + try { + is_running = true; + heart_beat(boost::system::error_code()); +- io_service_.run(); ++ io_context_.run(); + is_running = false; + } catch (std::exception& e) { + _log.Log(LOG_ERROR, "[web:%s] exception occurred : '%s' (need to run again)", settings_.listening_port.c_str(), e.what()); + is_running = false; + // Note: if acceptor is up everything is OK, we can call run() again + // but if the exception has broken the acceptor we cannot stop/start it and the next run() will exit immediatly. +- io_service_.reset(); // this call is needed before calling run() again ++ io_context_.restart(); // this call is needed before calling run() again + throw; + } catch (...) { + _log.Log(LOG_ERROR, "[web:%s] unknown exception occurred (need to run again)", settings_.listening_port.c_str()); + is_running = false; + // Note: if acceptor is up everything is OK, we can call run() again + // but if the exception has broken the acceptor we cannot stop/start it and the next run() will exit immediatly. +- io_service_.reset(); // this call is needed before calling run() again ++ io_context_.restart(); // this call is needed before calling run() again + throw; + } + } +@@ -89,12 +89,12 @@ void server_base::run() { + void server_base::stop() { + if (is_running) { + // Post a call to the stop function so that server_base::stop() is safe to call from any thread. +- // Rene, set is_running to false, because the following is an io_service call, which makes is_running ++ // Rene, set is_running to false, because the following is an io_context call, which makes is_running + // never set to false whilst in the call itself + is_running = false; +- io_service_.post([this] { handle_stop(); }); ++ boost::asio::post(io_context_, [this] { handle_stop(); }); + } else { +- // if io_service is not running then the post call will not be performed ++ // if io_context is not running then the post call will not be performed + handle_stop(); + } + +@@ -112,7 +112,7 @@ void server_base::stop() { + } + sleep_milliseconds(500); + } +- io_service_.stop(); ++ io_context_.stop(); + + // Deregister heartbeat + m_mainworker.HeartbeatRemove(std::string("WebServer:") + settings_.listening_port); +@@ -136,7 +136,7 @@ void server_base::heart_beat(const boost::system::error_code& error) + m_mainworker.HeartbeatUpdate(std::string("WebServer:") + settings_.listening_port); + + // Schedule next heartbeat +- m_heartbeat_timer.expires_from_now(std::chrono::seconds(4)); ++ m_heartbeat_timer.expires_after(std::chrono::seconds(4)); + m_heartbeat_timer.async_wait([this](auto &&err) { heart_beat(err); }); + } + } +@@ -148,7 +148,7 @@ server::server(const server_settings &settings, request_handler &user_request_ha + } + + void server::init_connection() { +- new_connection_.reset(new connection(io_service_, connection_manager_, request_handler_, timeout_)); ++ new_connection_.reset(new connection(io_context_, connection_manager_, request_handler_, timeout_)); + } + + /** +@@ -157,7 +157,7 @@ void server::init_connection() { + void server::handle_accept(const boost::system::error_code& e) { + if (!e) { + connection_manager_.start(new_connection_); +- new_connection_.reset(new connection(io_service_, ++ new_connection_.reset(new connection(io_context_, + connection_manager_, request_handler_, timeout_)); + // listen for a subsequent request + acceptor_.async_accept(new_connection_->socket(), [this](auto &&err) { handle_accept(err); }); +@@ -267,7 +267,7 @@ void ssl_server::init_connection() { + } else { + _log.Log(LOG_ERROR, "[web:%s] missing SSL DH parameters file %s!", settings_.listening_port.c_str(), settings_.tmp_dh_file_path.c_str()); + } +- new_connection_.reset(new connection(io_service_, connection_manager_, request_handler_, timeout_, context_)); ++ new_connection_.reset(new connection(io_context_, connection_manager_, request_handler_, timeout_, context_)); + } + + void ssl_server::reinit_connection() +@@ -305,7 +305,7 @@ void ssl_server::reinit_connection() + _log.Log(LOG_ERROR, "[web:%s] missing SSL DH parameters from file %s", settings_.listening_port.c_str(), settings_.tmp_dh_file_path.c_str()); + } + } +- new_connection_.reset(new connection(io_service_, connection_manager_, request_handler_, timeout_, context_)); ++ new_connection_.reset(new connection(io_context_, connection_manager_, request_handler_, timeout_, context_)); + } + + /** +diff --git webserver/server.hpp webserver/server.hpp +index f9e71c5..bd7132a 100644 +--- webserver/server.hpp ++++ webserver/server.hpp +@@ -31,7 +31,7 @@ namespace http + explicit server_base(const server_settings &settings, request_handler &user_request_handler); + virtual ~server_base() = default; + +- /// Run the server's io_service loop. ++ /// Run the server's io_context loop. + void run(); + + /// Stop the server. +@@ -46,8 +46,8 @@ namespace http + protected: + void init(const init_connectionhandler_func &init_connection_handler, accept_handler_func accept_handler); + +- /// The io_service used to perform asynchronous operations. +- boost::asio::io_service io_service_; ++ /// The io_context used to perform asynchronous operations. ++ boost::asio::io_context io_context_; + + /// Acceptor used to listen for incoming connections. + boost::asio::ip::tcp::acceptor acceptor_; diff --git a/www/dooble/Makefile b/www/dooble/Makefile index 6f62bd209ab6..5d55648441e1 100644 --- a/www/dooble/Makefile +++ b/www/dooble/Makefile @@ -1,5 +1,5 @@ PORTNAME= dooble -DISTVERSION= 2025.04.27 +DISTVERSION= 2025.05.10 CATEGORIES= www MAINTAINER= eric@camachat.org @@ -14,7 +14,7 @@ USES= compiler:c++17-lang desktop-file-utils gl gmake qmake qt:6 ssl \ USE_GITHUB= yes GH_ACCOUNT= textbrowser GH_TUPLE= textbrowser:dooble-dictionaries:0f1e715:dictionaries -#textbrowser:dooble:${PORTVERSION}:DEFAULT +#textbrowser:dooble:${DISTVERSION}:DEFAULT USE_GL= opengl USE_QT= base charts declarative positioning sqldriver-sqlite:run \ webchannel webengine diff --git a/www/dooble/distinfo b/www/dooble/distinfo index a1a114f0288b..09504ea3e85b 100644 --- a/www/dooble/distinfo +++ b/www/dooble/distinfo @@ -1,5 +1,5 @@ -TIMESTAMP = 1745801937 -SHA256 (textbrowser-dooble-2025.04.27_GH0.tar.gz) = 7c683ae0a5c3b31a10a64da8c222f59e81d32c2082437928e1bbf97418fa6d1e -SIZE (textbrowser-dooble-2025.04.27_GH0.tar.gz) = 6503615 +TIMESTAMP = 1746933413 +SHA256 (textbrowser-dooble-2025.05.10_GH0.tar.gz) = f217358f98a03f7ae0f32e33a1c70755827948befc417d5c490b276549f733cd +SIZE (textbrowser-dooble-2025.05.10_GH0.tar.gz) = 6503611 SHA256 (textbrowser-dooble-dictionaries-0f1e715_GH0.tar.gz) = 474b2fd45429ed4cf68347dedd2c47650310d7e53a23cbeb8452655f596dc80c SIZE (textbrowser-dooble-dictionaries-0f1e715_GH0.tar.gz) = 34764866 diff --git a/www/firefox/Makefile b/www/firefox/Makefile index 391762f538d6..0c1192ce1e7f 100644 --- a/www/firefox/Makefile +++ b/www/firefox/Makefile @@ -1,5 +1,5 @@ PORTNAME= firefox -DISTVERSION= 138.0.1 +DISTVERSION= 138.0.4 PORTEPOCH= 2 CATEGORIES= www wayland MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}${DISTVERSIONSUFFIX}/source \ diff --git a/www/firefox/distinfo b/www/firefox/distinfo index c8c179d239f5..f2b3b71e35a3 100644 --- a/www/firefox/distinfo +++ b/www/firefox/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1746105917 -SHA256 (firefox-138.0.1.source.tar.xz) = 9894b96203876f847637af20f961cd4494ff1f2d85e4c096a7f358f54d9ecb2b -SIZE (firefox-138.0.1.source.tar.xz) = 632213452 +TIMESTAMP = 1747504074 +SHA256 (firefox-138.0.4.source.tar.xz) = 3fd30db08dad90b339e08d27db1e3aab03a174817d336314327dc5305c145056 +SIZE (firefox-138.0.4.source.tar.xz) = 623414956 diff --git a/www/galene/Makefile b/www/galene/Makefile index 15cdbfaf3a58..8bea5d198bab 100644 --- a/www/galene/Makefile +++ b/www/galene/Makefile @@ -1,6 +1,5 @@ PORTNAME= galene -DISTVERSION= 0.96 -PORTREVISION= 2 +DISTVERSION= 0.96.3 CATEGORIES= www net-im MAINTAINER= bapt@FreeBSD.org @@ -23,32 +22,33 @@ GH_TUPLE= \ davecgh:go-spew:v1.1.1:davecgh_go_spew/vendor/github.com/davecgh/go-spew \ go-yaml:yaml:v3.0.1:go_yaml_yaml/vendor/gopkg.in/yaml.v3 \ golang-jwt:jwt:v5.2.1:golang_jwt_jwt_v5/vendor/github.com/golang-jwt/jwt/v5 \ - golang:crypto:v0.29.0:golang_crypto/vendor/golang.org/x/crypto \ - golang:net:v0.30.0:golang_net/vendor/golang.org/x/net \ - golang:sys:v0.27.0:golang_sys/vendor/golang.org/x/sys \ - golang:term:v0.26.0:golang_term/vendor/golang.org/x/term \ + golang:crypto:v0.31.0:golang_crypto/vendor/golang.org/x/crypto \ + golang:net:v0.33.0:golang_net/vendor/golang.org/x/net \ + golang:sys:v0.28.0:golang_sys/vendor/golang.org/x/sys \ + golang:term:v0.27.0:golang_term/vendor/golang.org/x/term \ google:uuid:v1.6.0:google_uuid/vendor/github.com/google/uuid \ gorilla:websocket:v1.5.0:gorilla_websocket/vendor/github.com/gorilla/websocket \ jech:cert:f491cf43a77d:jech_cert/vendor/github.com/jech/cert \ jech:samplebuilder:6cbba09fc1c9:jech_samplebuilder/vendor/github.com/jech/samplebuilder \ - pion:datachannel:v1.5.9:pion_datachannel/vendor/github.com/pion/datachannel \ + pion:datachannel:v1.5.10:pion_datachannel/vendor/github.com/pion/datachannel \ pion:dtls:v2.2.12:pion_dtls_v2/vendor/github.com/pion/dtls/v2 \ pion:ice:v2.3.37:pion_ice_v2/vendor/github.com/pion/ice/v2 \ pion:interceptor:v0.1.37:pion_interceptor/vendor/github.com/pion/interceptor \ pion:logging:v0.2.2:pion_logging/vendor/github.com/pion/logging \ pion:mdns:v0.0.12:pion_mdns/vendor/github.com/pion/mdns \ pion:randutil:v0.1.0:pion_randutil/vendor/github.com/pion/randutil \ - pion:rtcp:v1.2.14:pion_rtcp/vendor/github.com/pion/rtcp \ - pion:rtp:v1.8.9:pion_rtp/vendor/github.com/pion/rtp \ - pion:sctp:v1.8.33:pion_sctp/vendor/github.com/pion/sctp \ + pion:rtcp:v1.2.15:pion_rtcp/vendor/github.com/pion/rtcp \ + pion:rtp:v1.8.10:pion_rtp/vendor/github.com/pion/rtp \ + pion:sctp:v1.8.35:pion_sctp/vendor/github.com/pion/sctp \ pion:sdp:v3.0.9:pion_sdp_v3/vendor/github.com/pion/sdp/v3 \ pion:srtp:v2.0.20:pion_srtp_v2/vendor/github.com/pion/srtp/v2 \ pion:stun:v0.6.1:pion_stun/vendor/github.com/pion/stun \ pion:transport:v2.2.10:pion_transport_v2/vendor/github.com/pion/transport/v2 \ + pion:transport:v3.0.7:pion_transport_v3/vendor/github.com/pion/transport/v3 \ pion:turn:v2.1.6:pion_turn_v2/vendor/github.com/pion/turn/v2 \ - pion:webrtc:v3.3.4:pion_webrtc_v3/vendor/github.com/pion/webrtc/v3 \ + pion:webrtc:v3.3.5:pion_webrtc_v3/vendor/github.com/pion/webrtc/v3 \ pmezard:go-difflib:v1.0.0:pmezard_go_difflib/vendor/github.com/pmezard/go-difflib \ - stretchr:testify:v1.9.0:stretchr_testify/vendor/github.com/stretchr/testify \ + stretchr:testify:v1.10.0:stretchr_testify/vendor/github.com/stretchr/testify \ wlynxg:anet:v0.0.5:wlynxg_anet/vendor/github.com/wlynxg/anet CGO_ENABLED= 0 diff --git a/www/galene/distinfo b/www/galene/distinfo index 9bb0479c504f..0191b7d04ad1 100644 --- a/www/galene/distinfo +++ b/www/galene/distinfo @@ -1,6 +1,6 @@ -TIMESTAMP = 1735802329 -SHA256 (jech-galene-0.96-galene-0.96_GH0.tar.gz) = fc689fccc718943909cd7585a94574c4a7f7b4168c41028d0d22c73cf6b2dcd6 -SIZE (jech-galene-0.96-galene-0.96_GH0.tar.gz) = 778766 +TIMESTAMP = 1747332374 +SHA256 (jech-galene-0.96.3-galene-0.96.3_GH0.tar.gz) = c76e5b6c059b94d102c2b726ab144ba6a70bdde8135f6733893217172af5201a +SIZE (jech-galene-0.96.3-galene-0.96.3_GH0.tar.gz) = 888837 SHA256 (at-wat-ebml-go-v0.17.1_GH0.tar.gz) = f058fcf7f4da9f979531a0ba1f811fc34c8d9d30087ba8d442eef220e726cbe3 SIZE (at-wat-ebml-go-v0.17.1_GH0.tar.gz) = 69882 SHA256 (davecgh-go-spew-v1.1.1_GH0.tar.gz) = 7d82b9bb7291adbe7498fe946920ab3e7fc9e6cbfc3b2294693fad00bf0dd17e @@ -9,14 +9,14 @@ SHA256 (go-yaml-yaml-v3.0.1_GH0.tar.gz) = cf05411540d3e6ef8f1fd88434b34f94cedace SIZE (go-yaml-yaml-v3.0.1_GH0.tar.gz) = 91173 SHA256 (golang-jwt-jwt-v5.2.1_GH0.tar.gz) = 76d1c81a7cd38ed03309f770f60ac3417f16c75b4c53a0c01bb783863783fef0 SIZE (golang-jwt-jwt-v5.2.1_GH0.tar.gz) = 61340 -SHA256 (golang-crypto-v0.29.0_GH0.tar.gz) = 0f1f747a65c883857c5f6c54b01e228536698dcc5af652386ccfc994c2a3c991 -SIZE (golang-crypto-v0.29.0_GH0.tar.gz) = 1847528 -SHA256 (golang-net-v0.30.0_GH0.tar.gz) = c5bcae30a04fc5c9d6fccfceb368cc1a46413eefdccefdea57336e2b11a1fbfa -SIZE (golang-net-v0.30.0_GH0.tar.gz) = 1456700 -SHA256 (golang-sys-v0.27.0_GH0.tar.gz) = 91f2021c81184dccca54272abfdfa7f6d0b43fcdf7e36c4d62c1ab597e7988a9 -SIZE (golang-sys-v0.27.0_GH0.tar.gz) = 1518154 -SHA256 (golang-term-v0.26.0_GH0.tar.gz) = 860d9dc2e32939c99ea3590171d8897ca6b876958085fd210d7331787c1ad00b -SIZE (golang-term-v0.26.0_GH0.tar.gz) = 14688 +SHA256 (golang-crypto-v0.31.0_GH0.tar.gz) = 36e325f89d4cd03ec568d92c74d6affd2b1fb88fcdc63aeb15d1df41e11200ca +SIZE (golang-crypto-v0.31.0_GH0.tar.gz) = 1837859 +SHA256 (golang-net-v0.33.0_GH0.tar.gz) = 675e0ceaf54baf4f6e2a5152fe148906119c97e7b1d37d1c44ec2621faeab0e8 +SIZE (golang-net-v0.33.0_GH0.tar.gz) = 1466426 +SHA256 (golang-sys-v0.28.0_GH0.tar.gz) = 62726b1ccbb09c7e8de2215756a26012751bdded12b5bacc6de83296db694ebf +SIZE (golang-sys-v0.28.0_GH0.tar.gz) = 1519898 +SHA256 (golang-term-v0.27.0_GH0.tar.gz) = 4053cac47f4fcd6e38fe80ed4e52a10550681109a09ff7a6cabdb6e1af6bb5a6 +SIZE (golang-term-v0.27.0_GH0.tar.gz) = 14689 SHA256 (google-uuid-v1.6.0_GH0.tar.gz) = ee63376b5675376c60e055ed66e5f3651ccc703bd580c022b8ad00cea309252d SIZE (google-uuid-v1.6.0_GH0.tar.gz) = 20896 SHA256 (gorilla-websocket-v1.5.0_GH0.tar.gz) = 5d86f9e1c76ff7ceca0747f78b79864fbaec9d440f4fdb03197466e5102a86b0 @@ -25,8 +25,8 @@ SHA256 (jech-cert-f491cf43a77d_GH0.tar.gz) = a31c5dc063e19e49e27454e9ffd12fd0895 SIZE (jech-cert-f491cf43a77d_GH0.tar.gz) = 3756 SHA256 (jech-samplebuilder-6cbba09fc1c9_GH0.tar.gz) = 08082afa77f3083c0b15ed09fe27d43c525bc31af3662e13288dd167a609c2ad SIZE (jech-samplebuilder-6cbba09fc1c9_GH0.tar.gz) = 12428 -SHA256 (pion-datachannel-v1.5.9_GH0.tar.gz) = b23a0532f6a70ba3eae2a8052285f01545866fb56dd30cb12cd1f616bbb8eb8f -SIZE (pion-datachannel-v1.5.9_GH0.tar.gz) = 17018 +SHA256 (pion-datachannel-v1.5.10_GH0.tar.gz) = 07b7d4decbc83e84f00ce2c1587f55579aa5c018379c8e17c7d6c681df5c8eb6 +SIZE (pion-datachannel-v1.5.10_GH0.tar.gz) = 17048 SHA256 (pion-dtls-v2.2.12_GH0.tar.gz) = 17d45dba2712a9fff680f1e441b26566daf7f9103656fd3f65d05fda0b5e0009 SIZE (pion-dtls-v2.2.12_GH0.tar.gz) = 152165 SHA256 (pion-ice-v2.3.37_GH0.tar.gz) = e935cbc70fb9344c5407b4a7cd3c7299d2db3bd4a5785346b040a102d5a5380d @@ -39,12 +39,12 @@ SHA256 (pion-mdns-v0.0.12_GH0.tar.gz) = d291ea4260996731e09103beb498f6e1b9fd3643 SIZE (pion-mdns-v0.0.12_GH0.tar.gz) = 17490 SHA256 (pion-randutil-v0.1.0_GH0.tar.gz) = 4b0301915ebbfa77c8621cebf99c6c7d71651762a33ce4fa4e6af8994ecd4993 SIZE (pion-randutil-v0.1.0_GH0.tar.gz) = 7521 -SHA256 (pion-rtcp-v1.2.14_GH0.tar.gz) = ab0674ed126edfafc8dcb1c70d269cf04d6498983e5ebe92c9c8ea776234d660 -SIZE (pion-rtcp-v1.2.14_GH0.tar.gz) = 59682 -SHA256 (pion-rtp-v1.8.9_GH0.tar.gz) = c4174853bc2cd78193621e7c96b72ba5f52edaa88e98b8e79b531bc943f225fd -SIZE (pion-rtp-v1.8.9_GH0.tar.gz) = 62171 -SHA256 (pion-sctp-v1.8.33_GH0.tar.gz) = ffeac32cbdc684462701aae276106e1912b86b470242b886e1a8866e4a74c51b -SIZE (pion-sctp-v1.8.33_GH0.tar.gz) = 94390 +SHA256 (pion-rtcp-v1.2.15_GH0.tar.gz) = b3032a27547fe6a2d2468db5925399b8e13aec3770788db98b91c327bb54695f +SIZE (pion-rtcp-v1.2.15_GH0.tar.gz) = 61468 +SHA256 (pion-rtp-v1.8.10_GH0.tar.gz) = f998acdb35dc3c8741fc4198b240342bc549777db6414adc75e70765e1cac57a +SIZE (pion-rtp-v1.8.10_GH0.tar.gz) = 62142 +SHA256 (pion-sctp-v1.8.35_GH0.tar.gz) = 780d450604fd9eafcc1f2b93f42d0c0ca690be8c57770e6a3cc817270ac37821 +SIZE (pion-sctp-v1.8.35_GH0.tar.gz) = 96553 SHA256 (pion-sdp-v3.0.9_GH0.tar.gz) = d0de98412c90f90379297f00c7b766a8bbf129672d2e896d3bcd780d37f35e60 SIZE (pion-sdp-v3.0.9_GH0.tar.gz) = 28358 SHA256 (pion-srtp-v2.0.20_GH0.tar.gz) = 8156afe373b0f6f43dbbbd56deca6b32f039d9995d0b6bd3c2757c1630b5443e @@ -53,13 +53,15 @@ SHA256 (pion-stun-v0.6.1_GH0.tar.gz) = 6abda07e177b9f65412e3b11dae6a35663869ebec SIZE (pion-stun-v0.6.1_GH0.tar.gz) = 91808 SHA256 (pion-transport-v2.2.10_GH0.tar.gz) = 112640b7644824e3e63426bfd23712bcaadab670e3171f86c34948863b5ff0ff SIZE (pion-transport-v2.2.10_GH0.tar.gz) = 90002 +SHA256 (pion-transport-v3.0.7_GH0.tar.gz) = dca2f4ede133623bfb1f2d1a055e500c80ef3faa39ad9db4d45086d60c7458b5 +SIZE (pion-transport-v3.0.7_GH0.tar.gz) = 85680 SHA256 (pion-turn-v2.1.6_GH0.tar.gz) = 243841be67659ad71437e818b82c4032731cf1a3ad73e948bf3abbe27a5addb5 SIZE (pion-turn-v2.1.6_GH0.tar.gz) = 131516 -SHA256 (pion-webrtc-v3.3.4_GH0.tar.gz) = 90ffd02e21676079b5e4a50ac4a310bff8f707fdc4d75812c347d26460c22286 -SIZE (pion-webrtc-v3.3.4_GH0.tar.gz) = 386093 +SHA256 (pion-webrtc-v3.3.5_GH0.tar.gz) = 93ff5d7860d94a1411bd532d9d4e1affb0e8d99e83e36c2a7596d753438e2cb8 +SIZE (pion-webrtc-v3.3.5_GH0.tar.gz) = 386477 SHA256 (pmezard-go-difflib-v1.0.0_GH0.tar.gz) = 28f3dc1b5c0efd61203ab07233f774740d3bf08da4d8153fb5310db6cea0ebda SIZE (pmezard-go-difflib-v1.0.0_GH0.tar.gz) = 11398 -SHA256 (stretchr-testify-v1.9.0_GH0.tar.gz) = ee651d4d4427d55096007190398102383498e6b5cf97ea9e89ad6e72b4115fbb -SIZE (stretchr-testify-v1.9.0_GH0.tar.gz) = 108663 +SHA256 (stretchr-testify-v1.10.0_GH0.tar.gz) = 06af5143ab5fc8f2fbf3d1420a5f002f6383cd7de911698dbd1822beacb27684 +SIZE (stretchr-testify-v1.10.0_GH0.tar.gz) = 112732 SHA256 (wlynxg-anet-v0.0.5_GH0.tar.gz) = bf9a401124ec58f00413b5597fc7f9ced9abd3314ec62ce49021c4c7b023d47e SIZE (wlynxg-anet-v0.0.5_GH0.tar.gz) = 5475910 diff --git a/www/gohugo/Makefile b/www/gohugo/Makefile index 6fa0ea62b87a..a998c60d116c 100644 --- a/www/gohugo/Makefile +++ b/www/gohugo/Makefile @@ -1,6 +1,6 @@ PORTNAME= hugo DISTVERSIONPREFIX= v -DISTVERSION= 0.147.2 +DISTVERSION= 0.147.3 PORTEPOCH= 1 CATEGORIES= www PKGNAMEPREFIX= go diff --git a/www/gohugo/distinfo b/www/gohugo/distinfo index 4fbf4c8e298a..550828130a87 100644 --- a/www/gohugo/distinfo +++ b/www/gohugo/distinfo @@ -1,5 +1,5 @@ -TIMESTAMP = 1746548045 -SHA256 (go/www_gohugo/hugo-v0.147.2/v0.147.2.mod) = cb41ea476364590e46adc72d923c617f69d99544d2a78c743ae4608f4c43ea25 -SIZE (go/www_gohugo/hugo-v0.147.2/v0.147.2.mod) = 8036 -SHA256 (go/www_gohugo/hugo-v0.147.2/v0.147.2.zip) = 2d350d624ec4d6b3e8782c641955e4314f980259e3de0ba843313882587910f6 -SIZE (go/www_gohugo/hugo-v0.147.2/v0.147.2.zip) = 5733684 +TIMESTAMP = 1747057537 +SHA256 (go/www_gohugo/hugo-v0.147.3/v0.147.3.mod) = cb41ea476364590e46adc72d923c617f69d99544d2a78c743ae4608f4c43ea25 +SIZE (go/www_gohugo/hugo-v0.147.3/v0.147.3.mod) = 8036 +SHA256 (go/www_gohugo/hugo-v0.147.3/v0.147.3.zip) = 36a1eb90054d1cef4aa8f74a9951e44c211d0d68d0d3fe90a8af4764fa6a0117 +SIZE (go/www_gohugo/hugo-v0.147.3/v0.147.3.zip) = 5734808 diff --git a/www/grafana/Makefile b/www/grafana/Makefile index 0dd96cfe8e72..6f770e49d424 100644 --- a/www/grafana/Makefile +++ b/www/grafana/Makefile @@ -1,18 +1,28 @@ PORTNAME= grafana DISTVERSIONPREFIX= v -DISTVERSION= 11.6.1 +DISTVERSION= 12.0.0 CATEGORIES= www MASTER_SITES= https://dl.grafana.com/oss/release/ \ https://raw.githubusercontent.com/${GH_ACCOUNT}/${GH_PROJECT}/${DISTVERSIONFULL}/:gomod DISTFILES= grafana-${DISTVERSION}.linux-amd64${EXTRACT_SUFX} \ go.mod:gomod \ go.work:gomod \ + .citools/bra/go.mod:gomod \ + .citools/cog/go.mod:gomod \ + .citools/cue/go.mod:gomod \ + .citools/golangci-lint/go.mod:gomod \ + .citools/jb/go.mod:gomod \ + .citools/lefthook/go.mod:gomod \ + .citools/swagger/go.mod:gomod \ apps/advisor/go.mod:gomod \ apps/alerting/notifications/go.mod:gomod \ + apps/dashboard/go.mod:gomod \ + apps/folder/go.mod:gomod \ apps/investigations/go.mod:gomod \ apps/playlist/go.mod:gomod \ pkg/aggregator/go.mod:gomod \ pkg/apimachinery/go.mod:gomod \ + pkg/apis/secret/go.mod:gomod \ pkg/apiserver/go.mod:gomod \ pkg/build/go.mod:gomod \ pkg/build/wire/go.mod:gomod \ @@ -42,14 +52,15 @@ USES= cpe go:1.24,modules USE_GITHUB= yes USE_RC_SUBR= grafana -TAG= ae23ead +TAG= 4c0e704 -GO_MODULE= github.com/grafana/grafana GO_MOD_DIST= github +GO_MODULE= github.com/grafana/grafana GO_TARGET= ./pkg/cmd/grafana \ ./pkg/cmd/grafana-server \ ./pkg/cmd/grafana-cli -GO_BUILDFLAGS= -ldflags="-w -X main.version=${PORTVERSION} -X main.commit=${TAG}" +GO_BUILDFLAGS= -ldflags="-w -X main.version=${DISTVERSION} -X main.commit=${TAG} \ + -X main.buildstamp=$$(${STAT} -f %Sm -t %s ${WRKSRC}/.gitignore)" CONFLICTS_INSTALL= grafana* diff --git a/www/grafana/distinfo b/www/grafana/distinfo index 1aa24ff481fe..48c8b409e43a 100644 --- a/www/grafana/distinfo +++ b/www/grafana/distinfo @@ -1,41 +1,61 @@ -TIMESTAMP = 1745492346 -SHA256 (go/www_grafana/grafana-grafana-v11.6.1_GH0/grafana-11.6.1.linux-amd64.tar.gz) = 35a5efca8c535ce961217765faf8d6895c6d1c1587eaeec50d606a5cb218603b -SIZE (go/www_grafana/grafana-grafana-v11.6.1_GH0/grafana-11.6.1.linux-amd64.tar.gz) = 178027958 -SHA256 (go/www_grafana/grafana-grafana-v11.6.1_GH0/go.mod) = 91c7674d10c8814d15ada1bad9d1bd41c0c5e8969c5e5da1da5be85d33fe49d8 -SIZE (go/www_grafana/grafana-grafana-v11.6.1_GH0/go.mod) = 37750 -SHA256 (go/www_grafana/grafana-grafana-v11.6.1_GH0/go.work) = 91abc49021e028c3c2a4736a1c91e473d980ae1c7540138f9e1f436a62329a81 -SIZE (go/www_grafana/grafana-grafana-v11.6.1_GH0/go.work) = 1462 -SHA256 (go/www_grafana/grafana-grafana-v11.6.1_GH0/apps/advisor/go.mod) = 6c61070df4915b2e6fb69f557bd105c760b941acadd3c66f3fcd57bf7d4d1585 -SIZE (go/www_grafana/grafana-grafana-v11.6.1_GH0/apps/advisor/go.mod) = 4058 -SHA256 (go/www_grafana/grafana-grafana-v11.6.1_GH0/apps/alerting/notifications/go.mod) = 124a37f4bdb7a567d3a511767c1638496ecc5a1dd5f97633fcba7155faf52df6 -SIZE (go/www_grafana/grafana-grafana-v11.6.1_GH0/apps/alerting/notifications/go.mod) = 4797 -SHA256 (go/www_grafana/grafana-grafana-v11.6.1_GH0/apps/investigations/go.mod) = 3c3fe091bb7aed6c745175e21ccb3e961a81f0653a84a97d7ac696258f8108c4 -SIZE (go/www_grafana/grafana-grafana-v11.6.1_GH0/apps/investigations/go.mod) = 4257 -SHA256 (go/www_grafana/grafana-grafana-v11.6.1_GH0/apps/playlist/go.mod) = 8a5d285defd20e31ef83b1263e79762cdd08fe9f1e688830bdad1644279a68cd -SIZE (go/www_grafana/grafana-grafana-v11.6.1_GH0/apps/playlist/go.mod) = 4239 -SHA256 (go/www_grafana/grafana-grafana-v11.6.1_GH0/pkg/aggregator/go.mod) = c316078737a7666ce9cf0da5f7f7d107ade730adbbe5752732d74899c2d38b31 -SIZE (go/www_grafana/grafana-grafana-v11.6.1_GH0/pkg/aggregator/go.mod) = 8280 -SHA256 (go/www_grafana/grafana-grafana-v11.6.1_GH0/pkg/apimachinery/go.mod) = b1b10d93f324e13169864fe92a6d93b0fb23614a6c645775d75c56d311fc3c87 -SIZE (go/www_grafana/grafana-grafana-v11.6.1_GH0/pkg/apimachinery/go.mod) = 2516 -SHA256 (go/www_grafana/grafana-grafana-v11.6.1_GH0/pkg/apiserver/go.mod) = 4400608ae4eb0546c1918324a44f7c5f6b35fcb545756fd170fc8de9be3b83d4 -SIZE (go/www_grafana/grafana-grafana-v11.6.1_GH0/pkg/apiserver/go.mod) = 5052 -SHA256 (go/www_grafana/grafana-grafana-v11.6.1_GH0/pkg/build/go.mod) = ec5a5dac4253889681f8888b61ad5d5059a855d72aa82dd5bcaeb80ab91101c9 -SIZE (go/www_grafana/grafana-grafana-v11.6.1_GH0/pkg/build/go.mod) = 7764 -SHA256 (go/www_grafana/grafana-grafana-v11.6.1_GH0/pkg/build/wire/go.mod) = fbc23dcc413d6b1fa9ab71380da68211859df0e155165d4aabcf557499fb6cf6 -SIZE (go/www_grafana/grafana-grafana-v11.6.1_GH0/pkg/build/wire/go.mod) = 330 -SHA256 (go/www_grafana/grafana-grafana-v11.6.1_GH0/pkg/codegen/go.mod) = 7eeccc07ccb7293e6051f207882ea8c9f22199b886acebbc41b6459b651904e5 -SIZE (go/www_grafana/grafana-grafana-v11.6.1_GH0/pkg/codegen/go.mod) = 2437 -SHA256 (go/www_grafana/grafana-grafana-v11.6.1_GH0/pkg/plugins/codegen/go.mod) = 6ee06b09fab35cc0a7d99cd955d770c820b2b9c1f4cfaec53d1127302b22597e -SIZE (go/www_grafana/grafana-grafana-v11.6.1_GH0/pkg/plugins/codegen/go.mod) = 2233 -SHA256 (go/www_grafana/grafana-grafana-v11.6.1_GH0/pkg/promlib/go.mod) = 3d788d99106f6c4aebc9d5e5feb1eb8c52ae1504fc6224e4bf0af8f5026568fe -SIZE (go/www_grafana/grafana-grafana-v11.6.1_GH0/pkg/promlib/go.mod) = 6861 -SHA256 (go/www_grafana/grafana-grafana-v11.6.1_GH0/pkg/semconv/go.mod) = 102611f5bece34904bdb7928b7a852764ffb36bc25efb8ce69673a5d61ce1a86 -SIZE (go/www_grafana/grafana-grafana-v11.6.1_GH0/pkg/semconv/go.mod) = 314 -SHA256 (go/www_grafana/grafana-grafana-v11.6.1_GH0/pkg/storage/unified/apistore/go.mod) = ac17130a28f32539688a7650c734d1b84ef5c01489c89c148b7b79a0a89746f1 -SIZE (go/www_grafana/grafana-grafana-v11.6.1_GH0/pkg/storage/unified/apistore/go.mod) = 23405 -SHA256 (go/www_grafana/grafana-grafana-v11.6.1_GH0/pkg/storage/unified/resource/go.mod) = 15915ab2954992958d66bbded2270f043994ba6ea868720fa6d3f2d9788acc33 -SIZE (go/www_grafana/grafana-grafana-v11.6.1_GH0/pkg/storage/unified/resource/go.mod) = 14537 -SHA256 (go/www_grafana/grafana-grafana-v11.6.1_GH0/pkg/util/xorm/go.mod) = fd0137d7c79a69fe252bde216f0f8146fbb301e344fb4f2a4c444d6379da9cb5 -SIZE (go/www_grafana/grafana-grafana-v11.6.1_GH0/pkg/util/xorm/go.mod) = 3150 -SHA256 (go/www_grafana/grafana-grafana-v11.6.1_GH0/grafana-grafana-v11.6.1_GH0.tar.gz) = 1435ba4b47d22f906495c3f53be9f416a721b5b0ca0621533393130fff87aa73 -SIZE (go/www_grafana/grafana-grafana-v11.6.1_GH0/grafana-grafana-v11.6.1_GH0.tar.gz) = 36539394 +TIMESTAMP = 1746523933 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/grafana-12.0.0.linux-amd64.tar.gz) = b5f15e29cb815c24eaf631ebaab1729608d9c44606bdef24e5248ccbeba2e95e +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/grafana-12.0.0.linux-amd64.tar.gz) = 183576101 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/go.mod) = 6ceec7e41167dd6ccb862746961e40d0cf31c8526684bfd2c980007f205609cf +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/go.mod) = 38990 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/go.work) = 582d313125088d393e9bf0bc3e62d4ce4e01f5bca62d404de61359b32fe624a4 +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/go.work) = 1420 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/.citools/bra/go.mod) = 9c26b766b230e220d3a089052ecbbc735c5813503cea96f00b98e2f426f1500b +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/.citools/bra/go.mod) = 845 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/.citools/cog/go.mod) = 85c347f1808375367fd14a913af040aaedb179768bbe0f31fb7a511f8f9c3ccb +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/.citools/cog/go.mod) = 2256 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/.citools/cue/go.mod) = ce73854fe392b493136dd8585c1d431d72cd82c244bf617073352004648a9471 +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/.citools/cue/go.mod) = 1533 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/.citools/golangci-lint/go.mod) = 6697690d3f339916262d3ed0a2f10880823e19db9520e907ee840e551d8ae8ac +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/.citools/golangci-lint/go.mod) = 10518 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/.citools/jb/go.mod) = 3c425afcbd554cfb50b6b5595b91cb67d8e990c967a428c3f34186b6de745475 +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/.citools/jb/go.mod) = 788 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/.citools/lefthook/go.mod) = 7a722525e0e97bc44608efd3baee778d5a96ed464acae97291ec2f67a287f7f2 +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/.citools/lefthook/go.mod) = 2508 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/.citools/swagger/go.mod) = a5a2ca8a1422870edac6a4d5aa94065ddbbf9b769667077fd27a0e1d2f73bfba +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/.citools/swagger/go.mod) = 2983 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/apps/advisor/go.mod) = 6c61070df4915b2e6fb69f557bd105c760b941acadd3c66f3fcd57bf7d4d1585 +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/apps/advisor/go.mod) = 4058 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/apps/alerting/notifications/go.mod) = d433a9fcbea78026ef8f926b3b10f701568d04ecc9c9d61fba0d199213c592c3 +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/apps/alerting/notifications/go.mod) = 4838 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/apps/dashboard/go.mod) = 13786f0addc30cd695e352543e1409c0ffa8857eb69a544007d9c78e218dcc21 +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/apps/dashboard/go.mod) = 6587 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/apps/folder/go.mod) = f1b308c3d11835603f93425a59619ac600b74590b16c003bf44ce9a61787e17a +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/apps/folder/go.mod) = 2749 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/apps/investigations/go.mod) = 39a2dd9a2655af15232f35fda4656e5a7162dce7a22a02903185d4d8363316c1 +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/apps/investigations/go.mod) = 4319 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/apps/playlist/go.mod) = af328216a05802c409348764579c74249af6cc944c0f87ef3f141dcfe01535de +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/apps/playlist/go.mod) = 4301 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/aggregator/go.mod) = 3d7b399ae76ee86858d2555edb186f8b106c1e2860701710914d04c57b773a36 +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/aggregator/go.mod) = 8310 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/apimachinery/go.mod) = 20cca84623d4bd3bd7c67de6e31fa3f433e99e42df6936ac665f645fe39fbadf +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/apimachinery/go.mod) = 2472 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/apis/secret/go.mod) = fa225e7fb224a25468dc0f2b247a55db248f65f9b944b7ac0f3ec5f7614de062 +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/apis/secret/go.mod) = 4939 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/apiserver/go.mod) = 7378a27c0569587d71c6e0323718d21337c8186cf1b93df3093c1583731e5e10 +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/apiserver/go.mod) = 5111 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/build/go.mod) = 45257f048442b4c6bd7ce660db2cab5d51a76378d1819ffa9ee103e82b0dfeca +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/build/go.mod) = 7931 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/build/wire/go.mod) = c4bd5ec552b8a78c51631dd0c4e5654481c6ef72d6b897fd8cdadec90d1c3db0 +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/build/wire/go.mod) = 330 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/codegen/go.mod) = af218f935140c2564403f76d0b4cb2a3867ccb78558ba5f610ea5a106f4ccdbe +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/codegen/go.mod) = 2490 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/plugins/codegen/go.mod) = 14e17b15ca415ed502b6391b65e0b28a2c2682d52215ad52afe901ba2c3eb480 +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/plugins/codegen/go.mod) = 2233 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/promlib/go.mod) = 99645974b2fba727e251431f916fc8fb4ecfac110cb4358af5ee0e25442ef383 +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/promlib/go.mod) = 6945 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/semconv/go.mod) = dffd3c1a8b43a8c1f81c88afc7fabd07551f08a727caa6c81b21cc7f22989500 +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/semconv/go.mod) = 269 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/storage/unified/apistore/go.mod) = 09bf0410097e19e63fead5f16ab2a493eb000ca8a78102592d4fb07647e0c74f +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/storage/unified/apistore/go.mod) = 23423 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/storage/unified/resource/go.mod) = ec8255b1d842f1ea1a6fb79d3b10144dc2a066c37c241621825b8e124708e0e1 +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/storage/unified/resource/go.mod) = 11340 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/util/xorm/go.mod) = efd1c53e50b60912388fa292a66c6c618f3888b28bf1f58767b344fbb5b71285 +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/pkg/util/xorm/go.mod) = 3135 +SHA256 (go/www_grafana/grafana-grafana-v12.0.0_GH0/grafana-grafana-v12.0.0_GH0.tar.gz) = 479b337fc101adfc8386414af053337b567c8d11480aa05499ccd929c4d70601 +SIZE (go/www_grafana/grafana-grafana-v12.0.0_GH0/grafana-grafana-v12.0.0_GH0.tar.gz) = 37646751 diff --git a/www/hs-DAV/Makefile b/www/hs-DAV/Makefile index f39bd3ad1b86..65266e6ae3ba 100644 --- a/www/hs-DAV/Makefile +++ b/www/hs-DAV/Makefile @@ -1,6 +1,6 @@ PORTNAME= DAV PORTVERSION= 1.3.4 -PORTREVISION= 6 +PORTREVISION= 7 CATEGORIES= www haskell MAINTAINER= haskell@FreeBSD.org @@ -11,127 +11,130 @@ LICENSE= GPLv3 USES= cabal -USE_CABAL= OneTuple-0.4.1.1_1 \ - QuickCheck-2.14.3 \ +USE_CABAL= OneTuple-0.4.2_1 \ + QuickCheck-2.15.0.1_1 \ StateVar-1.2.2 \ - adjunctions-4.4.2_2 \ - aeson-2.2.1.0_1 \ - ansi-terminal-1.1 \ + adjunctions-4.4.3 \ + aeson-2.2.3.0_3 \ + ansi-terminal-1.1.2 \ ansi-terminal-types-1.1 \ appar-0.1.8 \ asn1-encoding-0.9.6_2 \ asn1-parse-0.9.5 \ asn1-types-0.3.4 \ - assoc-1.1_1 \ - async-2.2.5 \ - attoparsec-0.14.4_5 \ - base-orphans-0.9.1 \ + assoc-1.1.1_1 \ + async-2.2.5_3 \ + attoparsec-0.14.4_6 \ + base-orphans-0.9.3 \ base16-bytestring-1.0.2.0_1 \ base64-bytestring-1.2.1.0_1 \ basement-0.0.16 \ - bifunctors-5.6.1_2 \ - bitvec-1.1.5.0 \ + bifunctors-5.6.2_2 \ + bitvec-1.1.5.0_3 \ blaze-builder-0.4.2.3 \ - blaze-html-0.9.1.2_4 \ - blaze-markup-0.8.3.0_1 \ + blaze-html-0.9.2.0_1 \ + blaze-markup-0.8.3.0_2 \ byteorder-1.0.4 \ - cabal-doctest-1.0.9_3 \ + cabal-doctest-1.0.11 \ call-stack-0.4.0 \ case-insensitive-1.2.1.0 \ - cborg-0.2.10.0 \ + cborg-0.2.10.0_2 \ cereal-0.5.8.3 \ + character-ps-0.1 \ colour-2.3.6 \ - comonad-5.0.8_2 \ - conduit-1.3.5 \ - conduit-extra-1.3.6 \ + comonad-5.0.9_1 \ + conduit-1.3.6.1 \ + conduit-extra-1.3.7 \ contravariant-1.5.5 \ - cookie-0.4.6 \ - crypton-0.34 \ - crypton-connection-0.3.2 \ - crypton-x509-1.7.6_1 \ - crypton-x509-store-1.6.9 \ + cookie-0.5.1 \ + crypton-1.0.4 \ + crypton-connection-0.4.4 \ + crypton-x509-1.7.7 \ + crypton-x509-store-1.6.10 \ crypton-x509-system-1.6.7 \ - crypton-x509-validation-1.6.12 \ - data-default-0.7.1.1 \ - data-default-class-0.1.2.0 \ - data-default-instances-containers-0.0.1 \ - data-default-instances-dlist-0.0.1 \ - data-default-instances-old-locale-0.0.1 \ - data-fix-0.3.2_5 \ + crypton-x509-validation-1.6.14 \ + data-default-0.8.0.1 \ + data-default-class-0.2.0.0 \ + data-fix-0.3.4_1 \ distributive-0.6.2.1_1 \ - dlist-1.0_1 \ + dlist-1.0_2 \ + ech-config-0.0.1 \ file-embed-0.0.16.0 \ - free-5.2_3 \ - generically-0.1.1_2 \ - half-0.3.1_1 \ - hashable-1.4.3.0_1 \ - hourglass-0.2.12 \ - hsc2hs-0.68.10_1 \ - http-client-0.7.16 \ - http-client-tls-0.3.6.3 \ + free-5.2_7 \ + generically-0.1.1_4 \ + half-0.3.2 \ + hashable-1.5.0.0_1 \ + hourglass-0.2.12_1 \ + hpke-0.0.0 \ + hsc2hs-0.68.10_4 \ + http-client-0.7.19 \ + http-client-tls-0.3.6.4_2 \ http-types-0.12.4 \ - indexed-traversable-0.1.3 \ - indexed-traversable-instances-0.1.1.2_2 \ - integer-conversion-0.1.0.1_1 \ - integer-logarithms-1.0.3.1_5 \ - invariant-0.6.2_1 \ - iproute-1.7.12 \ - kan-extensions-5.2.5_2 \ - lens-5.2.3_2 \ - memory-0.18.0 \ + indexed-traversable-0.1.4_1 \ + indexed-traversable-instances-0.1.2_1 \ + integer-conversion-0.1.1_1 \ + integer-logarithms-1.0.4 \ + invariant-0.6.4_1 \ + iproute-1.7.15 \ + kan-extensions-5.2.6_1 \ + lens-5.3.4 \ + memory-0.18.0_1 \ mime-types-0.1.2.0 \ - mono-traversable-1.0.17.0 \ - network-3.1.4.0_1 \ + mono-traversable-1.0.21.0 \ + network-3.2.7.0 \ + network-byte-order-0.1.7 \ network-uri-2.6.4.2_1 \ old-locale-1.0.0.7_2 \ old-time-1.1.0.4 \ - optparse-applicative-0.18.1.0 \ - parallel-3.2.2.0_7 \ + optparse-applicative-0.18.1.0_1 \ + os-string-2.0.7 \ + parallel-3.2.2.0_9 \ pem-0.2.4 \ prettyprinter-1.7.1 \ prettyprinter-ansi-terminal-1.1.3 \ - primitive-0.9.0.0 \ + primitive-0.9.1.0 \ profunctors-5.6.2_3 \ - random-1.2.1.2 \ - reflection-2.1.7_1 \ + random-1.3.1 \ + reflection-2.1.9_1 \ resourcet-1.3.0 \ - scientific-0.3.7.0_7 \ - semialign-1.3_1 \ - semigroupoids-6.0.0.1_1 \ + scientific-0.3.8.0_2 \ + semialign-1.3.1_2 \ + semigroupoids-6.0.1_2 \ semigroups-0.20 \ - serialise-0.2.6.1_1 \ + serialise-0.2.6.1_4 \ shakespeare-2.1.0.1 \ socks-0.6.1 \ split-0.2.5 \ - splitmix-0.1.0.5 \ - streaming-commons-0.2.2.6_1 \ - strict-0.5_1 \ - tagged-0.8.8 \ - text-iso8601-0.1_1 \ - text-short-0.1.5_3 \ - th-abstraction-0.6.0.0_1 \ - th-compat-0.1.4_4 \ - th-lift-0.8.4 \ - these-1.2_1 \ - time-compat-1.9.6.1_6 \ - tls-2.0.1 \ + splitmix-0.1.1 \ + streaming-commons-0.2.3.0 \ + strict-0.5.1_1 \ + tagged-0.8.9 \ + tasty-1.5.3_1 \ + text-iso8601-0.1.1_2 \ + text-short-0.1.6_3 \ + th-abstraction-0.7.1.0_1 \ + th-compat-0.1.6 \ + th-lift-0.8.6 \ + these-1.2.1_2 \ + time-compat-1.9.8 \ + tls-2.1.9 \ transformers-base-0.4.6 \ transformers-compat-0.7.2 \ - typed-process-0.2.11.1 \ - unix-time-0.4.12 \ - unliftio-core-0.2.1.0_3 \ - unordered-containers-0.2.20_1 \ + typed-process-0.2.13.0 \ + unix-time-0.4.16 \ + unliftio-core-0.2.1.0_4 \ + unordered-containers-0.2.20_4 \ utf8-string-1.0.2 \ - uuid-types-1.0.5.1 \ - vector-0.13.1.0 \ - vector-algorithms-0.9.0.1_3 \ - vector-stream-0.1.0.1 \ + uuid-types-1.0.6_3 \ + vector-0.13.2.0_1 \ + vector-algorithms-0.9.1.0 \ + vector-stream-0.1.0.1_3 \ void-0.7.3 \ - witherable-0.4.2_4 \ - xml-conduit-1.9.1.3 \ + witherable-0.5_1 \ + xml-conduit-1.10.0.0 \ xml-hamlet-0.5.0.2 \ xml-types-0.3.8 \ - zlib-0.7.0.0 + zlib-0.7.1.0_2 CABAL_EXECUTABLES= hdav diff --git a/www/hs-DAV/distinfo b/www/hs-DAV/distinfo index 854e4fcb56e7..8507c518ba1f 100644 --- a/www/hs-DAV/distinfo +++ b/www/hs-DAV/distinfo @@ -1,24 +1,24 @@ -TIMESTAMP = 1709138755 +TIMESTAMP = 1747068459 SHA256 (cabal/DAV-1.3.4/DAV-1.3.4.tar.gz) = 5e3b825290a0bd4c9da1c814b5e67901b0f9f1d16a88effaa7e060a81c895bc7 SIZE (cabal/DAV-1.3.4/DAV-1.3.4.tar.gz) = 19884 -SHA256 (cabal/OneTuple-0.4.1.1/OneTuple-0.4.1.1.tar.gz) = c9e764d4ee1e57cad8341bd5d0de33ba3a52b6793fc1309679f2bf60c030bb2b -SIZE (cabal/OneTuple-0.4.1.1/OneTuple-0.4.1.1.tar.gz) = 5601 -SHA256 (cabal/OneTuple-0.4.1.1/revision/1.cabal) = 632dfded172086fb9f0e26d3578bcfffa3fb6d135ea5a8de17b7a33ff6e6e682 -SIZE (cabal/OneTuple-0.4.1.1/revision/1.cabal) = 2575 -SHA256 (cabal/QuickCheck-2.14.3/QuickCheck-2.14.3.tar.gz) = 5c0f22b36b28a1a8fa110b3819818d3f29494a3b0dedbae299f064123ca70501 -SIZE (cabal/QuickCheck-2.14.3/QuickCheck-2.14.3.tar.gz) = 76849 +SHA256 (cabal/OneTuple-0.4.2/OneTuple-0.4.2.tar.gz) = 174da8a0f4004d17b08182cb25b0e045fce5de1fdeae84e9d75fdea2867aab55 +SIZE (cabal/OneTuple-0.4.2/OneTuple-0.4.2.tar.gz) = 5207 +SHA256 (cabal/OneTuple-0.4.2/revision/1.cabal) = dd7266f983da2970e5662168add810dabadabb3a4bb9b137181eafc0ac7ea4d4 +SIZE (cabal/OneTuple-0.4.2/revision/1.cabal) = 2013 +SHA256 (cabal/QuickCheck-2.15.0.1/QuickCheck-2.15.0.1.tar.gz) = a3b2216ddbaf481dbc82414b6120f8b726d969db3f0b51f20a7a45425ef36e7f +SIZE (cabal/QuickCheck-2.15.0.1/QuickCheck-2.15.0.1.tar.gz) = 81502 +SHA256 (cabal/QuickCheck-2.15.0.1/revision/1.cabal) = 0cfd337bb9e6fbf09255bd24bb498a156f1d9bcd465396ac8657b25034b9ee31 +SIZE (cabal/QuickCheck-2.15.0.1/revision/1.cabal) = 9046 SHA256 (cabal/StateVar-1.2.2/StateVar-1.2.2.tar.gz) = 5e4b39da395656a59827b0280508aafdc70335798b50e5d6fd52596026251825 SIZE (cabal/StateVar-1.2.2/StateVar-1.2.2.tar.gz) = 5048 -SHA256 (cabal/adjunctions-4.4.2/adjunctions-4.4.2.tar.gz) = 147b5f8db810bca0ea8952ef974982ffc447cecd21f01e1ea1121df77e276518 -SIZE (cabal/adjunctions-4.4.2/adjunctions-4.4.2.tar.gz) = 17201 -SHA256 (cabal/adjunctions-4.4.2/revision/2.cabal) = 30206ae6b78d3d523c2ff73640f84b51fa204ac3f05267a5f0c77c486b96781d -SIZE (cabal/adjunctions-4.4.2/revision/2.cabal) = 3379 -SHA256 (cabal/aeson-2.2.1.0/aeson-2.2.1.0.tar.gz) = 914eefd0e80d12db5c721daa2cbab427acee39795f125c5460c1fe48cf9a5d7f -SIZE (cabal/aeson-2.2.1.0/aeson-2.2.1.0.tar.gz) = 341038 -SHA256 (cabal/aeson-2.2.1.0/revision/1.cabal) = a23a61aada8233e10573e1612c0b2efe5a1aba0d59b05dbe2f63301822f136cb -SIZE (cabal/aeson-2.2.1.0/revision/1.cabal) = 6582 -SHA256 (cabal/ansi-terminal-1.1/ansi-terminal-1.1.tar.gz) = 525d6257bebad9755fa528ce03e64c6a439fbc129aa307a14063896e4871b253 -SIZE (cabal/ansi-terminal-1.1/ansi-terminal-1.1.tar.gz) = 34897 +SHA256 (cabal/adjunctions-4.4.3/adjunctions-4.4.3.tar.gz) = 8beb121cee2bf913dac3188ed1e0e05cf1a0d0f12d4cb4a27c0da58450eb189a +SIZE (cabal/adjunctions-4.4.3/adjunctions-4.4.3.tar.gz) = 16788 +SHA256 (cabal/aeson-2.2.3.0/aeson-2.2.3.0.tar.gz) = daa25cf428256ad05d21f2bfa44077c1b14d6c784b7930a202ee901f11cc6baa +SIZE (cabal/aeson-2.2.3.0/aeson-2.2.3.0.tar.gz) = 340855 +SHA256 (cabal/aeson-2.2.3.0/revision/3.cabal) = 61e559f2bad61a98aac564f2a4fd892d21e9e1712e14e3db93326317aa944a9b +SIZE (cabal/aeson-2.2.3.0/revision/3.cabal) = 6378 +SHA256 (cabal/ansi-terminal-1.1.2/ansi-terminal-1.1.2.tar.gz) = a8d04a3e0451e22a6499a92311f0df1196dc65b687df7d10e3f30d92420156b0 +SIZE (cabal/ansi-terminal-1.1.2/ansi-terminal-1.1.2.tar.gz) = 36259 SHA256 (cabal/ansi-terminal-types-1.1/ansi-terminal-types-1.1.tar.gz) = f2e5333eb78da5f4dd330fca0c81a59276cc150c625647cd20f57b7f297a5d25 SIZE (cabal/ansi-terminal-types-1.1/ansi-terminal-types-1.1.tar.gz) = 4746 SHA256 (cabal/appar-0.1.8/appar-0.1.8.tar.gz) = c4ceeddc26525b58d82c41b6d3e32141371a200a6794aae185b6266ccc81631f @@ -31,18 +31,20 @@ SHA256 (cabal/asn1-parse-0.9.5/asn1-parse-0.9.5.tar.gz) = 8f1fe1344d30b39dc594d7 SIZE (cabal/asn1-parse-0.9.5/asn1-parse-0.9.5.tar.gz) = 2951 SHA256 (cabal/asn1-types-0.3.4/asn1-types-0.3.4.tar.gz) = 78ee92a251379298ca820fa53edbf4b33c539b9fcd887c86f520c30e3b4e21a8 SIZE (cabal/asn1-types-0.3.4/asn1-types-0.3.4.tar.gz) = 6472 -SHA256 (cabal/assoc-1.1/assoc-1.1.tar.gz) = 7aa2e6548b3d9d49a286ac20639479aaf6c47a1446113ed784d98737c5f60df4 -SIZE (cabal/assoc-1.1/assoc-1.1.tar.gz) = 3193 -SHA256 (cabal/assoc-1.1/revision/1.cabal) = 56d0fd1c17aaf6268e81bf19ba5afe186128d7f88126bd546d5b3151ab692652 -SIZE (cabal/assoc-1.1/revision/1.cabal) = 1617 +SHA256 (cabal/assoc-1.1.1/assoc-1.1.1.tar.gz) = 231149b7fef09f5dd95af51228615e3b296dbd0faadeca053e0644a4b13b0ff6 +SIZE (cabal/assoc-1.1.1/assoc-1.1.1.tar.gz) = 3158 +SHA256 (cabal/assoc-1.1.1/revision/1.cabal) = 0ab39b4d1feb4caca95ac6e314f48782b27a86a6b8d1f5e8dc4be9fbed11185f +SIZE (cabal/assoc-1.1.1/revision/1.cabal) = 1420 SHA256 (cabal/async-2.2.5/async-2.2.5.tar.gz) = 1818473ebab9212afad2ed76297aefde5fae8b5d4404daf36939aece6a8f16f7 SIZE (cabal/async-2.2.5/async-2.2.5.tar.gz) = 15742 +SHA256 (cabal/async-2.2.5/revision/3.cabal) = b7648c6165729a973d95cb328f9fd874813a81c727707e8b2552b4f03399763b +SIZE (cabal/async-2.2.5/revision/3.cabal) = 3366 SHA256 (cabal/attoparsec-0.14.4/attoparsec-0.14.4.tar.gz) = 3f337fe58624565de12426f607c23e60c7b09c86b4e3adfc827ca188c9979e6c SIZE (cabal/attoparsec-0.14.4/attoparsec-0.14.4.tar.gz) = 160701 -SHA256 (cabal/attoparsec-0.14.4/revision/5.cabal) = ec709539b881d6431620bd7c40fbfa680aaf4a98c6f35b51536d8f455682b1ae -SIZE (cabal/attoparsec-0.14.4/revision/5.cabal) = 5703 -SHA256 (cabal/base-orphans-0.9.1/base-orphans-0.9.1.tar.gz) = 5bbf2da382c5b212d6a8be2f8c49edee0eba30f272a15fd32c13e6e4091ef172 -SIZE (cabal/base-orphans-0.9.1/base-orphans-0.9.1.tar.gz) = 26418 +SHA256 (cabal/attoparsec-0.14.4/revision/6.cabal) = 35129d0ab1741f000f1a7d2fc839544919ee6fbb8f2d6e7f0a629c41f91035f3 +SIZE (cabal/attoparsec-0.14.4/revision/6.cabal) = 5914 +SHA256 (cabal/base-orphans-0.9.3/base-orphans-0.9.3.tar.gz) = 17a35079c8719014560c028d9805ec1301b900972adf212e00af23fe3ebfabd8 +SIZE (cabal/base-orphans-0.9.3/base-orphans-0.9.3.tar.gz) = 19923 SHA256 (cabal/base16-bytestring-1.0.2.0/base16-bytestring-1.0.2.0.tar.gz) = 1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784 SIZE (cabal/base16-bytestring-1.0.2.0/base16-bytestring-1.0.2.0.tar.gz) = 7219 SHA256 (cabal/base16-bytestring-1.0.2.0/revision/1.cabal) = a694e88f9ec9fc79f0b03f233d3fea592b68f70a34aac2ddb5bcaecb6562e2fd @@ -53,154 +55,156 @@ SHA256 (cabal/base64-bytestring-1.2.1.0/revision/1.cabal) = 45305ccf8914c66d385b SIZE (cabal/base64-bytestring-1.2.1.0/revision/1.cabal) = 2502 SHA256 (cabal/basement-0.0.16/basement-0.0.16.tar.gz) = 7fb77e249aef76ba5aed3059d556800ce02b614597c488ba01f0a16449146300 SIZE (cabal/basement-0.0.16/basement-0.0.16.tar.gz) = 134837 -SHA256 (cabal/bifunctors-5.6.1/bifunctors-5.6.1.tar.gz) = 06381471b5be16516a1b2c4b21a5101a3d991038bface8e0cad144c0044d57fc -SIZE (cabal/bifunctors-5.6.1/bifunctors-5.6.1.tar.gz) = 38170 -SHA256 (cabal/bifunctors-5.6.1/revision/2.cabal) = 82fa7ed8f69f0bfa375de117ab36414c0b96a97ee046edc3ac6da7a295a94755 -SIZE (cabal/bifunctors-5.6.1/revision/2.cabal) = 3273 +SHA256 (cabal/bifunctors-5.6.2/bifunctors-5.6.2.tar.gz) = 1086a9285061eed0c2c5d3cb65aa223defd52fca6d0515bb69ddf2dbc3d9697a +SIZE (cabal/bifunctors-5.6.2/bifunctors-5.6.2.tar.gz) = 38193 +SHA256 (cabal/bifunctors-5.6.2/revision/2.cabal) = 115a621c4eaaabb07834f9e4dd3371e21f39d034305062f4bd5cd72c2f8880d2 +SIZE (cabal/bifunctors-5.6.2/revision/2.cabal) = 3332 SHA256 (cabal/bitvec-1.1.5.0/bitvec-1.1.5.0.tar.gz) = 83d27cee5be1d5342ddbf39999d0c8ea54cb433d0891eea5471fbfaa29f8dec5 SIZE (cabal/bitvec-1.1.5.0/bitvec-1.1.5.0.tar.gz) = 40076 +SHA256 (cabal/bitvec-1.1.5.0/revision/3.cabal) = 434be6dc60e22858a52869c58038c35353f1a778b9679ebc06a2165bcc7f88b3 +SIZE (cabal/bitvec-1.1.5.0/revision/3.cabal) = 4921 SHA256 (cabal/blaze-builder-0.4.2.3/blaze-builder-0.4.2.3.tar.gz) = 66291874236b7342adab033e3cddae414a23a2865dfb44095dfc4e0b9d46703b SIZE (cabal/blaze-builder-0.4.2.3/blaze-builder-0.4.2.3.tar.gz) = 60777 -SHA256 (cabal/blaze-html-0.9.1.2/blaze-html-0.9.1.2.tar.gz) = 60503f42546c6c1b954014d188ea137e43d74dcffd2bf6157c113fd91a0c394c -SIZE (cabal/blaze-html-0.9.1.2/blaze-html-0.9.1.2.tar.gz) = 81617 -SHA256 (cabal/blaze-html-0.9.1.2/revision/4.cabal) = 2e40ad3828320b72122f09754091fb686fa0fd4c083769f17ef84584972ec450 -SIZE (cabal/blaze-html-0.9.1.2/revision/4.cabal) = 3020 +SHA256 (cabal/blaze-html-0.9.2.0/blaze-html-0.9.2.0.tar.gz) = 65542ef39f7644a3d76afcadeb976d3e334c6947516b7313fcb59165cea1608f +SIZE (cabal/blaze-html-0.9.2.0/blaze-html-0.9.2.0.tar.gz) = 81915 +SHA256 (cabal/blaze-html-0.9.2.0/revision/1.cabal) = 85c42f84f4ead2c48844fbe0865069add3bb3bb3322d38607e93d5515a4c9c58 +SIZE (cabal/blaze-html-0.9.2.0/revision/1.cabal) = 3087 SHA256 (cabal/blaze-markup-0.8.3.0/blaze-markup-0.8.3.0.tar.gz) = 8606ac8b4a1f7f8f1bbc0770b2752e9b6f88ccc9fbdcbb33aa20577d0e5930e8 SIZE (cabal/blaze-markup-0.8.3.0/blaze-markup-0.8.3.0.tar.gz) = 14647 -SHA256 (cabal/blaze-markup-0.8.3.0/revision/1.cabal) = a8365ac8b98738065c2867682dbcd9b0baeb7a5cd1eaa8e508279edfd19227b9 -SIZE (cabal/blaze-markup-0.8.3.0/revision/1.cabal) = 2276 +SHA256 (cabal/blaze-markup-0.8.3.0/revision/2.cabal) = 027f218b81d28a7c0a33b93d456c4e5aa92d145e9dcee14834fbad73a39ad7e4 +SIZE (cabal/blaze-markup-0.8.3.0/revision/2.cabal) = 2360 SHA256 (cabal/byteorder-1.0.4/byteorder-1.0.4.tar.gz) = bd20bbb586947f99c38a4c93d9d0266f49f6fc581767b51ba568f6d5d52d2919 SIZE (cabal/byteorder-1.0.4/byteorder-1.0.4.tar.gz) = 2030 -SHA256 (cabal/cabal-doctest-1.0.9/cabal-doctest-1.0.9.tar.gz) = 5556088496111d33810c4ae6c4a065bb37fa3315e9e8891e8000b1ab6707ba73 -SIZE (cabal/cabal-doctest-1.0.9/cabal-doctest-1.0.9.tar.gz) = 10770 -SHA256 (cabal/cabal-doctest-1.0.9/revision/3.cabal) = 6dea0dbd1457f43d96ce1cfb1bab8b9f55d4fb82940e2bfa5aad78e6e2260656 -SIZE (cabal/cabal-doctest-1.0.9/revision/3.cabal) = 1517 +SHA256 (cabal/cabal-doctest-1.0.11/cabal-doctest-1.0.11.tar.gz) = dc2df2f0b427028617f10e445ff8ab3352d3bbeef1b8dd847e879d2d36bf923f +SIZE (cabal/cabal-doctest-1.0.11/cabal-doctest-1.0.11.tar.gz) = 13204 SHA256 (cabal/call-stack-0.4.0/call-stack-0.4.0.tar.gz) = 430bcf8a3404f7e55319573c0b807b1356946f0c8f289bb3d9afb279c636b87b SIZE (cabal/call-stack-0.4.0/call-stack-0.4.0.tar.gz) = 2757 SHA256 (cabal/case-insensitive-1.2.1.0/case-insensitive-1.2.1.0.tar.gz) = 296dc17e0c5f3dfb3d82ced83e4c9c44c338ecde749b278b6eae512f1d04e406 SIZE (cabal/case-insensitive-1.2.1.0/case-insensitive-1.2.1.0.tar.gz) = 53609 SHA256 (cabal/cborg-0.2.10.0/cborg-0.2.10.0.tar.gz) = 17fe070c38fc498cab49bcb9d6215b7747d53bedf96502e9bcce9cad73b9c797 SIZE (cabal/cborg-0.2.10.0/cborg-0.2.10.0.tar.gz) = 92122 +SHA256 (cabal/cborg-0.2.10.0/revision/2.cabal) = a52224590aca5c992a5ca0c6713439587076ad1f9c8e04ce2dca7ba2026e3654 +SIZE (cabal/cborg-0.2.10.0/revision/2.cabal) = 5406 SHA256 (cabal/cereal-0.5.8.3/cereal-0.5.8.3.tar.gz) = 99905220661b26e5bd91130bd9772554938608a5b1d717240a6eb331121e0f6a SIZE (cabal/cereal-0.5.8.3/cereal-0.5.8.3.tar.gz) = 20166 +SHA256 (cabal/character-ps-0.1/character-ps-0.1.tar.gz) = 22de71fde38b236d3e9168a832b5e1e75d1fb4f4028667bdf747b3b4c8c1529c +SIZE (cabal/character-ps-0.1/character-ps-0.1.tar.gz) = 8192 SHA256 (cabal/colour-2.3.6/colour-2.3.6.tar.gz) = 2cd35dcd6944a5abc9f108a5eb5ee564b6b1fa98a9ec79cefcc20b588991f871 SIZE (cabal/colour-2.3.6/colour-2.3.6.tar.gz) = 20675 -SHA256 (cabal/comonad-5.0.8/comonad-5.0.8.tar.gz) = ef6cdf2cc292cc43ee6aa96c581b235fdea8ab44a0bffb24dc79ae2b2ef33d13 -SIZE (cabal/comonad-5.0.8/comonad-5.0.8.tar.gz) = 15227 -SHA256 (cabal/comonad-5.0.8/revision/2.cabal) = 4a4dbfbd03fb4963987710fca994e8b5624bd05a33e5f95b7581b26f8229c5e3 -SIZE (cabal/comonad-5.0.8/revision/2.cabal) = 3631 -SHA256 (cabal/conduit-1.3.5/conduit-1.3.5.tar.gz) = 2bb0d3e0eecc43e3d1d8cfc2125914f9175cde752be2d5908a1e120f321c782d -SIZE (cabal/conduit-1.3.5/conduit-1.3.5.tar.gz) = 88893 -SHA256 (cabal/conduit-extra-1.3.6/conduit-extra-1.3.6.tar.gz) = 8950c38049d892c38590d389bed49ecf880671f58ec63dd4709d9fe3d4b8f153 -SIZE (cabal/conduit-extra-1.3.6/conduit-extra-1.3.6.tar.gz) = 33321 +SHA256 (cabal/comonad-5.0.9/comonad-5.0.9.tar.gz) = 69fb0eb49a80055a9b76d31d0a5648777c4050ac8dbf56a9344b862ed878a789 +SIZE (cabal/comonad-5.0.9/comonad-5.0.9.tar.gz) = 14455 +SHA256 (cabal/comonad-5.0.9/revision/1.cabal) = 75aded79bf583c908e4e4687c0ae067f256e2507536b75f58ffba7748767c353 +SIZE (cabal/comonad-5.0.9/revision/1.cabal) = 3587 +SHA256 (cabal/conduit-1.3.6.1/conduit-1.3.6.1.tar.gz) = 69902af03ea7e4cb982fa83da42afe36973b62d0a52ea140ae5362e52854ba3f +SIZE (cabal/conduit-1.3.6.1/conduit-1.3.6.1.tar.gz) = 89114 +SHA256 (cabal/conduit-extra-1.3.7/conduit-extra-1.3.7.tar.gz) = b2bd6f8626909c1784793d791078bedc0831fbaf97cb3e837d9fd94c89532b57 +SIZE (cabal/conduit-extra-1.3.7/conduit-extra-1.3.7.tar.gz) = 33170 SHA256 (cabal/contravariant-1.5.5/contravariant-1.5.5.tar.gz) = 062fd66580d7aad0b5ba93e644ffa7feee69276ef50f20d4ed9f1deb7642dffa SIZE (cabal/contravariant-1.5.5/contravariant-1.5.5.tar.gz) = 13815 -SHA256 (cabal/cookie-0.4.6/cookie-0.4.6.tar.gz) = 8c41a956c32b9733d525a53d43b0338a236a34d36658ecc4364c8249a6664baa -SIZE (cabal/cookie-0.4.6/cookie-0.4.6.tar.gz) = 6219 -SHA256 (cabal/crypton-0.34/crypton-0.34.tar.gz) = 4444846924ca55615fce104913a5a68675a180cfeadc350ab2b124fba1bc1ed6 -SIZE (cabal/crypton-0.34/crypton-0.34.tar.gz) = 622533 -SHA256 (cabal/crypton-connection-0.3.2/crypton-connection-0.3.2.tar.gz) = 208be23bc910f8e5f9431995b9c011ed376bb947d79f74c8f51a5e4ecd9e991e -SIZE (cabal/crypton-connection-0.3.2/crypton-connection-0.3.2.tar.gz) = 9054 -SHA256 (cabal/crypton-x509-1.7.6/crypton-x509-1.7.6.tar.gz) = ebb74aca2d00261e2fb4927d211ba1a174e190e5257f309e190f019727f8caff -SIZE (cabal/crypton-x509-1.7.6/crypton-x509-1.7.6.tar.gz) = 21557 -SHA256 (cabal/crypton-x509-1.7.6/revision/1.cabal) = c567657a705b6d6521f9dd2de999bf530d618ec00f3b939df76a41fb0fe94281 -SIZE (cabal/crypton-x509-1.7.6/revision/1.cabal) = 2339 -SHA256 (cabal/crypton-x509-store-1.6.9/crypton-x509-store-1.6.9.tar.gz) = 3e6218af12e039cc291d19792db044df1647b5cf0bbc60b909a027e7595a256f -SIZE (cabal/crypton-x509-store-1.6.9/crypton-x509-store-1.6.9.tar.gz) = 12735 +SHA256 (cabal/cookie-0.5.1/cookie-0.5.1.tar.gz) = 1adde62726e3a3bbe147c02514fe0c4f5f2c5a2ff63842deac10c451a2a6f7a0 +SIZE (cabal/cookie-0.5.1/cookie-0.5.1.tar.gz) = 6680 +SHA256 (cabal/crypton-1.0.4/crypton-1.0.4.tar.gz) = b4885402206422450823e7001a40d0f6b11d0c603a0cb8bf8ff5a186b7c4011a +SIZE (cabal/crypton-1.0.4/crypton-1.0.4.tar.gz) = 649976 +SHA256 (cabal/crypton-connection-0.4.4/crypton-connection-0.4.4.tar.gz) = 247068c222a5feec66ada8d599bfc4a878bef2cac104636afbc7d5cae93ca491 +SIZE (cabal/crypton-connection-0.4.4/crypton-connection-0.4.4.tar.gz) = 9324 +SHA256 (cabal/crypton-x509-1.7.7/crypton-x509-1.7.7.tar.gz) = efece48c8c4adfee209979c2967037d90e6ba1b7b4e7bb1081d1d4cd93daf382 +SIZE (cabal/crypton-x509-1.7.7/crypton-x509-1.7.7.tar.gz) = 21547 +SHA256 (cabal/crypton-x509-store-1.6.10/crypton-x509-store-1.6.10.tar.gz) = cef0631c0dad9ca43984e51140f030e7de9a1f4bfd0b2223ed9c6d41fe4238b0 +SIZE (cabal/crypton-x509-store-1.6.10/crypton-x509-store-1.6.10.tar.gz) = 12720 SHA256 (cabal/crypton-x509-system-1.6.7/crypton-x509-system-1.6.7.tar.gz) = a436261e5f5e83d85080f57a5509c8224c9e75a6e56d0c43a7d2967052b634ca SIZE (cabal/crypton-x509-system-1.6.7/crypton-x509-system-1.6.7.tar.gz) = 3496 -SHA256 (cabal/crypton-x509-validation-1.6.12/crypton-x509-validation-1.6.12.tar.gz) = 0e60b7e237a4fd5e7e6e7200018c7947314292ef63751cbb51877836ebe650f6 -SIZE (cabal/crypton-x509-validation-1.6.12/crypton-x509-validation-1.6.12.tar.gz) = 19573 -SHA256 (cabal/data-default-0.7.1.1/data-default-0.7.1.1.tar.gz) = b0f95d279cd75cacaa8152a01590dc3460f7134f6840b37052abb3ba3cb2a511 -SIZE (cabal/data-default-0.7.1.1/data-default-0.7.1.1.tar.gz) = 1627 -SHA256 (cabal/data-default-class-0.1.2.0/data-default-class-0.1.2.0.tar.gz) = 4f01b423f000c3e069aaf52a348564a6536797f31498bb85c3db4bd2d0973e56 -SIZE (cabal/data-default-class-0.1.2.0/data-default-class-0.1.2.0.tar.gz) = 2522 -SHA256 (cabal/data-default-instances-containers-0.0.1/data-default-instances-containers-0.0.1.tar.gz) = a55e07af005c9815d82f3fc95e125db82994377c9f4a769428878701d4ec081a -SIZE (cabal/data-default-instances-containers-0.0.1/data-default-instances-containers-0.0.1.tar.gz) = 1659 -SHA256 (cabal/data-default-instances-dlist-0.0.1/data-default-instances-dlist-0.0.1.tar.gz) = 7d683711cbf08abd7adcd5ac2be825381308d220397315a5570fe61b719b5959 -SIZE (cabal/data-default-instances-dlist-0.0.1/data-default-instances-dlist-0.0.1.tar.gz) = 1503 -SHA256 (cabal/data-default-instances-old-locale-0.0.1/data-default-instances-old-locale-0.0.1.tar.gz) = 60d3b02922958c4908d7bf2b24ddf61511665745f784227d206745784b0c0802 -SIZE (cabal/data-default-instances-old-locale-0.0.1/data-default-instances-old-locale-0.0.1.tar.gz) = 1519 -SHA256 (cabal/data-fix-0.3.2/data-fix-0.3.2.tar.gz) = 3a172d3bc0639c327345e965f9d9023e099425814b28dcdb7b60ff66d66219cc -SIZE (cabal/data-fix-0.3.2/data-fix-0.3.2.tar.gz) = 5842 -SHA256 (cabal/data-fix-0.3.2/revision/5.cabal) = cd7d6ff8b68aca3b51d8116870fc8ccdbc557989562cd3d5c941e4f0b7bc5af1 -SIZE (cabal/data-fix-0.3.2/revision/5.cabal) = 1734 +SHA256 (cabal/crypton-x509-validation-1.6.14/crypton-x509-validation-1.6.14.tar.gz) = ed0e394127db59d66a0a8e4bde28fa0b8cc67cc9a810793b54a58e96df4c601d +SIZE (cabal/crypton-x509-validation-1.6.14/crypton-x509-validation-1.6.14.tar.gz) = 19693 +SHA256 (cabal/data-default-0.8.0.1/data-default-0.8.0.1.tar.gz) = ce085de8ec2196f0c1d30af0ad8a517d5737c9edfd4ebfbb49e8687dfc40b6ca +SIZE (cabal/data-default-0.8.0.1/data-default-0.8.0.1.tar.gz) = 5821 +SHA256 (cabal/data-default-class-0.2.0.0/data-default-class-0.2.0.0.tar.gz) = 0ae530c4fb0bd6c8a8ba399429ccd9c75f9c7696049117178f4ceeb2bd08d5b4 +SIZE (cabal/data-default-class-0.2.0.0/data-default-class-0.2.0.0.tar.gz) = 1589 +SHA256 (cabal/data-fix-0.3.4/data-fix-0.3.4.tar.gz) = 8df052d18c047ab9e9200536a8799b5af3997ebecbbb091a7384b6be8416ab37 +SIZE (cabal/data-fix-0.3.4/data-fix-0.3.4.tar.gz) = 5992 +SHA256 (cabal/data-fix-0.3.4/revision/1.cabal) = ee78be6168ca0878d670fede957195d3debf4a37a806d13d72182b274901261b +SIZE (cabal/data-fix-0.3.4/revision/1.cabal) = 1406 SHA256 (cabal/distributive-0.6.2.1/distributive-0.6.2.1.tar.gz) = d7351392e078f58caa46630a4b9c643e1e2e9dddee45848c5c8358e7b1316b91 SIZE (cabal/distributive-0.6.2.1/distributive-0.6.2.1.tar.gz) = 8140 SHA256 (cabal/distributive-0.6.2.1/revision/1.cabal) = 0f99f5541cca04acf89b64432b03422b6408e830a8dff30e6c4334ef1a48680c SIZE (cabal/distributive-0.6.2.1/revision/1.cabal) = 2996 SHA256 (cabal/dlist-1.0/dlist-1.0.tar.gz) = 173d637328bb173fcc365f30d29ff4a94292a1e0e5558aeb3dfc11de81510115 SIZE (cabal/dlist-1.0/dlist-1.0.tar.gz) = 18667 -SHA256 (cabal/dlist-1.0/revision/1.cabal) = 55ff69d20ce638fc7727342ee67f2f868da61d3dcf3763f790bf9aa0b145e568 -SIZE (cabal/dlist-1.0/revision/1.cabal) = 3812 +SHA256 (cabal/dlist-1.0/revision/2.cabal) = 854727594c5a816ab3d10f15b1bc4fedaf9e3f7d1ef517a2bb9011f29ba261d2 +SIZE (cabal/dlist-1.0/revision/2.cabal) = 3942 +SHA256 (cabal/ech-config-0.0.1/ech-config-0.0.1.tar.gz) = b236b6d7ea1385c280b76051edc7d8f6db31c9cb7b35df5c06f5a0bd75b4feba +SIZE (cabal/ech-config-0.0.1/ech-config-0.0.1.tar.gz) = 5423 SHA256 (cabal/file-embed-0.0.16.0/file-embed-0.0.16.0.tar.gz) = 5f18672eff936355557cdd163905451205d7ee22742edac313dd27cf42a3f415 SIZE (cabal/file-embed-0.0.16.0/file-embed-0.0.16.0.tar.gz) = 7198 SHA256 (cabal/free-5.2/free-5.2.tar.gz) = 72867f7c89173263765736e8d395e94291f1aaea626ecb1d673d72ce90b94f89 SIZE (cabal/free-5.2/free-5.2.tar.gz) = 58781 -SHA256 (cabal/free-5.2/revision/3.cabal) = 4dd76c1a19f81d7866e7b75682350f1ef3e0441b19b4d07eccdd9ef326a0be70 -SIZE (cabal/free-5.2/revision/3.cabal) = 4176 +SHA256 (cabal/free-5.2/revision/7.cabal) = 7f3992a66987bbba5a6546420f6129fb9b66b80cdd005d34ec77a1e1c8ed8340 +SIZE (cabal/free-5.2/revision/7.cabal) = 4178 SHA256 (cabal/generically-0.1.1/generically-0.1.1.tar.gz) = 04c5a436bec4b041f71a733f56a1bd7f435f63dde8d3eb5c1f48d55b4dbc43cf SIZE (cabal/generically-0.1.1/generically-0.1.1.tar.gz) = 2870 -SHA256 (cabal/generically-0.1.1/revision/2.cabal) = 378ec049bc2853b8011df116647fbd34bb9f00edce9840e4957f98abc097597c -SIZE (cabal/generically-0.1.1/revision/2.cabal) = 1169 -SHA256 (cabal/half-0.3.1/half-0.3.1.tar.gz) = e2afc32724e11bf5c695d797b9169d9d9b2dc62a530aed31284c8187af1615d1 -SIZE (cabal/half-0.3.1/half-0.3.1.tar.gz) = 8514 -SHA256 (cabal/half-0.3.1/revision/1.cabal) = f43f16671b42bdc92b4be9e0b0ce1bcff817c928d0a50f13a6264a24586c1a7c -SIZE (cabal/half-0.3.1/revision/1.cabal) = 2158 -SHA256 (cabal/hashable-1.4.3.0/hashable-1.4.3.0.tar.gz) = 32efb16c2891786209b7cbe5c39df9b3a9ae51e836f1a54f646bc4602b7ab0f5 -SIZE (cabal/hashable-1.4.3.0/hashable-1.4.3.0.tar.gz) = 25601 -SHA256 (cabal/hashable-1.4.3.0/revision/1.cabal) = f3bf68acfa0df7a064a378ef2cdcfeb55e6fb96100675f4c593556dcbf3d7194 -SIZE (cabal/hashable-1.4.3.0/revision/1.cabal) = 4718 +SHA256 (cabal/generically-0.1.1/revision/4.cabal) = 3f64278f5c582dd7c6963967b1290079bcd03b8348989f909ac9bd972ddc452e +SIZE (cabal/generically-0.1.1/revision/4.cabal) = 1203 +SHA256 (cabal/half-0.3.2/half-0.3.2.tar.gz) = 19992e9fb6f4ea8a53b0ba0693565e8ec73c620b603e74b6d4f262e49d7df038 +SIZE (cabal/half-0.3.2/half-0.3.2.tar.gz) = 8319 +SHA256 (cabal/hashable-1.5.0.0/hashable-1.5.0.0.tar.gz) = e58b3a8e18da5f6cd7e937e5fd683e500bb1f8276b3768269759119ca0cddb6a +SIZE (cabal/hashable-1.5.0.0/hashable-1.5.0.0.tar.gz) = 89062 +SHA256 (cabal/hashable-1.5.0.0/revision/1.cabal) = 2f23146cbe0325029927b221647695a4c7d6e97548ff731110979e34361f58ef +SIZE (cabal/hashable-1.5.0.0/revision/1.cabal) = 5914 SHA256 (cabal/hourglass-0.2.12/hourglass-0.2.12.tar.gz) = 44335b5c402e80c60f1db6a74462be4ea29d1a9043aa994334ffee1164f1ca4a SIZE (cabal/hourglass-0.2.12/hourglass-0.2.12.tar.gz) = 25797 +SHA256 (cabal/hourglass-0.2.12/revision/1.cabal) = 85c46cb6cd30c84546929926d4402a534f723651198e5945c9e59b9e699a8979 +SIZE (cabal/hourglass-0.2.12/revision/1.cabal) = 3197 +SHA256 (cabal/hpke-0.0.0/hpke-0.0.0.tar.gz) = 7b0b7dfb4f7081beab54c4cb0cb3df3f3c03ce05cb11747f190bab22df19b83c +SIZE (cabal/hpke-0.0.0/hpke-0.0.0.tar.gz) = 25248 SHA256 (cabal/hsc2hs-0.68.10/hsc2hs-0.68.10.tar.gz) = 6f4e34d788fe2ca7091ee0a10307ee8a7c060a1ba890f2bffad16a7d4d5cef76 SIZE (cabal/hsc2hs-0.68.10/hsc2hs-0.68.10.tar.gz) = 40517 -SHA256 (cabal/hsc2hs-0.68.10/revision/1.cabal) = 488cca2a179a5141da8f35a3a7e6699a0ef690f834f589d6b152c4947aa8fe2d -SIZE (cabal/hsc2hs-0.68.10/revision/1.cabal) = 3013 -SHA256 (cabal/http-client-0.7.16/http-client-0.7.16.tar.gz) = 3a84ca8f94306084aef3ff5128db231cb6bb7c606fbee16910f8d0df400c6291 -SIZE (cabal/http-client-0.7.16/http-client-0.7.16.tar.gz) = 96891 -SHA256 (cabal/http-client-tls-0.3.6.3/http-client-tls-0.3.6.3.tar.gz) = 38dcfc3d772eb6898b4a8856d6159824d13f65eb291733619f625a802dad9095 -SIZE (cabal/http-client-tls-0.3.6.3/http-client-tls-0.3.6.3.tar.gz) = 7935 +SHA256 (cabal/hsc2hs-0.68.10/revision/4.cabal) = 725ef6da03d3d6e332db4de0a35bee45d72e4d31decc5ec7f153e6837af5f03e +SIZE (cabal/hsc2hs-0.68.10/revision/4.cabal) = 3114 +SHA256 (cabal/http-client-0.7.19/http-client-0.7.19.tar.gz) = a02c1be082e8f48c959ac7150a48a405f8d4383e0942639481e84b220f29ad61 +SIZE (cabal/http-client-0.7.19/http-client-0.7.19.tar.gz) = 96836 +SHA256 (cabal/http-client-tls-0.3.6.4/http-client-tls-0.3.6.4.tar.gz) = 7756006fee8ab924c521372e0f9d6705579016b9fab0b0312d1b9a335cfc18a3 +SIZE (cabal/http-client-tls-0.3.6.4/http-client-tls-0.3.6.4.tar.gz) = 7954 +SHA256 (cabal/http-client-tls-0.3.6.4/revision/2.cabal) = efe0a32d59c3a38ea35eb9c1b6e7beffa3592e39b2065a727cb84ccd654d16f3 +SIZE (cabal/http-client-tls-0.3.6.4/revision/2.cabal) = 2135 SHA256 (cabal/http-types-0.12.4/http-types-0.12.4.tar.gz) = 4d4b1bb0cc817e5fef0c9c76c9647f69f4d300c45a105043493eff86381be549 SIZE (cabal/http-types-0.12.4/http-types-0.12.4.tar.gz) = 18707 -SHA256 (cabal/indexed-traversable-0.1.3/indexed-traversable-0.1.3.tar.gz) = 1d32925fb6f78e3a52a849b29fc4360df51c97be95ba8ac642517d3ff01a53d9 -SIZE (cabal/indexed-traversable-0.1.3/indexed-traversable-0.1.3.tar.gz) = 9824 -SHA256 (cabal/indexed-traversable-instances-0.1.1.2/indexed-traversable-instances-0.1.1.2.tar.gz) = 0f9b4e895ccc819f74d15f913c93613cc74cab74dbb05d7e305aa387bdbe374a -SIZE (cabal/indexed-traversable-instances-0.1.1.2/indexed-traversable-instances-0.1.1.2.tar.gz) = 3769 -SHA256 (cabal/indexed-traversable-instances-0.1.1.2/revision/2.cabal) = 00d5e3e149e2bee0f7a547e0093294c306d4276e73a619abe7d8e69f7ce03c7b -SIZE (cabal/indexed-traversable-instances-0.1.1.2/revision/2.cabal) = 2550 -SHA256 (cabal/integer-conversion-0.1.0.1/integer-conversion-0.1.0.1.tar.gz) = 20ac70cf1cb65458bba2c562c209a8930e45bdb89886182d644d0a457fc46f39 -SIZE (cabal/integer-conversion-0.1.0.1/integer-conversion-0.1.0.1.tar.gz) = 6166 -SHA256 (cabal/integer-conversion-0.1.0.1/revision/1.cabal) = 0e57a82635323f015b5d6c242bcfbbeeaa9854fe9c8058e57052254dbb24bb14 -SIZE (cabal/integer-conversion-0.1.0.1/revision/1.cabal) = 2250 -SHA256 (cabal/integer-logarithms-1.0.3.1/integer-logarithms-1.0.3.1.tar.gz) = 9b0a9f9fab609b15cd015865721fb05f744a1bc77ae92fd133872de528bbea7f -SIZE (cabal/integer-logarithms-1.0.3.1/integer-logarithms-1.0.3.1.tar.gz) = 9023 -SHA256 (cabal/integer-logarithms-1.0.3.1/revision/5.cabal) = 4d0dfc334e64ff57bb1a08717afa4a4a7f28e4cdc46615dd287be31ef63ec00d -SIZE (cabal/integer-logarithms-1.0.3.1/revision/5.cabal) = 3278 -SHA256 (cabal/invariant-0.6.2/invariant-0.6.2.tar.gz) = c36485e8088a57e9df1a93881211a1c09e8920ce1b14bfa141cac9f75b7ee108 -SIZE (cabal/invariant-0.6.2/invariant-0.6.2.tar.gz) = 28199 -SHA256 (cabal/invariant-0.6.2/revision/1.cabal) = 4338158fe36c3ff9ee741eeff79cb886222cab9da3f476071956cb01b0d9bbff -SIZE (cabal/invariant-0.6.2/revision/1.cabal) = 3617 -SHA256 (cabal/iproute-1.7.12/iproute-1.7.12.tar.gz) = f1751d1579fcbc1d9f86d9d1c9ede48cb71cbeb1d7b2043491c6216e4f236b63 -SIZE (cabal/iproute-1.7.12/iproute-1.7.12.tar.gz) = 17864 -SHA256 (cabal/kan-extensions-5.2.5/kan-extensions-5.2.5.tar.gz) = b914dccc040caf1d8764b99df1028dad3e4fdf46c262192e54b59c9da66ead22 -SIZE (cabal/kan-extensions-5.2.5/kan-extensions-5.2.5.tar.gz) = 22205 -SHA256 (cabal/kan-extensions-5.2.5/revision/2.cabal) = fbdba767565f40faf515b044a774cc3b371eb6ce8a082d9f659411cea88698cf -SIZE (cabal/kan-extensions-5.2.5/revision/2.cabal) = 3066 -SHA256 (cabal/lens-5.2.3/lens-5.2.3.tar.gz) = df1e8ca8dd89d884994e0c80761a972088326fa43ed5d47c01b14abb710b994d -SIZE (cabal/lens-5.2.3/lens-5.2.3.tar.gz) = 703220 -SHA256 (cabal/lens-5.2.3/revision/2.cabal) = 637287c76adff383063b3206a4213640de1a74839ec16008cc71b5b407f7d05e -SIZE (cabal/lens-5.2.3/revision/2.cabal) = 15237 +SHA256 (cabal/indexed-traversable-0.1.4/indexed-traversable-0.1.4.tar.gz) = 58be09afdf3ad5a25c2aa0d2a7df80d602df09f4e76d3abf2b7cdb0e75d03b22 +SIZE (cabal/indexed-traversable-0.1.4/indexed-traversable-0.1.4.tar.gz) = 9465 +SHA256 (cabal/indexed-traversable-0.1.4/revision/1.cabal) = 42d9e84a65a0c17c248233cab98ada872ff6140dfa24d109d6eb285204d07e7d +SIZE (cabal/indexed-traversable-0.1.4/revision/1.cabal) = 2098 +SHA256 (cabal/indexed-traversable-instances-0.1.2/indexed-traversable-instances-0.1.2.tar.gz) = 3c2bb62fba141d6696177070d63b88bc56b194bc60f6b73d2263b0244e2fc7c1 +SIZE (cabal/indexed-traversable-instances-0.1.2/indexed-traversable-instances-0.1.2.tar.gz) = 3673 +SHA256 (cabal/indexed-traversable-instances-0.1.2/revision/1.cabal) = 68df0fc8070ae2c15f9e6febf1449fee364c131a6d1e93cac45e7895ba86dd89 +SIZE (cabal/indexed-traversable-instances-0.1.2/revision/1.cabal) = 2401 +SHA256 (cabal/integer-conversion-0.1.1/integer-conversion-0.1.1.tar.gz) = c18164a048073310f6353ebc64c9037b52a4b8299963ce05e027bcf60e22155a +SIZE (cabal/integer-conversion-0.1.1/integer-conversion-0.1.1.tar.gz) = 6179 +SHA256 (cabal/integer-conversion-0.1.1/revision/1.cabal) = 941d4ae16e2124cbff5defe2abedb49efc8e03a594f817035bf231a317e6c1c9 +SIZE (cabal/integer-conversion-0.1.1/revision/1.cabal) = 2256 +SHA256 (cabal/integer-logarithms-1.0.4/integer-logarithms-1.0.4.tar.gz) = 6a93c76c2518cbe2d72ab17da6ae46d8cae93cbfb7c5a5ad5783f903c1448f45 +SIZE (cabal/integer-logarithms-1.0.4/integer-logarithms-1.0.4.tar.gz) = 8948 +SHA256 (cabal/invariant-0.6.4/invariant-0.6.4.tar.gz) = a9e2ab4ee3e0d4613beb7bda36a8ebc4f72318450514f4832d2fa43b74f0aeb3 +SIZE (cabal/invariant-0.6.4/invariant-0.6.4.tar.gz) = 27079 +SHA256 (cabal/invariant-0.6.4/revision/1.cabal) = 4a9a609f4e93ffed158b3b4f5a80822c6da30aa71a5370307c0c00c2d658d1c6 +SIZE (cabal/invariant-0.6.4/revision/1.cabal) = 3513 +SHA256 (cabal/iproute-1.7.15/iproute-1.7.15.tar.gz) = 18a331a7e0e6f9dc89a2da95577b0d76bd2690b8f832b72b46d6cc9b667b4ba5 +SIZE (cabal/iproute-1.7.15/iproute-1.7.15.tar.gz) = 18033 +SHA256 (cabal/kan-extensions-5.2.6/kan-extensions-5.2.6.tar.gz) = fa82283c1c9ac3dc0951b7ca9f5b2e6f13d8331c20154ebb222b509824eeeccc +SIZE (cabal/kan-extensions-5.2.6/kan-extensions-5.2.6.tar.gz) = 21718 +SHA256 (cabal/kan-extensions-5.2.6/revision/1.cabal) = e0b972f900a3c04c0f36d7e221e6b04343a5a1f00ce3aababff7932e173f0833 +SIZE (cabal/kan-extensions-5.2.6/revision/1.cabal) = 2581 +SHA256 (cabal/lens-5.3.4/lens-5.3.4.tar.gz) = f1b6ed14b8d8ccafb5724929fb3d0d3b5866b923ca88e8c565b4a84b7993c88a +SIZE (cabal/lens-5.3.4/lens-5.3.4.tar.gz) = 707015 SHA256 (cabal/memory-0.18.0/memory-0.18.0.tar.gz) = fd4eb6f638e24b81b4e6cdd68772a531726f2f67686c8969d3407d82f7862e3e SIZE (cabal/memory-0.18.0/memory-0.18.0.tar.gz) = 41957 +SHA256 (cabal/memory-0.18.0/revision/1.cabal) = 9f4de967352f80b6f174c9a166f315393dde80b77d7b67e41268ae7dec0319f9 +SIZE (cabal/memory-0.18.0/revision/1.cabal) = 4581 SHA256 (cabal/mime-types-0.1.2.0/mime-types-0.1.2.0.tar.gz) = 013ae48a4c1726a4f91a64e882f3fe1fb903a7d4b8c14da51286fe5e4b974f61 SIZE (cabal/mime-types-0.1.2.0/mime-types-0.1.2.0.tar.gz) = 12044 -SHA256 (cabal/mono-traversable-1.0.17.0/mono-traversable-1.0.17.0.tar.gz) = 25d8f9b860bc6335d3d213f3392ab58d4041e28127874ea18525412f184cd32f -SIZE (cabal/mono-traversable-1.0.17.0/mono-traversable-1.0.17.0.tar.gz) = 42225 -SHA256 (cabal/network-3.1.4.0/network-3.1.4.0.tar.gz) = b452a2afac95d9207357eb3820c719c7c7d27871ef4b6ed7bfcd03a036b9158e -SIZE (cabal/network-3.1.4.0/network-3.1.4.0.tar.gz) = 139988 -SHA256 (cabal/network-3.1.4.0/revision/1.cabal) = e152cdb03243afb52bbc740cfbe96905ca298a6f6342f0c47b3f2e227ff19def -SIZE (cabal/network-3.1.4.0/revision/1.cabal) = 5208 +SHA256 (cabal/mono-traversable-1.0.21.0/mono-traversable-1.0.21.0.tar.gz) = 4dd93ea334c0169500402f07aa39c98dbb7bffe55dc63fdf228da2cc22c7c5cd +SIZE (cabal/mono-traversable-1.0.21.0/mono-traversable-1.0.21.0.tar.gz) = 43552 +SHA256 (cabal/network-3.2.7.0/network-3.2.7.0.tar.gz) = 68548e660632a3c09b230c33fe08cc880273372b485e65cbe7a717936de9728b +SIZE (cabal/network-3.2.7.0/network-3.2.7.0.tar.gz) = 145714 +SHA256 (cabal/network-byte-order-0.1.7/network-byte-order-0.1.7.tar.gz) = 480ce0ad7f67364ec8d4ce8d815f463d9e4074e3789be22a5722cfdebed08679 +SIZE (cabal/network-byte-order-0.1.7/network-byte-order-0.1.7.tar.gz) = 6402 SHA256 (cabal/network-uri-2.6.4.2/network-uri-2.6.4.2.tar.gz) = 9c188973126e893250b881f20e8811dca06c223c23402b06f7a1f2e995797228 SIZE (cabal/network-uri-2.6.4.2/network-uri-2.6.4.2.tar.gz) = 31309 SHA256 (cabal/network-uri-2.6.4.2/revision/1.cabal) = 6fffb57373962b5651a2db8b0af732098b3bf029a7ced76a9855615de2026588 @@ -213,133 +217,141 @@ SHA256 (cabal/old-time-1.1.0.4/old-time-1.1.0.4.tar.gz) = 1e22eb7f7b924a676f52e3 SIZE (cabal/old-time-1.1.0.4/old-time-1.1.0.4.tar.gz) = 75542 SHA256 (cabal/optparse-applicative-0.18.1.0/optparse-applicative-0.18.1.0.tar.gz) = 63811ab4fd26e829b8868364325a88be3acc79819f5bb5005b2dd3b961ecc491 SIZE (cabal/optparse-applicative-0.18.1.0/optparse-applicative-0.18.1.0.tar.gz) = 60682 +SHA256 (cabal/optparse-applicative-0.18.1.0/revision/1.cabal) = f30973861ac7e7ebff05ff8c7c3d1e4d283a1f3850e1cc14106b0693ec1b6d82 +SIZE (cabal/optparse-applicative-0.18.1.0/revision/1.cabal) = 5289 +SHA256 (cabal/os-string-2.0.7/os-string-2.0.7.tar.gz) = 339c35fd3a290522f23de4e33528423cfd0b0a8f22946b0b9816a817b926cba0 +SIZE (cabal/os-string-2.0.7/os-string-2.0.7.tar.gz) = 44683 SHA256 (cabal/parallel-3.2.2.0/parallel-3.2.2.0.tar.gz) = 170453a71a2a8b31cca63125533f7771d7debeb639700bdabdd779c34d8a6ef6 SIZE (cabal/parallel-3.2.2.0/parallel-3.2.2.0.tar.gz) = 14681 -SHA256 (cabal/parallel-3.2.2.0/revision/7.cabal) = b993406e98fe9126eff4a69d28e7e361037dd1c0892a9fd6c26e1f92eb9c4fa4 -SIZE (cabal/parallel-3.2.2.0/revision/7.cabal) = 1926 +SHA256 (cabal/parallel-3.2.2.0/revision/9.cabal) = 9d7b34ac537940f67732eca31d48a43bd78fb65a91baebddf63bee4fc3813d81 +SIZE (cabal/parallel-3.2.2.0/revision/9.cabal) = 1961 SHA256 (cabal/pem-0.2.4/pem-0.2.4.tar.gz) = 770c4c1b9cd24b3db7f511f8a48404a0d098999e28573c3743a8a296bb96f8d4 SIZE (cabal/pem-0.2.4/pem-0.2.4.tar.gz) = 4717 SHA256 (cabal/prettyprinter-1.7.1/prettyprinter-1.7.1.tar.gz) = 5e6ea6903114fa118fcc359633dfb7ecddecb92c06c853d02a77b72b251f0b45 SIZE (cabal/prettyprinter-1.7.1/prettyprinter-1.7.1.tar.gz) = 56907 SHA256 (cabal/prettyprinter-ansi-terminal-1.1.3/prettyprinter-ansi-terminal-1.1.3.tar.gz) = 813739308ad6050620578994effe21058a170a341716acf52573fae42b5b1db3 SIZE (cabal/prettyprinter-ansi-terminal-1.1.3/prettyprinter-ansi-terminal-1.1.3.tar.gz) = 8879 -SHA256 (cabal/primitive-0.9.0.0/primitive-0.9.0.0.tar.gz) = 696d4bd291c94d736142d6182117dca4258d3ef28bfefdb649ac8b5ecd0999c7 -SIZE (cabal/primitive-0.9.0.0/primitive-0.9.0.0.tar.gz) = 60580 +SHA256 (cabal/primitive-0.9.1.0/primitive-0.9.1.0.tar.gz) = 44b4de41813c7bc5db8a57f87c3612a069b65086946268ba165097252ebd3d76 +SIZE (cabal/primitive-0.9.1.0/primitive-0.9.1.0.tar.gz) = 61724 SHA256 (cabal/profunctors-5.6.2/profunctors-5.6.2.tar.gz) = 65955d7b50525a4a3bccdab1d982d2ae342897fd38140d5a94b5ef3800d8c92a SIZE (cabal/profunctors-5.6.2/profunctors-5.6.2.tar.gz) = 28522 SHA256 (cabal/profunctors-5.6.2/revision/3.cabal) = e178ba4468982326656626e2089e296f64485e68fdddc9f4476dcd5d612b4f78 SIZE (cabal/profunctors-5.6.2/revision/3.cabal) = 2484 -SHA256 (cabal/random-1.2.1.2/random-1.2.1.2.tar.gz) = 790f4dc2d2327c453ff6aac7bf15399fd123d55e927935f68f84b5df42d9a4b4 -SIZE (cabal/random-1.2.1.2/random-1.2.1.2.tar.gz) = 47229 -SHA256 (cabal/reflection-2.1.7/reflection-2.1.7.tar.gz) = 6cbb18a8b02871533bb8b641dc6f76813a097d94404e5808bb5d52b0f0e415fd -SIZE (cabal/reflection-2.1.7/reflection-2.1.7.tar.gz) = 17823 -SHA256 (cabal/reflection-2.1.7/revision/1.cabal) = f2b5b3f0983a605d16e53af489ebba62967d2c80353473ca66cc1734222b3a04 -SIZE (cabal/reflection-2.1.7/revision/1.cabal) = 4518 +SHA256 (cabal/random-1.3.1/random-1.3.1.tar.gz) = d840ac83f265b0cfa2a678f8ec78627eb50cf9be2f067c52c8a4239c29b71a35 +SIZE (cabal/random-1.3.1/random-1.3.1.tar.gz) = 63846 +SHA256 (cabal/reflection-2.1.9/reflection-2.1.9.tar.gz) = c6a7d5e41ad0ee1a05c660acf4fd34b21f38330eec165d246b7fffb398e59fb3 +SIZE (cabal/reflection-2.1.9/reflection-2.1.9.tar.gz) = 17560 +SHA256 (cabal/reflection-2.1.9/revision/1.cabal) = eaf28dc9884718a306ed1e0c215a24b36c68b8aa3be425617f66d886d43fe1e0 +SIZE (cabal/reflection-2.1.9/revision/1.cabal) = 4171 SHA256 (cabal/resourcet-1.3.0/resourcet-1.3.0.tar.gz) = ec601785ee42a201f32adb205b8685c983f18757b1bd33d2e806d571e0f9996b SIZE (cabal/resourcet-1.3.0/resourcet-1.3.0.tar.gz) = 17620 -SHA256 (cabal/scientific-0.3.7.0/scientific-0.3.7.0.tar.gz) = a3a121c4b3d68fb8b9f8c709ab012e48f090ed553609247a805ad070d6b343a9 -SIZE (cabal/scientific-0.3.7.0/scientific-0.3.7.0.tar.gz) = 24723 -SHA256 (cabal/scientific-0.3.7.0/revision/7.cabal) = 909755ab19b453169ff85281323da1488407776b2360bd9f7afdd219fd306ef2 -SIZE (cabal/scientific-0.3.7.0/revision/7.cabal) = 4869 -SHA256 (cabal/semialign-1.3/semialign-1.3.tar.gz) = 628e43319f584a8dd46c124ee0685cac586e0f6f877c5ceff37c3dbb2e3cc56c -SIZE (cabal/semialign-1.3/semialign-1.3.tar.gz) = 10543 -SHA256 (cabal/semialign-1.3/revision/1.cabal) = 7be9ef5ca1d6b052991f68c053aab68b9d1ab3b1938c9557ac84c97937815223 -SIZE (cabal/semialign-1.3/revision/1.cabal) = 2888 -SHA256 (cabal/semigroupoids-6.0.0.1/semigroupoids-6.0.0.1.tar.gz) = 7da38a9891bdf8205fd6522cdb712956b8c0bf5c52983da60295c8e057d77934 -SIZE (cabal/semigroupoids-6.0.0.1/semigroupoids-6.0.0.1.tar.gz) = 36222 -SHA256 (cabal/semigroupoids-6.0.0.1/revision/1.cabal) = 47a23b451c114e65361e713e8fe36828fca3a84285325e8f444254b2ab0c43c5 -SIZE (cabal/semigroupoids-6.0.0.1/revision/1.cabal) = 7465 +SHA256 (cabal/scientific-0.3.8.0/scientific-0.3.8.0.tar.gz) = 13b343bca8aa26d7718e52e622e5a118056653edafcbc7ccc5333be7217218cf +SIZE (cabal/scientific-0.3.8.0/scientific-0.3.8.0.tar.gz) = 24314 +SHA256 (cabal/scientific-0.3.8.0/revision/2.cabal) = ba83a6701dd0110138443757aca4a42786afa94272b73045ef878fd860d1732e +SIZE (cabal/scientific-0.3.8.0/revision/2.cabal) = 4397 +SHA256 (cabal/semialign-1.3.1/semialign-1.3.1.tar.gz) = 66e87bc254ffec2ee908bf625c42d3b7363238d6ab1cfba8934bbee7590c9df7 +SIZE (cabal/semialign-1.3.1/semialign-1.3.1.tar.gz) = 10117 +SHA256 (cabal/semialign-1.3.1/revision/2.cabal) = dfe515a9e43230f5308564a649a04ea1538499ed98b944644b77bed5394b9deb +SIZE (cabal/semialign-1.3.1/revision/2.cabal) = 2224 +SHA256 (cabal/semigroupoids-6.0.1/semigroupoids-6.0.1.tar.gz) = 1d532030862414f5d4f2f6f001783f77aa14e5f05ee8e3c4a2d2129fca29cc1f +SIZE (cabal/semigroupoids-6.0.1/semigroupoids-6.0.1.tar.gz) = 36372 +SHA256 (cabal/semigroupoids-6.0.1/revision/2.cabal) = bfee06a6d88038a88ddd10fc21c230bf5ee3a14d0584dc6ab7ad54a9252c2c21 +SIZE (cabal/semigroupoids-6.0.1/revision/2.cabal) = 7539 SHA256 (cabal/semigroups-0.20/semigroups-0.20.tar.gz) = 902d2e33c96b40a89de5957f2a9e097197afcc35e257e45b32ebe770993673e1 SIZE (cabal/semigroups-0.20/semigroups-0.20.tar.gz) = 18788 SHA256 (cabal/serialise-0.2.6.1/serialise-0.2.6.1.tar.gz) = 63949799ffd10675ef70ea701c1eb63e618629b3b2f7b25f07c5a966e24e77f4 SIZE (cabal/serialise-0.2.6.1/serialise-0.2.6.1.tar.gz) = 75106 -SHA256 (cabal/serialise-0.2.6.1/revision/1.cabal) = 48e55f150c7e3bac9003adeb49fcd4573814780c374c494a46ffccc2b2043df8 -SIZE (cabal/serialise-0.2.6.1/revision/1.cabal) = 8778 +SHA256 (cabal/serialise-0.2.6.1/revision/4.cabal) = 70495f88c1633bd432847b1d767e9e6832779f85b9d012b01a0a14f2cacbecc6 +SIZE (cabal/serialise-0.2.6.1/revision/4.cabal) = 8823 SHA256 (cabal/shakespeare-2.1.0.1/shakespeare-2.1.0.1.tar.gz) = 6cb655f3734de1b920faf67f313d45e31fc7f8fcf0a2e00a45f986d8e107d22f SIZE (cabal/shakespeare-2.1.0.1/shakespeare-2.1.0.1.tar.gz) = 71698 SHA256 (cabal/socks-0.6.1/socks-0.6.1.tar.gz) = 734447558bb061ce768f53a0df1f2401902c6bee396cc96ce627edd986ef6a73 SIZE (cabal/socks-0.6.1/socks-0.6.1.tar.gz) = 9759 SHA256 (cabal/split-0.2.5/split-0.2.5.tar.gz) = 52da404e8397c1ab238354c8d4fd9a7e9c5cac8849cc2ce2e45facc85e74a913 SIZE (cabal/split-0.2.5/split-0.2.5.tar.gz) = 16008 -SHA256 (cabal/splitmix-0.1.0.5/splitmix-0.1.0.5.tar.gz) = 9df07a9611ef45f1b1258a0b412f4d02c920248f69d2e2ce8ccda328f7e13002 -SIZE (cabal/splitmix-0.1.0.5/splitmix-0.1.0.5.tar.gz) = 22399 -SHA256 (cabal/streaming-commons-0.2.2.6/streaming-commons-0.2.2.6.tar.gz) = 0180958a882eb0f6262b812fe886c2b1b8285474b5b958f814ae4f05409fbf79 -SIZE (cabal/streaming-commons-0.2.2.6/streaming-commons-0.2.2.6.tar.gz) = 37959 -SHA256 (cabal/streaming-commons-0.2.2.6/revision/1.cabal) = d5c6fb99efd4e71bdb0351d55f2d87e16c11880f42998e39363eb63f057ae24b -SIZE (cabal/streaming-commons-0.2.2.6/revision/1.cabal) = 4827 -SHA256 (cabal/strict-0.5/strict-0.5.tar.gz) = 3f4f0995dec2d520d0e321542f71412dac023658fdab603db04364d75269a0fd -SIZE (cabal/strict-0.5/strict-0.5.tar.gz) = 12564 -SHA256 (cabal/strict-0.5/revision/1.cabal) = bd57d7b3655951dfaa7d1e1374d7352dfe83f82a9c98309bf3a6587ef8cbd87d -SIZE (cabal/strict-0.5/revision/1.cabal) = 4120 -SHA256 (cabal/tagged-0.8.8/tagged-0.8.8.tar.gz) = a083fa7835516203c168433a1c8dfc0290a94b05fedab566ad0640fc9137a6a7 -SIZE (cabal/tagged-0.8.8/tagged-0.8.8.tar.gz) = 10094 -SHA256 (cabal/text-iso8601-0.1/text-iso8601-0.1.tar.gz) = f58e7a46f951f1f13d2929e0a2f84f6db7894d55a641169aaf300aea9ada5fcf -SIZE (cabal/text-iso8601-0.1/text-iso8601-0.1.tar.gz) = 9578 -SHA256 (cabal/text-iso8601-0.1/revision/1.cabal) = ac86f2500ca751db3c0de029dd7e7826bef7366d59dc0085b00fc695c43b9f76 -SIZE (cabal/text-iso8601-0.1/revision/1.cabal) = 2407 -SHA256 (cabal/text-short-0.1.5/text-short-0.1.5.tar.gz) = a35ec6cde2ada084c1a050dc5885be5ab01f851b93d744cf0facbc1c18002dda -SIZE (cabal/text-short-0.1.5/text-short-0.1.5.tar.gz) = 25113 -SHA256 (cabal/text-short-0.1.5/revision/3.cabal) = 9c73c9c9182ca69ee92ce3758f515b1c078cd167d882ccc8c46f92f68c65e190 -SIZE (cabal/text-short-0.1.5/revision/3.cabal) = 3216 -SHA256 (cabal/th-abstraction-0.6.0.0/th-abstraction-0.6.0.0.tar.gz) = 69ea6eca1f0c00b6e1e1f8329c908ec76e73855e2ce6e91ace2f8bbf92c51a30 -SIZE (cabal/th-abstraction-0.6.0.0/th-abstraction-0.6.0.0.tar.gz) = 43152 -SHA256 (cabal/th-abstraction-0.6.0.0/revision/1.cabal) = d8959fa6a2812afcdd5f6f255fd6be8b3e0ca01e425586a554544fcb70b0ec7c -SIZE (cabal/th-abstraction-0.6.0.0/revision/1.cabal) = 2303 -SHA256 (cabal/th-compat-0.1.4/th-compat-0.1.4.tar.gz) = d8f97ac14ab47b6b8a7b0fdb4ff95426322ec56badd01652ac15da4a44d4bab8 -SIZE (cabal/th-compat-0.1.4/th-compat-0.1.4.tar.gz) = 14838 -SHA256 (cabal/th-compat-0.1.4/revision/4.cabal) = f5f2c679ecc1c1b83d2d68db6cc564e5c78d53425e69e1b9e36784820e122d37 -SIZE (cabal/th-compat-0.1.4/revision/4.cabal) = 3224 -SHA256 (cabal/th-lift-0.8.4/th-lift-0.8.4.tar.gz) = f9c577238d4ba65fe3e78bc77f0cca54f17d02c0f6075b2487da5c63bdb4a61b -SIZE (cabal/th-lift-0.8.4/th-lift-0.8.4.tar.gz) = 14711 -SHA256 (cabal/these-1.2/these-1.2.tar.gz) = a8ed7174b7f790764360f48aab72fea382a6093ed369c7bc6881fae1abacd4b8 -SIZE (cabal/these-1.2/these-1.2.tar.gz) = 10606 -SHA256 (cabal/these-1.2/revision/1.cabal) = 011e22f6891ca028f87c04ea48796696c92d593313a9c699f7ff4f9ffd7aec6e -SIZE (cabal/these-1.2/revision/1.cabal) = 2882 -SHA256 (cabal/time-compat-1.9.6.1/time-compat-1.9.6.1.tar.gz) = ad07bb00eb9678c2136d3680752b00acc4cbc522654bb3199bf31c61ef1e6b80 -SIZE (cabal/time-compat-1.9.6.1/time-compat-1.9.6.1.tar.gz) = 59964 -SHA256 (cabal/time-compat-1.9.6.1/revision/6.cabal) = 17631ef01a03a6f55fbe131690f87f6dee9a1572acc99b6c06f04882470ffb52 -SIZE (cabal/time-compat-1.9.6.1/revision/6.cabal) = 5076 -SHA256 (cabal/tls-2.0.1/tls-2.0.1.tar.gz) = 98658cb0394a9cd08c56c5fe11a6c96f16c892a2a594db421cd72e0e7f7be684 -SIZE (cabal/tls-2.0.1/tls-2.0.1.tar.gz) = 162814 +SHA256 (cabal/splitmix-0.1.1/splitmix-0.1.1.tar.gz) = d678c41a603a62032cf7e5f8336bb8222c93990e4b59c8b291b7ca26c7eb12c7 +SIZE (cabal/splitmix-0.1.1/splitmix-0.1.1.tar.gz) = 21981 +SHA256 (cabal/streaming-commons-0.2.3.0/streaming-commons-0.2.3.0.tar.gz) = 26384af91f5ab9470b0bbdd0ce2172db43fc79730b7c5a3405d89c3663eb1e57 +SIZE (cabal/streaming-commons-0.2.3.0/streaming-commons-0.2.3.0.tar.gz) = 37874 +SHA256 (cabal/strict-0.5.1/strict-0.5.1.tar.gz) = 77719280c2a86312e748227bfa732eeaae0e7df48d57acc3c2e5b7b07afe2f8b +SIZE (cabal/strict-0.5.1/strict-0.5.1.tar.gz) = 11798 +SHA256 (cabal/strict-0.5.1/revision/1.cabal) = 58c373b7c7748cbb4a5a6c8c15073f99a1c10a9a9bb6894ac33f43a5cdb901f2 +SIZE (cabal/strict-0.5.1/revision/1.cabal) = 3557 +SHA256 (cabal/tagged-0.8.9/tagged-0.8.9.tar.gz) = 6daad88ebb414ba6a556d2898d2cbe7650e4276010e3a6eed939daf54b956784 +SIZE (cabal/tagged-0.8.9/tagged-0.8.9.tar.gz) = 8151 +SHA256 (cabal/tasty-1.5.3/tasty-1.5.3.tar.gz) = 54a0c7b644813af871a3726ac8771b5e17b5158c792a7acf8f9e2d3ae9360780 +SIZE (cabal/tasty-1.5.3/tasty-1.5.3.tar.gz) = 66548 +SHA256 (cabal/tasty-1.5.3/revision/1.cabal) = 9d56ea9dbc274fc853fc531373b2c91bfe360e21460c2c6a5838897d86e3f6d0 +SIZE (cabal/tasty-1.5.3/revision/1.cabal) = 2923 +SHA256 (cabal/text-iso8601-0.1.1/text-iso8601-0.1.1.tar.gz) = 9dead2b7ceeae40fe0fc060bd54795c32e9926c9d1aebae8f9b9a621fba88202 +SIZE (cabal/text-iso8601-0.1.1/text-iso8601-0.1.1.tar.gz) = 9599 +SHA256 (cabal/text-iso8601-0.1.1/revision/2.cabal) = e07a625eef969338992bf9bba8e5dc73f07ac65f991ba636b8f1175890d15849 +SIZE (cabal/text-iso8601-0.1.1/revision/2.cabal) = 2411 +SHA256 (cabal/text-short-0.1.6/text-short-0.1.6.tar.gz) = 8173ea138d7dc398747b636012bf6e79e17186560b8a7a7fc9e6456d78556eab +SIZE (cabal/text-short-0.1.6/text-short-0.1.6.tar.gz) = 24691 +SHA256 (cabal/text-short-0.1.6/revision/3.cabal) = 41be94ccd3f6646ab69b0b05c5130ea3c7911a4598ab9b9192f21ad25a69163a +SIZE (cabal/text-short-0.1.6/revision/3.cabal) = 2827 +SHA256 (cabal/th-abstraction-0.7.1.0/th-abstraction-0.7.1.0.tar.gz) = f9b6184aba4c6b61dd0d96f7dad41a4c9db0a01d3cdbf993a7d860488f1c04c5 +SIZE (cabal/th-abstraction-0.7.1.0/th-abstraction-0.7.1.0.tar.gz) = 45428 +SHA256 (cabal/th-abstraction-0.7.1.0/revision/1.cabal) = 3011403d85b0070630e33d66b9370535ccd1e0e672ae58f847550b2b15bb4fd8 +SIZE (cabal/th-abstraction-0.7.1.0/revision/1.cabal) = 2268 +SHA256 (cabal/th-compat-0.1.6/th-compat-0.1.6.tar.gz) = b781a0c059872bc95406d00e98f6fa7d9e81e744730f75186583cb4dcea0a4eb +SIZE (cabal/th-compat-0.1.6/th-compat-0.1.6.tar.gz) = 14622 +SHA256 (cabal/th-lift-0.8.6/th-lift-0.8.6.tar.gz) = 04309ad70ef80ed054ebda5b7d34a66642017604019f9e44ad321eec04a1ef1f +SIZE (cabal/th-lift-0.8.6/th-lift-0.8.6.tar.gz) = 14310 +SHA256 (cabal/these-1.2.1/these-1.2.1.tar.gz) = 17d6d933365edabf801a16842c1403bdd37cc5300faa2fcca980decdab22e4de +SIZE (cabal/these-1.2.1/these-1.2.1.tar.gz) = 9906 +SHA256 (cabal/these-1.2.1/revision/2.cabal) = 35c57aede96c15ea1fed559ac287b1168eb2b2869d79e62ed8c845780b7ea136 +SIZE (cabal/these-1.2.1/revision/2.cabal) = 2294 +SHA256 (cabal/time-compat-1.9.8/time-compat-1.9.8.tar.gz) = 502ef8694a5b131b47c0e5df2e9053d005a3b345b30f5225af04f081d3ef5cf0 +SIZE (cabal/time-compat-1.9.8/time-compat-1.9.8.tar.gz) = 63414 +SHA256 (cabal/tls-2.1.9/tls-2.1.9.tar.gz) = 152d77212c79a8606d9207e2a453dee56f34a981abc842463639401077abe93a +SIZE (cabal/tls-2.1.9/tls-2.1.9.tar.gz) = 184895 SHA256 (cabal/transformers-base-0.4.6/transformers-base-0.4.6.tar.gz) = 323bf8689eb691b122661cffa41a25e00fea7a768433fe2dde35d3da7d32cf90 SIZE (cabal/transformers-base-0.4.6/transformers-base-0.4.6.tar.gz) = 2902 SHA256 (cabal/transformers-compat-0.7.2/transformers-compat-0.7.2.tar.gz) = b62c7304c9f3cbc9463d0739aa85cb9489f217ea092b9d625d417514fbcc9d6a SIZE (cabal/transformers-compat-0.7.2/transformers-compat-0.7.2.tar.gz) = 46485 -SHA256 (cabal/typed-process-0.2.11.1/typed-process-0.2.11.1.tar.gz) = d5c5dda091d61bac35de4ed6d9ddb530e4eb2564ca3c0b93e577762b63d94148 -SIZE (cabal/typed-process-0.2.11.1/typed-process-0.2.11.1.tar.gz) = 18339 -SHA256 (cabal/unix-time-0.4.12/unix-time-0.4.12.tar.gz) = 50a57298e5cba81e9db2be9f4c24c7e514af96e541a97df05a5ecd411aaf97e2 -SIZE (cabal/unix-time-0.4.12/unix-time-0.4.12.tar.gz) = 52410 +SHA256 (cabal/typed-process-0.2.13.0/typed-process-0.2.13.0.tar.gz) = 9400966013b541df2e54ac8d57c3a670fc28bde2be87767ce98f13bbe2aa43a0 +SIZE (cabal/typed-process-0.2.13.0/typed-process-0.2.13.0.tar.gz) = 19160 +SHA256 (cabal/unix-time-0.4.16/unix-time-0.4.16.tar.gz) = ace2a7126d7344feb3221680c556de7f28a969fb287d49bd4a2d7df18fe638e9 +SIZE (cabal/unix-time-0.4.16/unix-time-0.4.16.tar.gz) = 52594 SHA256 (cabal/unliftio-core-0.2.1.0/unliftio-core-0.2.1.0.tar.gz) = 99384cba8d56d9d61b85e38a313a93ebcdb78be6566367f0930ef580597fe3e3 SIZE (cabal/unliftio-core-0.2.1.0/unliftio-core-0.2.1.0.tar.gz) = 3865 -SHA256 (cabal/unliftio-core-0.2.1.0/revision/3.cabal) = 28800633b20e0f7bfbdda1248c28022749aa0935aea10b1e3fc9c88cbebb06de -SIZE (cabal/unliftio-core-0.2.1.0/revision/3.cabal) = 1004 +SHA256 (cabal/unliftio-core-0.2.1.0/revision/4.cabal) = f6a2736f858b5390d9384dca43d3ea4d96e9ca17217791791ca4951ba6e8072a +SIZE (cabal/unliftio-core-0.2.1.0/revision/4.cabal) = 996 SHA256 (cabal/unordered-containers-0.2.20/unordered-containers-0.2.20.tar.gz) = d9cfb287cf00592d39dc9c3cac8b99627ea08f2c01798e70130fc39f7c90f11d SIZE (cabal/unordered-containers-0.2.20/unordered-containers-0.2.20.tar.gz) = 59823 -SHA256 (cabal/unordered-containers-0.2.20/revision/1.cabal) = 746c32b23f93cb13e52309e54e82d69e4315105f9815b1fcac25a57071505cff -SIZE (cabal/unordered-containers-0.2.20/revision/1.cabal) = 3921 +SHA256 (cabal/unordered-containers-0.2.20/revision/4.cabal) = 233cbcdda6c2698932bb391ce0935fb44f80c115621ee815a21ed33ac8ede422 +SIZE (cabal/unordered-containers-0.2.20/revision/4.cabal) = 3921 SHA256 (cabal/utf8-string-1.0.2/utf8-string-1.0.2.tar.gz) = ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a SIZE (cabal/utf8-string-1.0.2/utf8-string-1.0.2.tar.gz) = 10726 -SHA256 (cabal/uuid-types-1.0.5.1/uuid-types-1.0.5.1.tar.gz) = 0bec6d6982b3c92bfa5eab1d213be2d4b6696b9a2c3a1f1f05812dc3762dca2c -SIZE (cabal/uuid-types-1.0.5.1/uuid-types-1.0.5.1.tar.gz) = 11965 -SHA256 (cabal/vector-0.13.1.0/vector-0.13.1.0.tar.gz) = 63f272279eab8ab9411a0fffb1252ac309b297313f8e33be9ebbc2f981edecee -SIZE (cabal/vector-0.13.1.0/vector-0.13.1.0.tar.gz) = 156855 -SHA256 (cabal/vector-algorithms-0.9.0.1/vector-algorithms-0.9.0.1.tar.gz) = 2ba7c0d3a8f26ef3ada24ff4abe81609225ecbab3b5754f048f8a0a3ecc33841 -SIZE (cabal/vector-algorithms-0.9.0.1/vector-algorithms-0.9.0.1.tar.gz) = 29149 -SHA256 (cabal/vector-algorithms-0.9.0.1/revision/3.cabal) = 222b01a4c0b9e13d73d04fba7c65930df16d1647acc07d84c47ef0356fa33dba -SIZE (cabal/vector-algorithms-0.9.0.1/revision/3.cabal) = 3880 +SHA256 (cabal/uuid-types-1.0.6/uuid-types-1.0.6.tar.gz) = 7e0dd953483d6fd3ca49bcaed6b11f9e3c2787213479b2581e07747836b8357e +SIZE (cabal/uuid-types-1.0.6/uuid-types-1.0.6.tar.gz) = 11222 +SHA256 (cabal/uuid-types-1.0.6/revision/3.cabal) = 5ac2b681a8d7676f6a51ac1b113bfdcf18dd7fdbb313034850ed6493eef96da0 +SIZE (cabal/uuid-types-1.0.6/revision/3.cabal) = 2619 +SHA256 (cabal/vector-0.13.2.0/vector-0.13.2.0.tar.gz) = 28f203c786cbf8ac6dc3fea3378ec36f34173d505fb4a1dd60fc8418ad91c423 +SIZE (cabal/vector-0.13.2.0/vector-0.13.2.0.tar.gz) = 185739 +SHA256 (cabal/vector-0.13.2.0/revision/1.cabal) = b736a57b73520d2acf4865e3e2b40030d69782f35f870e376dc717ee2508d81f +SIZE (cabal/vector-0.13.2.0/revision/1.cabal) = 8804 +SHA256 (cabal/vector-algorithms-0.9.1.0/vector-algorithms-0.9.1.0.tar.gz) = d2b674676802670d8a682b357da6b6b5741b4a33b191f0ffe5f2b2bc40558eb2 +SIZE (cabal/vector-algorithms-0.9.1.0/vector-algorithms-0.9.1.0.tar.gz) = 29426 SHA256 (cabal/vector-stream-0.1.0.1/vector-stream-0.1.0.1.tar.gz) = d0f507334bdea5431a2f07f525a97f29e76522c32210f5de6d5a2b4f1d42bf7c SIZE (cabal/vector-stream-0.1.0.1/vector-stream-0.1.0.1.tar.gz) = 12577 +SHA256 (cabal/vector-stream-0.1.0.1/revision/3.cabal) = 5ac96695212a45ae7dc16d8031dbf5311da53e052c35f7ad4a8e2db7fafb651e +SIZE (cabal/vector-stream-0.1.0.1/revision/3.cabal) = 1642 SHA256 (cabal/void-0.7.3/void-0.7.3.tar.gz) = 53af758ddc37dc63981671e503438d02c6f64a2d8744e9bec557a894431f7317 SIZE (cabal/void-0.7.3/void-0.7.3.tar.gz) = 6741 -SHA256 (cabal/witherable-0.4.2/witherable-0.4.2.tar.gz) = 790d2bb274283419173bd89104439860675a9410f70f21912973ecd9098b4104 -SIZE (cabal/witherable-0.4.2/witherable-0.4.2.tar.gz) = 11876 -SHA256 (cabal/witherable-0.4.2/revision/4.cabal) = cec516b35df0ff53ab0068e70a912a0ba7b65c672fbc554727183faa195ad3b8 -SIZE (cabal/witherable-0.4.2/revision/4.cabal) = 2342 -SHA256 (cabal/xml-conduit-1.9.1.3/xml-conduit-1.9.1.3.tar.gz) = d8e9169562c71c9e6bc616f15832f521a68c362aa4fc03682748a809755f1bf4 -SIZE (cabal/xml-conduit-1.9.1.3/xml-conduit-1.9.1.3.tar.gz) = 44653 +SHA256 (cabal/witherable-0.5/witherable-0.5.tar.gz) = 48434cc1e465b13cbc0133a90c3ec0d827c93b77ce95807fe0a38b65f4918cd1 +SIZE (cabal/witherable-0.5/witherable-0.5.tar.gz) = 10819 +SHA256 (cabal/witherable-0.5/revision/1.cabal) = 85bab588ebca37996fc3171b9d8b2e065eb0536c9f44224bcf037c0849a881de +SIZE (cabal/witherable-0.5/revision/1.cabal) = 2343 +SHA256 (cabal/xml-conduit-1.10.0.0/xml-conduit-1.10.0.0.tar.gz) = 3f9bd0cc3e80e49f2ac2a65b975ef503ea633f495172f9c05bdf1b46b5e1de92 +SIZE (cabal/xml-conduit-1.10.0.0/xml-conduit-1.10.0.0.tar.gz) = 44893 SHA256 (cabal/xml-hamlet-0.5.0.2/xml-hamlet-0.5.0.2.tar.gz) = 5ff04a927718f333689c5cdfde8ee3049533d0734e6a0d8026a71961c2642e81 SIZE (cabal/xml-hamlet-0.5.0.2/xml-hamlet-0.5.0.2.tar.gz) = 9328 SHA256 (cabal/xml-types-0.3.8/xml-types-0.3.8.tar.gz) = dad5e4ce602b7d1f4be37c0cfd99a261a4573746bfd80d917dc955b72da84c80 SIZE (cabal/xml-types-0.3.8/xml-types-0.3.8.tar.gz) = 4054 -SHA256 (cabal/zlib-0.7.0.0/zlib-0.7.0.0.tar.gz) = 7e43c205e1e1ff5a4b033086ec8cce82ab658879e977c8ba02a6701946ff7a47 -SIZE (cabal/zlib-0.7.0.0/zlib-0.7.0.0.tar.gz) = 369149 +SHA256 (cabal/zlib-0.7.1.0/zlib-0.7.1.0.tar.gz) = 6edd38b6b81df8d274952aa85affa6968ae86b2231e1d429ce8bc9083e6a55bc +SIZE (cabal/zlib-0.7.1.0/zlib-0.7.1.0.tar.gz) = 29318 +SHA256 (cabal/zlib-0.7.1.0/revision/2.cabal) = 85e64a75c0b490506a7edaa2d54950c668e66b65758bb08bb14cd31faf53a206 +SIZE (cabal/zlib-0.7.1.0/revision/2.cabal) = 5357 diff --git a/www/hs-gitit/Makefile b/www/hs-gitit/Makefile index ddccd1fcaa20..8435a5b58e4c 100644 --- a/www/hs-gitit/Makefile +++ b/www/hs-gitit/Makefile @@ -8,6 +8,8 @@ WWW= https://github.com/jgm/gitit LICENSE= GPLv2 +BUILD_DEPENDS= ghc-9.6.7:lang/ghc96 + USES= cabal OPTIONS_DEFINE= PLUGINS EXPORTS diff --git a/www/hs-hjsmin/Makefile b/www/hs-hjsmin/Makefile index 569f7e99fbf6..9a4f8adf1d32 100644 --- a/www/hs-hjsmin/Makefile +++ b/www/hs-hjsmin/Makefile @@ -12,15 +12,17 @@ USES= cabal USE_LOCALE= en_US.UTF-8 -USE_CABAL= alex-3.2.7.1 \ - ansi-terminal-0.11.4 \ - ansi-wl-pprint-0.6.9_3 \ - blaze-builder-0.4.2.2_1 \ +USE_CABAL= alex-3.5.3.0 \ + ansi-terminal-1.1.2 \ + ansi-terminal-types-1.1 \ + blaze-builder-0.4.2.3 \ colour-2.3.6 \ - happy-1.20.1.1 \ + happy-2.1.5 \ + happy-lib-2.1.5 \ language-javascript-0.7.1.0 \ - optparse-applicative-0.17.0.0 \ - text-2.0.2 \ + optparse-applicative-0.18.1.0_1 \ + prettyprinter-1.7.1 \ + prettyprinter-ansi-terminal-1.1.3 \ transformers-compat-0.7.2 \ utf8-string-1.0.2 diff --git a/www/hs-hjsmin/distinfo b/www/hs-hjsmin/distinfo index ebc4f60d1a27..5d369176aa08 100644 --- a/www/hs-hjsmin/distinfo +++ b/www/hs-hjsmin/distinfo @@ -1,28 +1,30 @@ -TIMESTAMP = 1678631222 +TIMESTAMP = 1747071474 SHA256 (cabal/hjsmin-0.2.1/hjsmin-0.2.1.tar.gz) = 4db43835a4cdfd79b9e18238fdd86c0de7e656813f8b8083c3ba8630d322cd90 SIZE (cabal/hjsmin-0.2.1/hjsmin-0.2.1.tar.gz) = 5197 -SHA256 (cabal/alex-3.2.7.1/alex-3.2.7.1.tar.gz) = 9bd2f1a27e8f1b2ffdb5b2fbd3ed82b6f0e85191459a1b24ffcbef4e68a81bec -SIZE (cabal/alex-3.2.7.1/alex-3.2.7.1.tar.gz) = 108229 -SHA256 (cabal/ansi-terminal-0.11.4/ansi-terminal-0.11.4.tar.gz) = 7898e48f0a535c1857cde52c803f28096ba89759461fe4d157fd55dcdb420e25 -SIZE (cabal/ansi-terminal-0.11.4/ansi-terminal-0.11.4.tar.gz) = 43299 -SHA256 (cabal/ansi-wl-pprint-0.6.9/ansi-wl-pprint-0.6.9.tar.gz) = a7b2e8e7cd3f02f2954e8b17dc60a0ccd889f49e2068ebb15abfa1d42f7a4eac -SIZE (cabal/ansi-wl-pprint-0.6.9/ansi-wl-pprint-0.6.9.tar.gz) = 16723 -SHA256 (cabal/ansi-wl-pprint-0.6.9/revision/3.cabal) = 212144ea0623b1170807a4162db05d87f26cf10b334aeadd0edb377aba06a1ce -SIZE (cabal/ansi-wl-pprint-0.6.9/revision/3.cabal) = 2425 -SHA256 (cabal/blaze-builder-0.4.2.2/blaze-builder-0.4.2.2.tar.gz) = 2cdc998c021d3a5f2a66a95138b93386271c26a117e7676d78264a90e536af67 -SIZE (cabal/blaze-builder-0.4.2.2/blaze-builder-0.4.2.2.tar.gz) = 60707 -SHA256 (cabal/blaze-builder-0.4.2.2/revision/1.cabal) = f0017df374c330de0ebe0eb15eae8c48427bddefa1d81a3cb31c0a4812ecdb08 -SIZE (cabal/blaze-builder-0.4.2.2/revision/1.cabal) = 3685 +SHA256 (cabal/alex-3.5.3.0/alex-3.5.3.0.tar.gz) = a5cd52e2dd2837138523e2e24ec3435b8cf2624afd50725105e644226e0b9ec6 +SIZE (cabal/alex-3.5.3.0/alex-3.5.3.0.tar.gz) = 92759 +SHA256 (cabal/ansi-terminal-1.1.2/ansi-terminal-1.1.2.tar.gz) = a8d04a3e0451e22a6499a92311f0df1196dc65b687df7d10e3f30d92420156b0 +SIZE (cabal/ansi-terminal-1.1.2/ansi-terminal-1.1.2.tar.gz) = 36259 +SHA256 (cabal/ansi-terminal-types-1.1/ansi-terminal-types-1.1.tar.gz) = f2e5333eb78da5f4dd330fca0c81a59276cc150c625647cd20f57b7f297a5d25 +SIZE (cabal/ansi-terminal-types-1.1/ansi-terminal-types-1.1.tar.gz) = 4746 +SHA256 (cabal/blaze-builder-0.4.2.3/blaze-builder-0.4.2.3.tar.gz) = 66291874236b7342adab033e3cddae414a23a2865dfb44095dfc4e0b9d46703b +SIZE (cabal/blaze-builder-0.4.2.3/blaze-builder-0.4.2.3.tar.gz) = 60777 SHA256 (cabal/colour-2.3.6/colour-2.3.6.tar.gz) = 2cd35dcd6944a5abc9f108a5eb5ee564b6b1fa98a9ec79cefcc20b588991f871 SIZE (cabal/colour-2.3.6/colour-2.3.6.tar.gz) = 20675 -SHA256 (cabal/happy-1.20.1.1/happy-1.20.1.1.tar.gz) = 8b4e7dc5a6c5fd666f8f7163232931ab28746d0d17da8fa1cbd68be9e878881b -SIZE (cabal/happy-1.20.1.1/happy-1.20.1.1.tar.gz) = 183409 +SHA256 (cabal/happy-2.1.5/happy-2.1.5.tar.gz) = 7af82f24f65bf951b24000b9e16ee01c750ed40edc0b256881d29daee85c41c4 +SIZE (cabal/happy-2.1.5/happy-2.1.5.tar.gz) = 61293 +SHA256 (cabal/happy-lib-2.1.5/happy-lib-2.1.5.tar.gz) = a25a6c5a2db150caf4b8c91e048e302f776372034b84b8f9461fea0483da94eb +SIZE (cabal/happy-lib-2.1.5/happy-lib-2.1.5.tar.gz) = 93792 SHA256 (cabal/language-javascript-0.7.1.0/language-javascript-0.7.1.0.tar.gz) = d1a036aa4c747fa7a347e78dc6d3609a3d51dc28580ff6b897a27646ca7ad168 SIZE (cabal/language-javascript-0.7.1.0/language-javascript-0.7.1.0.tar.gz) = 76438 -SHA256 (cabal/optparse-applicative-0.17.0.0/optparse-applicative-0.17.0.0.tar.gz) = 825b2e4d3dafe0ba64a073366a88062b3712b81f851793d9ce2327bee70af724 -SIZE (cabal/optparse-applicative-0.17.0.0/optparse-applicative-0.17.0.0.tar.gz) = 59409 -SHA256 (cabal/text-2.0.2/text-2.0.2.tar.gz) = c735be650a898606ce9f2c8642bc6ac6123eea82871d5e90f92797801f59efad -SIZE (cabal/text-2.0.2/text-2.0.2.tar.gz) = 292557 +SHA256 (cabal/optparse-applicative-0.18.1.0/optparse-applicative-0.18.1.0.tar.gz) = 63811ab4fd26e829b8868364325a88be3acc79819f5bb5005b2dd3b961ecc491 +SIZE (cabal/optparse-applicative-0.18.1.0/optparse-applicative-0.18.1.0.tar.gz) = 60682 +SHA256 (cabal/optparse-applicative-0.18.1.0/revision/1.cabal) = f30973861ac7e7ebff05ff8c7c3d1e4d283a1f3850e1cc14106b0693ec1b6d82 +SIZE (cabal/optparse-applicative-0.18.1.0/revision/1.cabal) = 5289 +SHA256 (cabal/prettyprinter-1.7.1/prettyprinter-1.7.1.tar.gz) = 5e6ea6903114fa118fcc359633dfb7ecddecb92c06c853d02a77b72b251f0b45 +SIZE (cabal/prettyprinter-1.7.1/prettyprinter-1.7.1.tar.gz) = 56907 +SHA256 (cabal/prettyprinter-ansi-terminal-1.1.3/prettyprinter-ansi-terminal-1.1.3.tar.gz) = 813739308ad6050620578994effe21058a170a341716acf52573fae42b5b1db3 +SIZE (cabal/prettyprinter-ansi-terminal-1.1.3/prettyprinter-ansi-terminal-1.1.3.tar.gz) = 8879 SHA256 (cabal/transformers-compat-0.7.2/transformers-compat-0.7.2.tar.gz) = b62c7304c9f3cbc9463d0739aa85cb9489f217ea092b9d625d417514fbcc9d6a SIZE (cabal/transformers-compat-0.7.2/transformers-compat-0.7.2.tar.gz) = 46485 SHA256 (cabal/utf8-string-1.0.2/utf8-string-1.0.2.tar.gz) = ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a diff --git a/www/hs-postgrest/Makefile b/www/hs-postgrest/Makefile index 67ad49776500..0bd5a01fb5cb 100644 --- a/www/hs-postgrest/Makefile +++ b/www/hs-postgrest/Makefile @@ -1,6 +1,6 @@ PORTNAME= postgrest DISTVERSIONPREFIX= v -DISTVERSION= 12.2.11 +DISTVERSION= 13.0.0 CATEGORIES= www databases haskell MAINTAINER= haskell@FreeBSD.org @@ -12,7 +12,8 @@ LICENSE_FILE= ${WRKSRC}/LICENSE ONLY_FOR_ARCHS= amd64 i386 -BUILD_DEPENDS= pg_config:databases/postgresql${PGSQL_DEFAULT}-client +BUILD_DEPENDS= pg_config:databases/postgresql${PGSQL_DEFAULT}-client \ + ghc-9.6.7:lang/ghc96 USES= cabal pgsql diff --git a/www/hs-postgrest/Makefile.modules b/www/hs-postgrest/Makefile.modules index 6506654a51ab..816d6bae22a4 100644 --- a/www/hs-postgrest/Makefile.modules +++ b/www/hs-postgrest/Makefile.modules @@ -5,17 +5,17 @@ USE_CABAL= HTTP-4000.4.1_5 \ QuickCheck-2.15.0.1_1 \ Ranged-sets-0.4.0_2 \ StateVar-1.2.2 \ - adjunctions-4.4.2_2 \ + adjunctions-4.4.3 \ aeson-2.2.3.0_3 \ aeson-pretty-0.8.10 \ ansi-terminal-1.1.2 \ ansi-terminal-types-1.1 \ appar-0.1.8 \ - asn1-encoding-0.9.6 \ + asn1-encoding-0.9.6_2 \ asn1-parse-0.9.5 \ asn1-types-0.3.4 \ assoc-1.1.1_1 \ - async-2.2.5 \ + async-2.2.5_3 \ atomic-primops-0.8.8 \ attoparsec-0.14.4_6 \ attoparsec-aeson-2.2.2.0 \ @@ -31,8 +31,8 @@ USE_CABAL= HTTP-4000.4.1_5 \ bitvec-1.1.5.0_3 \ bsb-http-chunked-0.0.0.4_4 \ byteorder-1.0.4 \ - bytestring-strict-builder-0.4.5.7 \ - bytestring-tree-builder-0.2.7.12 \ + bytestring-strict-builder-0.4.5.8 \ + bytestring-tree-builder-0.2.7.13 \ cabal-doctest-1.0.11 \ cache-0.1.3.0_1 \ call-stack-0.4.0 \ @@ -40,19 +40,18 @@ USE_CABAL= HTTP-4000.4.1_5 \ cassava-0.5.3.2_1 \ cereal-0.5.8.3 \ character-ps-0.1 \ - charset-0.3.11 \ + charset-0.3.12 \ clock-0.8.4 \ cmdargs-0.10.22 \ colour-2.3.6 \ comonad-5.0.9_1 \ - concise-0.1.0.1 \ configurator-pg-0.2.10_1 \ contravariant-1.5.5 \ contravariant-extras-0.3.5.4 \ cookie-0.4.6 \ cryptohash-md5-0.11.101.0_6 \ cryptohash-sha1-0.11.101.0_6 \ - crypton-1.0.1 \ + crypton-1.0.4 \ crypton-x509-1.7.7 \ data-bword-0.1.0.2 \ data-checked-0.3 \ @@ -68,7 +67,7 @@ USE_CABAL= HTTP-4000.4.1_5 \ data-sketches-0.3.1.0 \ data-sketches-core-0.1.0.0 \ data-textual-0.3.0.3 \ - deferred-folds-0.9.18.6 \ + deferred-folds-0.9.18.7 \ distributive-0.6.2.1_1 \ dlist-1.0_2 \ easy-file-0.2.5 \ @@ -81,14 +80,9 @@ USE_CABAL= HTTP-4000.4.1_5 \ fuzzyset-0.2.4 \ generically-0.1.1_4 \ generics-sop-0.5.1.4_2 \ - gitrev-1.3.1 \ groups-0.5.3 \ - happy-2.1.4 \ - happy-lib-2.1.4 \ hashable-1.4.7.0 \ hashtables-1.4.2 \ - haskell-src-exts-1.23.1 \ - haskell-src-meta-0.8.15 \ hasql-1.6.4.4 \ hasql-dynamic-statements-0.3.1.5 \ hasql-implicits-0.1.1.3 \ @@ -105,25 +99,24 @@ USE_CABAL= HTTP-4000.4.1_5 \ indexed-profunctors-0.1.1.1 \ indexed-traversable-0.1.4_1 \ indexed-traversable-instances-0.1.2_1 \ - insert-ordered-containers-0.2.6 \ + insert-ordered-containers-0.2.7 \ integer-conversion-0.1.1_1 \ integer-logarithms-1.0.4 \ - interpolatedstring-perl6-1.0.2 \ invariant-0.6.4_1 \ iproute-1.7.15 \ - isomorphism-class-0.3 \ - jose-0.11 \ + isomorphism-class-0.3.1.2 \ + jose-jwt-0.10.0 \ kan-extensions-5.2.6_1 \ keys-3.12.4_1 \ - lawful-conversions-0.1.6 \ + lawful-conversions-0.1.6.1 \ lens-5.2.3_5 \ lens-aeson-1.2.3_2 \ math-functions-0.3.4.4 \ - megaparsec-9.6.1 \ + megaparsec-9.7.0 \ memory-0.18.0_1 \ - monad-time-0.4.0.0 \ mtl-compat-0.2.2 \ mwc-random-0.15.2.0 \ + neat-interpolation-0.5.1.4 \ network-3.1.4.0_1 \ network-byte-order-0.1.7 \ network-control-0.0.2 \ @@ -147,23 +140,22 @@ USE_CABAL= HTTP-4000.4.1_5 \ postgresql-libpq-configure-0.10.0.1 \ prettyprinter-1.7.1 \ prettyprinter-ansi-terminal-1.1.3 \ - primitive-0.9.0.0_2 \ + primitive-0.9.1.0 \ profunctors-5.6.2_3 \ prometheus-client-1.1.1 \ protolude-0.3.4 \ psqueues-0.2.8.1 \ - ptr-0.16.8.6 \ + ptr-0.16.8.7 \ quickcheck-instances-0.3.32_1 \ - random-1.2.1.3 \ + random-1.3.1 \ rebase-1.21.2 \ - recv-0.1.0 \ + recv-0.1.1 \ reflection-2.1.9_1 \ - regex-base-0.94.0.2_4 \ - regex-tdfa-1.3.2.2_3 \ + regex-base-0.94.0.3 \ + regex-tdfa-1.3.2.4 \ rerebase-1.21.2 \ resourcet-1.3.0 \ retry-0.9.3.1 \ - safe-0.3.21_1 \ safe-exceptions-0.1.7.4_1 \ scientific-0.3.8.0_2 \ selective-0.7.0.1 \ @@ -176,14 +168,13 @@ USE_CABAL= HTTP-4000.4.1_5 \ splitmix-0.1.1 \ streaming-commons-0.2.3.0 \ strict-0.5.1_1 \ - strict-list-0.1.7.5 \ - swagger2-2.8.9 \ - syb-0.7.2.4 \ + strict-list-0.1.7.6 \ + swagger2-2.8.10 \ tagged-0.8.9 \ tasty-1.5.3_1 \ - template-haskell-compat-v0208-0.1.9.4 \ - text-builder-0.6.7.2 \ - text-builder-dev-0.3.9 \ + template-haskell-compat-v0208-0.1.9.5 \ + text-builder-0.6.10 \ + text-builder-dev-0.3.10 \ text-iso8601-0.1.1_2 \ text-latin1-0.3.1 \ text-metrics-0.3.3 \ @@ -191,10 +182,6 @@ USE_CABAL= HTTP-4000.4.1_5 \ text-short-0.1.6_3 \ th-abstraction-0.7.1.0_1 \ th-compat-0.1.6 \ - th-expand-syns-0.4.12.0 \ - th-lift-0.8.6 \ - th-orphans-0.13.16 \ - th-reify-many-0.1.10 \ these-1.2.1_2 \ time-compat-1.9.8 \ time-manager-0.0.1 \ @@ -202,9 +189,9 @@ USE_CABAL= HTTP-4000.4.1_5 \ transformers-base-0.4.6 \ transformers-compat-0.7.2 \ type-hint-0.1 \ - unix-compat-0.7.3_1 \ + unix-compat-0.7.4 \ unix-time-0.4.16 \ - unliftio-0.2.25.0 \ + unliftio-0.2.25.1 \ unliftio-core-0.2.1.0_4 \ unordered-containers-0.2.20_4 \ utf8-string-1.0.2 \ @@ -212,7 +199,7 @@ USE_CABAL= HTTP-4000.4.1_5 \ uuid-types-1.0.6_3 \ vault-0.3.1.5_10 \ vector-0.13.2.0_1 \ - vector-algorithms-0.9.0.3 \ + vector-algorithms-0.9.1.0 \ vector-instances-3.4.2 \ vector-stream-0.1.0.1_3 \ void-0.7.3 \ diff --git a/www/hs-postgrest/distinfo b/www/hs-postgrest/distinfo index 7f6f566d588d..a40eca6d3846 100644 --- a/www/hs-postgrest/distinfo +++ b/www/hs-postgrest/distinfo @@ -1,4 +1,4 @@ -TIMESTAMP = 1745396744 +TIMESTAMP = 1747113378 SHA256 (cabal/HTTP-4000.4.1/HTTP-4000.4.1.tar.gz) = df31d8efec775124dab856d7177ddcba31be9f9e0836ebdab03d94392f2dd453 SIZE (cabal/HTTP-4000.4.1/HTTP-4000.4.1.tar.gz) = 74330 SHA256 (cabal/HTTP-4000.4.1/revision/5.cabal) = 75ada03bd2d2b747319e38877a55bf8be529db4520a07d4e5ffbd24c5e850dcb @@ -23,10 +23,8 @@ SHA256 (cabal/Ranged-sets-0.4.0/revision/2.cabal) = 04bb4ce482fbdc052c9ee3346ba2 SIZE (cabal/Ranged-sets-0.4.0/revision/2.cabal) = 1373 SHA256 (cabal/StateVar-1.2.2/StateVar-1.2.2.tar.gz) = 5e4b39da395656a59827b0280508aafdc70335798b50e5d6fd52596026251825 SIZE (cabal/StateVar-1.2.2/StateVar-1.2.2.tar.gz) = 5048 -SHA256 (cabal/adjunctions-4.4.2/adjunctions-4.4.2.tar.gz) = 147b5f8db810bca0ea8952ef974982ffc447cecd21f01e1ea1121df77e276518 -SIZE (cabal/adjunctions-4.4.2/adjunctions-4.4.2.tar.gz) = 17201 -SHA256 (cabal/adjunctions-4.4.2/revision/2.cabal) = 30206ae6b78d3d523c2ff73640f84b51fa204ac3f05267a5f0c77c486b96781d -SIZE (cabal/adjunctions-4.4.2/revision/2.cabal) = 3379 +SHA256 (cabal/adjunctions-4.4.3/adjunctions-4.4.3.tar.gz) = 8beb121cee2bf913dac3188ed1e0e05cf1a0d0f12d4cb4a27c0da58450eb189a +SIZE (cabal/adjunctions-4.4.3/adjunctions-4.4.3.tar.gz) = 16788 SHA256 (cabal/aeson-2.2.3.0/aeson-2.2.3.0.tar.gz) = daa25cf428256ad05d21f2bfa44077c1b14d6c784b7930a202ee901f11cc6baa SIZE (cabal/aeson-2.2.3.0/aeson-2.2.3.0.tar.gz) = 340855 SHA256 (cabal/aeson-2.2.3.0/revision/3.cabal) = 61e559f2bad61a98aac564f2a4fd892d21e9e1712e14e3db93326317aa944a9b @@ -41,6 +39,8 @@ SHA256 (cabal/appar-0.1.8/appar-0.1.8.tar.gz) = c4ceeddc26525b58d82c41b6d3e32141 SIZE (cabal/appar-0.1.8/appar-0.1.8.tar.gz) = 4037 SHA256 (cabal/asn1-encoding-0.9.6/asn1-encoding-0.9.6.tar.gz) = d9f8deabd3b908e5cf83c0d813c08dc0143b3ec1c0d97f660d2cfa02c1c8da0a SIZE (cabal/asn1-encoding-0.9.6/asn1-encoding-0.9.6.tar.gz) = 17343 +SHA256 (cabal/asn1-encoding-0.9.6/revision/2.cabal) = 27ed8f6043aed79630313bb931f7c8e2b510f0b4586cd55c16ae040c7d1ea098 +SIZE (cabal/asn1-encoding-0.9.6/revision/2.cabal) = 2060 SHA256 (cabal/asn1-parse-0.9.5/asn1-parse-0.9.5.tar.gz) = 8f1fe1344d30b39dc594d74df2c55209577722af1497204b4c2b6d6e8747f39e SIZE (cabal/asn1-parse-0.9.5/asn1-parse-0.9.5.tar.gz) = 2951 SHA256 (cabal/asn1-types-0.3.4/asn1-types-0.3.4.tar.gz) = 78ee92a251379298ca820fa53edbf4b33c539b9fcd887c86f520c30e3b4e21a8 @@ -51,6 +51,8 @@ SHA256 (cabal/assoc-1.1.1/revision/1.cabal) = 0ab39b4d1feb4caca95ac6e314f48782b2 SIZE (cabal/assoc-1.1.1/revision/1.cabal) = 1420 SHA256 (cabal/async-2.2.5/async-2.2.5.tar.gz) = 1818473ebab9212afad2ed76297aefde5fae8b5d4404daf36939aece6a8f16f7 SIZE (cabal/async-2.2.5/async-2.2.5.tar.gz) = 15742 +SHA256 (cabal/async-2.2.5/revision/3.cabal) = b7648c6165729a973d95cb328f9fd874813a81c727707e8b2552b4f03399763b +SIZE (cabal/async-2.2.5/revision/3.cabal) = 3366 SHA256 (cabal/atomic-primops-0.8.8/atomic-primops-0.8.8.tar.gz) = c040ce4109258776100dd8942d6e746e4c26f918398fb3804e78dbe5bd73e7ea SIZE (cabal/atomic-primops-0.8.8/atomic-primops-0.8.8.tar.gz) = 34182 SHA256 (cabal/attoparsec-0.14.4/attoparsec-0.14.4.tar.gz) = 3f337fe58624565de12426f607c23e60c7b09c86b4e3adfc827ca188c9979e6c @@ -91,10 +93,10 @@ SHA256 (cabal/bsb-http-chunked-0.0.0.4/revision/4.cabal) = 1cce7371c31b1d3cfa3eb SIZE (cabal/bsb-http-chunked-0.0.0.4/revision/4.cabal) = 2687 SHA256 (cabal/byteorder-1.0.4/byteorder-1.0.4.tar.gz) = bd20bbb586947f99c38a4c93d9d0266f49f6fc581767b51ba568f6d5d52d2919 SIZE (cabal/byteorder-1.0.4/byteorder-1.0.4.tar.gz) = 2030 -SHA256 (cabal/bytestring-strict-builder-0.4.5.7/bytestring-strict-builder-0.4.5.7.tar.gz) = d7a6b1727cb916b4a9ca85a354ae2ce886b73d01ba7b1a488571ab64b4f774f1 -SIZE (cabal/bytestring-strict-builder-0.4.5.7/bytestring-strict-builder-0.4.5.7.tar.gz) = 7268 -SHA256 (cabal/bytestring-tree-builder-0.2.7.12/bytestring-tree-builder-0.2.7.12.tar.gz) = 90d8231350d21053ac2d97c3981bd74ae9f842e7696e8a249657815825459237 -SIZE (cabal/bytestring-tree-builder-0.2.7.12/bytestring-tree-builder-0.2.7.12.tar.gz) = 5498 +SHA256 (cabal/bytestring-strict-builder-0.4.5.8/bytestring-strict-builder-0.4.5.8.tar.gz) = 3b9ae00a210638d7d3972247f7106e51735327081cda17f4d0c1283b1ca2dd0b +SIZE (cabal/bytestring-strict-builder-0.4.5.8/bytestring-strict-builder-0.4.5.8.tar.gz) = 7265 +SHA256 (cabal/bytestring-tree-builder-0.2.7.13/bytestring-tree-builder-0.2.7.13.tar.gz) = 8f7e532e617393dfb2c285e0311317345ba108fc014b31c618f4279046fa6768 +SIZE (cabal/bytestring-tree-builder-0.2.7.13/bytestring-tree-builder-0.2.7.13.tar.gz) = 5496 SHA256 (cabal/cabal-doctest-1.0.11/cabal-doctest-1.0.11.tar.gz) = dc2df2f0b427028617f10e445ff8ab3352d3bbeef1b8dd847e879d2d36bf923f SIZE (cabal/cabal-doctest-1.0.11/cabal-doctest-1.0.11.tar.gz) = 13204 SHA256 (cabal/cache-0.1.3.0/cache-0.1.3.0.tar.gz) = 42e9d9f040fab2fd5fc1095a901d6348de73342b1d14254bdaf6ca3d4f11e534 @@ -113,8 +115,8 @@ SHA256 (cabal/cereal-0.5.8.3/cereal-0.5.8.3.tar.gz) = 99905220661b26e5bd91130bd9 SIZE (cabal/cereal-0.5.8.3/cereal-0.5.8.3.tar.gz) = 20166 SHA256 (cabal/character-ps-0.1/character-ps-0.1.tar.gz) = 22de71fde38b236d3e9168a832b5e1e75d1fb4f4028667bdf747b3b4c8c1529c SIZE (cabal/character-ps-0.1/character-ps-0.1.tar.gz) = 8192 -SHA256 (cabal/charset-0.3.11/charset-0.3.11.tar.gz) = 9343757569249865b42aa218461c311d619d3c8027dfddbb635146363cc08aac -SIZE (cabal/charset-0.3.11/charset-0.3.11.tar.gz) = 13650 +SHA256 (cabal/charset-0.3.12/charset-0.3.12.tar.gz) = 1ce8c6d444ae9d5685099fe118fda2744c4a6037559507d8213ff686dfca722d +SIZE (cabal/charset-0.3.12/charset-0.3.12.tar.gz) = 13687 SHA256 (cabal/clock-0.8.4/clock-0.8.4.tar.gz) = 6ae9898afe788a5e334cd5fad5d18a3c2e8e59fa09aaf7b957dbb38a4767df2e SIZE (cabal/clock-0.8.4/clock-0.8.4.tar.gz) = 9322 SHA256 (cabal/cmdargs-0.10.22/cmdargs-0.10.22.tar.gz) = b8b12e7f8795cf13037bb062d453b86c788eae62558586f59e9419aabe6e9bef @@ -125,8 +127,6 @@ SHA256 (cabal/comonad-5.0.9/comonad-5.0.9.tar.gz) = 69fb0eb49a80055a9b76d31d0a56 SIZE (cabal/comonad-5.0.9/comonad-5.0.9.tar.gz) = 14455 SHA256 (cabal/comonad-5.0.9/revision/1.cabal) = 75aded79bf583c908e4e4687c0ae067f256e2507536b75f58ffba7748767c353 SIZE (cabal/comonad-5.0.9/revision/1.cabal) = 3587 -SHA256 (cabal/concise-0.1.0.1/concise-0.1.0.1.tar.gz) = 5c27df5a3e1fe820548e90abc4a0e326b6d0fb286218619aa22d3af90c7b9925 -SIZE (cabal/concise-0.1.0.1/concise-0.1.0.1.tar.gz) = 3415 SHA256 (cabal/configurator-pg-0.2.10/configurator-pg-0.2.10.tar.gz) = 527b96469442706ce51ab9b41681434fca413945b5ab868bd2778b66fe3d4689 SIZE (cabal/configurator-pg-0.2.10/configurator-pg-0.2.10.tar.gz) = 12239 SHA256 (cabal/configurator-pg-0.2.10/revision/1.cabal) = 20a0307d5b0080e6ce571706a2a391c44cc0d12c9372fad0015067ecfdc5bfec @@ -145,8 +145,8 @@ SHA256 (cabal/cryptohash-sha1-0.11.101.0/cryptohash-sha1-0.11.101.0.tar.gz) = a4 SIZE (cabal/cryptohash-sha1-0.11.101.0/cryptohash-sha1-0.11.101.0.tar.gz) = 11563 SHA256 (cabal/cryptohash-sha1-0.11.101.0/revision/6.cabal) = 2bdf29dbd896bca86bf198c882fa8df1cb31843b71f2907e059b7c10bce0adb3 SIZE (cabal/cryptohash-sha1-0.11.101.0/revision/6.cabal) = 3085 -SHA256 (cabal/crypton-1.0.1/crypton-1.0.1.tar.gz) = 9142bb14748cc57356cf4dacec822e80eaf6dba8e1538ec93be17ee37027c7a4 -SIZE (cabal/crypton-1.0.1/crypton-1.0.1.tar.gz) = 624895 +SHA256 (cabal/crypton-1.0.4/crypton-1.0.4.tar.gz) = b4885402206422450823e7001a40d0f6b11d0c603a0cb8bf8ff5a186b7c4011a +SIZE (cabal/crypton-1.0.4/crypton-1.0.4.tar.gz) = 649976 SHA256 (cabal/crypton-x509-1.7.7/crypton-x509-1.7.7.tar.gz) = efece48c8c4adfee209979c2967037d90e6ba1b7b4e7bb1081d1d4cd93daf382 SIZE (cabal/crypton-x509-1.7.7/crypton-x509-1.7.7.tar.gz) = 21547 SHA256 (cabal/data-bword-0.1.0.2/data-bword-0.1.0.2.tar.gz) = d64880e7d6c7a2d635d7e79552888f415a417379ee637a29321abf08187e9635 @@ -179,8 +179,8 @@ SHA256 (cabal/data-sketches-core-0.1.0.0/data-sketches-core-0.1.0.0.tar.gz) = 23 SIZE (cabal/data-sketches-core-0.1.0.0/data-sketches-core-0.1.0.0.tar.gz) = 12544 SHA256 (cabal/data-textual-0.3.0.3/data-textual-0.3.0.3.tar.gz) = 4b9ee8ccd03f24203dd9307bf9aa67180ff0f07b45c3a01e33d8185ff275ec9a SIZE (cabal/data-textual-0.3.0.3/data-textual-0.3.0.3.tar.gz) = 15626 -SHA256 (cabal/deferred-folds-0.9.18.6/deferred-folds-0.9.18.6.tar.gz) = ebffce410040c77d2babee73f45ab7e79da7dcec424590a991b6dc0b8a1b8f02 -SIZE (cabal/deferred-folds-0.9.18.6/deferred-folds-0.9.18.6.tar.gz) = 10380 +SHA256 (cabal/deferred-folds-0.9.18.7/deferred-folds-0.9.18.7.tar.gz) = cfa84475ecd37db1f9421a86c84e02bdc60c7b3847daca12dc5705ff7f0178ae +SIZE (cabal/deferred-folds-0.9.18.7/deferred-folds-0.9.18.7.tar.gz) = 10386 SHA256 (cabal/distributive-0.6.2.1/distributive-0.6.2.1.tar.gz) = d7351392e078f58caa46630a4b9c643e1e2e9dddee45848c5c8358e7b1316b91 SIZE (cabal/distributive-0.6.2.1/distributive-0.6.2.1.tar.gz) = 8140 SHA256 (cabal/distributive-0.6.2.1/revision/1.cabal) = 0f99f5541cca04acf89b64432b03422b6408e830a8dff30e6c4334ef1a48680c @@ -219,22 +219,12 @@ SHA256 (cabal/generics-sop-0.5.1.4/generics-sop-0.5.1.4.tar.gz) = 616a1c21760974 SIZE (cabal/generics-sop-0.5.1.4/generics-sop-0.5.1.4.tar.gz) = 30137 SHA256 (cabal/generics-sop-0.5.1.4/revision/2.cabal) = a62864a0a096f844db946a38c3b9981f20cc50cb36ef8bbb148b695976ae4c75 SIZE (cabal/generics-sop-0.5.1.4/revision/2.cabal) = 5770 -SHA256 (cabal/gitrev-1.3.1/gitrev-1.3.1.tar.gz) = a89964db24f56727b0e7b10c98fe7c116d721d8c46f52d6e77088669aaa38332 -SIZE (cabal/gitrev-1.3.1/gitrev-1.3.1.tar.gz) = 3756 SHA256 (cabal/groups-0.5.3/groups-0.5.3.tar.gz) = ce1e52a8be7effbd1f995eadf0ed34fa45c412656d372db8a38f9c955e43ac38 SIZE (cabal/groups-0.5.3/groups-0.5.3.tar.gz) = 3396 -SHA256 (cabal/happy-2.1.4/happy-2.1.4.tar.gz) = 6d71f93efc9e40d1573c6d9ffe2fea644ff2e7005628efca93cb229e5f3a6033 -SIZE (cabal/happy-2.1.4/happy-2.1.4.tar.gz) = 61239 -SHA256 (cabal/happy-lib-2.1.4/happy-lib-2.1.4.tar.gz) = 7eeb499c69291c18c317e59ade03979c61f6225e68caba901c7d7b417d9bfa8a -SIZE (cabal/happy-lib-2.1.4/happy-lib-2.1.4.tar.gz) = 93780 SHA256 (cabal/hashable-1.4.7.0/hashable-1.4.7.0.tar.gz) = 3baee4c9027a08830d148ec524cbc0471de645e1e8426d46780ef2758df0e8da SIZE (cabal/hashable-1.4.7.0/hashable-1.4.7.0.tar.gz) = 89467 SHA256 (cabal/hashtables-1.4.2/hashtables-1.4.2.tar.gz) = ca0e299fee6c0c918f45ce0907afbff1c3891998bb792d1717e4d5f12350ef0d SIZE (cabal/hashtables-1.4.2/hashtables-1.4.2.tar.gz) = 58869 -SHA256 (cabal/haskell-src-exts-1.23.1/haskell-src-exts-1.23.1.tar.gz) = 67853047169fff7d3e5d87acef214ee185a6ab8c6a104ed9c59e389574cf6c05 -SIZE (cabal/haskell-src-exts-1.23.1/haskell-src-exts-1.23.1.tar.gz) = 1264319 -SHA256 (cabal/haskell-src-meta-0.8.15/haskell-src-meta-0.8.15.tar.gz) = 26eab63199d5f112748ec7700173cf2157e18f766ac5e78ee2986c98576b0dbe -SIZE (cabal/haskell-src-meta-0.8.15/haskell-src-meta-0.8.15.tar.gz) = 28071 SHA256 (cabal/hasql-1.6.4.4/hasql-1.6.4.4.tar.gz) = 4da966e6f267665b89045ff73a04b7da0887bd6ff7304ae60a6ef382cb4e99d7 SIZE (cabal/hasql-1.6.4.4/hasql-1.6.4.4.tar.gz) = 31915 SHA256 (cabal/hasql-dynamic-statements-0.3.1.5/hasql-dynamic-statements-0.3.1.5.tar.gz) = d74cd64e33e3c6b2da63e543d2c41b023fd16f02869878136f161abe4b1eecc0 @@ -277,26 +267,24 @@ SHA256 (cabal/indexed-traversable-instances-0.1.2/indexed-traversable-instances- SIZE (cabal/indexed-traversable-instances-0.1.2/indexed-traversable-instances-0.1.2.tar.gz) = 3673 SHA256 (cabal/indexed-traversable-instances-0.1.2/revision/1.cabal) = 68df0fc8070ae2c15f9e6febf1449fee364c131a6d1e93cac45e7895ba86dd89 SIZE (cabal/indexed-traversable-instances-0.1.2/revision/1.cabal) = 2401 -SHA256 (cabal/insert-ordered-containers-0.2.6/insert-ordered-containers-0.2.6.tar.gz) = ef52e54b176e4a0828e5822784e28005fa8a848357a88722182350b3c3d0c49f -SIZE (cabal/insert-ordered-containers-0.2.6/insert-ordered-containers-0.2.6.tar.gz) = 10586 +SHA256 (cabal/insert-ordered-containers-0.2.7/insert-ordered-containers-0.2.7.tar.gz) = 77edbb1b76e6598aeb05f0711942976432b52178cbfd2a62f4a87f3baf623617 +SIZE (cabal/insert-ordered-containers-0.2.7/insert-ordered-containers-0.2.7.tar.gz) = 10623 SHA256 (cabal/integer-conversion-0.1.1/integer-conversion-0.1.1.tar.gz) = c18164a048073310f6353ebc64c9037b52a4b8299963ce05e027bcf60e22155a SIZE (cabal/integer-conversion-0.1.1/integer-conversion-0.1.1.tar.gz) = 6179 SHA256 (cabal/integer-conversion-0.1.1/revision/1.cabal) = 941d4ae16e2124cbff5defe2abedb49efc8e03a594f817035bf231a317e6c1c9 SIZE (cabal/integer-conversion-0.1.1/revision/1.cabal) = 2256 SHA256 (cabal/integer-logarithms-1.0.4/integer-logarithms-1.0.4.tar.gz) = 6a93c76c2518cbe2d72ab17da6ae46d8cae93cbfb7c5a5ad5783f903c1448f45 SIZE (cabal/integer-logarithms-1.0.4/integer-logarithms-1.0.4.tar.gz) = 8948 -SHA256 (cabal/interpolatedstring-perl6-1.0.2/interpolatedstring-perl6-1.0.2.tar.gz) = 5a8b1e8b65253ce1e1b07b9de1075e9306483160a7b419d5f126d7e2744b7bb7 -SIZE (cabal/interpolatedstring-perl6-1.0.2/interpolatedstring-perl6-1.0.2.tar.gz) = 6512 SHA256 (cabal/invariant-0.6.4/invariant-0.6.4.tar.gz) = a9e2ab4ee3e0d4613beb7bda36a8ebc4f72318450514f4832d2fa43b74f0aeb3 SIZE (cabal/invariant-0.6.4/invariant-0.6.4.tar.gz) = 27079 SHA256 (cabal/invariant-0.6.4/revision/1.cabal) = 4a9a609f4e93ffed158b3b4f5a80822c6da30aa71a5370307c0c00c2d658d1c6 SIZE (cabal/invariant-0.6.4/revision/1.cabal) = 3513 SHA256 (cabal/iproute-1.7.15/iproute-1.7.15.tar.gz) = 18a331a7e0e6f9dc89a2da95577b0d76bd2690b8f832b72b46d6cc9b667b4ba5 SIZE (cabal/iproute-1.7.15/iproute-1.7.15.tar.gz) = 18033 -SHA256 (cabal/isomorphism-class-0.3/isomorphism-class-0.3.tar.gz) = 39f07d6586782ce9b021aff7eabeebce3a59ed3923db69121d01cd054cee90c8 -SIZE (cabal/isomorphism-class-0.3/isomorphism-class-0.3.tar.gz) = 9869 -SHA256 (cabal/jose-0.11/jose-0.11.tar.gz) = 2974e73d899208dccbb18cac889acceaebb7439e43046ac32c9c702e49f70b40 -SIZE (cabal/jose-0.11/jose-0.11.tar.gz) = 542432 +SHA256 (cabal/isomorphism-class-0.3.1.2/isomorphism-class-0.3.1.2.tar.gz) = 2c32cae55b8b8e3ca347e4898b8e0f3713d1a15a283c14718b0149b3fbbe527f +SIZE (cabal/isomorphism-class-0.3.1.2/isomorphism-class-0.3.1.2.tar.gz) = 10497 +SHA256 (cabal/jose-jwt-0.10.0/jose-jwt-0.10.0.tar.gz) = e84caf97eb70bf21a4cf9933be23a5336163276c895e44f854d73947988d4b52 +SIZE (cabal/jose-jwt-0.10.0/jose-jwt-0.10.0.tar.gz) = 41308 SHA256 (cabal/kan-extensions-5.2.6/kan-extensions-5.2.6.tar.gz) = fa82283c1c9ac3dc0951b7ca9f5b2e6f13d8331c20154ebb222b509824eeeccc SIZE (cabal/kan-extensions-5.2.6/kan-extensions-5.2.6.tar.gz) = 21718 SHA256 (cabal/kan-extensions-5.2.6/revision/1.cabal) = e0b972f900a3c04c0f36d7e221e6b04343a5a1f00ce3aababff7932e173f0833 @@ -305,8 +293,8 @@ SHA256 (cabal/keys-3.12.4/keys-3.12.4.tar.gz) = 9412a2135cbf7fb285e01016aeb311d0 SIZE (cabal/keys-3.12.4/keys-3.12.4.tar.gz) = 11890 SHA256 (cabal/keys-3.12.4/revision/1.cabal) = ce43085eb0506a2fff6020dc61351e1c0c61c29f90d3ea5030756f3ed50caa16 SIZE (cabal/keys-3.12.4/revision/1.cabal) = 2232 -SHA256 (cabal/lawful-conversions-0.1.6/lawful-conversions-0.1.6.tar.gz) = 6fcdca00fc797216363b10e602a151908657148cf63202c388d0565d1efae4be -SIZE (cabal/lawful-conversions-0.1.6/lawful-conversions-0.1.6.tar.gz) = 14843 +SHA256 (cabal/lawful-conversions-0.1.6.1/lawful-conversions-0.1.6.1.tar.gz) = af9150aaf103cb2c2f4297a000e54fccad4b559787ec30b7fd7ff361d638b7a1 +SIZE (cabal/lawful-conversions-0.1.6.1/lawful-conversions-0.1.6.1.tar.gz) = 14663 SHA256 (cabal/lens-5.2.3/lens-5.2.3.tar.gz) = df1e8ca8dd89d884994e0c80761a972088326fa43ed5d47c01b14abb710b994d SIZE (cabal/lens-5.2.3/lens-5.2.3.tar.gz) = 703220 SHA256 (cabal/lens-5.2.3/revision/5.cabal) = 08f4e81aa3fa3f175f6932089d6bb8b17669e3d00aa2968b853287e5e8d7f024 @@ -317,18 +305,18 @@ SHA256 (cabal/lens-aeson-1.2.3/revision/2.cabal) = 5a733b4b5ac8e17d1e89704441597 SIZE (cabal/lens-aeson-1.2.3/revision/2.cabal) = 1691 SHA256 (cabal/math-functions-0.3.4.4/math-functions-0.3.4.4.tar.gz) = 2441d8dd50eff445356048b2a0cdf88c4a7ba0f56614293d4975e1b081faf8fa SIZE (cabal/math-functions-0.3.4.4/math-functions-0.3.4.4.tar.gz) = 429048 -SHA256 (cabal/megaparsec-9.6.1/megaparsec-9.6.1.tar.gz) = a32257be847dbe71ac22d512ab115f9ce26fa08bcdbea7ca8b5256a1700dcbff -SIZE (cabal/megaparsec-9.6.1/megaparsec-9.6.1.tar.gz) = 64913 +SHA256 (cabal/megaparsec-9.7.0/megaparsec-9.7.0.tar.gz) = b9ed423625bf20ae7a72480d40d2dd16018a67e2ec45afb840a3607aa931ec97 +SIZE (cabal/megaparsec-9.7.0/megaparsec-9.7.0.tar.gz) = 67078 SHA256 (cabal/memory-0.18.0/memory-0.18.0.tar.gz) = fd4eb6f638e24b81b4e6cdd68772a531726f2f67686c8969d3407d82f7862e3e SIZE (cabal/memory-0.18.0/memory-0.18.0.tar.gz) = 41957 SHA256 (cabal/memory-0.18.0/revision/1.cabal) = 9f4de967352f80b6f174c9a166f315393dde80b77d7b67e41268ae7dec0319f9 SIZE (cabal/memory-0.18.0/revision/1.cabal) = 4581 -SHA256 (cabal/monad-time-0.4.0.0/monad-time-0.4.0.0.tar.gz) = b4493edf9e7f839cb4ccfcdd53845de493bffbb3ceb4fbb54ba173db68192960 -SIZE (cabal/monad-time-0.4.0.0/monad-time-0.4.0.0.tar.gz) = 2471 SHA256 (cabal/mtl-compat-0.2.2/mtl-compat-0.2.2.tar.gz) = 1955398fe2115674f47f553b2caaf928c6aa3424271a5cd13bc191e54bfe3a9e SIZE (cabal/mtl-compat-0.2.2/mtl-compat-0.2.2.tar.gz) = 5128 SHA256 (cabal/mwc-random-0.15.2.0/mwc-random-0.15.2.0.tar.gz) = 5843ab06e7c9109326aa4eb5e26486400d6e3bce25944f6671ce989499174133 SIZE (cabal/mwc-random-0.15.2.0/mwc-random-0.15.2.0.tar.gz) = 43086 +SHA256 (cabal/neat-interpolation-0.5.1.4/neat-interpolation-0.5.1.4.tar.gz) = 8eb733e3b1d90d87e0cff8b648f4b8145e38afd558f2c8343029770c9f023ab7 +SIZE (cabal/neat-interpolation-0.5.1.4/neat-interpolation-0.5.1.4.tar.gz) = 5741 SHA256 (cabal/network-3.1.4.0/network-3.1.4.0.tar.gz) = b452a2afac95d9207357eb3820c719c7c7d27871ef4b6ed7bfcd03a036b9158e SIZE (cabal/network-3.1.4.0/network-3.1.4.0.tar.gz) = 139988 SHA256 (cabal/network-3.1.4.0/revision/1.cabal) = e152cdb03243afb52bbc740cfbe96905ca298a6f6342f0c47b3f2e227ff19def @@ -397,10 +385,8 @@ SHA256 (cabal/prettyprinter-1.7.1/prettyprinter-1.7.1.tar.gz) = 5e6ea6903114fa11 SIZE (cabal/prettyprinter-1.7.1/prettyprinter-1.7.1.tar.gz) = 56907 SHA256 (cabal/prettyprinter-ansi-terminal-1.1.3/prettyprinter-ansi-terminal-1.1.3.tar.gz) = 813739308ad6050620578994effe21058a170a341716acf52573fae42b5b1db3 SIZE (cabal/prettyprinter-ansi-terminal-1.1.3/prettyprinter-ansi-terminal-1.1.3.tar.gz) = 8879 -SHA256 (cabal/primitive-0.9.0.0/primitive-0.9.0.0.tar.gz) = 696d4bd291c94d736142d6182117dca4258d3ef28bfefdb649ac8b5ecd0999c7 -SIZE (cabal/primitive-0.9.0.0/primitive-0.9.0.0.tar.gz) = 60580 -SHA256 (cabal/primitive-0.9.0.0/revision/2.cabal) = de20bf4eff1f972088854c8efda6eaca2d3147aff62232c3707f059152638759 -SIZE (cabal/primitive-0.9.0.0/revision/2.cabal) = 3203 +SHA256 (cabal/primitive-0.9.1.0/primitive-0.9.1.0.tar.gz) = 44b4de41813c7bc5db8a57f87c3612a069b65086946268ba165097252ebd3d76 +SIZE (cabal/primitive-0.9.1.0/primitive-0.9.1.0.tar.gz) = 61724 SHA256 (cabal/profunctors-5.6.2/profunctors-5.6.2.tar.gz) = 65955d7b50525a4a3bccdab1d982d2ae342897fd38140d5a94b5ef3800d8c92a SIZE (cabal/profunctors-5.6.2/profunctors-5.6.2.tar.gz) = 28522 SHA256 (cabal/profunctors-5.6.2/revision/3.cabal) = e178ba4468982326656626e2089e296f64485e68fdddc9f4476dcd5d612b4f78 @@ -411,40 +397,32 @@ SHA256 (cabal/protolude-0.3.4/protolude-0.3.4.tar.gz) = f838998212470de45d5d70e3 SIZE (cabal/protolude-0.3.4/protolude-0.3.4.tar.gz) = 19321 SHA256 (cabal/psqueues-0.2.8.1/psqueues-0.2.8.1.tar.gz) = cb7e102f09e373b4a7be52bfbc9625d265c7216d05fe04c36b7ad684ed213f77 SIZE (cabal/psqueues-0.2.8.1/psqueues-0.2.8.1.tar.gz) = 27584 -SHA256 (cabal/ptr-0.16.8.6/ptr-0.16.8.6.tar.gz) = 1a18218b6117ce326df36a3a045a5250e04e19f2f29f90b1dd5bede08f83caa5 -SIZE (cabal/ptr-0.16.8.6/ptr-0.16.8.6.tar.gz) = 17694 +SHA256 (cabal/ptr-0.16.8.7/ptr-0.16.8.7.tar.gz) = 060b47508056206a8ce655e1665f131a705b8670970d30feaf37ea1d28b26802 +SIZE (cabal/ptr-0.16.8.7/ptr-0.16.8.7.tar.gz) = 17690 SHA256 (cabal/quickcheck-instances-0.3.32/quickcheck-instances-0.3.32.tar.gz) = 48f5f2e015e2349ac795247917cbf5f1a2e96a7a1382c4441a935e19a430ff83 SIZE (cabal/quickcheck-instances-0.3.32/quickcheck-instances-0.3.32.tar.gz) = 12831 SHA256 (cabal/quickcheck-instances-0.3.32/revision/1.cabal) = 8772458bddd354e07102bf05b45976896c278282e71ff8420beac6b9b77efb34 SIZE (cabal/quickcheck-instances-0.3.32/revision/1.cabal) = 4340 -SHA256 (cabal/random-1.2.1.3/random-1.2.1.3.tar.gz) = e9c81926a7d1e40328f645f73592b31efc9c631589669a7f130687b9cc3051dc -SIZE (cabal/random-1.2.1.3/random-1.2.1.3.tar.gz) = 47117 +SHA256 (cabal/random-1.3.1/random-1.3.1.tar.gz) = d840ac83f265b0cfa2a678f8ec78627eb50cf9be2f067c52c8a4239c29b71a35 +SIZE (cabal/random-1.3.1/random-1.3.1.tar.gz) = 63846 SHA256 (cabal/rebase-1.21.2/rebase-1.21.2.tar.gz) = 6c19f5576c888078f0c7f172da05873611bfc070617d033f4f14fedd3e82fffb SIZE (cabal/rebase-1.21.2/rebase-1.21.2.tar.gz) = 20324 -SHA256 (cabal/recv-0.1.0/recv-0.1.0.tar.gz) = f664905cffb44b7f9cba604cd75bd69011a666ba06bccbcb7f3fae0cd4f14d5b -SIZE (cabal/recv-0.1.0/recv-0.1.0.tar.gz) = 5158 +SHA256 (cabal/recv-0.1.1/recv-0.1.1.tar.gz) = 8daf77c57f529503dd3038efc3813a8001032ed810bdddff0acb0faca039b721 +SIZE (cabal/recv-0.1.1/recv-0.1.1.tar.gz) = 4772 SHA256 (cabal/reflection-2.1.9/reflection-2.1.9.tar.gz) = c6a7d5e41ad0ee1a05c660acf4fd34b21f38330eec165d246b7fffb398e59fb3 SIZE (cabal/reflection-2.1.9/reflection-2.1.9.tar.gz) = 17560 SHA256 (cabal/reflection-2.1.9/revision/1.cabal) = eaf28dc9884718a306ed1e0c215a24b36c68b8aa3be425617f66d886d43fe1e0 SIZE (cabal/reflection-2.1.9/revision/1.cabal) = 4171 -SHA256 (cabal/regex-base-0.94.0.2/regex-base-0.94.0.2.tar.gz) = 7b99408f580f5bb67a1c413e0bc735886608251331ad36322020f2169aea2ef1 -SIZE (cabal/regex-base-0.94.0.2/regex-base-0.94.0.2.tar.gz) = 10488 -SHA256 (cabal/regex-base-0.94.0.2/revision/4.cabal) = 0322b2fcd1358f3355e0c8608efa60d27b14d1c9d476451dbcb9181363bd8b27 -SIZE (cabal/regex-base-0.94.0.2/revision/4.cabal) = 2601 -SHA256 (cabal/regex-tdfa-1.3.2.2/regex-tdfa-1.3.2.2.tar.gz) = 933ed5c54246bb50e335d86b884ffb70bc252b5f776fb291f162a80a27bd75b7 -SIZE (cabal/regex-tdfa-1.3.2.2/regex-tdfa-1.3.2.2.tar.gz) = 83016 -SHA256 (cabal/regex-tdfa-1.3.2.2/revision/3.cabal) = e5ea15b2898c62c63fae798784bc402b3862733d97a4f7ee3ec4f9ae6f447478 -SIZE (cabal/regex-tdfa-1.3.2.2/revision/3.cabal) = 6997 +SHA256 (cabal/regex-base-0.94.0.3/regex-base-0.94.0.3.tar.gz) = e8ca2dee598c790dd1c1c4359bdd1e495d9b881f5aa1f539c22f0dd5563747bf +SIZE (cabal/regex-base-0.94.0.3/regex-base-0.94.0.3.tar.gz) = 10550 +SHA256 (cabal/regex-tdfa-1.3.2.4/regex-tdfa-1.3.2.4.tar.gz) = 078bc313b7441f173eb487d6f46fea6860a21452eff6e5cf730ac4dd74bca797 +SIZE (cabal/regex-tdfa-1.3.2.4/regex-tdfa-1.3.2.4.tar.gz) = 83099 SHA256 (cabal/rerebase-1.21.2/rerebase-1.21.2.tar.gz) = 77cc0d707ee0886b49206065476e77d0600e4c305b37701a38ef55e736a7fc10 SIZE (cabal/rerebase-1.21.2/rerebase-1.21.2.tar.gz) = 17208 SHA256 (cabal/resourcet-1.3.0/resourcet-1.3.0.tar.gz) = ec601785ee42a201f32adb205b8685c983f18757b1bd33d2e806d571e0f9996b SIZE (cabal/resourcet-1.3.0/resourcet-1.3.0.tar.gz) = 17620 SHA256 (cabal/retry-0.9.3.1/retry-0.9.3.1.tar.gz) = 622e35114b920f76fa2e1ae6515575b9973fac19c679f5426ea6574a5d0b7ed6 SIZE (cabal/retry-0.9.3.1/retry-0.9.3.1.tar.gz) = 18717 -SHA256 (cabal/safe-0.3.21/safe-0.3.21.tar.gz) = 2c81fea42bbe79ec488774043c1ec54f30efba059df9a4f3681ce83d85007f01 -SIZE (cabal/safe-0.3.21/safe-0.3.21.tar.gz) = 11778 -SHA256 (cabal/safe-0.3.21/revision/1.cabal) = b928ea1645876788155b38ce85c7e46d157a1bb41d2b05f5770b13d60bc6a3f7 -SIZE (cabal/safe-0.3.21/revision/1.cabal) = 2400 SHA256 (cabal/safe-exceptions-0.1.7.4/safe-exceptions-0.1.7.4.tar.gz) = 3c51d8d50c9b60ff8bf94f942fd92e3bea9e62c5afa778dfc9f707b79da41ef6 SIZE (cabal/safe-exceptions-0.1.7.4/safe-exceptions-0.1.7.4.tar.gz) = 15347 SHA256 (cabal/safe-exceptions-0.1.7.4/revision/1.cabal) = 8bb7261bd54bd58acfcb154be6a161fb6d0d31a1852aadc8e927d2ad2d7651d1 @@ -481,24 +459,22 @@ SHA256 (cabal/strict-0.5.1/strict-0.5.1.tar.gz) = 77719280c2a86312e748227bfa732e SIZE (cabal/strict-0.5.1/strict-0.5.1.tar.gz) = 11798 SHA256 (cabal/strict-0.5.1/revision/1.cabal) = 58c373b7c7748cbb4a5a6c8c15073f99a1c10a9a9bb6894ac33f43a5cdb901f2 SIZE (cabal/strict-0.5.1/revision/1.cabal) = 3557 -SHA256 (cabal/strict-list-0.1.7.5/strict-list-0.1.7.5.tar.gz) = c3e3ff3e3f7bee7eff26511c92c26c14b8ac7cbdefba7fb9e24c4aa4ff01236b -SIZE (cabal/strict-list-0.1.7.5/strict-list-0.1.7.5.tar.gz) = 6785 -SHA256 (cabal/swagger2-2.8.9/swagger2-2.8.9.tar.gz) = 92a37bbfba482d6eaeedf8dd24a9658bdc9d7514fa51d7b8ab4c6e65a3c9caa1 -SIZE (cabal/swagger2-2.8.9/swagger2-2.8.9.tar.gz) = 66957 -SHA256 (cabal/syb-0.7.2.4/syb-0.7.2.4.tar.gz) = ec7c1e8822d62ab910386361cdcee40a22a26cd344c34741fadd982302291e60 -SIZE (cabal/syb-0.7.2.4/syb-0.7.2.4.tar.gz) = 41809 +SHA256 (cabal/strict-list-0.1.7.6/strict-list-0.1.7.6.tar.gz) = 756b16c12b5528cdb44ba905bdc78e5f4a749f33f630226645311a8d52207987 +SIZE (cabal/strict-list-0.1.7.6/strict-list-0.1.7.6.tar.gz) = 6786 +SHA256 (cabal/swagger2-2.8.10/swagger2-2.8.10.tar.gz) = 9217e63872beb80fb581c73a752e70fa21f2d7eaab5e86b014bdaead0dadc3e7 +SIZE (cabal/swagger2-2.8.10/swagger2-2.8.10.tar.gz) = 66780 SHA256 (cabal/tagged-0.8.9/tagged-0.8.9.tar.gz) = 6daad88ebb414ba6a556d2898d2cbe7650e4276010e3a6eed939daf54b956784 SIZE (cabal/tagged-0.8.9/tagged-0.8.9.tar.gz) = 8151 SHA256 (cabal/tasty-1.5.3/tasty-1.5.3.tar.gz) = 54a0c7b644813af871a3726ac8771b5e17b5158c792a7acf8f9e2d3ae9360780 SIZE (cabal/tasty-1.5.3/tasty-1.5.3.tar.gz) = 66548 SHA256 (cabal/tasty-1.5.3/revision/1.cabal) = 9d56ea9dbc274fc853fc531373b2c91bfe360e21460c2c6a5838897d86e3f6d0 SIZE (cabal/tasty-1.5.3/revision/1.cabal) = 2923 -SHA256 (cabal/template-haskell-compat-v0208-0.1.9.4/template-haskell-compat-v0208-0.1.9.4.tar.gz) = 567718b6f56dbf0f0e42ba35a7d6346185e35d640402932fd1956b19dfcd518a -SIZE (cabal/template-haskell-compat-v0208-0.1.9.4/template-haskell-compat-v0208-0.1.9.4.tar.gz) = 3198 -SHA256 (cabal/text-builder-0.6.7.2/text-builder-0.6.7.2.tar.gz) = 6194f3076933bbe361e225461a10fd8ab29bd5476294ffb80a6af17c8535c7dd -SIZE (cabal/text-builder-0.6.7.2/text-builder-0.6.7.2.tar.gz) = 6093 -SHA256 (cabal/text-builder-dev-0.3.9/text-builder-dev-0.3.9.tar.gz) = 90071fbd545673575b619a2839509ad36137a9bdcd28c2d5e2eaa4b3067f4e1e -SIZE (cabal/text-builder-dev-0.3.9/text-builder-dev-0.3.9.tar.gz) = 13779 +SHA256 (cabal/template-haskell-compat-v0208-0.1.9.5/template-haskell-compat-v0208-0.1.9.5.tar.gz) = 51359f8dc8d51f30b59521d214837d13c4f6c9b5c4afd0eba813c26cc2449d1f +SIZE (cabal/template-haskell-compat-v0208-0.1.9.5/template-haskell-compat-v0208-0.1.9.5.tar.gz) = 3194 +SHA256 (cabal/text-builder-0.6.10/text-builder-0.6.10.tar.gz) = 063111d149a202ee6a22e54c36dcf6b4386406059a60e33fc9fd13dc6f255f51 +SIZE (cabal/text-builder-0.6.10/text-builder-0.6.10.tar.gz) = 7301 +SHA256 (cabal/text-builder-dev-0.3.10/text-builder-dev-0.3.10.tar.gz) = 433fcb971640b0530c43d8abae05c3b0527b6632b26d8aba044dcd0dfad29454 +SIZE (cabal/text-builder-dev-0.3.10/text-builder-dev-0.3.10.tar.gz) = 13557 SHA256 (cabal/text-iso8601-0.1.1/text-iso8601-0.1.1.tar.gz) = 9dead2b7ceeae40fe0fc060bd54795c32e9926c9d1aebae8f9b9a621fba88202 SIZE (cabal/text-iso8601-0.1.1/text-iso8601-0.1.1.tar.gz) = 9599 SHA256 (cabal/text-iso8601-0.1.1/revision/2.cabal) = e07a625eef969338992bf9bba8e5dc73f07ac65f991ba636b8f1175890d15849 @@ -519,14 +495,6 @@ SHA256 (cabal/th-abstraction-0.7.1.0/revision/1.cabal) = 3011403d85b0070630e33d6 SIZE (cabal/th-abstraction-0.7.1.0/revision/1.cabal) = 2268 SHA256 (cabal/th-compat-0.1.6/th-compat-0.1.6.tar.gz) = b781a0c059872bc95406d00e98f6fa7d9e81e744730f75186583cb4dcea0a4eb SIZE (cabal/th-compat-0.1.6/th-compat-0.1.6.tar.gz) = 14622 -SHA256 (cabal/th-expand-syns-0.4.12.0/th-expand-syns-0.4.12.0.tar.gz) = 18e19967329c89f376cfc9ec04bd7871854ce0c70f803a1af15532be00c6ef0f -SIZE (cabal/th-expand-syns-0.4.12.0/th-expand-syns-0.4.12.0.tar.gz) = 7090 -SHA256 (cabal/th-lift-0.8.6/th-lift-0.8.6.tar.gz) = 04309ad70ef80ed054ebda5b7d34a66642017604019f9e44ad321eec04a1ef1f -SIZE (cabal/th-lift-0.8.6/th-lift-0.8.6.tar.gz) = 14310 -SHA256 (cabal/th-orphans-0.13.16/th-orphans-0.13.16.tar.gz) = e9900135821c4a2a8a52aeea203514c7c334bef9d636d51f89ebb3a8b92ba913 -SIZE (cabal/th-orphans-0.13.16/th-orphans-0.13.16.tar.gz) = 7145 -SHA256 (cabal/th-reify-many-0.1.10/th-reify-many-0.1.10.tar.gz) = 9d250e61242f2fb887dedc9d28c0141832ff256e63bebc2bf5abff81037be4a5 -SIZE (cabal/th-reify-many-0.1.10/th-reify-many-0.1.10.tar.gz) = 5825 SHA256 (cabal/these-1.2.1/these-1.2.1.tar.gz) = 17d6d933365edabf801a16842c1403bdd37cc5300faa2fcca980decdab22e4de SIZE (cabal/these-1.2.1/these-1.2.1.tar.gz) = 9906 SHA256 (cabal/these-1.2.1/revision/2.cabal) = 35c57aede96c15ea1fed559ac287b1168eb2b2869d79e62ed8c845780b7ea136 @@ -545,14 +513,12 @@ SHA256 (cabal/transformers-compat-0.7.2/transformers-compat-0.7.2.tar.gz) = b62c SIZE (cabal/transformers-compat-0.7.2/transformers-compat-0.7.2.tar.gz) = 46485 SHA256 (cabal/type-hint-0.1/type-hint-0.1.tar.gz) = 1161cdbf4b4b43c2953ee60438e948737604193e1bfe2c880ff178538faa99b9 SIZE (cabal/type-hint-0.1/type-hint-0.1.tar.gz) = 3092 -SHA256 (cabal/unix-compat-0.7.3/unix-compat-0.7.3.tar.gz) = 7a4fad870952d632d55c8cfe2aad8b55ac95585dacae052fbea4e32968821d87 -SIZE (cabal/unix-compat-0.7.3/unix-compat-0.7.3.tar.gz) = 15593 -SHA256 (cabal/unix-compat-0.7.3/revision/1.cabal) = e1132808d30ad1adbcf1ba7f06c3dfe712a7ee382b225eb975e0ab8cfe0c21cd -SIZE (cabal/unix-compat-0.7.3/revision/1.cabal) = 3287 +SHA256 (cabal/unix-compat-0.7.4/unix-compat-0.7.4.tar.gz) = 689b3a960c8fe12910554aa5b739d5c4769c1d180ade20402fde2ed49db7eff4 +SIZE (cabal/unix-compat-0.7.4/unix-compat-0.7.4.tar.gz) = 15586 SHA256 (cabal/unix-time-0.4.16/unix-time-0.4.16.tar.gz) = ace2a7126d7344feb3221680c556de7f28a969fb287d49bd4a2d7df18fe638e9 SIZE (cabal/unix-time-0.4.16/unix-time-0.4.16.tar.gz) = 52594 -SHA256 (cabal/unliftio-0.2.25.0/unliftio-0.2.25.0.tar.gz) = fb85a22291e78f9e58cd7f5e563a726500ad1a004b3b335b93c0975b828a112b -SIZE (cabal/unliftio-0.2.25.0/unliftio-0.2.25.0.tar.gz) = 58335 +SHA256 (cabal/unliftio-0.2.25.1/unliftio-0.2.25.1.tar.gz) = 3bfc6f8dea6966c2c06df83e6d3f481bbd77531f58b8049c46738aad9268336e +SIZE (cabal/unliftio-0.2.25.1/unliftio-0.2.25.1.tar.gz) = 58203 SHA256 (cabal/unliftio-core-0.2.1.0/unliftio-core-0.2.1.0.tar.gz) = 99384cba8d56d9d61b85e38a313a93ebcdb78be6566367f0930ef580597fe3e3 SIZE (cabal/unliftio-core-0.2.1.0/unliftio-core-0.2.1.0.tar.gz) = 3865 SHA256 (cabal/unliftio-core-0.2.1.0/revision/4.cabal) = f6a2736f858b5390d9384dca43d3ea4d96e9ca17217791791ca4951ba6e8072a @@ -579,8 +545,8 @@ SHA256 (cabal/vector-0.13.2.0/vector-0.13.2.0.tar.gz) = 28f203c786cbf8ac6dc3fea3 SIZE (cabal/vector-0.13.2.0/vector-0.13.2.0.tar.gz) = 185739 SHA256 (cabal/vector-0.13.2.0/revision/1.cabal) = b736a57b73520d2acf4865e3e2b40030d69782f35f870e376dc717ee2508d81f SIZE (cabal/vector-0.13.2.0/revision/1.cabal) = 8804 -SHA256 (cabal/vector-algorithms-0.9.0.3/vector-algorithms-0.9.0.3.tar.gz) = 61900b798fc6a581dd0916b32a1397aaed022d7f92fd737d663cbbf4d7144d9e -SIZE (cabal/vector-algorithms-0.9.0.3/vector-algorithms-0.9.0.3.tar.gz) = 29395 +SHA256 (cabal/vector-algorithms-0.9.1.0/vector-algorithms-0.9.1.0.tar.gz) = d2b674676802670d8a682b357da6b6b5741b4a33b191f0ffe5f2b2bc40558eb2 +SIZE (cabal/vector-algorithms-0.9.1.0/vector-algorithms-0.9.1.0.tar.gz) = 29426 SHA256 (cabal/vector-instances-3.4.2/vector-instances-3.4.2.tar.gz) = 34d92d6e77f64e8f7d79cde4a1d61799faec1b760b144935afc6f4a78877d667 SIZE (cabal/vector-instances-3.4.2/vector-instances-3.4.2.tar.gz) = 4042 SHA256 (cabal/vector-stream-0.1.0.1/vector-stream-0.1.0.1.tar.gz) = d0f507334bdea5431a2f07f525a97f29e76522c32210f5de6d5a2b4f1d42bf7c @@ -609,5 +575,5 @@ SHA256 (cabal/zlib-0.7.1.0/zlib-0.7.1.0.tar.gz) = 6edd38b6b81df8d274952aa85affa6 SIZE (cabal/zlib-0.7.1.0/zlib-0.7.1.0.tar.gz) = 29318 SHA256 (cabal/zlib-0.7.1.0/revision/2.cabal) = 85e64a75c0b490506a7edaa2d54950c668e66b65758bb08bb14cd31faf53a206 SIZE (cabal/zlib-0.7.1.0/revision/2.cabal) = 5357 -SHA256 (cabal/PostgREST-postgrest-v12.2.11_GH0.tar.gz) = 7e99b36e293b2a695dceff477a58bc5ff3aa4ece3e369fb4017bd78d2caa7f90 -SIZE (cabal/PostgREST-postgrest-v12.2.11_GH0.tar.gz) = 1818927 +SHA256 (cabal/PostgREST-postgrest-v13.0.0_GH0.tar.gz) = 61273ba81af1c84965695f35ff058da576d968b70a781ea6445701cb75929b97 +SIZE (cabal/PostgREST-postgrest-v13.0.0_GH0.tar.gz) = 1836917 diff --git a/www/iridium/Makefile b/www/iridium/Makefile index d2c911f84d6f..ace3050434e2 100644 --- a/www/iridium/Makefile +++ b/www/iridium/Makefile @@ -1,5 +1,5 @@ PORTNAME= iridium -PORTVERSION= 2025.05.136.1 +PORTVERSION= 2025.05.136.2 PULSEMV= 16 PULSEV= ${PULSEMV}.1 CATEGORIES= www wayland diff --git a/www/iridium/distinfo b/www/iridium/distinfo index 803215ab849b..58d0b1608e14 100644 --- a/www/iridium/distinfo +++ b/www/iridium/distinfo @@ -1,5 +1,5 @@ -TIMESTAMP = 1746686164 -SHA256 (iridium-browser-2025.05.136.1.tar.xz) = 5baa038eeafcc04a199cff7f512839b9ac3fdac71fe496af9ff3c8544f51f9ae -SIZE (iridium-browser-2025.05.136.1.tar.xz) = 3044399212 +TIMESTAMP = 1747324897 +SHA256 (iridium-browser-2025.05.136.2.tar.xz) = 49c4e1db1c81b78f83c0eb4b1e3a85daba92a01b741e857bf9d56e5fc33d0c82 +SIZE (iridium-browser-2025.05.136.2.tar.xz) = 3044410956 SHA256 (pulseaudio-16.1.tar.gz) = 027266c62f2a84422ac45fa721a649508f0f1628fb1fd9242315ac54ce2d7c92 SIZE (pulseaudio-16.1.tar.gz) = 2763111 diff --git a/www/iridium/files/patch-third__party_blink_renderer_platform_runtime__enabled__features.json5 b/www/iridium/files/patch-third__party_blink_renderer_platform_runtime__enabled__features.json5 index 4ffb0ebffc40..08dd9c45781c 100644 --- a/www/iridium/files/patch-third__party_blink_renderer_platform_runtime__enabled__features.json5 +++ b/www/iridium/files/patch-third__party_blink_renderer_platform_runtime__enabled__features.json5 @@ -1,4 +1,4 @@ ---- third_party/blink/renderer/platform/runtime_enabled_features.json5.orig 2025-05-07 06:48:23 UTC +--- third_party/blink/renderer/platform/runtime_enabled_features.json5.orig 2025-05-15 16:06:59 UTC +++ third_party/blink/renderer/platform/runtime_enabled_features.json5 @@ -434,7 +434,7 @@ name: "AppTitle", @@ -45,7 +45,7 @@ status: "stable", public: true, base_feature: "none", -@@ -4636,7 +4636,7 @@ +@@ -4635,7 +4635,7 @@ name: "UnrestrictedSharedArrayBuffer", base_feature: "none", origin_trial_feature_name: "UnrestrictedSharedArrayBuffer", @@ -54,7 +54,7 @@ }, // Enables using policy-controlled feature "usb-unrestricted" to allow // isolated context to access protected USB interface classes and to -@@ -4811,7 +4811,7 @@ +@@ -4810,7 +4810,7 @@ { name: "WebAppScopeExtensions", origin_trial_feature_name: "WebAppScopeExtensions", @@ -63,7 +63,7 @@ status: "experimental", base_feature: "none", }, -@@ -5086,7 +5086,7 @@ +@@ -5085,7 +5085,7 @@ { name: "WebIdentityDigitalCredentials", origin_trial_feature_name: "WebIdentityDigitalCredentials", diff --git a/www/iridium/files/patch-ui_ozone_platform_wayland_host_wayland__frame__manager.cc b/www/iridium/files/patch-ui_ozone_platform_wayland_host_wayland__frame__manager.cc new file mode 100644 index 000000000000..e106ca3408e3 --- /dev/null +++ b/www/iridium/files/patch-ui_ozone_platform_wayland_host_wayland__frame__manager.cc @@ -0,0 +1,13 @@ +--- ui/ozone/platform/wayland/host/wayland_frame_manager.cc.orig 2025-05-13 08:59:54 UTC ++++ ui/ozone/platform/wayland/host/wayland_frame_manager.cc +@@ -461,8 +461,10 @@ std::optional<bool> WaylandFrameManager::ApplySurfaceC + surface->UpdateBufferDamageRegion( + gfx::ToEnclosingRectIgnoringError(surface_damage)); + ++#if !BUILDFLAG(IS_BSD) + if (!config.access_fence_handle.is_null()) + surface->set_acquire_fence(std::move(config.access_fence_handle)); ++#endif + + bool needs_commit = false; + diff --git a/www/librewolf/Makefile b/www/librewolf/Makefile index ebd4edfe5e19..15e83127c5e4 100644 --- a/www/librewolf/Makefile +++ b/www/librewolf/Makefile @@ -1,8 +1,7 @@ PORTNAME= librewolf -DISTVERSION= 138.0.1 -LWPATCH= -2 +DISTVERSION= 138.0.3 +LWPATCH= -1 DISTVERSIONSUFFIX= ${LWPATCH}.source -PORTREVISION= 1 CATEGORIES= www wayland MASTER_SITES= https://gitlab.com/api/v4/projects/32320088/packages/generic/${PORTNAME}-source/${DISTVERSION}${LWPATCH}/ diff --git a/www/librewolf/distinfo b/www/librewolf/distinfo index 31195b372818..5848fa1442f7 100644 --- a/www/librewolf/distinfo +++ b/www/librewolf/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1746445113 -SHA256 (librewolf-138.0.1-2.source.tar.gz) = 308ac7a2d890bb798d3058dcf89415ccfb37e80e951f141b13c2ca98a758efd2 -SIZE (librewolf-138.0.1-2.source.tar.gz) = 1019041631 +TIMESTAMP = 1747328459 +SHA256 (librewolf-138.0.3-1.source.tar.gz) = 0a849bb4cb4448004451f1af87c12a951d782048e8668b9b6754246089c45dcb +SIZE (librewolf-138.0.3-1.source.tar.gz) = 1019083591 diff --git a/www/linux-vieb/Makefile b/www/linux-vieb/Makefile index aad6a028d354..40c51bd028df 100644 --- a/www/linux-vieb/Makefile +++ b/www/linux-vieb/Makefile @@ -1,6 +1,6 @@ PORTNAME= vieb -DISTVERSION= 12.2.0 -PORTREVISION= 2 +DISTVERSION= 12.3.0 +PORTREVISION= 0 CATEGORIES= www linux MASTER_SITES= https://github.com/Jelmerro/Vieb/releases/download/${DISTVERSION}/ \ LOCAL/nivit/${PORTNAME}/:images diff --git a/www/linux-vieb/distinfo b/www/linux-vieb/distinfo index 218dddb7c86f..898c5d3e1df7 100644 --- a/www/linux-vieb/distinfo +++ b/www/linux-vieb/distinfo @@ -1,5 +1,5 @@ -TIMESTAMP = 1738773707 -SHA256 (vieb-12.2.0.tar.gz) = dfe1ab70227adbfbcf9e845fbc92596377827d164db48b0533ddf038934fbb08 -SIZE (vieb-12.2.0.tar.gz) = 105202556 -SHA256 (vieb-images-12.2.0.tar.gz) = 5102ff85d837acdf914a0c459367b74c337969096f9f202e1f91ce1b5a6b2d9b -SIZE (vieb-images-12.2.0.tar.gz) = 970027 +TIMESTAMP = 1747147993 +SHA256 (vieb-12.3.0.tar.gz) = 68aaf4bd9dcfa242e5f6ab46a529601262325e5ee82d392181eb7228e9dc8a5e +SIZE (vieb-12.3.0.tar.gz) = 110829778 +SHA256 (vieb-images-12.3.0.tar.gz) = 78768881d33d2016153e0c5be54b52cd08aed685b4d577e1b9c5f07a50421b42 +SIZE (vieb-images-12.3.0.tar.gz) = 968923 diff --git a/www/nextcloud-calendar/Makefile b/www/nextcloud-calendar/Makefile index 8062dfb93509..84a890b3afb5 100644 --- a/www/nextcloud-calendar/Makefile +++ b/www/nextcloud-calendar/Makefile @@ -1,5 +1,5 @@ PORTNAME= calendar -PORTVERSION= 5.2.3 +PORTVERSION= 5.2.4 DISTVERSIONPREFIX= v CATEGORIES= www diff --git a/www/nextcloud-calendar/distinfo b/www/nextcloud-calendar/distinfo index a681a6b91bfa..63fe37edd4ed 100644 --- a/www/nextcloud-calendar/distinfo +++ b/www/nextcloud-calendar/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1746950468 -SHA256 (nextcloud/calendar-v5.2.3.tar.gz) = 3647d69f4e9218e1cc50da85bc9021ef7968709e20a208a5deeb01ef4673fcc8 -SIZE (nextcloud/calendar-v5.2.3.tar.gz) = 19796857 +TIMESTAMP = 1747333671 +SHA256 (nextcloud/calendar-v5.2.4.tar.gz) = cff04c29acbd163f9a232a4f03d71b109e9d701d37a063e1cb64d218725e473d +SIZE (nextcloud/calendar-v5.2.4.tar.gz) = 19795163 diff --git a/www/nextcloud-contacts/Makefile b/www/nextcloud-contacts/Makefile index 95f44662bbe9..328bd28a0f86 100644 --- a/www/nextcloud-contacts/Makefile +++ b/www/nextcloud-contacts/Makefile @@ -1,5 +1,5 @@ PORTNAME= contacts -PORTVERSION= 7.0.6 +PORTVERSION= 7.1.0 DISTVERSIONPREFIX= v CATEGORIES= www diff --git a/www/nextcloud-contacts/distinfo b/www/nextcloud-contacts/distinfo index 6b3df11045b3..c15f6bcd93a0 100644 --- a/www/nextcloud-contacts/distinfo +++ b/www/nextcloud-contacts/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1745079799 -SHA256 (nextcloud/contacts-v7.0.6.tar.gz) = dc6d5d8bf3e738020c2f6bf02a0966b8c029be7f3e9d762376a9f24924a82c32 -SIZE (nextcloud/contacts-v7.0.6.tar.gz) = 4327344 +TIMESTAMP = 1747333704 +SHA256 (nextcloud/contacts-v7.1.0.tar.gz) = 39839b18810056204c59eb0bfe436fe051ceed249aef7add563925c2ec8f4ab6 +SIZE (nextcloud/contacts-v7.1.0.tar.gz) = 4354560 diff --git a/www/nextcloud/Makefile b/www/nextcloud/Makefile index aeac60e9b5de..0c9d210db4d2 100644 --- a/www/nextcloud/Makefile +++ b/www/nextcloud/Makefile @@ -1,5 +1,5 @@ PORTNAME= nextcloud -PORTVERSION= 31.0.4 +PORTVERSION= 31.0.5 CATEGORIES= www MASTER_SITES= https://download.nextcloud.com/server/releases/ PKGNAMESUFFIX= ${PHP_PKGNAMESUFFIX} diff --git a/www/nextcloud/distinfo b/www/nextcloud/distinfo index 68bc03dbd0bb..97eb88f9a750 100644 --- a/www/nextcloud/distinfo +++ b/www/nextcloud/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1745150519 -SHA256 (nextcloud/nextcloud-31.0.4.tar.bz2) = a47541566d5c6ac6f63e4f617e27da295156da47daa2cd22eee3400fd2ad1251 -SIZE (nextcloud/nextcloud-31.0.4.tar.bz2) = 227351477 +TIMESTAMP = 1747332904 +SHA256 (nextcloud/nextcloud-31.0.5.tar.bz2) = 2228b8f524dcd87f08a2a9281d41b04f5cb500b7624bc8c8e07b8e3039061503 +SIZE (nextcloud/nextcloud-31.0.5.tar.bz2) = 226737152 diff --git a/www/novnc/Makefile b/www/novnc/Makefile index b297cd22a997..2d15c2aa671b 100644 --- a/www/novnc/Makefile +++ b/www/novnc/Makefile @@ -1,6 +1,6 @@ PORTNAME= novnc DISTVERSIONPREFIX= v -DISTVERSION= 1.5.0 +DISTVERSION= 1.6.0 CATEGORIES= www MAINTAINER= dpetrov67@gmail.com diff --git a/www/novnc/distinfo b/www/novnc/distinfo index 7b894a5ee8c5..ef60248173b4 100644 --- a/www/novnc/distinfo +++ b/www/novnc/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1722735379 -SHA256 (novnc-noVNC-v1.5.0_GH0.tar.gz) = 6a73e41f98388a5348b7902f54b02d177cb73b7e5eb0a7a0dcf688cc2c79b42a -SIZE (novnc-noVNC-v1.5.0_GH0.tar.gz) = 706843 +TIMESTAMP = 1747073404 +SHA256 (novnc-noVNC-v1.6.0_GH0.tar.gz) = 5066103959ef4e9b10f37e5a148627360dd8414e4cf8a7db92bdbd022e728aaa +SIZE (novnc-noVNC-v1.6.0_GH0.tar.gz) = 724137 diff --git a/www/novnc/pkg-plist b/www/novnc/pkg-plist index 3194a7842ea5..a011a0e566f4 100644 --- a/www/novnc/pkg-plist +++ b/www/novnc/pkg-plist @@ -61,6 +61,7 @@ libexec/novnc/app/sounds/bell.oga libexec/novnc/app/styles/Orbitron700.ttf libexec/novnc/app/styles/Orbitron700.woff libexec/novnc/app/styles/base.css +libexec/novnc/app/styles/constants.css libexec/novnc/app/styles/input.css libexec/novnc/app/ui.js libexec/novnc/app/webutil.js @@ -73,12 +74,14 @@ libexec/novnc/core/crypto/dh.js libexec/novnc/core/crypto/md5.js libexec/novnc/core/crypto/rsa.js libexec/novnc/core/decoders/copyrect.js +libexec/novnc/core/decoders/h264.js libexec/novnc/core/decoders/hextile.js libexec/novnc/core/decoders/jpeg.js libexec/novnc/core/decoders/raw.js libexec/novnc/core/decoders/rre.js libexec/novnc/core/decoders/tight.js libexec/novnc/core/decoders/tightpng.js +libexec/novnc/core/decoders/zlib.js libexec/novnc/core/decoders/zrle.js libexec/novnc/core/deflator.js libexec/novnc/core/display.js @@ -104,6 +107,7 @@ libexec/novnc/core/util/int.js libexec/novnc/core/util/logging.js libexec/novnc/core/util/strings.js libexec/novnc/core/websock.js +libexec/novnc/defaults.json libexec/novnc/docs/API-internal.md libexec/novnc/docs/API.md libexec/novnc/docs/EMBEDDING.md @@ -122,6 +126,7 @@ libexec/novnc/docs/rfbproto-3.7.pdf libexec/novnc/docs/rfbproto-3.8.pdf libexec/novnc/eslint.config.mjs libexec/novnc/karma.conf.js +libexec/novnc/mandatory.json libexec/novnc/package.json libexec/novnc/po/Makefile libexec/novnc/po/cs.po @@ -156,6 +161,7 @@ libexec/novnc/tests/test.copyrect.js libexec/novnc/tests/test.deflator.js libexec/novnc/tests/test.display.js libexec/novnc/tests/test.gesturehandler.js +libexec/novnc/tests/test.h264.js libexec/novnc/tests/test.helper.js libexec/novnc/tests/test.hextile.js libexec/novnc/tests/test.inflator.js @@ -171,6 +177,7 @@ libexec/novnc/tests/test.tightpng.js libexec/novnc/tests/test.util.js libexec/novnc/tests/test.websock.js libexec/novnc/tests/test.webutil.js +libexec/novnc/tests/test.zlib.js libexec/novnc/tests/test.zrle.js libexec/novnc/tests/vnc_playback.html libexec/novnc/utils/README.md diff --git a/www/p5-Mojolicious/Makefile b/www/p5-Mojolicious/Makefile index 535ef0597b30..d9533ffdf8a7 100644 --- a/www/p5-Mojolicious/Makefile +++ b/www/p5-Mojolicious/Makefile @@ -1,5 +1,5 @@ PORTNAME= Mojolicious -PORTVERSION= 9.39 +PORTVERSION= 9.40 CATEGORIES= www perl5 MASTER_SITES= CPAN PKGNAMEPREFIX= p5- diff --git a/www/p5-Mojolicious/distinfo b/www/p5-Mojolicious/distinfo index 92fa4f36a774..4123f6cb0736 100644 --- a/www/p5-Mojolicious/distinfo +++ b/www/p5-Mojolicious/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1732590629 -SHA256 (Mojolicious-9.39.tar.gz) = 130a490d77d76139f734ce1b894d459bae03805fb1f3dfdd58fc44fe82af3cfd -SIZE (Mojolicious-9.39.tar.gz) = 962558 +TIMESTAMP = 1747105281 +SHA256 (Mojolicious-9.40.tar.gz) = 4d45f4b51cce46b3896f2e27b2447e52a8efccb1ebea5e6b3885ea211c08480b +SIZE (Mojolicious-9.40.tar.gz) = 965888 diff --git a/www/p5-Net-Curl/Makefile b/www/p5-Net-Curl/Makefile index 3a5440ad62fb..b579501e7631 100644 --- a/www/p5-Net-Curl/Makefile +++ b/www/p5-Net-Curl/Makefile @@ -1,5 +1,6 @@ PORTNAME= Net-Curl -PORTVERSION= 0.57 +DISTVERSION= 0.57 +PORTREVISION= 1 CATEGORIES= www ftp perl5 MASTER_SITES= CPAN PKGNAMEPREFIX= p5- @@ -10,10 +11,10 @@ WWW= https://metacpan.org/dist/Net-Curl LICENSE= MIT -LIB_DEPENDS= libcurl.so:ftp/curl BUILD_DEPENDS= p5-ExtUtils-PkgConfig>=1.16:devel/p5-ExtUtils-PkgConfig +LIB_DEPENDS= libcurl.so:ftp/curl -USES= perl5 localbase +USES= localbase perl5 USE_PERL5= configure post-install: diff --git a/www/p5-Net-Curl/files/patch-Makefile.PL b/www/p5-Net-Curl/files/patch-Makefile.PL new file mode 100644 index 000000000000..f3e843a6182c --- /dev/null +++ b/www/p5-Net-Curl/files/patch-Makefile.PL @@ -0,0 +1,11 @@ +--- Makefile.PL.orig 2025-05-11 19:09:26 UTC ++++ Makefile.PL +@@ -341,7 +341,7 @@ sub get_constants_headers + + my @out; + foreach my $e (sort keys %syms) { +- if ( $e =~ /(OBSOLETE|^CURL_DEPRECATED\z|^CURL_EXTERN|^CURL_IGNORE_DEPRECATION\z|^CURLOPTDEPRECATED\z|_LAST\z|_LASTENTRY\z|^CURL_FORMAT_OFF_T$|^CURL_ISOCPP$|^CURLOPT$)/ ) { ++ if ( $e =~ /(OBSOLETE|^CURL_DEPRECATED\z|^CURL_EXTERN|^CURL_IGNORE_DEPRECATION\z|^CURLOPTDEPRECATED\z|_LAST\z|_LASTENTRY\z|^CURL_FORMAT_OFF_T$|^CURL_ISOCPP$|^CURLOPT$|^CURL_HAS_)/ ) { + next; + } + push @out, $e; diff --git a/www/p5-Net-Curl/files/patch-inc_symbols-in-versions b/www/p5-Net-Curl/files/patch-inc_symbols-in-versions index 95daebaf8ec9..50d4a7b6f1bb 100644 --- a/www/p5-Net-Curl/files/patch-inc_symbols-in-versions +++ b/www/p5-Net-Curl/files/patch-inc_symbols-in-versions @@ -1,6 +1,37 @@ ---- inc/symbols-in-versions.orig 2025-01-20 14:34:49 UTC +--- inc/symbols-in-versions.orig 2025-05-11 19:08:52 UTC +++ inc/symbols-in-versions -@@ -449,6 +449,7 @@ CURLINFO_HTTP_CODE 7.4.1 7.10.8 +@@ -45,6 +45,7 @@ CURL_GLOBAL_WIN32 7.8.1 + CURL_GLOBAL_NOTHING 7.8 + CURL_GLOBAL_SSL 7.8 + CURL_GLOBAL_WIN32 7.8.1 ++CURL_HAS_DECLSPEC_ATTRIBUTE 8.13.0 + CURL_HET_DEFAULT 7.59.0 + CURL_HTTP_VERSION_1_0 7.9.1 + CURL_HTTP_VERSION_1_1 7.9.1 +@@ -336,11 +337,11 @@ CURLE_URL_MALFORMAT 7.1 + CURLE_UNSUPPORTED_PROTOCOL 7.1 + CURLE_UPLOAD_FAILED 7.16.3 + CURLE_URL_MALFORMAT 7.1 ++CURLE_ECH_REQUIRED 8.8.0 + CURLE_URL_MALFORMAT_USER 7.1 7.17.0 + CURLE_USE_SSL_FAILED 7.17.0 + CURLE_WEIRD_SERVER_REPLY 7.51.0 + CURLE_WRITE_ERROR 7.1 +-CURLE_ECH_REQUIRED 8.8.0 + CURLFILETYPE_DEVICE_BLOCK 7.21.0 + CURLFILETYPE_DEVICE_CHAR 7.21.0 + CURLFILETYPE_DIRECTORY 7.21.0 +@@ -358,6 +359,9 @@ CURLFINFOFLAG_KNOWN_UID 7.21.0 + CURLFINFOFLAG_KNOWN_SIZE 7.21.0 + CURLFINFOFLAG_KNOWN_TIME 7.21.0 + CURLFINFOFLAG_KNOWN_UID 7.21.0 ++CURLFOLLOW_ALL 8.13.0 ++CURLFOLLOW_OBEYCODE 8.13.0 ++CURLFOLLOW_FIRSTONLY 8.13.0 + CURLFORM_ARRAY 7.9.1 7.56.0 + CURLFORM_ARRAY_END 7.9.1 7.9.5 7.9.6 + CURLFORM_ARRAY_START 7.9.1 7.9.5 7.9.6 +@@ -449,6 +453,7 @@ CURLINFO_HTTPAUTH_AVAIL 7.10.8 CURLINFO_HTTP_CONNECTCODE 7.10.7 CURLINFO_HTTP_VERSION 7.50.0 CURLINFO_HTTPAUTH_AVAIL 7.10.8 @@ -8,7 +39,7 @@ CURLINFO_LASTONE 7.4.1 CURLINFO_LASTSOCKET 7.15.2 7.45.0 CURLINFO_LOCAL_IP 7.21.0 -@@ -471,6 +472,7 @@ CURLINFO_PROTOCOL 7.52.0 7.85.0 +@@ -471,6 +476,7 @@ CURLINFO_PROXYAUTH_AVAIL 7.10.8 CURLINFO_PROXY_ERROR 7.73.0 CURLINFO_PROXY_SSL_VERIFYRESULT 7.52.0 CURLINFO_PROXYAUTH_AVAIL 7.10.8 @@ -16,3 +47,34 @@ CURLINFO_PTR 7.54.1 CURLINFO_QUEUE_TIME_T 8.6.0 CURLINFO_REDIRECT_COUNT 7.9.7 +@@ -889,6 +895,7 @@ CURLOPT_UPLOAD_BUFFERSIZE 7.62.0 + CURLOPT_UPKEEP_INTERVAL_MS 7.62.0 + CURLOPT_UPLOAD 7.1 + CURLOPT_UPLOAD_BUFFERSIZE 7.62.0 ++CURLOPT_UPLOAD_FLAGS 8.13.0 + CURLOPT_URL 7.1 + CURLOPT_USE_SSL 7.17.0 + CURLOPT_USERAGENT 7.1 +@@ -1122,6 +1129,11 @@ CURLUPART_ZONEID 7.65.0 + CURLUPART_URL 7.62.0 + CURLUPART_USER 7.62.0 + CURLUPART_ZONEID 7.65.0 ++CURLULFLAG_ANSWERED 8.13.0 ++CURLULFLAG_DELETED 8.13.0 ++CURLULFLAG_DRAFT 8.13.0 ++CURLULFLAG_FLAGGED 8.13.0 ++CURLULFLAG_SEEN 8.13.0 + CURLUSESSL_ALL 7.17.0 + CURLUSESSL_CONTROL 7.17.0 + CURLUSESSL_NONE 7.17.0 +@@ -1150,8 +1162,8 @@ LIBCURL_TIMESTAMP 7.16.2 + CURLWS_TEXT 7.86.0 + LIBCURL_COPYRIGHT 7.18.0 + LIBCURL_TIMESTAMP 7.16.2 +-LIBCURL_VERSION 7.11.0 ++LIBCURL_VERSION 7.1.1 + LIBCURL_VERSION_MAJOR 7.11.0 + LIBCURL_VERSION_MINOR 7.11.0 +-LIBCURL_VERSION_NUM 7.11.0 ++LIBCURL_VERSION_NUM 7.1.1 + LIBCURL_VERSION_PATCH 7.11.0 diff --git a/www/proxygen/Makefile b/www/proxygen/Makefile index ec8f251d3069..a97fe5968f2a 100644 --- a/www/proxygen/Makefile +++ b/www/proxygen/Makefile @@ -1,6 +1,6 @@ PORTNAME= proxygen DISTVERSIONPREFIX= v -DISTVERSION= 2025.05.05.00 +DISTVERSION= 2025.05.12.00 CATEGORIES= www MAINTAINER= yuri@FreeBSD.org diff --git a/www/proxygen/distinfo b/www/proxygen/distinfo index 01ccbe20b4ec..ea2c88d06979 100644 --- a/www/proxygen/distinfo +++ b/www/proxygen/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1746504543 -SHA256 (facebook-proxygen-v2025.05.05.00_GH0.tar.gz) = 3f9e352e1f31ef994383e4800cc0d5768c56a9e0993da67f807e04b52a90200c -SIZE (facebook-proxygen-v2025.05.05.00_GH0.tar.gz) = 1216793 +TIMESTAMP = 1747102739 +SHA256 (facebook-proxygen-v2025.05.12.00_GH0.tar.gz) = 1503c296970790e79a543c524185886296e51a01ca27e649c639cb2de9283650 +SIZE (facebook-proxygen-v2025.05.12.00_GH0.tar.gz) = 1217212 diff --git a/www/py-dj50-django-auth-ldap/Makefile b/www/py-dj50-django-auth-ldap/Makefile index d48e46991bd5..eaa0337951dc 100644 --- a/www/py-dj50-django-auth-ldap/Makefile +++ b/www/py-dj50-django-auth-ldap/Makefile @@ -1,5 +1,5 @@ PORTNAME= django-auth-ldap -PORTVERSION= 5.1.0 +PORTVERSION= 5.2.0 CATEGORIES= www security python MASTER_SITES= PYPI PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj50- diff --git a/www/py-dj50-django-auth-ldap/distinfo b/www/py-dj50-django-auth-ldap/distinfo index 2ae0a3f4baa0..d60b5a523112 100644 --- a/www/py-dj50-django-auth-ldap/distinfo +++ b/www/py-dj50-django-auth-ldap/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1730477310 -SHA256 (django_auth_ldap-5.1.0.tar.gz) = 9c607e8d9c53cf2a0ccafbe0acfc33eb1d1fd474c46ec52d30aee0dca1da9668 -SIZE (django_auth_ldap-5.1.0.tar.gz) = 55059 +TIMESTAMP = 1747314334 +SHA256 (django_auth_ldap-5.2.0.tar.gz) = 08ba6efc0340d9874725a962311b14991e29a33593eb150a8fb640709dbfa80f +SIZE (django_auth_ldap-5.2.0.tar.gz) = 55287 diff --git a/www/py-dj51-django-auth-ldap/Makefile b/www/py-dj51-django-auth-ldap/Makefile index 94a842eefd8b..b71226b9f650 100644 --- a/www/py-dj51-django-auth-ldap/Makefile +++ b/www/py-dj51-django-auth-ldap/Makefile @@ -1,5 +1,5 @@ PORTNAME= django-auth-ldap -PORTVERSION= 5.1.0 +PORTVERSION= 5.2.0 CATEGORIES= www security python MASTER_SITES= PYPI PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj51- diff --git a/www/py-dj51-django-auth-ldap/distinfo b/www/py-dj51-django-auth-ldap/distinfo index 2ae0a3f4baa0..d60b5a523112 100644 --- a/www/py-dj51-django-auth-ldap/distinfo +++ b/www/py-dj51-django-auth-ldap/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1730477310 -SHA256 (django_auth_ldap-5.1.0.tar.gz) = 9c607e8d9c53cf2a0ccafbe0acfc33eb1d1fd474c46ec52d30aee0dca1da9668 -SIZE (django_auth_ldap-5.1.0.tar.gz) = 55059 +TIMESTAMP = 1747314334 +SHA256 (django_auth_ldap-5.2.0.tar.gz) = 08ba6efc0340d9874725a962311b14991e29a33593eb150a8fb640709dbfa80f +SIZE (django_auth_ldap-5.2.0.tar.gz) = 55287 diff --git a/www/py-django-auth-ldap/Makefile b/www/py-django-auth-ldap/Makefile index 8e92221e47f5..c27d62dce257 100644 --- a/www/py-django-auth-ldap/Makefile +++ b/www/py-django-auth-ldap/Makefile @@ -1,5 +1,5 @@ PORTNAME= django-auth-ldap -PORTVERSION= 5.1.0 +PORTVERSION= 5.2.0 CATEGORIES= www security python MASTER_SITES= PYPI PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} @@ -18,7 +18,7 @@ BUILD_DEPENDS= ${PY_SETUPTOOLS} \ RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django42>=4.2:www/py-django42@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}python-ldap>=3.1:net/py-python-ldap@${PY_FLAVOR} -USES= python:3.9+ +USES= python USE_PYTHON= autoplist concurrent pep517 NO_ARCH= yes diff --git a/www/py-django-auth-ldap/distinfo b/www/py-django-auth-ldap/distinfo index 2ae0a3f4baa0..d60b5a523112 100644 --- a/www/py-django-auth-ldap/distinfo +++ b/www/py-django-auth-ldap/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1730477310 -SHA256 (django_auth_ldap-5.1.0.tar.gz) = 9c607e8d9c53cf2a0ccafbe0acfc33eb1d1fd474c46ec52d30aee0dca1da9668 -SIZE (django_auth_ldap-5.1.0.tar.gz) = 55059 +TIMESTAMP = 1747314334 +SHA256 (django_auth_ldap-5.2.0.tar.gz) = 08ba6efc0340d9874725a962311b14991e29a33593eb150a8fb640709dbfa80f +SIZE (django_auth_ldap-5.2.0.tar.gz) = 55287 diff --git a/www/py-flask/Makefile b/www/py-flask/Makefile index 64975c52c559..b7c137b698ff 100644 --- a/www/py-flask/Makefile +++ b/www/py-flask/Makefile @@ -1,5 +1,5 @@ PORTNAME= flask -DISTVERSION= 3.1.0 +DISTVERSION= 3.1.1 CATEGORIES= www python MASTER_SITES= PYPI PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} diff --git a/www/py-flask/distinfo b/www/py-flask/distinfo index ab53a28c5fc4..dd7789fa3a5b 100644 --- a/www/py-flask/distinfo +++ b/www/py-flask/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1732758182 -SHA256 (flask-3.1.0.tar.gz) = 5f873c5184c897c8d9d1b05df1e3d01b14910ce69607a117bd3277098a5836ac -SIZE (flask-3.1.0.tar.gz) = 680824 +TIMESTAMP = 1747179697 +SHA256 (flask-3.1.1.tar.gz) = 284c7b8f2f58cb737f0cf1c30fd7eaf0ccfcde196099d24ecede3fc2005aa59e +SIZE (flask-3.1.1.tar.gz) = 753440 diff --git a/www/reproxy/Makefile b/www/reproxy/Makefile index fcd3f054a2d9..c8c3d19d8495 100644 --- a/www/reproxy/Makefile +++ b/www/reproxy/Makefile @@ -1,7 +1,6 @@ PORTNAME= reproxy -PORTVERSION= 1.1.1 +PORTVERSION= 1.2.3 DISTVERSIONPREFIX= v -PORTREVISION= 5 CATEGORIES= www MAINTAINER= danfe@FreeBSD.org @@ -11,7 +10,7 @@ WWW= https://reproxy.io/ LICENSE= MIT LICENSE_FILE= ${WRKSRC}/LICENSE -USES= go:modules +USES= go:1.23,modules USE_GITHUB= yes GH_ACCOUNT= umputun diff --git a/www/reproxy/distinfo b/www/reproxy/distinfo index a15b25cc08cb..6173629a2615 100644 --- a/www/reproxy/distinfo +++ b/www/reproxy/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1707197375 -SHA256 (umputun-reproxy-v1.1.1_GH0.tar.gz) = 595af6971ea6be9f5f4a3e92c9c9ad9024c93c353456cd3d8d9efa9786679c1e -SIZE (umputun-reproxy-v1.1.1_GH0.tar.gz) = 3166619 +TIMESTAMP = 1740074776 +SHA256 (umputun-reproxy-v1.2.3_GH0.tar.gz) = 5156be192698e263134e486448de3099e389cdc508c4a311830f371395ecfe13 +SIZE (umputun-reproxy-v1.2.3_GH0.tar.gz) = 3449957 diff --git a/www/sogo/Makefile b/www/sogo/Makefile index 44fbd991ff76..5370d98555c3 100644 --- a/www/sogo/Makefile +++ b/www/sogo/Makefile @@ -1,5 +1,5 @@ PORTNAME= sogo -PORTVERSION= 5.12.0 +PORTVERSION= 5.12.1 CATEGORIES= www gnustep MASTER_SITES= https://packages.sogo.nu/sources/ DISTNAME= SOGo-${PORTVERSION} diff --git a/www/sogo/distinfo b/www/sogo/distinfo index 230d2fe0b8cd..678df0747647 100644 --- a/www/sogo/distinfo +++ b/www/sogo/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1742970033 -SHA256 (SOGo-5.12.0.tar.gz) = f5c17371ad6e6442b3fc8e1c3149710033d5c61aa3f2a7a3f090b7f51cbec83a -SIZE (SOGo-5.12.0.tar.gz) = 37238251 +TIMESTAMP = 1747459352 +SHA256 (SOGo-5.12.1.tar.gz) = b51d39b31af9a6059db79a18201f3c6cfd584468e369eebe286f8181804bcd99 +SIZE (SOGo-5.12.1.tar.gz) = 37738293 diff --git a/www/sogo/files/patch-SoObjects_SOGo_SOGoMailer.m b/www/sogo/files/patch-SoObjects_SOGo_SOGoMailer.m deleted file mode 100644 index f204575eb042..000000000000 --- a/www/sogo/files/patch-SoObjects_SOGo_SOGoMailer.m +++ /dev/null @@ -1,11 +0,0 @@ ---- SoObjects/SOGo/SOGoMailer.m 2025-03-25 23:34:20.921308000 -0700 -+++ SoObjects/SOGo/SOGoMailer.m 2025-03-25 23:34:50.890963000 -0700 -@@ -325,7 +325,7 @@ - { - login = [currentAcount objectForKey: @"userName"]; - password = [currentAcount objectForKey: @"password"]; -- smtpAuthMethod = "plain"; //Only support plain for auxiliary account -+ smtpAuthMethod = @"plain"; //Only support plain for auxiliary account - } - else - { diff --git a/www/sogo/pkg-plist b/www/sogo/pkg-plist index 042b1934d44c..e3f23632b021 100644 --- a/www/sogo/pkg-plist +++ b/www/sogo/pkg-plist @@ -751,7 +751,7 @@ GNUstep/Local/Library/Libraries/sogo/libSOGo.so.5 GNUstep/Local/Library/Libraries/sogo/libSOGo.so.%%VERSION%% GNUstep/Local/Library/Libraries/sogo/libSOGoUI.so GNUstep/Local/Library/Libraries/sogo/libSOGoUI.so.5.12 -GNUstep/Local/Library/Libraries/sogo/libSOGoUI.so.%%VERSION%% +GNUstep/Local/Library/Libraries/sogo/libSOGoUI.so.5.12.0 GNUstep/Local/Library/OCSTypeModels/appointment-oracle.ocs GNUstep/Local/Library/OCSTypeModels/appointment.ocs GNUstep/Local/Library/OCSTypeModels/contact-oracle.ocs @@ -2092,6 +2092,13 @@ GNUstep/Local/Library/SOGo/WebServerResources/js/vendor/angular-file-upload.js GNUstep/Local/Library/SOGo/WebServerResources/js/vendor/angular-file-upload.js.map GNUstep/Local/Library/SOGo/WebServerResources/js/vendor/angular-file-upload.min.js GNUstep/Local/Library/SOGo/WebServerResources/js/vendor/angular-file-upload.min.js.map +GNUstep/Local/Library/SOGo/WebServerResources/js/vendor/angular-material-dist/angular-material-mocks.js +GNUstep/Local/Library/SOGo/WebServerResources/js/vendor/angular-material-dist/angular-material.js +GNUstep/Local/Library/SOGo/WebServerResources/js/vendor/angular-material-dist/angular-material.min.js +GNUstep/Local/Library/SOGo/WebServerResources/js/vendor/angular-material-dist/angular-material.scss +GNUstep/Local/Library/SOGo/WebServerResources/js/vendor/angular-material-dist/layouts/angular-material.layout-attributes.scss +GNUstep/Local/Library/SOGo/WebServerResources/js/vendor/angular-material-dist/layouts/angular-material.layouts.scss +GNUstep/Local/Library/SOGo/WebServerResources/js/vendor/angular-material-dist/package.json GNUstep/Local/Library/SOGo/WebServerResources/js/vendor/angular-material.js GNUstep/Local/Library/SOGo/WebServerResources/js/vendor/angular-material.min.js GNUstep/Local/Library/SOGo/WebServerResources/js/vendor/angular-messages.js diff --git a/www/tomcat-devel/Makefile b/www/tomcat-devel/Makefile index d643c6982b9d..56a5046ab6cb 100644 --- a/www/tomcat-devel/Makefile +++ b/www/tomcat-devel/Makefile @@ -1,6 +1,5 @@ PORTNAME= tomcat -DISTVERSION= 11.0.6 -PORTREVISION= 2 +DISTVERSION= 11.0.7 CATEGORIES= www java MASTER_SITES= APACHE/${PORTNAME}/${PORTNAME}-${DISTVERSION:C/([0-9]+)(.*)/\1/}/v${DISTVERSION}/bin PKGNAMESUFFIX= -devel diff --git a/www/tomcat-devel/distinfo b/www/tomcat-devel/distinfo index e344328ff6a6..805285ec7f65 100644 --- a/www/tomcat-devel/distinfo +++ b/www/tomcat-devel/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1744195573 -SHA256 (apache-tomcat-11.0.6.tar.gz) = 864458f646bf938d3feb5773456199819b91d52670e4d724b9866ccfd4761cef -SIZE (apache-tomcat-11.0.6.tar.gz) = 13878198 +TIMESTAMP = 1747453588 +SHA256 (apache-tomcat-11.0.7.tar.gz) = 2fcece641c62ba1f28e1d7b257493151fc44f161fb391015ee6a95fa71632fb9 +SIZE (apache-tomcat-11.0.7.tar.gz) = 14091809 diff --git a/www/tomcat-devel/pkg-plist b/www/tomcat-devel/pkg-plist index 28bd1cee81f1..ee68e1b0d4fd 100644 --- a/www/tomcat-devel/pkg-plist +++ b/www/tomcat-devel/pkg-plist @@ -103,8 +103,14 @@ %%DOCS%%%%T%%/webapps/docs/architecture/index.html %%DOCS%%%%T%%/webapps/docs/architecture/overview.html %%DOCS%%%%T%%/webapps/docs/architecture/requestProcess.html -%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/authentication-process.png -%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/request-process.png +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/11_nio.plantuml +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/11_nio.png +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/21_http11.plantuml +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/21_http11.png +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/31_synchronous.plantuml +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/31_synchronous.png +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/41_basic.plantuml +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/41_basic.png %%DOCS%%%%T%%/webapps/docs/architecture/startup.html %%DOCS%%%%T%%/webapps/docs/architecture/startup/1_overview.plantuml %%DOCS%%%%T%%/webapps/docs/architecture/startup/1_overview.png diff --git a/www/tomcat101/Makefile b/www/tomcat101/Makefile index 755b7bd76299..6977459192aa 100644 --- a/www/tomcat101/Makefile +++ b/www/tomcat101/Makefile @@ -1,6 +1,5 @@ PORTNAME= tomcat -DISTVERSION= 10.1.40 -PORTREVISION= 2 +DISTVERSION= 10.1.41 CATEGORIES= www java MASTER_SITES= APACHE/${PORTNAME}/${PORTNAME}-${DISTVERSION:C/([0-9]+)(.*)/\1/}/v${DISTVERSION}/bin PKGNAMESUFFIX= 101 diff --git a/www/tomcat101/distinfo b/www/tomcat101/distinfo index d2c548eb367e..cb885000965a 100644 --- a/www/tomcat101/distinfo +++ b/www/tomcat101/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1744198379 -SHA256 (apache-tomcat-10.1.40.tar.gz) = 25f1e607f17ee2fa99e329eec23b6393ab9e1390929c6cdcb31f749576b94d8e -SIZE (apache-tomcat-10.1.40.tar.gz) = 13867286 +TIMESTAMP = 1747074614 +SHA256 (apache-tomcat-10.1.41.tar.gz) = 1f7cc8cce2d5f4acd35491d0fa2abafa6ddd9bb0425b57b277310fde5ff2fcb3 +SIZE (apache-tomcat-10.1.41.tar.gz) = 14079449 diff --git a/www/tomcat101/pkg-plist b/www/tomcat101/pkg-plist index dac61a4c57df..1fae71f972e4 100644 --- a/www/tomcat101/pkg-plist +++ b/www/tomcat101/pkg-plist @@ -105,8 +105,14 @@ %%DOCS%%%%T%%/webapps/docs/architecture/index.html %%DOCS%%%%T%%/webapps/docs/architecture/overview.html %%DOCS%%%%T%%/webapps/docs/architecture/requestProcess.html -%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/authentication-process.png -%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/request-process.png +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/11_nio.plantuml +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/11_nio.png +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/21_http11.plantuml +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/21_http11.png +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/31_synchronous.plantuml +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/31_synchronous.png +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/41_basic.plantuml +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/41_basic.png %%DOCS%%%%T%%/webapps/docs/architecture/startup.html %%DOCS%%%%T%%/webapps/docs/architecture/startup/1_overview.plantuml %%DOCS%%%%T%%/webapps/docs/architecture/startup/1_overview.png diff --git a/www/tomcat110/Makefile b/www/tomcat110/Makefile index a35009afb7e2..6c8fa8250802 100644 --- a/www/tomcat110/Makefile +++ b/www/tomcat110/Makefile @@ -1,6 +1,5 @@ PORTNAME= tomcat -DISTVERSION= 11.0.6 -PORTREVISION= 2 +DISTVERSION= 11.0.7 CATEGORIES= www java MASTER_SITES= APACHE/${PORTNAME}/${PORTNAME}-${DISTVERSION:C/([0-9]+)(.*)/\1/}/v${DISTVERSION}/bin PKGNAMESUFFIX= 110 diff --git a/www/tomcat110/distinfo b/www/tomcat110/distinfo index e344328ff6a6..805285ec7f65 100644 --- a/www/tomcat110/distinfo +++ b/www/tomcat110/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1744195573 -SHA256 (apache-tomcat-11.0.6.tar.gz) = 864458f646bf938d3feb5773456199819b91d52670e4d724b9866ccfd4761cef -SIZE (apache-tomcat-11.0.6.tar.gz) = 13878198 +TIMESTAMP = 1747453588 +SHA256 (apache-tomcat-11.0.7.tar.gz) = 2fcece641c62ba1f28e1d7b257493151fc44f161fb391015ee6a95fa71632fb9 +SIZE (apache-tomcat-11.0.7.tar.gz) = 14091809 diff --git a/www/tomcat110/pkg-plist b/www/tomcat110/pkg-plist index 28bd1cee81f1..ee68e1b0d4fd 100644 --- a/www/tomcat110/pkg-plist +++ b/www/tomcat110/pkg-plist @@ -103,8 +103,14 @@ %%DOCS%%%%T%%/webapps/docs/architecture/index.html %%DOCS%%%%T%%/webapps/docs/architecture/overview.html %%DOCS%%%%T%%/webapps/docs/architecture/requestProcess.html -%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/authentication-process.png -%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/request-process.png +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/11_nio.plantuml +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/11_nio.png +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/21_http11.plantuml +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/21_http11.png +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/31_synchronous.plantuml +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/31_synchronous.png +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/41_basic.plantuml +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/41_basic.png %%DOCS%%%%T%%/webapps/docs/architecture/startup.html %%DOCS%%%%T%%/webapps/docs/architecture/startup/1_overview.plantuml %%DOCS%%%%T%%/webapps/docs/architecture/startup/1_overview.png diff --git a/www/tomcat9/Makefile b/www/tomcat9/Makefile index 6f5598aa5350..65d7eaf04b34 100644 --- a/www/tomcat9/Makefile +++ b/www/tomcat9/Makefile @@ -1,6 +1,5 @@ PORTNAME= tomcat -DISTVERSION= 9.0.104 -PORTREVISION= 2 +DISTVERSION= 9.0.105 CATEGORIES= www java MASTER_SITES= APACHE/${PORTNAME}/${PORTNAME}-${DISTVERSION:C/([0-9])(.*)/\1/}/v${DISTVERSION}/bin PKGNAMESUFFIX= 9 diff --git a/www/tomcat9/distinfo b/www/tomcat9/distinfo index 1b72aade617d..f5302f645647 100644 --- a/www/tomcat9/distinfo +++ b/www/tomcat9/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1744234542 -SHA256 (apache-tomcat-9.0.104.tar.gz) = fa19751c8f81b294dde346ad93517bded84f40885c442e0a7130da982a22abae -SIZE (apache-tomcat-9.0.104.tar.gz) = 12787166 +TIMESTAMP = 1747087680 +SHA256 (apache-tomcat-9.0.105.tar.gz) = ee86ee179493e610358b23a0f79ba70b9e76ade71157aada9ac7cdcdcdbe35f5 +SIZE (apache-tomcat-9.0.105.tar.gz) = 13000541 diff --git a/www/tomcat9/pkg-plist b/www/tomcat9/pkg-plist index 0034fa871ac8..7a480526a68d 100644 --- a/www/tomcat9/pkg-plist +++ b/www/tomcat9/pkg-plist @@ -102,8 +102,14 @@ %%DOCS%%%%T%%/webapps/docs/architecture/index.html %%DOCS%%%%T%%/webapps/docs/architecture/overview.html %%DOCS%%%%T%%/webapps/docs/architecture/requestProcess.html -%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/authentication-process.png -%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/request-process.png +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/11_nio.plantuml +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/11_nio.png +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/21_http11.plantuml +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/21_http11.png +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/31_synchronous.plantuml +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/31_synchronous.png +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/41_basic.plantuml +%%DOCS%%%%T%%/webapps/docs/architecture/requestProcess/41_basic.png %%DOCS%%%%T%%/webapps/docs/architecture/startup.html %%DOCS%%%%T%%/webapps/docs/architecture/startup/1_overview.plantuml %%DOCS%%%%T%%/webapps/docs/architecture/startup/1_overview.png diff --git a/www/tt-rss/Makefile b/www/tt-rss/Makefile index b6c91f2ef6f8..90f2e16e73ce 100644 --- a/www/tt-rss/Makefile +++ b/www/tt-rss/Makefile @@ -1,5 +1,5 @@ PORTNAME= tt-rss -DISTVERSION= g20250220 +DISTVERSION= g20250427 PORTEPOCH= 2 CATEGORIES= www MASTER_SITES= LOCAL/meta @@ -17,11 +17,11 @@ USES= gettext-tools php:cli,web,flavors shebangfix USE_GITLAB= yes GL_SITE= https://gitlab.tt-rss.org -GL_TAGNAME= bfdfea88b988778db59fb112bbd07a4cd2aefd69 +GL_TAGNAME= f097c5ed97671f66be71e52c13917c23528ba308 # phe json/openssl extension is required but it's statically linked in default php USE_PHP= ctype dom exif fileinfo filter iconv intl mbstring pcntl pdo \ - phar posix session simplexml sockets tokenizer xml xmlwriter \ - zip + phar posix session simplexml sockets sodium tokenizer xml \ + xmlwriter zip USE_RC_SUBR= ttrssd SHEBANG_FILES= update.php update_daemon2.php diff --git a/www/tt-rss/distinfo b/www/tt-rss/distinfo index 8f80c6abb1dc..41aa613d9a2b 100644 --- a/www/tt-rss/distinfo +++ b/www/tt-rss/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1740342260 -SHA256 (tt-rss-tt-rss-bfdfea88b988778db59fb112bbd07a4cd2aefd69_GL0.tar.gz) = 7424ea2d810ad6d9dd499adcd62e7358f24cda951b493090ee2b05a2bd63e8d8 -SIZE (tt-rss-tt-rss-bfdfea88b988778db59fb112bbd07a4cd2aefd69_GL0.tar.gz) = 8583787 +TIMESTAMP = 1747000425 +SHA256 (tt-rss-tt-rss-f097c5ed97671f66be71e52c13917c23528ba308_GL0.tar.gz) = 996189e8a7acdc5e8b44fb181b0ff7f6ce746acca77a43e300c0af56efa40b6f +SIZE (tt-rss-tt-rss-f097c5ed97671f66be71e52c13917c23528ba308_GL0.tar.gz) = 8712416 diff --git a/www/tt-rss/pkg-plist b/www/tt-rss/pkg-plist index 0cbc91f943f5..5818ba98cf63 100644 --- a/www/tt-rss/pkg-plist +++ b/www/tt-rss/pkg-plist @@ -36,6 +36,7 @@ %%WWWDIR%%/classes/Cache_Local.php %%WWWDIR%%/classes/Config.php %%WWWDIR%%/classes/Counters.php +%%WWWDIR%%/classes/Crypt.php %%WWWDIR%%/classes/Db.php %%WWWDIR%%/classes/Db_Migrations.php %%WWWDIR%%/classes/Db_Prefs.php @@ -1979,6 +1980,8 @@ %%WWWDIR%%/locale/ru_RU/LC_MESSAGES/messages.po %%WWWDIR%%/locale/sv_SE/LC_MESSAGES/messages.mo %%WWWDIR%%/locale/sv_SE/LC_MESSAGES/messages.po +%%WWWDIR%%/locale/ta/LC_MESSAGES/messages.mo +%%WWWDIR%%/locale/ta/LC_MESSAGES/messages.po %%WWWDIR%%/locale/tr_TR/LC_MESSAGES/messages.mo %%WWWDIR%%/locale/tr_TR/LC_MESSAGES/messages.po %%WWWDIR%%/locale/uk_UA/LC_MESSAGES/messages.mo @@ -2045,7 +2048,6 @@ %%WWWDIR%%/public.php %%WWWDIR%%/schema/ttrss_schema_mysql.sql %%WWWDIR%%/schema/ttrss_schema_pgsql.sql -%%WWWDIR%%/sql/mysql/schema.sql %%WWWDIR%%/sql/mysql/migrations/3.sql %%WWWDIR%%/sql/mysql/migrations/4.sql %%WWWDIR%%/sql/mysql/migrations/5.sql @@ -2191,7 +2193,9 @@ %%WWWDIR%%/sql/mysql/migrations/145.sql %%WWWDIR%%/sql/mysql/migrations/146.sql %%WWWDIR%%/sql/mysql/migrations/147.sql -%%WWWDIR%%/sql/pgsql/schema.sql +%%WWWDIR%%/sql/mysql/migrations/148.sql +%%WWWDIR%%/sql/mysql/migrations/149.sql +%%WWWDIR%%/sql/mysql/schema.sql %%WWWDIR%%/sql/pgsql/migrations/3.sql %%WWWDIR%%/sql/pgsql/migrations/4.sql %%WWWDIR%%/sql/pgsql/migrations/5.sql @@ -2337,6 +2341,9 @@ %%WWWDIR%%/sql/pgsql/migrations/145.sql %%WWWDIR%%/sql/pgsql/migrations/146.sql %%WWWDIR%%/sql/pgsql/migrations/147.sql +%%WWWDIR%%/sql/pgsql/migrations/148.sql +%%WWWDIR%%/sql/pgsql/migrations/149.sql +%%WWWDIR%%/sql/pgsql/schema.sql %%WWWDIR%%/templates.local/index.html %%WWWDIR%%/templates/digest_template.txt %%WWWDIR%%/templates/digest_template_html.txt @@ -2407,8 +2414,8 @@ %%WWWDIR%%/vendor/chillerlan/php-qrcode/src/Data/Hanzi.php %%WWWDIR%%/vendor/chillerlan/php-qrcode/src/Data/Kanji.php %%WWWDIR%%/vendor/chillerlan/php-qrcode/src/Data/Number.php -%%WWWDIR%%/vendor/chillerlan/php-qrcode/src/Data/QRData.php %%WWWDIR%%/vendor/chillerlan/php-qrcode/src/Data/QRCodeDataException.php +%%WWWDIR%%/vendor/chillerlan/php-qrcode/src/Data/QRData.php %%WWWDIR%%/vendor/chillerlan/php-qrcode/src/Data/QRDataModeAbstract.php %%WWWDIR%%/vendor/chillerlan/php-qrcode/src/Data/QRDataModeInterface.php %%WWWDIR%%/vendor/chillerlan/php-qrcode/src/Data/QRMatrix.php diff --git a/www/ungoogled-chromium/Makefile b/www/ungoogled-chromium/Makefile index 616c569e77cd..82ad56dc48d0 100644 --- a/www/ungoogled-chromium/Makefile +++ b/www/ungoogled-chromium/Makefile @@ -1,5 +1,5 @@ PORTNAME= ungoogled-chromium -PORTVERSION= 136.0.7103.92 +PORTVERSION= 136.0.7103.113 PULSEMV= 16 PULSEV= ${PULSEMV}.1 UGVERSION= ${DISTVERSION}-1 diff --git a/www/ungoogled-chromium/distinfo b/www/ungoogled-chromium/distinfo index ff9869865cd1..f53ddc783f79 100644 --- a/www/ungoogled-chromium/distinfo +++ b/www/ungoogled-chromium/distinfo @@ -1,9 +1,9 @@ -TIMESTAMP = 1746691040 -SHA256 (chromium-136.0.7103.92.tar.xz) = 3fa7f88ef186566948367bf1e9a9f0612e753fc69285c1654728f6a015cd4cf2 -SIZE (chromium-136.0.7103.92.tar.xz) = 7188412240 +TIMESTAMP = 1747298437 +SHA256 (chromium-136.0.7103.113.tar.xz) = 7c765bd13df842a28bb52279b8d711411ac6082151473e07bd70b9a482c0a0ac +SIZE (chromium-136.0.7103.113.tar.xz) = 7196537592 SHA256 (pulseaudio-16.1.tar.gz) = 027266c62f2a84422ac45fa721a649508f0f1628fb1fd9242315ac54ce2d7c92 SIZE (pulseaudio-16.1.tar.gz) = 2763111 -SHA256 (chromium-136.0.7103.92-testdata.tar.xz) = 6e5bb3fba5b61ffc9e91b9d2fc9cc758bebe4d16806a68b1a32b189193c78256 -SIZE (chromium-136.0.7103.92-testdata.tar.xz) = 651393856 -SHA256 (ungoogled-software-ungoogled-chromium-136.0.7103.92-136.0.7103.92-1_GH0.tar.gz) = d256643a26d536a5079441e63fd4c8cda0e073702665605b40c5ce1d5b18bcbe -SIZE (ungoogled-software-ungoogled-chromium-136.0.7103.92-136.0.7103.92-1_GH0.tar.gz) = 633266 +SHA256 (chromium-136.0.7103.113-testdata.tar.xz) = cbf264643986db5b7aa91843ea64a1b9e23d00bb226b234d4f60788469a58ef8 +SIZE (chromium-136.0.7103.113-testdata.tar.xz) = 651614116 +SHA256 (ungoogled-software-ungoogled-chromium-136.0.7103.113-136.0.7103.113-1_GH0.tar.gz) = ab4c1b21292b860eaa750d3fb9ee73dae58a86d2dd59d4e41e06102e8c9f635a +SIZE (ungoogled-software-ungoogled-chromium-136.0.7103.113-136.0.7103.113-1_GH0.tar.gz) = 633301 diff --git a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_runtime__enabled__features.json5 b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_runtime__enabled__features.json5 index 9a37800799e6..9b0ab86d6d91 100644 --- a/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_runtime__enabled__features.json5 +++ b/www/ungoogled-chromium/files/patch-third__party_blink_renderer_platform_runtime__enabled__features.json5 @@ -1,4 +1,4 @@ ---- third_party/blink/renderer/platform/runtime_enabled_features.json5.orig 2025-05-06 12:23:00 UTC +--- third_party/blink/renderer/platform/runtime_enabled_features.json5.orig 2025-05-15 08:53:47 UTC +++ third_party/blink/renderer/platform/runtime_enabled_features.json5 @@ -434,7 +434,7 @@ name: "AppTitle", @@ -45,7 +45,7 @@ status: "stable", public: true, base_feature: "none", -@@ -4645,7 +4645,7 @@ +@@ -4644,7 +4644,7 @@ name: "UnrestrictedSharedArrayBuffer", base_feature: "none", origin_trial_feature_name: "UnrestrictedSharedArrayBuffer", @@ -54,7 +54,7 @@ }, // Enables using policy-controlled feature "usb-unrestricted" to allow // isolated context to access protected USB interface classes and to -@@ -4820,7 +4820,7 @@ +@@ -4819,7 +4819,7 @@ { name: "WebAppScopeExtensions", origin_trial_feature_name: "WebAppScopeExtensions", @@ -63,7 +63,7 @@ status: "experimental", base_feature: "none", }, -@@ -5095,7 +5095,7 @@ +@@ -5094,7 +5094,7 @@ { name: "WebIdentityDigitalCredentials", origin_trial_feature_name: "WebIdentityDigitalCredentials", diff --git a/www/ungoogled-chromium/files/patch-ui_ozone_platform_wayland_host_wayland__frame__manager.cc b/www/ungoogled-chromium/files/patch-ui_ozone_platform_wayland_host_wayland__frame__manager.cc new file mode 100644 index 000000000000..e106ca3408e3 --- /dev/null +++ b/www/ungoogled-chromium/files/patch-ui_ozone_platform_wayland_host_wayland__frame__manager.cc @@ -0,0 +1,13 @@ +--- ui/ozone/platform/wayland/host/wayland_frame_manager.cc.orig 2025-05-13 08:59:54 UTC ++++ ui/ozone/platform/wayland/host/wayland_frame_manager.cc +@@ -461,8 +461,10 @@ std::optional<bool> WaylandFrameManager::ApplySurfaceC + surface->UpdateBufferDamageRegion( + gfx::ToEnclosingRectIgnoringError(surface_damage)); + ++#if !BUILDFLAG(IS_BSD) + if (!config.access_fence_handle.is_null()) + surface->set_acquire_fence(std::move(config.access_fence_handle)); ++#endif + + bool needs_commit = false; + |