Open
Description
What version of Go are you using (go version
)?
$ go version go version devel +b7689f5aa3 Fri Jan 31 06:02:00 2020 +0000 linux/amd64
Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env
)?
go env
Output
$ go env GO111MODULE="on" GOARCH="amd64" GOBIN="" GOCACHE="/home/myitcv/.cache/go-build" GOENV="/home/myitcv/.config/go/env" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOINSECURE="" GONOPROXY="" GONOSUMDB="" GOOS="linux" GOPATH="/home/myitcv/gostuff" GOPRIVATE="" GOPROXY="https://proxy.golang.org,direct" GOROOT="/home/myitcv/gos" GOSUMDB="sum.golang.org" GOTMPDIR="" GOTOOLDIR="/home/myitcv/gos/pkg/tool/linux_amd64" GCCGO="gccgo" AR="ar" CC="gcc" CXX="g++" CGO_ENABLED="1" GOMOD="/home/myitcv/gostuff/src/github.com/myitcv/playground/go.mod" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build703123889=/tmp/go-build -gno-record-gcc-switches"
What did you do?
-- go.mod --
module mod
-- main.go --
package main
import (
"fmt"
"os"
"os/exec"
)
func main() {
cmd := exec.Command("echo", "hello")
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
if err := cmd.Run(); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}
GOOS=js GOARCH=wasm go build -o main.wasm
$(go env GOROOT)/misc/wasm/go_js_wasm_exec main.wasm
What did you expect to see?
hello
What did you see instead?
exec: "echo": executable file not found in $PATH
As some folks on Slack kindly pointed out, this is because GOOS=js ARCH=wasm
does not support fork/exec syscalls. Those same folks were not clear that it made sense for this to be supported (especially given the browser focus of this port), but when executing through NodeJS (i.e. the go_js_wasm_exec
wrapper) it does have meaning.
Thoughts?
cc @neelance