kubo/plugin/loader/load_unix.go
Tomasz Zdybał 6b83bcd60e
Add missing plugin support on FreeBSD
Go plugins are supported on FreeBSD, but build tags in
`plugin/loader/load_*.go` enable IPFS plugins only on Linux and Darwin.
2020-10-12 00:54:23 +02:00

34 lines
545 B
Go

// +build cgo,!noplugin
// +build linux darwin freebsd
package loader
import (
"errors"
"plugin"
iplugin "github.com/ipfs/go-ipfs/plugin"
)
func init() {
loadPluginFunc = unixLoadPlugin
}
func unixLoadPlugin(fi string) ([]iplugin.Plugin, error) {
pl, err := plugin.Open(fi)
if err != nil {
return nil, err
}
pls, err := pl.Lookup("Plugins")
if err != nil {
return nil, err
}
typePls, ok := pls.(*[]iplugin.Plugin)
if !ok {
return nil, errors.New("filed 'Plugins' didn't contain correct type")
}
return *typePls, nil
}