-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathMakefile
More file actions
108 lines (86 loc) · 2.7 KB
/
Copy pathMakefile
File metadata and controls
108 lines (86 loc) · 2.7 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
FMT = clang-format-19
DISTOS := $(shell sh scripts/utils/get_os_dist.sh)
PRISKV_VERSION=$(shell git rev-parse --short HEAD)$(shell git diff HEAD --ignore-submodules=all --quiet || echo -dirty)
ifneq ($(PRISKV_PKG_VERSION),)
PRISKV_VERSION=$(PRISKV_PKG_VERSION)
endif
__OS_TYPE = $(shell sh scripts/utils/get_os_type.sh)
ifeq ($(__OS_TYPE), unknown)
$(error "Unknown OS type")
endif
__OS_NAME = $(shell sh scripts/utils/get_os_name.sh)
ifeq ($(__OS_NAME), unknown)
$(error "Unknown OS name")
endif
.PHONY: all server client cluster test rebuild clean format pyclient
all: server client cluster pyclient test
version:
@echo "PrisKV Version: $(PRISKV_VERSION)"
sed 's/__PRISKV_VERSION__ "unknown"/__PRISKV_VERSION__ "$(PRISKV_VERSION)"/g' include/priskv-version.h.in > include/priskv-version.h
server: version client
make -C server all
client: version
make -C client all
cluster: client
make -C cluster all
pyclient: client cluster
make -C pypriskv all
test: version
make -C server test
make -C lib test
rebuild: clean
make all
clean: version
make -C server clean
make -C client clean
make -C cluster clean
make -C lib clean
make -C pypriskv clean
rm -f include/priskv-version.h
yapf_check:
@if ! command -v yapf >/dev/null 2>&1; then \
echo "yapf is not installed. Please install it first."; \
exit 1; \
fi
format: version yapf_check
make -C server format
make -C client format
make -C cluster format
make -C lib format
make -C include format
find . -path './thirdparty' -prune -o -name "*.py" -exec yapf --in-place {} \;
pkg: export PRISKV_RELEASE=1
pkg: version
mkdir -p output/$(__OS_NAME)
ifeq ($(__OS_TYPE), redhat)
bash scripts/build/build_rpm.sh output/$(__OS_NAME)
else
sed "s/DISTOS/$(DISTOS)/g" debian/changelog.tpl > debian/changelog
dpkg-buildpackage -b -uc -us
mv ../priskv-* output/$(__OS_NAME)
mv ../priskv_* output/$(__OS_NAME)
endif
pyclient-pkg: pyclient
mkdir -p output/$(__OS_NAME)
mv pypriskv/dist/priskv-*.whl output/$(__OS_NAME)
pkg-clean:
ifeq ($(__OS_TYPE), redhat)
$(error "Redhat is not supported yet")
else
debian/rules clean
endif
rm -rf output
rm -rf debian/changelog
install-%: version
make -C $* install PRISKV_DESTDIR=$(PRISKV_DESTDIR)
# for example: make pkg-ubuntu2004, and you will get a deb package in ./output/ubuntu20.04/
pkg-%:
@set -e; \
BUILD_ENV=$*; \
IMAGE_NAME="priskv-pkg:$${BUILD_ENV}"; \
CONTAINER_NAME="priskv-pkg-$${BUILD_ENV}-$(shell date +%s)"; \
docker build . -t $${IMAGE_NAME} --network=host -f ./docker/Dockerfile_$${BUILD_ENV}; \
docker create --name $${CONTAINER_NAME} $${IMAGE_NAME}; \
docker cp $${CONTAINER_NAME}:/root/priskv/output .; \
docker rm -f $${CONTAINER_NAME}; \
echo "Succeed to build package to ./output/"