Plugin Support + Ported LibOMV via GH Nuget#172
Open
mdickson wants to merge 35 commits into
Open
Conversation
…ependent on the scriptengine so dlls get published together.
…ent robust startup, and config/docs updates - add IPluginDiscovery backends/capabilities and strict env override precedence - migrate and instrument startup/region/wind/robust plugin discovery call sites - make robust plugin command wiring optional/best-effort and add startup toggle - update sample/default server configs plus BUILDING and migration plan docs
- replace transitional reflection scanner with McMaster.NETCore.Plugins-backed discovery - route reflection/dotnet backend selectors through DotNetCorePlugins implementation - add McMaster.NETCore.Plugins dependency in OpenSim.Framework - update migration plan status for real backend implementation
- Replace Ionic.Zlib.Core NuGet dependency with .NET built-in System.IO.Compression - Update archiver compression: GZipStream now from System.IO.Compression - Update materials compression: ZlibStream replaced with DeflateStream - Remove legacy zlib assembly binding resolver from plugin discovery - Clean up Ionic.Zlib references from skipped assembly list - This eliminates the zlib.net 1.0.4.0 binding version mismatch errors Removes external compression dependency and simplifies plugin loading by eliminating the need for zlib.net legacy assembly binding resolution.
Add Step 1.1 completion notes describing the elimination of the Ionic.Zlib.Core dependency and legacy zlib.net assembly binding resolution from the plugin discovery system.
Implement core infrastructure for plugin discovery without XML manifests: Phase 2.1: Config-Based Plugin Registry - Create PluginRegistry.cs with support for: * Programmatic plugin registration * INI configuration loading * JSON configuration loading * Plugin descriptors with metadata (id, name, version, enabled, priority) * Query and merge operations Phase 2.2: DotNetCorePluginLoader<T> - Create DotNetCorePluginLoader<T> with: * Discovery backend abstraction * Registry-based loading (LoadFromRegistry) * Discovery-based loading (Load) * Proper initialization phase separation * Comprehensive error handling and logging - Create factory methods for easy instantiation Phase 2.3: Phase 2 Integration Helpers - Create PluginLoaderHelper.cs with: * LoadPluginsUsingRegistry: Registry-only approach * LoadPluginsUsingDiscovery: Discovery-only approach * LoadPluginsHybrid: Registry-first with discovery fallback * DebugPluginLoader: Verbose logging for migration diagnostics Both backends can coexist - use OPENSIM_PLUGIN_DISCOVERY env var or config to switch between monoaddins (default) and reflection (new).
Add detailed notes about Phase 2.1/2.2/2.3 implementation: - PluginRegistry for config-based plugin management - DotNetCorePluginLoader for discovery-based or registry-based loading - PluginLoaderHelper for smooth integration during migration - Design enables coexistence with existing Mono.Addins during transition
…migration This commit completes the Mono.Addins plugin system migration by removing the final two orphaned manifest files that contained only extension-point definitions (no plugin extension entries): - Removed Source/OpenSim.Data/Resources/OpenSim.Data.addin.xml * Defined extension points for data services * No longer needed as XML was never processed at runtime - Removed Source/OpenSim.Server.RegionServer/Resources/OpenSim.Server.RegionServer.addin.xml * Defined primary extension points for all plugin types * Runtime uses code-based discovery and registration Test updates: - Removed allowlist entries for deleted manifests from migration guard tests - Migration test suite still passes: 40/40 Validation gates all pass: - Normal Debug build: 0 errors - Reflection backend build: 0 errors - Plugin migration tests: 40/40 passing The plugin migration from Mono.Addins to DotNetCorePlugins is now fully complete. The codebase contains no XML manifest dependencies and uses pure code-based plugin registration and discovery.
* Temporary fixup for BulletSim and ubODE loading (#165) The native libaries were not loading correctly for these modules. Adding the config files is a temporary fix so that the import resolver in the OpenMetaverse hack can run. * SkiaSharp Updates, Step 1 (#167) * Temporary fixup for BulletSim and ubODE loading The native libaries were not loading correctly for these modules. Adding the config files is a temporary fix so that the import resolver in the OpenMetaverse hack can run. * Update for Skia in MapImageService.cs This module is for adding and removing map tiles at the request of regions, and for getting map tiles at the request of viewers. It also creates zoom tiles for the world map that the viewer requests. It was not creating zoom tiles at all, and had issues with thread isolation and synchronization. I corrected the thread issues, and replaced some unnecessary bit-banging of raw pixel data with proper compositing. * Adding AppVeyor / Updating GridInfo (#158) * Adding AppVeyor back into Develop * Updating GridInfo with all known values until 2026 * Add new plan for a spike to totally excise system drawing from even dependent libs like Libopenmetaverse * Renamed OpenMetaverseTypes to OpenMetaverse.Types for consistency. This will also allow us to catch any old dependencies from the library replacement with our own version. * libOMV is coming from github nuget now. Remove the old direct references for PackageReference's instead. --------- Co-authored-by: IainMcCracken <iain.mccracken@gmail.com> Co-authored-by: Fly Man <fly.man.opensim@gmail.com> Co-authored-by: Mike Dickson <mdickson.dickson@utopiaskye.com>
…s... updated LibOMV to 1.2.13
…ed with https or delegate to an ingress controller. - Removed Mono.Security from above change - Removed unreferenced usings throughout the codebase. Trying to lean down files to just needed dependencies. - Switched to newer namespace syntax supported by current compiler. - We're getting LIBOMV from github nuget now. Still need to address CI compiles via secrets.
…ng/loading dlls for plugins.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add dotnet core compatible plugin support and move the LibOMV code to come from a local ported build in GH NuGet. To Access the NUGET portion you will need to create a classic PAT token with read:package enabled. See nuget.conf for more info.