vendor: only vendor on emitted binaries

Moves the vendor/ directory to cmd/vendor. Vendored binaries are built
from cmd/, which is backed by symlinks pointing back to repo root.
release-3.0
Anthony Romano 2016-04-03 11:35:29 -07:00
parent b9e933b850
commit b1d41016b2
635 changed files with 68 additions and 50 deletions

View File

@ -25,7 +25,7 @@ before_install:
# disable godep restore override
install:
- go get -t -v ./...
- pushd cmd/ && go get -t -v ./... && popd
script:
- ./test

24
build
View File

@ -3,32 +3,14 @@
ORG_PATH="github.com/coreos"
REPO_PATH="${ORG_PATH}/etcd"
export GOPATH=${PWD}/gopath
export GO15VENDOREXPERIMENT="1"
rm -f $GOPATH/src/${REPO_PATH}
mkdir -p $GOPATH/src/${ORG_PATH}
ln -s ${PWD} $GOPATH/src/${REPO_PATH}
eval $(go env)
GIT_SHA=`git rev-parse --short HEAD || echo "GitNotFound"`
val=$(go version)
# if 'go version' contains string 'devel', it assumes the go tip branch,
# which is greater than go 1.5+.
if test "${val#*devel}" != "$val"
then
LINK_OPERATOR="="
else
ver=$(echo $val | awk -F ' ' '{print $3}' | awk -F '.' '{print $2}')
if [ $ver -gt 4 ]; then
LINK_OPERATOR="="
else
LINK_OPERATOR=" "
fi
fi
LINK_OPERATOR="="
# Static compilation is useful when etcd is run in a container
CGO_ENABLED=0 go build $GO_BUILD_FLAGS -installsuffix cgo -ldflags "-s -X ${REPO_PATH}/version.GitSHA${LINK_OPERATOR}${GIT_SHA}" -o bin/etcd ${REPO_PATH}
CGO_ENABLED=0 go build $GO_BUILD_FLAGS -installsuffix cgo -ldflags "-s" -o bin/etcdctl ${REPO_PATH}/etcdctl
CGO_ENABLED=0 go build $GO_BUILD_FLAGS -installsuffix cgo -ldflags "-s -X ${REPO_PATH}/version.GitSHA${LINK_OPERATOR}${GIT_SHA}" -o bin/etcd ${REPO_PATH}/cmd
CGO_ENABLED=0 go build $GO_BUILD_FLAGS -installsuffix cgo -ldflags "-s" -o bin/etcdctl ${REPO_PATH}/cmd/etcdctl

26
build.bat Normal file → Executable file
View File

@ -1,25 +1 @@
@echo off
SET ORG_PATH=github.com\coreos
SET REPO_PATH=%ORG_PATH%\etcd
SET GOPATH=%cd%\gopath
:: Cleanup old builds
IF EXIST "%GOPATH%\src\%REPO_PATH%" rmdir /s /q "%GOPATH%\src\%REPO_PATH%"
IF EXIST "%GOPATH%\src\%ORG_PATH%" rmdir /s /q "%GOPATH%\src\%ORG_PATH%"
IF EXIST "%cd%\bin" rmdir /s /q "%cd%\bin"
md "%GOPATH%\src\%ORG_PATH%"
mklink /d "%GOPATH%\src\%REPO_PATH%" "%cd%"
FOR /f "usebackq tokens=*" %%a IN (`go env`) DO %%a
(FOR /f "tokens=*" %%i IN ('git rev-parse --short HEAD') DO SET GIT_SHA=%%i) 2>NUL
IF NOT DEFINED GIT_SHA SET GIT_SHA=GitNotFound
:: Static compilation is useful when etcd is run in a container
SET CGO_ENABLED=0
go build -a -installsuffix cgo -ldflags "-s -X %REPO_PATH%\version.GitSHA %GIT_SHA%" -o bin\etcd.exe "%REPO_PATH%"
:: TODO: Get the %GIT_SHA% argument to work. Useful for `etcd --version` style commands.
go build -a -installsuffix cgo -ldflags "-s" -o bin\etcdctl.exe "%REPO_PATH%\etcdctl"
powershell -ExecutionPolicy Bypass -File build.ps1

46
build.ps1 Normal file
View File

@ -0,0 +1,46 @@
$ORG_PATH="github.com/coreos"
$REPO_PATH="$ORG_PATH/etcd"
$PWD = $((Get-Item -Path ".\" -Verbose).FullName)
# rebuild symlinks
echo "Rebuilding symlinks"
git ls-files -s cmd | select-string -pattern 120000 | ForEach {
$l = $_.ToString()
$lnkname = $l.Split(' ')[1]
$target = "$(git log -p HEAD -- $lnkname | select -last 2 | select -first 1)"
$target = $target.SubString(1,$target.Length-1).Replace("/","\")
$lnkname = $lnkname.Replace("/","\")
$terms = $lnkname.Split("\")
$dirname = $terms[0..($terms.length-2)] -join "\"
$lnkname = "$PWD\$lnkname"
$targetAbs = "$((Get-Item -Path "$dirname\$target").FullName)"
$targetAbs = $targetAbs.Replace("/", "\")
if (test-path -pathtype container "$targetAbs") {
# rd so deleting junction doesn't take files with it
cmd /c rd "$lnkname"
cmd /c del /A /F "$lnkname"
cmd /c mklink /J "$lnkname" "$targetAbs"
} else {
cmd /c del /A /F "$lnkname"
cmd /c mklink /H "$lnkname" "$targetAbs"
}
}
if (-not $env:GOPATH) {
$orgpath="$PWD\gopath\src\" + $ORG_PATH.Replace("/", "\")
cmd /c rd "$orgpath\etcd"
cmd /c del "$orgpath"
cmd /c mkdir "$orgpath"
cmd /c mklink /J "$orgpath\etcd" "$PWD"
$env:GOPATH = "$PWD\gopath"
}
# Static compilation is useful when etcd is run in a container
$env:CGO_ENABLED = 0
$env:GO15VENDOREXPERIMENT = 1
# TODO: Get the GIT_SHA argument to work for `etcd --version` style commands.
$GIT_SHA="$(git rev-parse --short HEAD)"
go build -a -installsuffix cgo -ldflags "-s -X $REPO_PATH/version.GitSHA=$GIT_SHA" -o bin\etcd.exe "$REPO_PATH\cmd"
go build -a -installsuffix cgo -ldflags "-s" -o bin\etcdctl.exe "$REPO_PATH\cmd\etcdctl"

View File

@ -1,7 +1,6 @@
{
"ImportPath": "github.com/coreos/etcd",
"ImportPath": "github.com/coreos/etcd/cmd",
"GoVersion": "go1.6",
"GodepVersion": "v60",
"Packages": [
"./..."
],

View File

4
cmd/README.md Normal file
View File

@ -0,0 +1,4 @@
## cmd
This directory is meant to enforce vendoring for etcd binaries without polluting
the etcd client libraries with vendored dependencies.

1
cmd/etcdctl Symbolic link
View File

@ -0,0 +1 @@
../etcdctl

1
cmd/etcdmain Symbolic link
View File

@ -0,0 +1 @@
../etcdmain

1
cmd/main.go Symbolic link
View File

@ -0,0 +1 @@
../main.go

1
cmd/tools Symbolic link
View File

@ -0,0 +1 @@
../tools

1
cmd/vendor/github.com/coreos/etcd generated vendored Symbolic link
View File

@ -0,0 +1 @@
../../../../

Some files were not shown because too many files have changed in this diff Show More