Browse Source

windows: make zsyscall_windows.go generatable on non-WSL env

mkerrors.bash requires a Windows host, as it hard-codes paths like
/mnt/c/Program Files (x86)/Windows Kits.
But this does not allow to generate in non-WSL env.

Currently mkerrors.bash runs earlier than mksyscall_windows.go
when we run `go generate` and it fails on non-WSL env.
So zsyscall_windows.go is not generated in that case.

To fix that, I reoreder of code generation in this CL so that we can
generate zsyscall_windows.go in non-WSL env.

Also update error message in mkerrors.bash.

Change-Id: I04eccdbfe1e1ff56f8c405250f0724000d66d579
Reviewed-on: https://go-review.googlesource.com/c/sys/+/178781
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Takuto Ikuta 6 years ago
parent
commit
ad28b68e88
4 changed files with 17 additions and 11 deletions
  1. 1 1
      windows/gen.go
  2. 15 0
      windows/generate.bash
  3. 1 1
      windows/mkerrors.bash
  4. 0 9
      windows/mksyscall.go

+ 1 - 1
windows/mkerrors.go → windows/gen.go

@@ -6,4 +6,4 @@
 
 
 package windows
 package windows
 
 
-//go:generate ./mkerrors.bash zerrors_windows.go
+//go:generate ./generate.bash

+ 15 - 0
windows/generate.bash

@@ -0,0 +1,15 @@
+#!/bin/bash
+
+# Copyright 2019 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+set -e
+
+# For successful zsyscall_windows.go generation on non-WSL env, this should
+# run before mkerrors.bash.
+echo "# Generating zsyscall_windows.go ..."
+go run $(go env GOROOT)/src/syscall/mksyscall_windows.go -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go
+
+echo "# Generating zerrors_windows.go ..."
+./mkerrors.bash zerrors_windows.go

+ 1 - 1
windows/mkerrors.bash

@@ -9,7 +9,7 @@ shopt -s nullglob
 
 
 [[ $# -eq 1 ]] || { echo "Usage: $0 OUTPUT_FILE.go" >&2; exit 1; }
 [[ $# -eq 1 ]] || { echo "Usage: $0 OUTPUT_FILE.go" >&2; exit 1; }
 winerror="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/shared/winerror.h | sort -Vr | head -n 1)"
 winerror="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/shared/winerror.h | sort -Vr | head -n 1)"
-[[ -n $winerror ]] || { echo "Unable to find winerror.h" >&2; exit 1; }
+[[ -n $winerror ]] || { echo "Unable to find winerror.h; this expects to be run on Windows with WSL" >&2; exit 1; }
 
 
 declare -A errors
 declare -A errors
 
 

+ 0 - 9
windows/mksyscall.go

@@ -1,9 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build generate
-
-package windows
-
-//go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go