-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
86 lines (81 loc) · 4.86 KB
/
Makefile
File metadata and controls
86 lines (81 loc) · 4.86 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
# MobilityAPI build & vendoring targets
MEOS_API_REPO ?= https://github.com/MobilityDB/MEOS-API
MEOS_API_REF ?= master
MEOS_API_PR5 ?= refs/pull/5/head # MEOS-API PR #5 (OpenAPI projection)
MEOS_API_PR4 ?= refs/pull/4/head # MEOS-API PR #4 (enrichment)
MEOS_API_PR13 ?= refs/pull/13/head # MEOS-API PR #13 (OGC MovFeat projection)
MOBILITYDB_REPO ?= https://github.com/MobilityDB/MobilityDB
MOBILITYDB_REF ?= master
VENDOR_DIR := vendor/meos-api
.PHONY: vendor-meos-api vendor-meos-api-from-prs vendor-meos-api-movfeat
# Regenerate vendored MEOS-API artefacts from MEOS-API + MobilityDB headers.
#
# `output/*.json` is .gitignore'd in MEOS-API (generated by `python3 run.py
# <path-to-meos-include>`), so we have to:
# 1. clone MEOS-API at the requested ref,
# 2. clone MobilityDB at the requested ref so MEOS-API's parser can read its
# headers (`meos/include/`),
# 3. install libclang,
# 4. run `python3 run.py <MobilityDB-headers-path>` to produce output/*.json,
# 5. copy the JSON artefacts into $(VENDOR_DIR).
vendor-meos-api:
@echo "[vendor] regenerating meos-api artefacts from"
@echo " MEOS-API: $(MEOS_API_REPO)@$(MEOS_API_REF)"
@echo " MobilityDB: $(MOBILITYDB_REPO)@$(MOBILITYDB_REF) (headers source)"
@mkdir -p $(VENDOR_DIR)
@tmpdir=$$(mktemp -d) && \
git clone --depth 1 --branch $(MEOS_API_REF) $(MEOS_API_REPO) $$tmpdir/meos-api && \
git clone --depth 1 --branch $(MOBILITYDB_REF) $(MOBILITYDB_REPO) $$tmpdir/mobilitydb && \
cd $$tmpdir/meos-api && \
pip install --quiet --user -r requirements.txt && \
python3 run.py $$tmpdir/mobilitydb/meos/include && \
if [ -f report.py ]; then python3 report.py $$tmpdir/mobilitydb/meos/include || true; fi && \
if [ -f object_model_parity.py ]; then python3 object_model_parity.py || true; fi && \
cp -v output/meos-idl.json $(CURDIR)/$(VENDOR_DIR)/ && \
( [ -f output/meos-coverage.json ] && cp -v output/meos-coverage.json $(CURDIR)/$(VENDOR_DIR)/ || true ) && \
( [ -f output/meos-object-model-parity.json ] && cp -v output/meos-object-model-parity.json $(CURDIR)/$(VENDOR_DIR)/ || true ) && \
cd $(CURDIR) && rm -rf $$tmpdir
@echo "[vendor] done — $(VENDOR_DIR) refreshed"
# Fetch the enriched catalog + OpenAPI projection from the open PR branches
# (PR #4 ships parser/enrich.py, PR #5 ships generate_openapi.py).
vendor-meos-api-from-prs:
@echo "[vendor] fetching from open PR branches (#4 enrichment + #5 OpenAPI)"
@mkdir -p $(VENDOR_DIR)
@tmpdir=$$(mktemp -d) && \
git clone $(MEOS_API_REPO) $$tmpdir/meos-api && \
git clone --depth 1 --branch $(MOBILITYDB_REF) $(MOBILITYDB_REPO) $$tmpdir/mobilitydb && \
cd $$tmpdir/meos-api && \
git fetch origin $(MEOS_API_PR4):pr4 $(MEOS_API_PR5):pr5 && \
git checkout pr5 && \
git merge --no-edit pr4 || true && \
pip install --quiet --user -r requirements.txt && \
python3 run.py $$tmpdir/mobilitydb/meos/include && \
python3 generate_openapi.py && \
cp -v output/meos-idl.json $(CURDIR)/$(VENDOR_DIR)/ && \
( [ -f output/meos-coverage.json ] && cp -v output/meos-coverage.json $(CURDIR)/$(VENDOR_DIR)/ || true ) && \
( [ -f output/meos-object-model-parity.json ] && cp -v output/meos-object-model-parity.json $(CURDIR)/$(VENDOR_DIR)/ || true ) && \
( [ -f output/meos-openapi.json ] && cp -v output/meos-openapi.json $(CURDIR)/$(VENDOR_DIR)/ || true ) && \
cd $(CURDIR) && rm -rf $$tmpdir
@echo "[vendor] done — $(VENDOR_DIR) refreshed from PRs #4 + #5"
# Fetch the OGC API – Moving Features OpenAPI projection from MEOS-API PR #13
# (`generate_movfeat_openapi.py` + `generator/movfeat.py`). This is the contract
# the OGC endpoints dispatch against; it is generated, not committed, so it is
# produced on the merged PR #4 (enrichment) + #5 (OpenAPI) + #13 (MovFeat) tree.
vendor-meos-api-movfeat:
@echo "[vendor] generating meos-movfeat-openapi.json from MEOS-API PR #13"
@mkdir -p $(VENDOR_DIR)
@tmpdir=$$(mktemp -d) && \
git clone $(MEOS_API_REPO) $$tmpdir/meos-api && \
git clone --depth 1 --branch $(MOBILITYDB_REF) $(MOBILITYDB_REPO) $$tmpdir/mobilitydb && \
cd $$tmpdir/meos-api && \
git fetch origin $(MEOS_API_PR4):pr4 $(MEOS_API_PR5):pr5 $(MEOS_API_PR13):pr13 && \
git checkout pr13 && \
git merge --no-edit pr5 pr4 || true && \
pip install --quiet --user -r requirements.txt && \
python3 run.py $$tmpdir/mobilitydb/meos/include && \
python3 generate_openapi.py && \
python3 generate_movfeat_openapi.py && \
( [ -f output/meos-movfeat-openapi.json ] && cp -v output/meos-movfeat-openapi.json $(CURDIR)/$(VENDOR_DIR)/ || \
{ echo "::error::generate_movfeat_openapi.py produced no output/meos-movfeat-openapi.json"; exit 1; } ) && \
cd $(CURDIR) && rm -rf $$tmpdir
@echo "[vendor] done — $(VENDOR_DIR)/meos-movfeat-openapi.json refreshed from PR #13"