From f3051e66c6714c0e0289ee87b45ed419cb813ef6 Mon Sep 17 00:00:00 2001 From: Andrew Kostka Date: Tue, 23 Jan 2024 12:28:26 +0000 Subject: [PATCH 1/2] Avoid loading extensions when building localization cache --- .../wbstack/src/Settings/LocalSettings.php | 106 ++++++++++++++++++ dist/wbstack/src/Settings/LocalSettings.php | 106 ++++++++++++++++++ 2 files changed, 212 insertions(+) diff --git a/dist-persist/wbstack/src/Settings/LocalSettings.php b/dist-persist/wbstack/src/Settings/LocalSettings.php index 2a199e60d..22493bd01 100644 --- a/dist-persist/wbstack/src/Settings/LocalSettings.php +++ b/dist-persist/wbstack/src/Settings/LocalSettings.php @@ -735,4 +735,110 @@ function getElasticClusterConfig( string $prefix ) { } } +if ($wwIsLocalisationRebuild) { + $extensions = []; + + $loadSkin = function ($name) use (&$extensions, $wgBaseDirectory) { + array_push($extensions, "$wgBaseDirectory/skins/" . $name . "/skin.json"); + }; + $loadExtension = function ($name) use (&$extensions, $wgBaseDirectory) { + array_push($extensions, "$wgBaseDirectory/extensions/" . $name . "/extension.json"); + }; + $loadPath = function ($path) use (&$extensions) { + array_push($extensions, $path); + }; + + $loadSkin( 'Vector' ); + $loadSkin( 'Timeless' ); + $loadSkin( 'Modern' ); + $loadSkin( 'MinervaNeue' ); + $loadExtension( 'SyntaxHighlight_GeSHi' ); + $loadExtension( 'RevisionSlider' ); + $loadExtension( 'TorBlock' ); + $loadExtension( 'Nuke' ); + $loadExtension( 'EntitySchema' ); + $loadExtension( 'UniversalLanguageSelector' ); + $loadExtension( 'cldr' ); + #$loadExtension( 'Gadgets' ); + $loadExtension( 'OAuth' ); + $loadExtension( 'JsonConfig' ); + $loadExtension( 'Math' ); + $loadExtension( 'Kartographer' ); + $loadExtension( 'PageImages' ); + $loadExtension( 'TextExtracts' ); + $loadExtension( 'Scribunto' ); + $loadExtension( 'Cite' ); + $loadExtension( 'TemplateSandbox' ); + $loadExtension( 'WikiEditor' ); + $loadExtension( 'CodeEditor' ); + $loadExtension( 'CodeMirror' ); + $loadExtension( 'SecureLinkFixer' ); + $loadExtension( 'Echo' ); + $loadExtension( 'Thanks' ); + $loadExtension( 'Graph' ); + $loadExtension( 'Poem' ); + $loadExtension( 'TemplateData' ); + $loadExtension( 'AdvancedSearch' ); + $loadExtension( 'ParserFunctions' ); + $loadExtension( 'EmbedVideo' ); + $loadExtension( 'DeleteBatch' ); + $loadExtension( 'MultimediaViewer' ); + $loadExtension( 'WikiHiero' ); + $loadExtension( 'ConfirmAccount' ); + $loadExtension( 'InviteSignup' ); + $loadExtension( 'WikibaseInWikitext' ); + $loadExtension( 'WikibaseEdtf' ); + $loadExtension( 'ThatSrc' ); + $loadExtension( 'TwoColConflict' ); + $loadExtension( 'StopForumSpam' ); + $loadExtension( 'SpamBlacklist' ); + $loadExtension( 'ConfirmEdit' ); + $loadPath( "$wgBaseDirectory/extensions/ConfirmEdit/QuestyCaptcha/extension.json" ); + $loadPath( "$wgBaseDirectory/extensions/ConfirmEdit/ReCaptchaNoCaptcha/extension.json" ); + $loadExtension( 'Mailgun' ); + $loadExtension( 'MobileFrontend' ); + $loadExtension( 'Score' ); + $loadPath( "$wgBaseDirectory/extensions/Wikibase/extension-repo.json" ); + $loadPath( "$wgBaseDirectory/extensions/Wikibase/extension-client.json" ); + $loadExtension( 'WikibaseLexeme' ); + $loadExtension( 'Auth_remoteuser' ); + $loadExtension( 'WikibaseManifest' ); + $loadExtension( 'Elastica' ); + $loadExtension( 'CirrusSearch' ); + $loadExtension( 'WikibaseCirrusSearch' ); + $loadExtension( 'WikibaseLexemeCirrusSearch' ); + + $extensionMessagesFiles = []; + $messagesDirs = []; + + foreach ($extensions as $extension) { + $settings = json_decode(file_get_contents($extension), true); + $path = implode('/', array_slice(explode('/', $extension), 0, -1)); + + $addPath = function ($file) use ($path) { + return $path . '/' . $file; + }; + + if (array_key_exists('ExtensionMessagesFiles', $settings)) { + foreach ($settings['ExtensionMessagesFiles'] as $key => $file) { + $extensionMessagesFiles[$key] = $addPath($file); + } + } + + if (array_key_exists('MessagesDirs', $settings)) { + foreach ($settings['MessagesDirs'] as $extension => $dirs) { + if (is_array($dirs)) { + $messagesDirs[$extension] = $dirs; + } else { + $messagesDirs[$extension] = array($dirs); + } + $messagesDirs[$extension] = array_map($addPath, $messagesDirs[$extension]); + } + } + } + + $wgLocalisationCacheConf['ExtensionMessagesFiles'] = $extensionMessagesFiles; + $wgLocalisationCacheConf['MessagesDirs'] = $messagesDirs; +} + require_once __DIR__ . '/Hooks.php'; diff --git a/dist/wbstack/src/Settings/LocalSettings.php b/dist/wbstack/src/Settings/LocalSettings.php index 2a199e60d..22493bd01 100644 --- a/dist/wbstack/src/Settings/LocalSettings.php +++ b/dist/wbstack/src/Settings/LocalSettings.php @@ -735,4 +735,110 @@ function getElasticClusterConfig( string $prefix ) { } } +if ($wwIsLocalisationRebuild) { + $extensions = []; + + $loadSkin = function ($name) use (&$extensions, $wgBaseDirectory) { + array_push($extensions, "$wgBaseDirectory/skins/" . $name . "/skin.json"); + }; + $loadExtension = function ($name) use (&$extensions, $wgBaseDirectory) { + array_push($extensions, "$wgBaseDirectory/extensions/" . $name . "/extension.json"); + }; + $loadPath = function ($path) use (&$extensions) { + array_push($extensions, $path); + }; + + $loadSkin( 'Vector' ); + $loadSkin( 'Timeless' ); + $loadSkin( 'Modern' ); + $loadSkin( 'MinervaNeue' ); + $loadExtension( 'SyntaxHighlight_GeSHi' ); + $loadExtension( 'RevisionSlider' ); + $loadExtension( 'TorBlock' ); + $loadExtension( 'Nuke' ); + $loadExtension( 'EntitySchema' ); + $loadExtension( 'UniversalLanguageSelector' ); + $loadExtension( 'cldr' ); + #$loadExtension( 'Gadgets' ); + $loadExtension( 'OAuth' ); + $loadExtension( 'JsonConfig' ); + $loadExtension( 'Math' ); + $loadExtension( 'Kartographer' ); + $loadExtension( 'PageImages' ); + $loadExtension( 'TextExtracts' ); + $loadExtension( 'Scribunto' ); + $loadExtension( 'Cite' ); + $loadExtension( 'TemplateSandbox' ); + $loadExtension( 'WikiEditor' ); + $loadExtension( 'CodeEditor' ); + $loadExtension( 'CodeMirror' ); + $loadExtension( 'SecureLinkFixer' ); + $loadExtension( 'Echo' ); + $loadExtension( 'Thanks' ); + $loadExtension( 'Graph' ); + $loadExtension( 'Poem' ); + $loadExtension( 'TemplateData' ); + $loadExtension( 'AdvancedSearch' ); + $loadExtension( 'ParserFunctions' ); + $loadExtension( 'EmbedVideo' ); + $loadExtension( 'DeleteBatch' ); + $loadExtension( 'MultimediaViewer' ); + $loadExtension( 'WikiHiero' ); + $loadExtension( 'ConfirmAccount' ); + $loadExtension( 'InviteSignup' ); + $loadExtension( 'WikibaseInWikitext' ); + $loadExtension( 'WikibaseEdtf' ); + $loadExtension( 'ThatSrc' ); + $loadExtension( 'TwoColConflict' ); + $loadExtension( 'StopForumSpam' ); + $loadExtension( 'SpamBlacklist' ); + $loadExtension( 'ConfirmEdit' ); + $loadPath( "$wgBaseDirectory/extensions/ConfirmEdit/QuestyCaptcha/extension.json" ); + $loadPath( "$wgBaseDirectory/extensions/ConfirmEdit/ReCaptchaNoCaptcha/extension.json" ); + $loadExtension( 'Mailgun' ); + $loadExtension( 'MobileFrontend' ); + $loadExtension( 'Score' ); + $loadPath( "$wgBaseDirectory/extensions/Wikibase/extension-repo.json" ); + $loadPath( "$wgBaseDirectory/extensions/Wikibase/extension-client.json" ); + $loadExtension( 'WikibaseLexeme' ); + $loadExtension( 'Auth_remoteuser' ); + $loadExtension( 'WikibaseManifest' ); + $loadExtension( 'Elastica' ); + $loadExtension( 'CirrusSearch' ); + $loadExtension( 'WikibaseCirrusSearch' ); + $loadExtension( 'WikibaseLexemeCirrusSearch' ); + + $extensionMessagesFiles = []; + $messagesDirs = []; + + foreach ($extensions as $extension) { + $settings = json_decode(file_get_contents($extension), true); + $path = implode('/', array_slice(explode('/', $extension), 0, -1)); + + $addPath = function ($file) use ($path) { + return $path . '/' . $file; + }; + + if (array_key_exists('ExtensionMessagesFiles', $settings)) { + foreach ($settings['ExtensionMessagesFiles'] as $key => $file) { + $extensionMessagesFiles[$key] = $addPath($file); + } + } + + if (array_key_exists('MessagesDirs', $settings)) { + foreach ($settings['MessagesDirs'] as $extension => $dirs) { + if (is_array($dirs)) { + $messagesDirs[$extension] = $dirs; + } else { + $messagesDirs[$extension] = array($dirs); + } + $messagesDirs[$extension] = array_map($addPath, $messagesDirs[$extension]); + } + } + } + + $wgLocalisationCacheConf['ExtensionMessagesFiles'] = $extensionMessagesFiles; + $wgLocalisationCacheConf['MessagesDirs'] = $messagesDirs; +} + require_once __DIR__ . '/Hooks.php'; From 52ab0ddd672a1e8890371d5c637125fba9b508eb Mon Sep 17 00:00:00 2001 From: Andrew Kostka Date: Tue, 23 Jan 2024 12:43:37 +0000 Subject: [PATCH 2/2] Re-enable Gadgets extension --- dist-persist/wbstack/src/Settings/LocalSettings.php | 5 ++--- dist/wbstack/src/Settings/LocalSettings.php | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/dist-persist/wbstack/src/Settings/LocalSettings.php b/dist-persist/wbstack/src/Settings/LocalSettings.php index 22493bd01..7d7200c59 100644 --- a/dist-persist/wbstack/src/Settings/LocalSettings.php +++ b/dist-persist/wbstack/src/Settings/LocalSettings.php @@ -330,8 +330,7 @@ wfLoadExtension( 'EntitySchema' ); wfLoadExtension( 'UniversalLanguageSelector' ); wfLoadExtension( 'cldr' ); -# TODO load again once there is a fix for localization cache reload without DBhttps://phabricator.wikimedia.org/T237148 -#wfLoadExtension( 'Gadgets' ); +wfLoadExtension( 'Gadgets' ); wfLoadExtension( 'OAuth' ); wfLoadExtension( 'JsonConfig' ); wfLoadExtension( 'Math' ); @@ -759,7 +758,7 @@ function getElasticClusterConfig( string $prefix ) { $loadExtension( 'EntitySchema' ); $loadExtension( 'UniversalLanguageSelector' ); $loadExtension( 'cldr' ); - #$loadExtension( 'Gadgets' ); + $loadExtension( 'Gadgets' ); $loadExtension( 'OAuth' ); $loadExtension( 'JsonConfig' ); $loadExtension( 'Math' ); diff --git a/dist/wbstack/src/Settings/LocalSettings.php b/dist/wbstack/src/Settings/LocalSettings.php index 22493bd01..7d7200c59 100644 --- a/dist/wbstack/src/Settings/LocalSettings.php +++ b/dist/wbstack/src/Settings/LocalSettings.php @@ -330,8 +330,7 @@ wfLoadExtension( 'EntitySchema' ); wfLoadExtension( 'UniversalLanguageSelector' ); wfLoadExtension( 'cldr' ); -# TODO load again once there is a fix for localization cache reload without DBhttps://phabricator.wikimedia.org/T237148 -#wfLoadExtension( 'Gadgets' ); +wfLoadExtension( 'Gadgets' ); wfLoadExtension( 'OAuth' ); wfLoadExtension( 'JsonConfig' ); wfLoadExtension( 'Math' ); @@ -759,7 +758,7 @@ function getElasticClusterConfig( string $prefix ) { $loadExtension( 'EntitySchema' ); $loadExtension( 'UniversalLanguageSelector' ); $loadExtension( 'cldr' ); - #$loadExtension( 'Gadgets' ); + $loadExtension( 'Gadgets' ); $loadExtension( 'OAuth' ); $loadExtension( 'JsonConfig' ); $loadExtension( 'Math' );