Opened 3 years ago
Last modified 7 months ago
#64822 assigned defect
wireguard-go @0.0.20220117: Undefined symbols _clock_gettime _getentropy
Reported by: | juhnhooo | Owned by: | cardi (calvin ardi) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.7.2 |
Keywords: | yosemite | Cc: | juhnhooo, ci42, herbygillot (Herby Gillot) |
Port: | wireguard-go |
Description (last modified by ryandesign (Ryan Carsten Schmidt))
Hi
I use a MacBook Pro with Yosemite 10.10.5 and I want to install wireguard... so I install MacPorts-2.7.2-10.10-Yosemite and try sudo port install wireguard-go
But I get an error:
---> Computing dependencies for wireguard-go ---> Fetching archive for wireguard-go ---> Attempting to fetch wireguard-go-0.0.20220117_0.darwin_14.x86_64.tbz2 from http://packages.macports.org/wireguard-go ---> Attempting to fetch wireguard-go-0.0.20220117_0.darwin_14.x86_64.tbz2 from http://mse.uk.packages.macports.org/wireguard-go ---> Attempting to fetch wireguard-go-0.0.20220117_0.darwin_14.x86_64.tbz2 from http://fra.de.packages.macports.org/wireguard-go ---> Building wireguard-go Error: Failed to build wireguard-go: command execution failed Error: See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_net_wireguard-go/wireguard-go/main.log for details. Error: Follow https://guide.macports.org/#project.tickets if you believe there is a bug. Error: Processing of port wireguard-go failed
The lastest lines are:
:info:build make: Entering directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_net_wireguard-go/wireguard-go/work/wireguard-go-0.0.20220117' :info:build go build -v -o "wireguard-go" :info:build # golang.zx2c4.com/wireguard :info:build /opt/local/lib/go/pkg/tool/darwin_amd64/link: running /usr/bin/clang failed: exit status 1 :info:build Undefined symbols for architecture x86_64: :info:build "_clock_gettime", referenced from: :info:build _runtime.walltime_trampoline.abi0 in go.o :info:build "_getentropy", referenced from: :info:build _internal/syscall/unix.libc_getentropy_trampoline.abi0 in go.o :info:build ld: symbol(s) not found for architecture x86_64 :info:build clang: error: linker command failed with exit code 1 (use -v to see invocation) :info:build make[1]: *** [wireguard-go] Error 2 :info:build make: *** [generate-version-and-build] Error 2 :info:build make: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_net_wireguard-go/wireguard-go/work/wireguard-go-0.0.20220117' :info:build Command failed: cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_net_wireguard-go/wireguard-go/work/wireguard-go-0.0.20220117" && /usr/bin/make -j1 -w :info:build Exit code: 2 :error:build Failed to build wireguard-go: command execution failed :debug:build Error code: CHILDSTATUS 18993 2 :debug:build Backtrace: command execution failed :debug:build while executing :debug:build "system {*}$notty {*}$callback {*}$nice $fullcmdstring" :debug:build invoked from within :debug:build "command_exec -callback portprogress::target_progress_callback build" :debug:build (procedure "portbuild::build_main" line 8) :debug:build invoked from within :debug:build "$procedure $targetname" :error:build See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_net_wireguard-go/wireguard-go/main.log for details.
Can you help me?
Thanks for all
Juhn_Hoo
Change History (6)
comment:1 Changed 3 years ago by ryandesign (Ryan Carsten Schmidt)
Cc: | ci42 herbygillot added |
---|---|
Description: | modified (diff) |
Keywords: | yosemite added; wireguard-go removed |
Owner: | set to cardi |
Port: | wireguard-go added |
Status: | new → assigned |
Summary: | How to install wireguard-go on Mac OSX Yosemite 10.10.5 → wireguard-go @0.0.20220117: Undefined symbols _clock_gettime _getentropy |
comment:2 Changed 3 years ago by snowflake (Dave Evans)
I'm running macOS 10.11.6 (sdk 10.12) with go @1.17.9_0
The simplest hello world program from https://go.dev/doc/tutorial/getting-started.html does not build and gives a clock_gettime error.
The Portfile does include legacysupport, but for some reason it is not working.
/opt/local/lib/go/pkg/tool/darwin_amd64/link: running /usr/bin/clang failed: exit status 1 Undefined symbols for architecture x86_64: "_clock_gettime", referenced from: _runtime.walltime_trampoline.abi0 in go.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
comment:4 Changed 3 years ago by snowflake (Dave Evans)
I've taken the advice in "port notes go" and put the environment text into my profile.
All I get when I run the profile is "bad substitution"
Here's the text of the port note:
It likely won't work out of the box when building other projects, so make sure change your environment to use the following variables: * GO_EXTLINK_ENABLED="1" to always force go to use the external gcc or clang linker and * GO_LDFLAGS="\"-extldflags=${configure.ldflags}\"" * CGO_LDFLAGS="-g -O2 ${configure.ldflags}" to force-link any binary against the legacy support library. Use exactly the quoting provided here, even if it may look odd, or compilation will fail.
configure.ldflags is not set anywhere in the Portfile. What exactly should I put in my profile?
comment:5 Changed 3 years ago by kencu (Ken)
It is going to take some trial and error, but think of it this way: outside macports, go has a 0% chance of ever working on your system!
Once you do figure it out, the next one will be easier. Maybe grep the ports tree for some other port that uses these commands and see what they did in there.
I don't run 10.11 much, so I'm not going to be much help for you.
comment:6 Changed 7 months ago by RobK88
Make sure you add this to your portfile for your hello-world.go
program.
PortGroup legacysupport 1.1 pre-build { # Sierra and earlier if { ${os.platform} eq "darwin" && ${os.major} < 17 } { build.env-append GO_EXTLINK_ENABLED="1" \ GO_LDFLAGS="\"-extldflags=${configure.ldflags}\"" \ CGO_LDFLAGS="-g -O2 ${configure.ldflags}" } }
clock_gettime
was new in OS X 10.11. MacPorts has a compatibility implementation ofclock_gettime
which ports can opt in to receiving by including the legacysupport portgroup which I see that the wireguard-go port does not do.I'm not sure if the same applies to
getentropy
.This port uses the go language, which could complicate matters. The problem may be in the go port rather than in the wireguard-go port. Cc'ing go's maintainers for input.