Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

can not import go rod #124

Closed
ghost opened this issue Apr 29, 2022 · 4 comments
Closed

can not import go rod #124

ghost opened this issue Apr 29, 2022 · 4 comments

Comments

@ghost
Copy link

ghost commented Apr 29, 2022

can not import go rod https://github.com/go-rod/rod

@cosmos72
Copy link
Owner

cosmos72 commented May 8, 2022

On Linux it works for me:

// Welcome to gomacro. Type :help for help, :copy for copyright and license.
// This is free software with ABSOLUTELY NO WARRANTY.
gomacro> import "github.com/go-rod/rod"
// debug: running "go get github.com/go-rod/rod" ...
go: downloading github.com/go-rod/rod v0.106.5
go: downloading github.com/ysmood/goob v0.4.0
go: downloading github.com/ysmood/gson v0.7.1
go: downloading github.com/ysmood/leakless v0.7.0
go: added github.com/go-rod/rod v0.106.5
go: added github.com/ysmood/goob v0.4.0
go: added github.com/ysmood/gson v0.7.1
go: added github.com/ysmood/leakless v0.7.0
// debug: running "go mod tidy" ...
go: downloading github.com/ysmood/gotrace v0.6.0
go: downloading github.com/ysmood/got v0.28.2
// debug: compiling "/home/max/go/src/gomacro.imports/github.com/go-rod/rod/rod.go" ...
gomacro> rod
{rod "github.com/go-rod/rod", 17 binds, 35 types}       // *fast.Import

Which errors are you getting (and on what OS and Go version) ?

@ghost
Copy link
Author

ghost commented May 19, 2022

how about import steath and "github.com/go-rod/rod/lib/launcher"

@cosmos72
Copy link
Owner

cosmos72 commented May 19, 2022

Importing either one works, but they cannot be both imported together in gomacro:

// Welcome to gomacro. Type :help for help, :copy for copyright and license.
// This is free software with ABSOLUTELY NO WARRANTY.
gomacro> import "github.com/go-rod/stealth"
// debug: running "go get github.com/go-rod/stealth" ...
go: downloading github.com/go-rod/stealth v0.4.5
go: downloading github.com/go-rod/rod v0.102.1
go: downloading github.com/ysmood/goob v0.3.1
go: downloading github.com/ysmood/gson v0.6.4
go: added github.com/go-rod/rod v0.102.1
go: added github.com/go-rod/stealth v0.4.5
go: added github.com/ysmood/goob v0.3.1
go: added github.com/ysmood/gson v0.6.4
go: added github.com/ysmood/leakless v0.7.0
// debug: running "go mod tidy" ...
go: downloading github.com/ysmood/got v0.15.1
go: downloading github.com/ysmood/gotrace v0.2.2
// debug: compiling "/home/max/go/src/gomacro.imports/github.com/go-rod/stealth/stealth.go" ...
gomacro> stealth
{stealth "github.com/go-rod/stealth", 4 binds, 0 types} // *fast.Import

gomacro> import "github.com/go-rod/rod/lib/launcher"
// debug: running "go get github.com/go-rod/rod/lib/launcher" ...
go: downloading github.com/go-rod/rod v0.106.8
go: added github.com/go-rod/rod v0.106.8
go: added github.com/ysmood/gson v0.7.1
go: added github.com/ysmood/leakless v0.7.0
// debug: running "go mod tidy" ...
go: downloading github.com/ysmood/got v0.29.1
// debug: compiling "/home/max/go/src/gomacro.imports/github.com/go-rod/rod/lib/launcher/launcher.go" ...
error loading plugin "/home/max/go/src/gomacro.imports/github.com/go-rod/rod/lib/launcher/launcher.so": plugin.Open("/home/max/go/src/gomacro.imports/github.com/go-rod/rod/lib/launcher/launcher"): plugin was built with a different version of package github.com/ysmood/gson

The reason can be deduced by the debug messages:

  • github.com/go-rod/stealth depends on github.com/ysmood/gson v0.6.4
  • github.com/go-rod/rod/lib/launcher depends on github.com/ysmood/gson v0.7.1

and gomacro is not smart enough to resolve such version conflict.

@cosmos72
Copy link
Owner

cosmos72 commented May 22, 2022

I have improved the behavior when importing multiple packages that depend on different versions of the same package - as for your github.com/go-rod/stealth and github.com/go-rod/rod/lib/launcher above:

Starting from commit f985fc7, if you import multiple packages in a single declaration - as for example

import (
    "github.com/go-rod/stealth"
    "github.com/go-rod/rod/lib/launcher"
)

then a single plugin will be prepared, compiled and loaded, using go mod tidy to resolve any dependency version conflict.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant