-
Notifications
You must be signed in to change notification settings - Fork 6
/
Makefile
168 lines (130 loc) · 3.85 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
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
HS_SRC_DIR = app src test
HS_O = --fast
POETRYPATH = ml/synthesis
PYTHONPATH = ml/synthesis/src
POETRY = poetry -C $(POETRYPATH)
PYTHON = PYTHONPATH=$(PYTHONPATH) $(POETRY) run python3
ML_CRAWL_DATA_PATH = ml/synthesis/data
ML_MODEL_PATH = ml/synthesis/models
ML_MODEL = $(shell ls -t $(ML_MODEL_PATH) | grep model | head -n 1)
PLATFORM := $(shell uname -s)
.PHONY: all build run test format clean
all: format build test lint
############################################################
## nitta
############################################################
build:
stack build --fast --keep-going \
--haddock --no-haddock-deps \
--copy-bins --coverage \
--test --no-run-tests
build-prod:
stack build --ghc-options="-O2"
test:
stack build --coverage --test $(HS_O)
find src -name '*.hs' -exec grep -l '>>>' {} \; | xargs -t -L 1 -P 4 stack exec doctest
format:
fourmolu -m inplace $(HS_SRC_DIR)
format-check:
fourmolu -m check $(HS_SRC_DIR)
lint:
hlint $(HS_SRC_DIR)
stack exec weeder
clean:
stack clean
benchmark:
$(PYTHON) $(PYTHONPATH)/scripts/evaluate_nitta_synthesis.py \
ml/synthesis/src/scripts/evaluation_configs/demo.json
benchmark-report:
$(PYTHON) $(PYTHONPATH)/scripts/compare_evaluations.py \
evaluation/*.csv
############################################################
## nitta ui
############################################################
ui-build:
stack exec nitta-api-gen -- -v
yarn --cwd web run build
ui-run:
stack exec nitta-api-gen -- -v
yarn --cwd web start
ui-format:
yarn --cwd web exec -s prettier -- --write 'web/src/**/*.{ts,tsx}' --ignore-path web/.gitignore
ui-format-check:
yarn --cwd web exec -s prettier -- --check 'web/src/**/*.{ts,tsx}' --ignore-path web/.gitignore
############################################################
## nitta ml
############################################################
ml-crawl-data:
$(PYTHON) -m scripts.crawl_data_by_tree_sampling_many
ml-train-model:
$(PYTHON) -m scripts.train_model
ml-format:
$(POETRY) run black $(PYTHONPATH)
ml-format-check:
$(POETRY) run black --check --diff $(PYTHONPATH)
ml-lint:
$(POETRY) run ruff $(PYTHONPATH)
$(POETRY) run mypy --config-file ml/synthesis/pyproject.toml $(PYTHONPATH)
cd $(POETRYPATH) && poetry run vulture
ml-nitta:
echo 'Model for Synthesis: ' $(ML_MODEL)
$(POETRY) shell
MODELS_DIR=$(ML_MODEL_PATH) PYTHONPATH=$(PYTHONPATH) stack exec nitta -- examples/teacup.lua -s ml_$(ML_MODEL) -p=8080
ml-clean:
rm -rfv $(ML_CRAWL_DATA_PATH) $(ML_MODEL_PATH) .ml_backend_base_url
############################################################
## docker development image
############################################################
docker-dev-build-for-linux-win:
docker build \
--target development \
-f ml/synthesis/Dockerfile \
--build-arg HOST_UID=$(shell id -u) \
--build-arg HOST_GID=$(shell id -g) \
-t nitta-dev \
.
docker-dev-build-for-mac:
docker build \
--target development \
-f ml/synthesis/Dockerfile \
-t nitta-dev \
.
docker-dev-build:
echo Platform: $(PLATFORM)
ifeq ($(PLATFORM),Darwin)
make docker-dev-build-for-mac
else
make docker-dev-build-for-linux-win
endif
docker-dev-build-with-gpu-for-linux-win:
docker build \
--target development-gpu \
-f ml/synthesis/Dockerfile \
--build-arg HOST_UID=$(shell id -u) \
--build-arg HOST_GID=$(shell id -g) \
-t nitta-dev \
.
docker-dev-build-with-gpu:
echo Platform: $(PLATFORM)
ifeq ($(PLATFORM),Darwin)
echo "GPU is not supported on Mac, use `docker-dev-build`"
else
make docker-dev-build-with-gpu-for-linux-win
endif
docker-dev-run:
docker run \
--name=nitta-dev-container \
-p 31032:22 \
-v="$(PWD):/app" \
-v="nitta-devuser-home:/home/devuser" \
-it \
nitta-dev
docker-dev-run-with-gpu:
docker run \
--name=nitta-dev-container \
--gpus=all \
-p 31032:22 \
-v="$(PWD):/app" \
-v="nitta-devuser-home:/home/devuser" \
-it \
nitta-dev