From 8fd821c88b156eff6f02cb143b03290cf62a6d4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sat, 10 Sep 2022 17:22:19 +0200 Subject: [PATCH] *converter: make --plugin-dir accept the actual root plugin directory. For some reason, it was adding also the magnum / magnum-d directory, which isn't really useful, especially in cases where the directory is not at all or it's desired to pick a debug plugin from a release executable and vice versa. Also the distancefieldconverter was still attempting to join with an absolute path -- somehow 7fb63a9434b72c1e9da74eeb331676ebbcae0430 missed this one. I really need to write regression tests for all this, sigh. --- src/Magnum/SceneTools/sceneconverter.cpp | 4 ++-- src/Magnum/ShaderTools/shaderconverter.cpp | 2 +- src/Magnum/Text/fontconverter.cpp | 7 ++++--- src/Magnum/TextureTools/distancefieldconverter.cpp | 5 +++-- src/Magnum/Trade/imageconverter.cpp | 5 +++-- 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/Magnum/SceneTools/sceneconverter.cpp b/src/Magnum/SceneTools/sceneconverter.cpp index b7c015fc0..1f7867943 100644 --- a/src/Magnum/SceneTools/sceneconverter.cpp +++ b/src/Magnum/SceneTools/sceneconverter.cpp @@ -337,12 +337,12 @@ is specified as well, the IDs reference attributes of the first mesh.)") /* Importer manager */ PluginManager::Manager importerManager{ args.value("plugin-dir").empty() ? Containers::String{} : - Utility::Path::join(args.value("plugin-dir"), Trade::AbstractImporter::pluginSearchPaths().back())}; + Utility::Path::join(args.value("plugin-dir"), Utility::Path::split(Trade::AbstractImporter::pluginSearchPaths().back()).second())}; /* Scene converter manager */ PluginManager::Manager converterManager{ args.value("plugin-dir").empty() ? Containers::String{} : - Utility::Path::join(args.value("plugin-dir"), Trade::AbstractSceneConverter::pluginSearchPaths().back())}; + Utility::Path::join(args.value("plugin-dir"), Utility::Path::split(Trade::AbstractSceneConverter::pluginSearchPaths().back()).second())}; Containers::Pointer importer = importerManager.loadAndInstantiate(args.value("importer")); if(!importer) { diff --git a/src/Magnum/ShaderTools/shaderconverter.cpp b/src/Magnum/ShaderTools/shaderconverter.cpp index 6c4b1256a..b35d3552a 100644 --- a/src/Magnum/ShaderTools/shaderconverter.cpp +++ b/src/Magnum/ShaderTools/shaderconverter.cpp @@ -359,7 +359,7 @@ see documentation of a particular converter for more information.)") /* Set up a converter manager */ PluginManager::Manager converterManager{ args.value("plugin-dir").empty() ? Containers::String{} : - Utility::Path::join(args.value("plugin-dir"), ShaderTools::AbstractConverter::pluginSearchPaths().back())}; + Utility::Path::join(args.value("plugin-dir"), Utility::Path::split(ShaderTools::AbstractConverter::pluginSearchPaths().back()).second())}; /* Data passed from one converter to another in case there's more than one */ Containers::Array data; diff --git a/src/Magnum/Text/fontconverter.cpp b/src/Magnum/Text/fontconverter.cpp index ab27ed2ba..419fa21fa 100644 --- a/src/Magnum/Text/fontconverter.cpp +++ b/src/Magnum/Text/fontconverter.cpp @@ -23,6 +23,7 @@ DEALINGS IN THE SOFTWARE. */ +#include #include #include #include @@ -158,12 +159,12 @@ int FontConverter::exec() { /* Font converter dependencies */ PluginManager::Manager imageConverterManager{ args.value("plugin-dir").empty() ? Containers::String{} : - Utility::Path::join(args.value("plugin-dir"), Trade::AbstractImageConverter::pluginSearchPaths().back())}; + Utility::Path::join(args.value("plugin-dir"), Utility::Path::split(Trade::AbstractImageConverter::pluginSearchPaths().back()).second())}; /* Load font */ PluginManager::Manager fontManager{ args.value("plugin-dir").empty() ? Containers::String{} : - Utility::Path::join(args.value("plugin-dir"), Text::AbstractFont::pluginSearchPaths().back())}; + Utility::Path::join(args.value("plugin-dir"), Utility::Path::split(Text::AbstractFont::pluginSearchPaths().back()).second())}; Containers::Pointer font = fontManager.loadAndInstantiate(args.value("font")); if(!font) return 1; @@ -171,7 +172,7 @@ int FontConverter::exec() { (MagnumFontConverter needs TgaImageConverter, for example) */ PluginManager::Manager converterManager{ args.value("plugin-dir").empty() ? Containers::String{} : - Utility::Path::join(args.value("plugin-dir"), Text::AbstractFontConverter::pluginSearchPaths().back())}; + Utility::Path::join(args.value("plugin-dir"), Utility::Path::split(Text::AbstractFontConverter::pluginSearchPaths().back()).second())}; converterManager.registerExternalManager(imageConverterManager); /* Load font converter */ diff --git a/src/Magnum/TextureTools/distancefieldconverter.cpp b/src/Magnum/TextureTools/distancefieldconverter.cpp index 8c3d3a181..222c0fc4f 100644 --- a/src/Magnum/TextureTools/distancefieldconverter.cpp +++ b/src/Magnum/TextureTools/distancefieldconverter.cpp @@ -24,6 +24,7 @@ */ #include +#include #include #include /** @todo remove once Arguments is std::string-free */ #include @@ -156,14 +157,14 @@ int DistanceFieldConverter::exec() { /* Load importer plugin */ PluginManager::Manager importerManager{ args.value("plugin-dir").empty() ? Containers::String{} : - Utility::Path::join(args.value("plugin-dir"), Trade::AbstractImporter::pluginSearchPaths()[0])}; + Utility::Path::join(args.value("plugin-dir"), Utility::Path::split(Trade::AbstractImporter::pluginSearchPaths().back()).second())}; Containers::Pointer importer = importerManager.loadAndInstantiate(args.value("importer")); if(!importer) return 1; /* Load converter plugin */ PluginManager::Manager converterManager{ args.value("plugin-dir").empty() ? Containers::String{} : - Utility::Path::join(args.value("plugin-dir"), Trade::AbstractImageConverter::pluginSearchPaths()[0])}; + Utility::Path::join(args.value("plugin-dir"), Utility::Path::split(Trade::AbstractImageConverter::pluginSearchPaths().back()).second())}; Containers::Pointer converter = converterManager.loadAndInstantiate(args.value("converter")); if(!converter) return 2; diff --git a/src/Magnum/Trade/imageconverter.cpp b/src/Magnum/Trade/imageconverter.cpp index 95657e8ee..440238313 100644 --- a/src/Magnum/Trade/imageconverter.cpp +++ b/src/Magnum/Trade/imageconverter.cpp @@ -25,6 +25,7 @@ #include #include +#include #include #include #include @@ -447,7 +448,7 @@ no -C / --converter is specified, AnyImageConverter is used.)") PluginManager::Manager importerManager{ args.value("plugin-dir").empty() ? Containers::String{} : - Utility::Path::join(args.value("plugin-dir"), Trade::AbstractImporter::pluginSearchPaths().back())}; + Utility::Path::join(args.value("plugin-dir"), Utility::Path::split(Trade::AbstractImporter::pluginSearchPaths().back()).second())}; const Int dimensions = args.value("dimensions"); /** @todo make them array options as well? */ @@ -921,7 +922,7 @@ no -C / --converter is specified, AnyImageConverter is used.)") PluginManager::Manager converterManager{ args.value("plugin-dir").empty() ? Containers::String{} : - Utility::Path::join(args.value("plugin-dir"), Trade::AbstractImageConverter::pluginSearchPaths().back())}; + Utility::Path::join(args.value("plugin-dir"), Utility::Path::split(Trade::AbstractImageConverter::pluginSearchPaths().back()).second())}; /* Assume there's always one passed --converter option less, and the last is implicitly AnyImageConverter. All converters except the last one are