mirror of
https://github.com/ipfs/kubo.git
synced 2026-02-21 18:37:45 +08:00
Go plugins are supported on FreeBSD, but build tags in `plugin/loader/load_*.go` enable IPFS plugins only on Linux and Darwin.
34 lines
545 B
Go
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
|
|
}
|