1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
#
# Makefile for juju-core.
#
ifndef GOPATH
$(warning You need to set up a GOPATH. See the README file.)
endif
PROJECT := launchpad.net/juju-core
PROJECT_DIR := $(shell go list -e -f '{{.Dir}}' $(PROJECT))
define DEPENDENCIES
build-essential
bzr
distro-info-data
git-core
golang
mercurial
mongodb-server
zip
endef
default: build
# Start of GOPATH-dependent targets. Some targets only make sense -
# and will only work - when this tree is found on the GOPATH.
ifeq ($(CURDIR),$(PROJECT_DIR))
build:
go build $(PROJECT)/...
check:
go test $(PROJECT)/...
install:
go install -v $(PROJECT)/...
clean:
go clean $(PROJECT)/...
else # --------------------------------
build:
$(error Cannot $@; $(CURDIR) is not on GOPATH)
check:
$(error Cannot $@; $(CURDIR) is not on GOPATH)
install:
$(error Cannot $@; $(CURDIR) is not on GOPATH)
clean:
$(error Cannot $@; $(CURDIR) is not on GOPATH)
endif
# End of GOPATH-dependent targets.
# Reformat source files.
format:
gofmt -w -l .
# Reformat and simplify source files.
simplify:
gofmt -w -l -s .
# Install packages required to develop Juju and run tests. The stable
# PPA includes the required mongodb-server binaries. However, neither
# PPA works on Saucy just yet.
install-dependencies:
ifneq ($(shell lsb_release -cs),saucy)
@echo Adding juju PPAs for golang and mongodb-server
@sudo apt-add-repository --yes ppa:juju/golang
@sudo apt-add-repository --yes ppa:juju/stable
@sudo apt-get update
endif
@echo Installing dependencies
@sudo apt-get --yes install $(strip $(DEPENDENCIES))
.PHONY: build check install
.PHONY: clean format simplify
.PHONY: install-dependencies
|