include build/source-files.mk PROFILE = release # rustfmt runs in a container pinned to a specific nightly (our rustfmt.toml uses # nightly-only options); prettier and taplo are pinned via npm and run natively. # Set FMT_NATIVE=1 to run rustfmt on the host instead. FMT := ./build/fmt/run-fmt.sh PLATFORM_FILE := $(shell ./build/env/check-platform.sh) ENVIRONMENT_FILE := $(shell ./build/env/check-environment.sh) GIT_HASH_FILE := $(shell ./build/env/check-git-hash.sh) VERSION_FILE := $(shell ./build/env/check-version.sh) BASENAME := $(shell PROJECT=startos ./build/env/basename.sh) PLATFORM := $(shell if [ -f $(PLATFORM_FILE) ]; then cat $(PLATFORM_FILE); else echo unknown; fi) ARCH := $(shell if [ "$(PLATFORM)" = "raspberrypi" ]; then echo aarch64; elif [ "$(PLATFORM)" = "rockchip64" ]; then echo aarch64; else echo $(PLATFORM) | sed 's/-nonfree$$//g; s/-nvidia$$//g'; fi) RUST_ARCH := $(shell if [ "$(ARCH)" = "riscv64" ]; then echo riscv64gc; else echo $(ARCH); fi) REGISTRY_BASENAME := $(shell PROJECT=start-registry PLATFORM=$(ARCH) ./build/env/basename.sh) TUNNEL_BASENAME := $(shell PROJECT=start-tunnel PLATFORM=$(ARCH) ./build/env/basename.sh) CLI_BASENAME := $(shell PROJECT=start-cli PLATFORM=$(ARCH) ./build/env/basename.sh) RUST_BUILDER_INPUTS := build/rust-builder/image.sh build/rust-builder/repository build/rust-builder/reference # Every Rust binary tracks its transitive path dependencies. BACKUP_PROTOCOL_SRC := $(call ls-files, shared-libs/crates/backup-fs-protocol) CORE_SRC := $(call ls-files, shared-libs/crates/start-core) $(BACKUP_PROTOCOL_SRC) \ $(call ls-files, shared-libs/crates/exver) \ $(call ls-files, shared-libs/crates/imbl-value) \ $(call ls-files, shared-libs/crates/jsonpath) \ $(call ls-files, shared-libs/crates/rpc-toolkit) \ $(call ls-files, shared-libs/crates/visit-rs) \ $(call ls-files, shared-libs/crates/visit-rs-derive) \ $(call ls-files, shared-libs/crates/yasi) \ $(call ls-files, shared-libs/crates/patch-db) build/builder-alias.sh $(RUST_BUILDER_INPUTS) $(GIT_HASH_FILE) PATCH_DB_CLIENT_SRC := $(call ls-files, shared-libs/crates/patch-db/client) GZIP_BIN := $(shell which pigz || which gzip) TAR_BIN := $(shell which gtar || which tar) ifeq ($(REMOTE),) mkdir = mkdir -p $1 rm = rm -rf $1 cp = cp -r $1 $2 ln = ln -sf $1 $2 else ifeq ($(SSHPASS),) ssh = ssh $(REMOTE) $1 else ssh = sshpass -p $(SSHPASS) ssh $(REMOTE) $1 endif mkdir = $(call ssh,'sudo mkdir -p $1') rm = $(call ssh,'sudo rm -rf $1') ln = $(call ssh,'sudo ln -sf $1 $2') define cp $(TAR_BIN) --transform "s|^$1|x|" -czv -f- $1 | $(call ssh,"sudo tar --transform 's|^x|$2|' -xzv -f- -C /") endef endif define install-bash-completion $(call mkdir,$(DESTDIR)/usr/share/bash-completion/completions) $(call cp,build/bash-completion,$(DESTDIR)/usr/share/bash-completion/completions/$1) endef .DELETE_ON_ERROR: shared-libs/crates/patch-db/client/node_modules/.package-lock.json: shared-libs/crates/patch-db/client/package.json npm --prefix shared-libs/crates/patch-db/client ci touch shared-libs/crates/patch-db/client/node_modules/.package-lock.json shared-libs/crates/patch-db/client/dist/index.js: $(PATCH_DB_CLIENT_SRC) shared-libs/crates/patch-db/client/node_modules/.package-lock.json rm -rf shared-libs/crates/patch-db/client/dist npm --prefix shared-libs/crates/patch-db/client run build touch shared-libs/crates/patch-db/client/dist/index.js