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.

Reply via email to