I reported this issue as a potential go1.10 regression in https://github.com/golang/go/issues/27506.
On Thursday, August 30, 2018 at 10:54:08 PM UTC-7, Julien Gricourt wrote: > > I'm trying to cross-compile a macOS binary in Docker with the cgo DNS > resolver enabled. My understanding is that this is doable without setting > up a full macOS SDK toolchain, and by using the package from the macOS > distribution. However, I'm unable to make it work. Somehow the compiler > always rebuilds the net package from sources and the netgo DNS resolver > becomes the de facto. > > Very short implementation I'm using for testing: > > package main > > import "net" > > func main() { > net.LookupIP("google.com") > } > > The build output shows that net.a is built from sources instead of picking > up /usr/local/go/pkg/darwin_amd64/net.a: > > $ ls -la /usr/local/go/pkg/darwin_amd64/net.a > -rw-r--r-- 1 root root 1241304 Jun 6 23:51 > /usr/local/go/pkg/darwin_amd64/net.a > > $ go clean -cache > > $ go build -x -o dns-test ./dns > WORK=/tmp/go-build098597944 > mkdir -p $WORK/b002/ > cat >$WORK/b002/importcfg << 'EOF' # internal > # import config > importmap golang_org/x/net/route=vendor/golang_org/x/net/route > packagefile context=/usr/local/go/pkg/darwin_amd64/context.a > packagefile errors=/usr/local/go/pkg/darwin_amd64/errors.a > packagefile > vendor/golang_org/x/net/route=/usr/local/go/pkg/darwin_amd64/vendor/golang_org/x/net/route.a > packagefile > internal/nettrace=/usr/local/go/pkg/darwin_amd64/internal/nettrace.a > packagefile internal/poll=/usr/local/go/pkg/darwin_amd64/internal/poll.a > packagefile > internal/singleflight=/usr/local/go/pkg/darwin_amd64/internal/singleflight.a > packagefile io=/usr/local/go/pkg/darwin_amd64/io.a > packagefile math/rand=/usr/local/go/pkg/darwin_amd64/math/rand.a > packagefile os=/usr/local/go/pkg/darwin_amd64/os.a > packagefile runtime=/usr/local/go/pkg/darwin_amd64/runtime.a > packagefile sort=/usr/local/go/pkg/darwin_amd64/sort.a > packagefile sync=/usr/local/go/pkg/darwin_amd64/sync.a > packagefile sync/atomic=/usr/local/go/pkg/darwin_amd64/sync/atomic.a > packagefile syscall=/usr/local/go/pkg/darwin_amd64/syscall.a > packagefile time=/usr/local/go/pkg/darwin_amd64/time.a > EOF > cd /usr/local/go/src/net > /usr/local/go/pkg/tool/linux_amd64/compile -o $WORK/b002/_pkg_.a -trimpath > $WORK/b002 -p net -std -buildid _tpOUnWlUki4sCfaeRYL/_tpOUnWlUki4sCfaeRYL > -goversion go1.10.3 -D "" -importcfg $WORK/b002/importcfg -pack -c=4 > ./addrselect.go ./cgo_stub.go ./conf.go ./dial.go ./dnsclient.go > ./dnsclient_unix.go ./dnsconfig_unix.go ./dnsmsg.go ./error_posix.go > ./fd_unix.go ./file.go ./file_unix.go ./hook.go ./hook_unix.go ./hosts.go > ./interface.go ./interface_bsd.go ./interface_darwin.go ./ip.go > ./iprawsock.go ./iprawsock_posix.go ./ipsock.go ./ipsock_posix.go > ./lookup.go ./lookup_unix.go ./mac.go ./net.go ./nss.go ./parse.go > ./pipe.go ./port.go ./port_unix.go ./rawconn.go ./sendfile_stub.go > ./sock_bsd.go ./sock_posix.go ./sockopt_bsd.go ./sockopt_posix.go > ./sockoptip_bsdvar.go ./sockoptip_posix.go ./sys_cloexec.go ./tcpsock.go > ./tcpsock_posix.go ./tcpsockopt_darwin.go ./tcpsockopt_posix.go > ./udpsock.go ./udpsock_posix.go ./unixsock.go ./unixsock_posix.go > ./writev_unix.go > /usr/local/go/pkg/tool/linux_amd64/buildid -w $WORK/b002/_pkg_.a # internal > cp $WORK/b002/_pkg_.a > /root/.cache/go-build/71/71d5652836fbf72132d2864101b08cfb7dc5657beaa4cd0804e7d893646a3d60-d > > # internal > mkdir -p $WORK/b001/ > cat >$WORK/b001/importcfg << 'EOF' # internal > # import config > packagefile net=$WORK/b002/_pkg_.a > packagefile runtime=/usr/local/go/pkg/darwin_amd64/runtime.a > EOF > cd /workspace/src/go.example.com/dns > /usr/local/go/pkg/tool/linux_amd64/compile -o $WORK/b001/_pkg_.a -trimpath > $WORK/b001 -p main -complete -buildid > t_6XipuZQQ3V_Rlugib8/t_6XipuZQQ3V_Rlugib8 -goversion go1.10.3 -D "" > -importcfg $WORK/b001/importcfg -pack -c=4 ./main.go > /usr/local/go/pkg/tool/linux_amd64/buildid -w $WORK/b001/_pkg_.a # internal > cp $WORK/b001/_pkg_.a > /root/.cache/go-build/35/35e87cb5622549aaa8a434a32334706a5b3862ff7d49ce9daf3b29ba88094f41-d > > # internal > cat >$WORK/b001/importcfg.link << 'EOF' # internal > packagefile go.example.com/dns=$WORK/b001/_pkg_.a > packagefile net=$WORK/b002/_pkg_.a > packagefile runtime=/usr/local/go/pkg/darwin_amd64/runtime.a > packagefile context=/usr/local/go/pkg/darwin_amd64/context.a > packagefile errors=/usr/local/go/pkg/darwin_amd64/errors.a > packagefile > vendor/golang_org/x/net/route=/usr/local/go/pkg/darwin_amd64/vendor/golang_org/x/net/route.a > packagefile > internal/nettrace=/usr/local/go/pkg/darwin_amd64/internal/nettrace.a > packagefile internal/poll=/usr/local/go/pkg/darwin_amd64/internal/poll.a > packagefile > internal/singleflight=/usr/local/go/pkg/darwin_amd64/internal/singleflight.a > packagefile io=/usr/local/go/pkg/darwin_amd64/io.a > packagefile math/rand=/usr/local/go/pkg/darwin_amd64/math/rand.a > packagefile os=/usr/local/go/pkg/darwin_amd64/os.a > packagefile sort=/usr/local/go/pkg/darwin_amd64/sort.a > packagefile sync=/usr/local/go/pkg/darwin_amd64/sync.a > packagefile sync/atomic=/usr/local/go/pkg/darwin_amd64/sync/atomic.a > packagefile syscall=/usr/local/go/pkg/darwin_amd64/syscall.a > packagefile time=/usr/local/go/pkg/darwin_amd64/time.a > packagefile > runtime/internal/atomic=/usr/local/go/pkg/darwin_amd64/runtime/internal/atomic.a > packagefile > runtime/internal/sys=/usr/local/go/pkg/darwin_amd64/runtime/internal/sys.a > packagefile fmt=/usr/local/go/pkg/darwin_amd64/fmt.a > packagefile reflect=/usr/local/go/pkg/darwin_amd64/reflect.a > packagefile math=/usr/local/go/pkg/darwin_amd64/math.a > packagefile > internal/testlog=/usr/local/go/pkg/darwin_amd64/internal/testlog.a > packagefile internal/race=/usr/local/go/pkg/darwin_amd64/internal/race.a > packagefile strconv=/usr/local/go/pkg/darwin_amd64/strconv.a > packagefile unicode/utf8=/usr/local/go/pkg/darwin_amd64/unicode/utf8.a > packagefile unicode=/usr/local/go/pkg/darwin_amd64/unicode.a > packagefile internal/cpu=/usr/local/go/pkg/darwin_amd64/internal/cpu.a > EOF > mkdir -p $WORK/b001/exe/ > cd . > /usr/local/go/pkg/tool/linux_amd64/link -o $WORK/b001/exe/a.out -importcfg > $WORK/b001/importcfg.link -buildmode=exe > -buildid=6-oHCWY8Z57CMNCfUB-n/t_6XipuZQQ3V_Rlugib8/9dtyWN9RKHU5XwbNrmpr/6-oHCWY8Z57CMNCfUB-n > > -extld=gcc $WORK/b001/_pkg_.a > /usr/local/go/pkg/tool/linux_amd64/buildid -w $WORK/b001/exe/a.out # > internal > cp $WORK/b001/exe/a.out dns-test > rm -r $WORK/b001/ > > This didn't work as the netgo DNS resolver is the one used: > > $ otool -L ./dns-test > ./dns-test: > > $ GODEBUG=netdns=2 ./dns-test > go package net: built with netgo build tag; using Go's DNS resolver > go package net: hostLookupOrder(google.com) = files,dns > > Any ideas what I am doing wrong? > > Thanks, > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.