Add initial makefile and tools
This is for aligning with Golang CTI proposed proposed in https://review.openstack.org/410355. Change-Id: I04c25e8bde1bcb6c17b12284b67eb3e9953d94fe Signed-off-by: Pengfei Ni <feiskyer@gmail.com>
This commit is contained in:
parent
2a793d4df3
commit
28ee83e1ea
130
Makefile
Normal file
130
Makefile
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
# stackube Makefile
|
||||||
|
# Follows the interface defined in the Golang CTI proposed
|
||||||
|
# in https://review.openstack.org/410355
|
||||||
|
|
||||||
|
#REPO_VERSION?=$(shell git describe --tags)
|
||||||
|
|
||||||
|
GIT_HOST = git.openstack.org
|
||||||
|
SHELL := /bin/bash
|
||||||
|
|
||||||
|
PWD := $(shell pwd)
|
||||||
|
BASE_DIR := $(shell basename $(PWD))
|
||||||
|
# Keep an existing GOPATH, make a private one if it is undefined
|
||||||
|
GOPATH_DEFAULT := $(PWD)/.go
|
||||||
|
export GOPATH ?= $(GOPATH_DEFAULT)
|
||||||
|
PKG := $(shell awk '/^package: / { print $$2 }' glide.yaml)
|
||||||
|
DEST := $(GOPATH)/src/$(PKG)
|
||||||
|
|
||||||
|
GOFLAGS :=
|
||||||
|
TAGS :=
|
||||||
|
LDFLAGS :=
|
||||||
|
|
||||||
|
# Default target
|
||||||
|
.PHONY: all
|
||||||
|
all: build
|
||||||
|
|
||||||
|
# CTI targets
|
||||||
|
|
||||||
|
.PHONY: depend
|
||||||
|
depend: work
|
||||||
|
cd $(DEST) && glide install
|
||||||
|
|
||||||
|
.PHONY: depend-update
|
||||||
|
depend-update: work
|
||||||
|
cd $(DEST) && glide update
|
||||||
|
|
||||||
|
.PHONY: build
|
||||||
|
build: depend
|
||||||
|
cd $(DEST) && go build $(GOFLAGS) -tags '$(TAGS)' -ldflags '$(LDFLAGS)'' ./...
|
||||||
|
|
||||||
|
.PHONY: install
|
||||||
|
install: depend
|
||||||
|
cd $(DEST) && go install $(GOFLAGS) -tags '$(TAGS)' -ldflags '$(LDFLAGS)'' ./...
|
||||||
|
|
||||||
|
.PHONY: test
|
||||||
|
test: test-unit
|
||||||
|
|
||||||
|
.PHONY: test-unit
|
||||||
|
test-unit: depend
|
||||||
|
test-unit: TAGS += unit
|
||||||
|
test-unit: test-flags
|
||||||
|
|
||||||
|
.PHONY: test-flags
|
||||||
|
test-flags:
|
||||||
|
cd $(DEST) && go test $(GOFLAGS) -tags '$(TAGS)' ./...
|
||||||
|
|
||||||
|
# The above pipeline is required because gofmt always returns 0 and we need
|
||||||
|
# to detect if any files are listed as having format problems.
|
||||||
|
.PHONY: fmt
|
||||||
|
fmt: work
|
||||||
|
files=$$(cd $(DEST) && gofmt -l . | tee >(cat - >&2)); [ -z "$$files" ]
|
||||||
|
|
||||||
|
.PHONY: fmtfix
|
||||||
|
fmtfix: work
|
||||||
|
cd $(DEST) && go fmt ./...
|
||||||
|
|
||||||
|
lint:
|
||||||
|
@echo "$@ not yet implemented"
|
||||||
|
|
||||||
|
cover:
|
||||||
|
@echo "$@ not yet implemented"
|
||||||
|
|
||||||
|
docs:
|
||||||
|
@echo "$@ not yet implemented"
|
||||||
|
|
||||||
|
godoc:
|
||||||
|
@echo "$@ not yet implemented"
|
||||||
|
|
||||||
|
releasenotes:
|
||||||
|
@echo "Reno not yet implemented for this repo"
|
||||||
|
|
||||||
|
translation:
|
||||||
|
@echo "$@ not yet implemented"
|
||||||
|
|
||||||
|
# Do the work here
|
||||||
|
|
||||||
|
# Set up the development environment
|
||||||
|
env:
|
||||||
|
@echo "PWD: $(PWD)"
|
||||||
|
@echo "BASE_DIR: $(BASE_DIR)"
|
||||||
|
@echo "GOPATH: $(GOPATH)"
|
||||||
|
@echo "DEST: $(DEST)"
|
||||||
|
@echo "PKG: $(PKG)"
|
||||||
|
|
||||||
|
# Get our dev/test dependencies in place
|
||||||
|
bootstrap:
|
||||||
|
tools/test-setup.sh
|
||||||
|
|
||||||
|
work: $(GOPATH) $(DEST)
|
||||||
|
|
||||||
|
$(GOPATH):
|
||||||
|
mkdir -p $(GOPATH)
|
||||||
|
|
||||||
|
$(DEST): $(GOPATH)
|
||||||
|
mkdir -p $(shell dirname $(DEST))
|
||||||
|
ln -s $(PWD) $(DEST)
|
||||||
|
|
||||||
|
.bindep:
|
||||||
|
virtualenv .bindep
|
||||||
|
.bindep/bin/pip install bindep
|
||||||
|
|
||||||
|
bindep: .bindep
|
||||||
|
@.bindep/bin/bindep -b -f bindep.txt || true
|
||||||
|
|
||||||
|
install-distro-packages:
|
||||||
|
tools/install-distro-packages.sh
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf .bindep
|
||||||
|
|
||||||
|
realclean: clean
|
||||||
|
rm -rf vendor
|
||||||
|
if [ "$(GOPATH)" = "$(GOPATH_DEFAULT)" ]; then \
|
||||||
|
rm -rf $(GOPATH); \
|
||||||
|
fi
|
||||||
|
|
||||||
|
shell: work
|
||||||
|
cd $(DEST) && $(SHELL) -i
|
||||||
|
|
||||||
|
.PHONY: bindep clean cover depend docs fmt functional lint realclean \
|
||||||
|
relnotes test translation
|
5
bindep.txt
Normal file
5
bindep.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
pkg-config
|
||||||
|
build-essential
|
||||||
|
golang-go
|
||||||
|
golint
|
||||||
|
make
|
2
glide.yaml
Normal file
2
glide.yaml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
package: git.openstack.org/openstack/stackube
|
||||||
|
import: []
|
7
main.go
Normal file
7
main.go
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
fmt.Println("Hello from stackube")
|
||||||
|
}
|
40
tools/install-distro-packages.sh
Executable file
40
tools/install-distro-packages.sh
Executable file
@ -0,0 +1,40 @@
|
|||||||
|
#!/bin/bash -xe
|
||||||
|
|
||||||
|
# Local version to install bindep packages
|
||||||
|
# Suitable for use for development
|
||||||
|
|
||||||
|
function is_fedora {
|
||||||
|
[ -f /usr/bin/yum ] && cat /etc/*release | grep -q -e "Fedora"
|
||||||
|
}
|
||||||
|
|
||||||
|
PACKAGES=""
|
||||||
|
if ! which virtualenv; then
|
||||||
|
PACKAGES="$PACKAGES virtualenv"
|
||||||
|
fi
|
||||||
|
if ! which make; then
|
||||||
|
PACKAGES="$PACKAGES make"
|
||||||
|
fi
|
||||||
|
if [[ -n $PACKAGES ]]; then
|
||||||
|
sudo apt-get -q --assume-yes install virtualenv
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for bindep
|
||||||
|
if ! which bindep; then
|
||||||
|
make bindep
|
||||||
|
fi
|
||||||
|
|
||||||
|
PACKAGES=$(make bindep || true)
|
||||||
|
|
||||||
|
# inspired from project-config install-distro-packages.sh
|
||||||
|
if apt-get -v >/dev/null 2>&1 ; then
|
||||||
|
sudo apt-get -qq update
|
||||||
|
sudo PATH=/usr/sbin:/sbin:$PATH DEBIAN_FRONTEND=noninteractive \
|
||||||
|
apt-get -q --option "Dpkg::Options::=--force-confold" \
|
||||||
|
--assume-yes install $PACKAGES
|
||||||
|
elif emerge --version >/dev/null 2>&1 ; then
|
||||||
|
sudo emerge -uDNq --jobs=4 @world
|
||||||
|
sudo PATH=/usr/sbin:/sbin:$PATH emerge -q --jobs=4 $PACKAGES
|
||||||
|
else
|
||||||
|
is_fedora && YUM=dnf || YUM=yum
|
||||||
|
sudo PATH=/usr/sbin:/sbin:$PATH $YUM install -y $PACKAGES
|
||||||
|
fi
|
54
tools/test-setup.sh
Executable file
54
tools/test-setup.sh
Executable file
@ -0,0 +1,54 @@
|
|||||||
|
#!/bin/bash -xe
|
||||||
|
# test-setup.sh - Install required stuffs
|
||||||
|
# Used in both CI jobs and locally
|
||||||
|
#
|
||||||
|
# Install the following tools:
|
||||||
|
# * glide
|
||||||
|
|
||||||
|
# Get OS
|
||||||
|
case $(uname -s) in
|
||||||
|
Darwin)
|
||||||
|
OS=darwin
|
||||||
|
;;
|
||||||
|
Linux)
|
||||||
|
if LSB_RELEASE=$(which lsb_release); then
|
||||||
|
OS=$($LSB_RELEASE -s -c)
|
||||||
|
else
|
||||||
|
# No lsb-release, trya hack or two
|
||||||
|
if which dpkg 1>/dev/null; then
|
||||||
|
OS=debian
|
||||||
|
elif which yum 1>/dev/null || which dnf 1>/dev/null; then
|
||||||
|
OS=redhat
|
||||||
|
else
|
||||||
|
echo "Linux distro not yet supported"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unsupported OS"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case $OS in
|
||||||
|
darwin)
|
||||||
|
if which brew 1>/dev/null; then
|
||||||
|
if ! which glide 1>/dev/null; then
|
||||||
|
brew install glide
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Homebrew not found, install Glide from source?"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
xenial)
|
||||||
|
APT_GET="DEBIAN_FRONTEND=noninteractive \
|
||||||
|
apt-get -q --option "Dpkg::Options::=--force-confold" \
|
||||||
|
--assume-yes"
|
||||||
|
if ! which add-apt-repository 1>/dev/null; then
|
||||||
|
sudo $APT_GET install software-properties-common
|
||||||
|
fi
|
||||||
|
sudo add-apt-repository --yes ppa:masterminds/glide && sudo apt-get update
|
||||||
|
sudo $APT_GET install glide
|
||||||
|
;;
|
||||||
|
esac
|
Loading…
Reference in New Issue
Block a user