go-python / gopy

gopy generates a CPython extension module from a go package.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

gopy doesn't ignore internal package

Sanix-Darker opened this issue · comments

Hi there, first of all, am a big fan of this project, i was working on creating go bindings to python recently(https://github.com/Sanix-Darker/go_bind) and in a more real life project, i wanted to bind the the authzed-go project but i found myself on some issues...

A little similar to #259 ,
Am trying to pkg, but i get :

--- building package ---
gopy pkg -author=dk -output=py_build -vm=python3 -symbols=true -name=authz_go_for_py -exclude=google.golang.org/grpc/internal/serviceconfig -dynamic-link=true -url=github.com/sanix-darker/authzed-go -version=0.0.1 github.com/sanix-darker/authzed-go/proto/authzed/api/v1/
goimports -w authz_go_for_py.go
go build -mod=mod -buildmode=c-shared -o authz_go_for_py_go.so .
cmd had error: exit status 1  output:
package github.com/sanix-darker/authzed-go/py_build/authz_go_for_py
        authz_go_for_py.go:80:2: use of internal package google.golang.org/grpc/internal/serviceconfig not allowed

Even tho i excluded the internal... it's still telling me it's not allowed...

Am on go1.20.

any idea on how to ignore this please ?

Thanks 🙏🏽

I suspect the problem is that it is only looking for immediate subdir names. The relevant code is in cmd_pkg.go:165:

	//	now try all subdirs
	dir, _ := filepath.Split(gofiles[0])
	drs := Dirs(dir)
	for _, dr := range drs {
		_, ex := exmap[dr]
		if ex || dr[0] == '.' || dr[0] == '_' {
			continue
		}
		sp := filepath.Join(path, dr)
		buildPkgRecurse(odir, sp, rootpath, exmap, buildTags)
	}

I'm pushing a change that automatically excludes internal packages (along with the existing exclusion of _ prefix dirs) -- but you can just add internal to excludes as a workaround for now and it should work.

Thanks for taking care of this 🙏🏽