-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathMakefile
145 lines (122 loc) · 5.35 KB
/
Makefile
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
PROJECT_LOCAL_PATH := $(strip $(shell dirname "$(realpath $(lastword $(MAKEFILE_LIST)))"))
PROJECT_DIR := $(shell basename `pwd`)
HOME_REMOTE_PATH := ~/${USER}
PROJECT_REMOTE_PATH := /root/${USER}/${PROJECT_DIR}
#INDEX_REMOTE_PATH := /raid/${USER}/qpick-1b-test
INDEX_REMOTE_PATH := /raid/qpick/output
QPICK_BRANCH := master
TMUXW := 0
.PHONY: install/req
install/req:
ssh root@${IP} "tmux new -d -s qpick || true && tmux select-window -t qpick:${TMUXW} \
|| tmux new-window -n ${TMUXW} && \
tmux send -t qpick:${TMUXW} 'apt-get update && apt-get install -y libxml2-dev python3-pip' ENTER && \
tmux send -t qpick:${TMUXW} 'cd ${PROJECT_REMOTE_PATH} && source env.sh' ENTER && \
tmux send -t qpick:${TMUXW} 'cd ${PROJECT_REMOTE_PATH}/scripts' ENTER && \
tmux send -t qpick:${TMUXW} 'export LC_ALL="en_US.UTF-8"' ENTER && \
tmux send -t qpick:${TMUXW} 'python3 -m pip install pip --upgrade --ignore-installed' ENTER && \
tmux send -t qpick:${TMUXW} 'PIP_INDEX_URL=\$$PIP_INDEX_URL \
PIP_TRUSTED_HOST=\$$PIP_TRUSTED_HOST \
python3 -m pip install -v -q -r requirements.txt --ignore-installed' ENTER"
.PHONY: download/data
download/data:
ssh root@${IP} "mkdir -p ${INDEX_REMOTE_PATH} && \
tmux new -d -s qpick || true && tmux select-window -t qpick:${TMUXW} \
|| tmux new-window -n ${TMUXW} && \
tmux send -t qpick:${TMUXW} 'cd ${PROJECT_REMOTE_PATH} && source env.sh' ENTER && \
tmux send -t qpick:${TMUXW} 'cd ${INDEX_REMOTE_PATH}' ENTER && \
tmux send -t qpick:${TMUXW} 'aws s3 cp \$$INDEX_S3_DATA/gt/tq32.merged .' ENTER && \
tmux send -t qpick:${TMUXW} 'aws s3 cp \$$INDEX_S3_DATA/gt/input_queries.txt .' ENTER && \
tmux send -t qpick:${TMUXW} 'aws s3 cp \
\$$INDEX_S3_DATA/shard-input/20190602/qpick_input.woid.gz .' ENTER"
.PHONY: download/ws
download/ws:
ssh root@${IP} "mkdir -p ${INDEX_REMOTE_PATH}/index && \
tmux new -d -s qpick || true && tmux select-window -t qpick:${TMUXW} \
|| tmux new-window -n ${TMUXW} && \
tmux send -t qpick:${TMUXW} 'cd ${PROJECT_REMOTE_PATH} && source env.sh' ENTER && \
tmux send -t qpick:${TMUXW} 'cd ${INDEX_REMOTE_PATH}/index' ENTER && \
tmux send -t qpick:${TMUXW} 'aws s3 cp \$$INDEX_S3_QPICK/stopwords.txt .' ENTER && \
tmux send -t qpick:${TMUXW} 'aws s3 cp \$$INDEX_S3_QPICK/config.json .' ENTER && \
tmux send -t qpick:${TMUXW} 'aws s3 cp \$$INDEX_S3_QPICK/terms_relevance.fst .' ENTER"
.PHONY: qpick/rsync
qpick/rsync:
ssh root@${IP} "mkdir -p ${PROJECT_REMOTE_PATH}"
rsync -arvz \
--exclude='.git' \
--exclude='index' \
--exclude='target' \
--exclude='parts' \
--exclude='.data' \
--exclude='build' \
--exclude='dist' \
--exclude='*.egg-info' \
--filter=': -.gitignore' \
${PROJECT_LOCAL_PATH} root@${IP}:${HOME_REMOTE_PATH}
.PHONY: update/bin
update/bin:
ssh root@${IP} "tmux send -t qpick:${TMUXW} 'cd ${PROJECT_REMOTE_PATH} && \
cargo build --release --manifest-path ./bin/Cargo.toml --verbose' ENTER && \
tmux send -t qpick:${TMUXW} 'cd ${INDEX_REMOTE_PATH} && \
cp ${PROJECT_REMOTE_PATH}/bin/target/release/qpick ${INDEX_REMOTE_PATH}' ENTER"
.PHONY: update/dev
update/dev: qpick/rsync update/bin
.PHONY: ssh/qpick/clone
ssh/qpick/clone:
ssh root@${IP} "mkdir -p ${HOME_REMOTE_PATH} && \
cd ${HOME_REMOTE_PATH} && \
rm -rf qpick && git clone https://github.com/dncc/qpick.git && \
cd qpick && git checkout ${QPICK_BRANCH}"
.PHONY: ssh/build/dep
ssh/build/dep:
ssh root@${IP} "mkdir -p ${HOME_REMOTE_PATH} && \
cd ${HOME_REMOTE_PATH}/qpick && \
apt-get update && \
apt-get install -y libffi-dev libopenblas-dev && \
curl https://sh.rustup.rs -sSf | sh -s -- -y"
.PHONY: ssh/build/qpick
ssh/build/qpick:
ssh root@${IP} "PATH=~/.cargo/bin:${PATH} && \
cd ${HOME_REMOTE_PATH}/qpick && \
cargo build --release && \
cargo build --release --manifest-path ./bin/Cargo.toml --verbose"
.PHONY: ssh/build/pyqpick
ssh/build/pyqpick:
ssh root@${IP} "PATH=~/.cargo/bin:${PATH} && \
cd ${HOME_REMOTE_PATH}/qpick/python_bindings && \
python3 setup.py install"
.PHONY: ssh/index
ssh/index:
ssh root@${IP} "tmux send -t qpick:${TMUXW} 'PATH=~/.cargo/bin:${PATH}' ENTER && \
tmux send -t qpick:${TMUXW} 'mkdir -p /raid/tmp && export TMPDIR=/raid/tmp' ENTER && \
tmux send -t qpick:${TMUXW} 'cd ${PROJECT_REMOTE_PATH} && \
cp scripts/index.sh index.sh && ./index.sh' ENTER"
PHONY: ssh/install/test
ssh/install/test: qpick/rsync install/req download/data download/ws ssh/build/dep ssh/build/qpick ssh/build/pyqpick
PHONY: ssh/install/branch
ssh/install/qpick: ssh/qpick/clone ssh/build/dep ssh/build/qpick ssh/build/pyqpick
# ================ localhost =================
.PHONY: install/rust
install/rust:
sudo apt-get install libffi-dev
curl https://sh.rustup.rs -sSf | sh -s -- -y
export PATH=~/.cargo/bin:${PATH}
.PHONY: clone/qpick
clone/qpick:
ssh root@${IP} "mkdir -p ${HOME_REMOTE_PATH} && \
cd ${HOME_REMOTE_PATH} && \
rm -rf qpick && git clone https://github.com/dncc/qpick.git && \
cd qpick && git checkout ${QPICK_BRANCH}"
.PHONY: build/qpick
build/qpick:
PATH=~/.cargo/bin:${PATH}
cargo build --release
cargo build --release --manifest-path ./bin/Cargo.toml --verbose
.PHONY: build/pyqpick
build/pyqpick:
cd python_bindings && python setup.py install
.PHONY: build/goqpick
build/goqpick:
cd golang_service && make
.PHONY: install
install: build/qpick build/pyqpick