From ad28b68e88f12448a1685d038ffea87bbbb34148 Mon Sep 17 00:00:00 2001 From: Takuto Ikuta Date: Fri, 24 May 2019 22:45:01 +0900 Subject: [PATCH] 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 Run-TryBot: Brad Fitzpatrick TryBot-Result: Gobot Gobot --- windows/{mkerrors.go => gen.go} | 2 +- windows/generate.bash | 15 +++++++++++++++ windows/mkerrors.bash | 2 +- windows/mksyscall.go | 9 --------- 4 files changed, 17 insertions(+), 11 deletions(-) rename windows/{mkerrors.go => gen.go} (80%) create mode 100755 windows/generate.bash delete mode 100644 windows/mksyscall.go diff --git a/windows/mkerrors.go b/windows/gen.go similarity index 80% rename from windows/mkerrors.go rename to windows/gen.go index a204e6ca..d08e2779 100644 --- a/windows/mkerrors.go +++ b/windows/gen.go @@ -6,4 +6,4 @@ package windows -//go:generate ./mkerrors.bash zerrors_windows.go +//go:generate ./generate.bash diff --git a/windows/generate.bash b/windows/generate.bash new file mode 100755 index 00000000..9916aa18 --- /dev/null +++ b/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 diff --git a/windows/mkerrors.bash b/windows/mkerrors.bash index a70b24f3..8e59e93f 100755 --- a/windows/mkerrors.bash +++ b/windows/mkerrors.bash @@ -9,7 +9,7 @@ shopt -s nullglob [[ $# -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)" -[[ -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 diff --git a/windows/mksyscall.go b/windows/mksyscall.go deleted file mode 100644 index 62770572..00000000 --- a/windows/mksyscall.go +++ /dev/null @@ -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