-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathMakefile
More file actions
172 lines (137 loc) · 4.3 KB
/
Copy pathMakefile
File metadata and controls
172 lines (137 loc) · 4.3 KB
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
#
## Bloombox: Python API Client
#
VERBOSE ?= no
TESTS ?= yes
COVERAGE ?= yes
VERSION ?= 0.0.1-alpha6
STAGING ?= yes
SERVICES ?= auth:v1beta1 platform:v1 checkin:v1beta1 devices:v1beta1 marketing:v1beta1 menu:v1beta1 media:v1beta1 shop:v1 telemetry:v1beta3
ENV_PATH ?= .env
BUILDBOT ?= no
SERVICE_NAMES ?= $(foreach svc,$(SERVICES),$(firstword $(subst :, ,$(svc))))
BASE_TEST_FLAGS = --no-byte-compile \
--traverse-namespace \
--with-xunit --xunit-file=build/tests.xml --xunit-testsuite-name=bloombox
COVERAGE_FLAGS = --with-coverage \
--cover-package=bloombox \
--cover-branches \
--cover-html --cover-html-dir=build/coverage-html \
--cover-xml --cover-xml-file=build/coverage.xml
TEST_FLAGS ?=
ifeq ($(STAGING),no)
PYPI ?= pypi
else
PYPI ?= pypitest
endif
ifeq ($(BUILDBOT),yes)
PIP ?= pip
PYTHON ?= python
ENVPYTHON ?= python
NOSE ?= nosetests
else
PIP ?= $(ENV_PATH)/bin/pip
PYTHON ?= $(shell which python2.7)
ENVPYTHON ?= $(ENV_PATH)/bin/python
NOSE ?= $(ENV_PATH)/bin/nosetests
endif
ifeq ($(COVERAGE),yes)
TEST_FLAGS += $(COVERAGE_FLAGS)
endif
ifeq ($(VERBOSE),yes)
CP_FLAGS ?= v
RM_FLAGS ?= v
TEST_FLAGS += -v
else
CP_FLAGS ?=
RM_FLAGS ?=
endif
_TEST_FLAGS = $(BASE_TEST_FLAGS) $(TEST_FLAGS)
PYTHON_BUILD_TARGETS ?= build build_py
PYTHON_DIST_TARGETS ?= sdist bdist_egg bdist_wheel
PYTHON_TARGETS ?= $(PYTHON_BUILD_TARGETS) $(PYTHON_DIST_TARGETS)
SCHEMA_PATH ?= src/bloombox/schema
all: env build test
@echo "Done."
install: install-egg-info install-lib
@echo "Installation done."
env: $(ENV_PATH)
clean-schema:
@echo "Cleaning embedded schema..."
@mv $(SCHEMA_PATH)/__init__.py ./__schema_init__.py
@rm -fr$(RM_FLAGS) $(SCHEMA_PATH)/*
@mv ./__schema_init__.py $(SCHEMA_PATH)/__init__.py
@$(MAKE) -C schema clean
clean:
@echo "Cleaning PYC files..."
@find . -name '*.py[c,o]' -delete
@echo "Cleaning build..."
@rm -fr$(RM_FLAGS) build dist schema/languages/python
distclean: clean
@echo "Cleaning environment..."
@rm -fr$(RM_FLAGS) $(ENV_PATH) schema/languages
ifneq ($(BUILDBOT),yes)
$(ENV_PATH):
@echo "Setting up environment..."
@mkdir -p $(ENV_PATH)
@virtualenv $(ENV_PATH) -p $(PYTHON)
@$(PIP) install -r requirements.txt
@echo "Environment ready."
else
$(ENV_PATH):
@echo "Setting up environment for CI..."
@mkdir -p $(ENV_PATH)
@$(PIP) install -r requirements.txt
@echo "Environment ready."
endif
submodules:
@echo "Fetching submodules..."
@git submodule update --init --recursive
update-schema: submodules
@echo "Updating schema..."
@git submodule update --init --remote
sync-schema: update-schema clean-schema embedded-schema
@echo "Sync done."
schema/languages/python:
@echo "Building schema..."
@$(MAKE) -C schema LANGUAGES="python pygrpc c cpp"
$(SCHEMA_PATH)/__init__.py:
@echo "Installing Schema..."
@mkdir -p $(SCHEMA_PATH) $(SCHEMA_PATH)/services
@cd schema/languages/python && cp -fr$(CP_FLAGS) ./* ../../../$(SCHEMA_PATH)/
$(SCHEMA_PATH)/services/descriptor.py:
@echo "Installing services..."
@for service in $(SERVICE_NAMES); do \
echo "- Installing '$$service'..."; \
mkdir -p $(SCHEMA_PATH)/services/$$service; \
cp -fr$(CP_FLAGS) schema/languages/pygrpc/$$service/* $(SCHEMA_PATH)/services/$$service; done
embedded-schema: schema/languages/python $(SCHEMA_PATH)/__init__.py $(SCHEMA_PATH)/services/descriptor.py
@echo "Fixing up modules..."
@cd $(SCHEMA_PATH)/services && for directory in `find -s -x . -type d | xargs`; do touch $$directory/__init__.py; done
@echo "Installing schema..."
@mkdir -p $(SCHEMA_PATH) $(SCHEMA_PATH)/services
@mv $(SCHEMA_PATH)/__init__.py $(SCHEMA_PATH)/__init_loader__.py
@cd schema/languages/python && cp -fr$(CP_FLAGS) ./* ../../../$(SCHEMA_PATH)/
@rm -f $(SCHEMA_PATH)/__init__.py
@mv $(SCHEMA_PATH)/__init_loader__.py $(SCHEMA_PATH)/__init__.py
@echo "Embedded schema ready."
build:
@$(ENVPYTHON) setup.py $(PYTHON_TARGETS)
release: clean build test
@$(ENVPYTHON) setup.py $(PYTHON_TARGETS) check upload -r $(PYPI)
ifeq ($(TESTS),yes)
test: build
@echo "Running testsuite..."
@$(NOSE) $(_TEST_FLAGS) bloombox_tests
else
test:
@echo "Skipping testsuite."
endif
install-egg-info:
@echo "Installing egg info..."
@$(ENVPYTHON) setup.py install_egg_info
install-lib:
@echo "Installing library..."
@$(ENVPYTHON) setup.py install_lib
interactive: all
@PYTHONPATH=src $(ENVPYTHON) -B