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.
This commit is contained in:
parent
b9e933b850
commit
b1d41016b2
@ -25,7 +25,7 @@ before_install:
|
|||||||
|
|
||||||
# disable godep restore override
|
# disable godep restore override
|
||||||
install:
|
install:
|
||||||
- go get -t -v ./...
|
- pushd cmd/ && go get -t -v ./... && popd
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- ./test
|
- ./test
|
||||||
|
24
build
24
build
@ -3,32 +3,14 @@
|
|||||||
ORG_PATH="github.com/coreos"
|
ORG_PATH="github.com/coreos"
|
||||||
REPO_PATH="${ORG_PATH}/etcd"
|
REPO_PATH="${ORG_PATH}/etcd"
|
||||||
|
|
||||||
export GOPATH=${PWD}/gopath
|
|
||||||
export GO15VENDOREXPERIMENT="1"
|
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)
|
eval $(go env)
|
||||||
|
|
||||||
GIT_SHA=`git rev-parse --short HEAD || echo "GitNotFound"`
|
GIT_SHA=`git rev-parse --short HEAD || echo "GitNotFound"`
|
||||||
|
|
||||||
val=$(go version)
|
LINK_OPERATOR="="
|
||||||
# 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
|
|
||||||
|
|
||||||
# Static compilation is useful when etcd is run in a container
|
# 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 -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}/etcdctl
|
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
26
build.bat
Normal file → Executable file
@ -1,25 +1 @@
|
|||||||
@echo off
|
powershell -ExecutionPolicy Bypass -File build.ps1
|
||||||
|
|
||||||
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"
|
|
||||||
|
46
build.ps1
Normal file
46
build.ps1
Normal 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"
|
3
Godeps/Godeps.json → cmd/Godeps/Godeps.json
generated
3
Godeps/Godeps.json → cmd/Godeps/Godeps.json
generated
@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"ImportPath": "github.com/coreos/etcd",
|
"ImportPath": "github.com/coreos/etcd/cmd",
|
||||||
"GoVersion": "go1.6",
|
"GoVersion": "go1.6",
|
||||||
"GodepVersion": "v60",
|
|
||||||
"Packages": [
|
"Packages": [
|
||||||
"./..."
|
"./..."
|
||||||
],
|
],
|
0
Godeps/Readme → cmd/Godeps/Readme
generated
0
Godeps/Readme → cmd/Godeps/Readme
generated
4
cmd/README.md
Normal file
4
cmd/README.md
Normal 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
1
cmd/etcdctl
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../etcdctl
|
1
cmd/etcdmain
Symbolic link
1
cmd/etcdmain
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../etcdmain
|
1
cmd/main.go
Symbolic link
1
cmd/main.go
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../main.go
|
0
vendor/github.com/boltdb/bolt/LICENSE → cmd/vendor/github.com/boltdb/bolt/LICENSE
generated
vendored
0
vendor/github.com/boltdb/bolt/LICENSE → cmd/vendor/github.com/boltdb/bolt/LICENSE
generated
vendored
0
vendor/github.com/boltdb/bolt/Makefile → cmd/vendor/github.com/boltdb/bolt/Makefile
generated
vendored
0
vendor/github.com/boltdb/bolt/Makefile → cmd/vendor/github.com/boltdb/bolt/Makefile
generated
vendored
0
vendor/github.com/boltdb/bolt/db.go → cmd/vendor/github.com/boltdb/bolt/db.go
generated
vendored
0
vendor/github.com/boltdb/bolt/db.go → cmd/vendor/github.com/boltdb/bolt/db.go
generated
vendored
0
vendor/github.com/boltdb/bolt/doc.go → cmd/vendor/github.com/boltdb/bolt/doc.go
generated
vendored
0
vendor/github.com/boltdb/bolt/doc.go → cmd/vendor/github.com/boltdb/bolt/doc.go
generated
vendored
0
vendor/github.com/boltdb/bolt/node.go → cmd/vendor/github.com/boltdb/bolt/node.go
generated
vendored
0
vendor/github.com/boltdb/bolt/node.go → cmd/vendor/github.com/boltdb/bolt/node.go
generated
vendored
0
vendor/github.com/boltdb/bolt/page.go → cmd/vendor/github.com/boltdb/bolt/page.go
generated
vendored
0
vendor/github.com/boltdb/bolt/page.go → cmd/vendor/github.com/boltdb/bolt/page.go
generated
vendored
0
vendor/github.com/boltdb/bolt/tx.go → cmd/vendor/github.com/boltdb/bolt/tx.go
generated
vendored
0
vendor/github.com/boltdb/bolt/tx.go → cmd/vendor/github.com/boltdb/bolt/tx.go
generated
vendored
1
cmd/vendor/github.com/coreos/etcd
generated
vendored
Symbolic link
1
cmd/vendor/github.com/coreos/etcd
generated
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../../../
|
0
vendor/github.com/coreos/pkg/LICENSE → cmd/vendor/github.com/coreos/pkg/LICENSE
generated
vendored
0
vendor/github.com/coreos/pkg/LICENSE → cmd/vendor/github.com/coreos/pkg/LICENSE
generated
vendored
0
vendor/github.com/coreos/pkg/NOTICE → cmd/vendor/github.com/coreos/pkg/NOTICE
generated
vendored
0
vendor/github.com/coreos/pkg/NOTICE → cmd/vendor/github.com/coreos/pkg/NOTICE
generated
vendored
0
vendor/github.com/ghodss/yaml/LICENSE → cmd/vendor/github.com/ghodss/yaml/LICENSE
generated
vendored
0
vendor/github.com/ghodss/yaml/LICENSE → cmd/vendor/github.com/ghodss/yaml/LICENSE
generated
vendored
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user