build: Windows build cleanup

Remove spurious warnings and prompts
Make normal output quieter
Add filesys check (warn and exit on FAT* systems)

Fixes #5866
release-3.1
Martin Falatic 2016-10-14 02:07:53 -07:00
parent 052e314372
commit 296427fc78
1 changed files with 9 additions and 30 deletions

View File

@ -1,9 +1,14 @@
$ORG_PATH="github.com/coreos"
$REPO_PATH="$ORG_PATH/etcd"
$PWD = $((Get-Item -Path ".\" -Verbose).FullName)
$FSROOT = $((Get-Location).Drive.Name+":")
$FSYS = $((Get-WMIObject win32_logicaldisk -filter "DeviceID = '$FSROOT'").filesystem)
$GO_LDFLAGS="-s"
echo "Building etcd"
if ($FSYS.StartsWith("FAT","CurrentCultureIgnoreCase")) {
echo "Error: Cannot build etcd using the $FSYS filesystem (use NTFS instead)"
exit 1
}
# Set $Env:GO_LDFLAGS=" "(space) for building with all symbols for debugging.
if ($Env:GO_LDFLAGS.length -gt 0) {
@ -12,10 +17,7 @@ if ($Env:GO_LDFLAGS.length -gt 0) {
$GO_LDFLAGS="$GO_LDFLAGS -X $REPO_PATH/cmd/vendor/$REPO_PATH/version.GitSHA=$GIT_SHA"
# rebuild symlinks
echo ""
echo "Re-creating symlinks"
git ls-files -s cmd | select-string -pattern 120000 | ForEach {
echo ""
$l = $_.ToString()
$lnkname = $l.Split(' ')[1]
$target = "$(git log -p HEAD -- $lnkname | select -last 2 | select -first 1)"
@ -32,75 +34,52 @@ git ls-files -s cmd | select-string -pattern 120000 | ForEach {
if (Test-Path "$lnkname") {
if ((Get-Item "$lnkname") -is [System.IO.DirectoryInfo]) {
# rd so deleting junction doesn't take files with it
echo "rd `"$lnkname`""
cmd /c rd "$lnkname"
}
}
if (Test-Path "$lnkname") {
if (!((Get-Item "$lnkname") -is [System.IO.DirectoryInfo])) {
echo "del /A /F `"$lnkname`""
cmd /c del /A /F "$lnkname"
}
}
echo "mklink /J `"$lnkname`" `"$targetAbs`""
cmd /c mklink /J "$lnkname" "$targetAbs"
cmd /c mklink /J "$lnkname" "$targetAbs" ">NUL"
} else {
# Remove file with symlink data (first run)
if (Test-Path "$lnkname") {
echo "del /A /F `"$lnkname`""
cmd /c del /A /F "$lnkname"
}
echo "mklink /H `"$lnkname`" `"$targetAbs`""
cmd /c mklink /H "$lnkname" "$targetAbs"
cmd /c mklink /H "$lnkname" "$targetAbs" ">NUL"
}
}
if (-not $env:GOPATH) {
echo ""
echo "Setting up GOPATH"
$orgpath="$PWD\gopath\src\" + $ORG_PATH.Replace("/", "\")
echo ""
echo "Remove and create junction to $orgpath\etcd"
if (Test-Path "$orgpath\etcd") {
if ((Get-Item "$orgpath\etcd") -is [System.IO.DirectoryInfo]) {
# rd so deleting junction doesn't take files with it
echo "rd `"$orgpath\etcd`""
cmd /c rd "$orgpath\etcd"
}
}
if (Test-Path "$orgpath") {
if ((Get-Item "$orgpath") -is [System.IO.DirectoryInfo]) {
# rd so deleting junction doesn't take files with it
echo "rd `"$orgpath`""
cmd /c rd "$orgpath"
}
}
if (Test-Path "$orgpath") {
if (!((Get-Item "$orgpath") -is [System.IO.DirectoryInfo])) {
# Remove file with symlink data (first run)
echo "del /A /F `"$orgpath`""
cmd /c del /A /F "$orgpath"
}
}
echo "mkdir `"$orgpath`""
cmd /c mkdir "$orgpath"
echo "mklink /J `"$orgpath\etcd`" `"$PWD`""
cmd /c mklink /J "$orgpath\etcd" "$PWD"
cmd /c mklink /J "$orgpath\etcd" "$PWD" ">NUL"
$env:GOPATH = "$PWD\gopath"
}
echo ""
echo "GOPATH = $env:GOPATH"
# Static compilation is useful when etcd is run in a container
echo ""
echo "Building statically linked artifacts"
$env:CGO_ENABLED = 0
$env:GO15VENDOREXPERIMENT = 1
$GIT_SHA="$(git rev-parse --short HEAD)"
go build -a -installsuffix cgo -ldflags $GO_LDFLAGS -o bin\etcd.exe "$REPO_PATH\cmd\etcd"
go build -a -installsuffix cgo -ldflags $GO_LDFLAGS -o bin\etcdctl.exe "$REPO_PATH\cmd\etcdctl"
echo ""
echo "Build complete"
echo "Build artifacts available at `"$PWD\bin`""