@@ -91,6 +91,10 @@ func main() {
91
91
cmdBuild .Flags ().AddFlag (flagTags )
92
92
cmdBuild .Flags ().AddFlag (flagLocalMap )
93
93
cmdBuild .Run = func (cmd * cobra.Command , args []string ) {
94
+ if err := verifyGOARCH (); err != nil {
95
+ printError (err , options , nil )
96
+ os .Exit (2 )
97
+ }
94
98
options .BuildTags = strings .Fields (* tags )
95
99
for {
96
100
s := gbuild .NewSession (options )
@@ -172,6 +176,10 @@ func main() {
172
176
cmdInstall .Flags ().AddFlag (flagTags )
173
177
cmdInstall .Flags ().AddFlag (flagLocalMap )
174
178
cmdInstall .Run = func (cmd * cobra.Command , args []string ) {
179
+ if err := verifyGOARCH (); err != nil {
180
+ printError (err , options , nil )
181
+ os .Exit (2 )
182
+ }
175
183
options .BuildTags = strings .Fields (* tags )
176
184
for {
177
185
s := gbuild .NewSession (options )
@@ -238,6 +246,10 @@ func main() {
238
246
Short : "display documentation for the requested, package, method or symbol" ,
239
247
}
240
248
cmdDoc .Run = func (cmd * cobra.Command , args []string ) {
249
+ if err := verifyGOARCH (); err != nil {
250
+ printError (err , options , nil )
251
+ os .Exit (2 )
252
+ }
241
253
exitCode := handleError (func () error {
242
254
goDoc := exec .Command ("go" , append ([]string {"doc" }, args ... )... )
243
255
goDoc .Stdout = os .Stdout
@@ -270,6 +282,10 @@ func main() {
270
282
Short : "compile and run Go program" ,
271
283
}
272
284
cmdRun .Run = func (cmd * cobra.Command , args []string ) {
285
+ if err := verifyGOARCH (); err != nil {
286
+ printError (err , options , nil )
287
+ os .Exit (2 )
288
+ }
273
289
os .Exit (handleError (func () error {
274
290
lastSourceArg := 0
275
291
for {
@@ -321,6 +337,10 @@ func main() {
321
337
cmdTest .Flags ().AddFlag (flagTags )
322
338
cmdTest .Flags ().AddFlag (flagLocalMap )
323
339
cmdTest .Run = func (cmd * cobra.Command , args []string ) {
340
+ if err := verifyGOARCH (); err != nil {
341
+ printError (err , options , nil )
342
+ os .Exit (2 )
343
+ }
324
344
options .BuildTags = strings .Fields (* tags )
325
345
os .Exit (handleError (func () error {
326
346
pkgs := make ([]* gbuild.PackageData , len (args ))
@@ -513,6 +533,10 @@ func main() {
513
533
var addr string
514
534
cmdServe .Flags ().StringVarP (& addr , "http" , "" , ":8080" , "HTTP bind address to serve" )
515
535
cmdServe .Run = func (cmd * cobra.Command , args []string ) {
536
+ if err := verifyGOARCH (); err != nil {
537
+ printError (err , options , nil )
538
+ os .Exit (2 )
539
+ }
516
540
options .BuildTags = strings .Fields (* tags )
517
541
dirs := append (filepath .SplitList (build .Default .GOPATH ), build .Default .GOROOT )
518
542
var root string
@@ -772,6 +796,19 @@ func printError(err error, options *gbuild.Options, browserErrors *bytes.Buffer)
772
796
}
773
797
}
774
798
799
+ // verifyGOARCH verifies that GOARCH environment value is not set to
800
+ // an unsupported value.
801
+ func verifyGOARCH () error {
802
+ goarch , ok := os .LookupEnv ("GOARCH" )
803
+ if ! ok {
804
+ return nil
805
+ }
806
+ if goarch != "js" {
807
+ return fmt .Errorf ("gopherjs: unsupported GOOS/GOARCH pair %s/%s" , build .Default .GOOS , goarch )
808
+ }
809
+ return nil
810
+ }
811
+
775
812
func runNode (script string , args []string , dir string , quiet bool ) error {
776
813
var allArgs []string
777
814
if b , _ := strconv .ParseBool (os .Getenv ("SOURCE_MAP_SUPPORT" )); os .Getenv ("SOURCE_MAP_SUPPORT" ) == "" || b {
0 commit comments