-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathMakefile
More file actions
84 lines (67 loc) · 2.79 KB
/
Copy pathMakefile
File metadata and controls
84 lines (67 loc) · 2.79 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
PG_CONFIG ?= pg_config
PG_LIB := $(shell $(PG_CONFIG) --pkglibdir)
BUILD_TYPE ?= release
PGRX_PROFILE_FLAG := $(if $(filter release,$(BUILD_TYPE)),--release,--profile $(BUILD_TYPE))
.PHONY: all check-cargo-pgrx build install install-ducklake-ext check-regression clean-regression \
installcheck build-daemon check-daemon clean-daemon installcheck-all format clean
all: build
check-cargo-pgrx:
@if ! command -v cargo-pgrx >/dev/null 2>&1; then \
echo "cargo-pgrx is not installed."; \
echo "Hint: cargo install cargo-pgrx --version 0.16.1 --locked"; \
echo "Hint: PG_CONFIG=$PG_CONFIG cargo pgrx init"; \
exit 1; \
fi
build: check-cargo-pgrx
# Point duckdb-rs (non-bundled) at the shared libduckdb shipped by pg_ducklake.
# macOS: make the lib findable at link-time for the pgrx_embed SQL-gen binary.
cd duckpipe-pg && \
DUCKDB_LIB_DIR="$(PG_LIB)" \
DYLD_LIBRARY_PATH="$(PG_LIB):$(DYLD_LIBRARY_PATH)" \
cargo pgrx install $(PGRX_PROFILE_FLAG) --pg-config=$(PG_CONFIG)
# Build ducklake.duckdb_extension and install to pkglibdir.
# Skips if already present. Clones pg_ducklake on demand if DUCKLAKE_REPO is not set.
DUCKLAKE_GIT_URL ?= https://github.com/relytcloud/pg_ducklake.git
PGDUCKLAKE_COMMIT ?= 20d799e673639fb0c36a3b31db413e45057a10ed
install-ducklake-ext:
@if [ -f "$(PG_LIB)/ducklake.duckdb_extension" ] && [ "$${FORCE:-0}" != "1" ]; then \
echo "==> ducklake.duckdb_extension already in $(PG_LIB). Skipping (set FORCE=1 to rebuild)."; \
else \
repo="$(DUCKLAKE_REPO)"; \
if [ -z "$$repo" ]; then \
if [ -d deps/pg_ducklake ]; then \
echo "==> Using existing deps/pg_ducklake"; \
else \
echo "==> Cloning pg_ducklake @ $(PGDUCKLAKE_COMMIT) into deps/ ..."; \
mkdir -p deps && \
git init deps/pg_ducklake && \
git -C deps/pg_ducklake remote add origin "$(DUCKLAKE_GIT_URL)" && \
git -C deps/pg_ducklake fetch --depth 1 origin "$(PGDUCKLAKE_COMMIT)" && \
git -C deps/pg_ducklake checkout FETCH_HEAD && \
git -C deps/pg_ducklake submodule update --init --recursive --depth 1; \
fi; \
repo="$$(cd deps/pg_ducklake && pwd)"; \
fi; \
DUCKLAKE_REPO="$$repo" FORCE=1 docker/build-ducklake-ext.sh "$(PG_LIB)"; \
fi
install: build install-ducklake-ext
check-regression:
$(MAKE) -C test/regression check-regression
clean-regression:
$(MAKE) -C test/regression clean-regression
installcheck: install
$(MAKE) check-regression
build-daemon:
DUCKDB_LIB_DIR="$(PG_LIB)" \
DYLD_LIBRARY_PATH="$(PG_LIB):$(DYLD_LIBRARY_PATH)" \
LD_LIBRARY_PATH="$(PG_LIB):$(LD_LIBRARY_PATH)" \
cargo build --release -p duckpipe-daemon
check-daemon:
$(MAKE) -C test/daemon check-daemon PG_CONFIG=$(PG_CONFIG)
clean-daemon:
$(MAKE) -C test/daemon clean-daemon
installcheck-all: installcheck check-daemon
format:
cd duckpipe-pg && cargo fmt
clean:
cd duckpipe-pg && cargo clean