diff options
Diffstat (limited to 'plugincheck/check.go')
| -rw-r--r-- | plugincheck/check.go | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/plugincheck/check.go b/plugincheck/check.go deleted file mode 100644 index 8d3b683..0000000 --- a/plugincheck/check.go +++ /dev/null @@ -1,47 +0,0 @@ -package plugincheck - -import ( - "debug/buildinfo" - "errors" - "fmt" - "runtime/debug" -) - -// CheckPluginCompatibility verifies that the plugin .so file was built -// with the same Go version and dependency versions as the host binary. -func CheckPluginCompatibility(pluginPath string) error { - pluginInfo, err := buildinfo.ReadFile(pluginPath) - if err != nil { - return fmt.Errorf("failed to read plugin build info: %w", err) - } - - mainInfo, ok := debug.ReadBuildInfo() - if !ok { - return errors.New("failed to read main binary build info") - } - - if pluginInfo.GoVersion != mainInfo.GoVersion { - return fmt.Errorf("Go version mismatch: plugin=%s, host=%s", - pluginInfo.GoVersion, mainInfo.GoVersion) - } - - // Create a map of main binary dependencies for quick lookup - hostDeps := make(map[string]string) - for _, dep := range mainInfo.Deps { - hostDeps[dep.Path] = dep.Version - } - - // Compare plugin dependencies - for _, dep := range pluginInfo.Deps { - hostVer, ok := hostDeps[dep.Path] - if !ok { - return fmt.Errorf("dependency %s not found in host binary", dep.Path) - } - if dep.Version != hostVer { - return fmt.Errorf("dependency version mismatch for %s: plugin=%s, host=%s", - dep.Path, dep.Version, hostVer) - } - } - - return nil -} |
