mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-26 10:21:52 +00:00
398 lines
21 KiB
Makefile
398 lines
21 KiB
Makefile
ls-files = $(shell git ls-files --cached --others --exclude-standard $1)
|
|
PROFILE = release
|
|
|
|
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)
|
|
IMAGE_TYPE=$(shell if [ "$(PLATFORM)" = raspberrypi ]; then echo img; else echo iso; fi)
|
|
WEB_UIS := web/dist/raw/ui/index.html web/dist/raw/setup-wizard/index.html
|
|
COMPRESSED_WEB_UIS := web/dist/static/ui/index.html web/dist/static/setup-wizard/index.html
|
|
FIRMWARE_ROMS := build/lib/firmware/$(PLATFORM) $(shell jq --raw-output '.[] | select(.platform[] | contains("$(PLATFORM)")) | "./build/lib/firmware/$(PLATFORM)/" + .id + ".rom.gz"' build/lib/firmware.json)
|
|
TOR_S9PK := build/lib/tor_$(ARCH).s9pk
|
|
BUILD_SRC := $(call ls-files, build/lib) build/lib/depends build/lib/conflicts $(FIRMWARE_ROMS) $(TOR_S9PK)
|
|
IMAGE_RECIPE_SRC := $(call ls-files, build/image-recipe/)
|
|
STARTD_SRC := core/startd.service $(BUILD_SRC)
|
|
CORE_SRC := $(call ls-files, core) $(shell git ls-files --recurse-submodules patch-db) $(GIT_HASH_FILE)
|
|
WEB_SHARED_SRC := $(call ls-files, web/projects/shared) $(call ls-files, web/projects/marketplace) $(shell ls -p web/ | grep -v / | sed 's/^/web\//g') web/node_modules/.package-lock.json web/config.json patch-db/client/dist/index.js sdk/baseDist/package.json web/patchdb-ui-seed.json sdk/dist/package.json
|
|
WEB_UI_SRC := $(call ls-files, web/projects/ui)
|
|
WEB_SETUP_WIZARD_SRC := $(call ls-files, web/projects/setup-wizard)
|
|
WEB_START_TUNNEL_SRC := $(call ls-files, web/projects/start-tunnel)
|
|
PATCH_DB_CLIENT_SRC := $(shell git ls-files --recurse-submodules patch-db/client)
|
|
GZIP_BIN := $(shell which pigz || which gzip)
|
|
TAR_BIN := $(shell which gtar || which tar)
|
|
COMPILED_TARGETS := core/target/$(RUST_ARCH)-unknown-linux-musl/$(PROFILE)/startbox core/target/$(RUST_ARCH)-unknown-linux-musl/release/start-container container-runtime/rootfs.$(ARCH).squashfs
|
|
STARTOS_TARGETS := $(STARTD_SRC) $(ENVIRONMENT_FILE) $(GIT_HASH_FILE) $(VERSION_FILE) $(COMPILED_TARGETS) target/$(RUST_ARCH)-unknown-linux-musl/release/startos-backup-fs $(PLATFORM_FILE) \
|
|
$(shell if [ "$(PLATFORM)" = "raspberrypi" ]; then \
|
|
echo target/aarch64-unknown-linux-musl/release/pi-beep; \
|
|
fi) \
|
|
$(shell /bin/bash -c 'if [[ "${ENVIRONMENT}" =~ (^|-)unstable($$|-) ]]; then \
|
|
echo target/$(RUST_ARCH)-unknown-linux-musl/release/flamegraph; \
|
|
fi') \
|
|
$(shell /bin/bash -c 'if [[ "${ENVIRONMENT}" =~ (^|-)console($$|-) ]]; then \
|
|
echo target/$(RUST_ARCH)-unknown-linux-musl/release/tokio-console; \
|
|
fi')
|
|
REGISTRY_TARGETS := core/target/$(RUST_ARCH)-unknown-linux-musl/$(PROFILE)/registrybox core/start-registryd.service
|
|
TUNNEL_TARGETS := core/target/$(RUST_ARCH)-unknown-linux-musl/$(PROFILE)/tunnelbox core/start-tunneld.service
|
|
|
|
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
|
|
|
|
.DELETE_ON_ERROR:
|
|
|
|
.PHONY: all metadata install clean format install-cli cli uis ui reflash deb $(IMAGE_TYPE) squashfs wormhole wormhole-deb test test-core test-sdk test-container-runtime registry install-registry tunnel install-tunnel ts-bindings
|
|
|
|
all: $(STARTOS_TARGETS)
|
|
|
|
touch:
|
|
touch $(STARTOS_TARGETS)
|
|
|
|
metadata: $(VERSION_FILE) $(PLATFORM_FILE) $(ENVIRONMENT_FILE) $(GIT_HASH_FILE)
|
|
|
|
clean:
|
|
rm -rf core/target
|
|
rm -rf core/bindings
|
|
rm -rf web/.angular
|
|
rm -f web/config.json
|
|
rm -rf web/node_modules
|
|
rm -rf web/dist
|
|
rm -rf patch-db/client/node_modules
|
|
rm -rf patch-db/client/dist
|
|
rm -rf patch-db/target
|
|
rm -rf target
|
|
rm -rf dpkg-workdir
|
|
rm -rf image-recipe/deb
|
|
rm -rf results
|
|
rm -rf build/lib/firmware
|
|
rm -rf container-runtime/dist
|
|
rm -rf container-runtime/node_modules
|
|
rm -f container-runtime/*.squashfs
|
|
(cd sdk && make clean)
|
|
rm -f env/*.txt
|
|
|
|
format:
|
|
cd core && cargo +nightly fmt
|
|
|
|
test: | test-core test-sdk test-container-runtime
|
|
|
|
test-core: $(CORE_SRC) $(ENVIRONMENT_FILE)
|
|
./core/run-tests.sh
|
|
|
|
test-sdk: $(call ls-files, sdk) sdk/base/lib/osBindings/index.ts
|
|
cd sdk && make test
|
|
|
|
test-container-runtime: container-runtime/node_modules/.package-lock.json $(call ls-files, container-runtime/src) container-runtime/package.json container-runtime/tsconfig.json
|
|
cd container-runtime && npm test
|
|
|
|
install-cli: $(GIT_HASH_FILE)
|
|
./core/build/build-cli.sh --install
|
|
|
|
cli: $(GIT_HASH_FILE)
|
|
./core/build/build-cli.sh
|
|
|
|
registry: core/target/$(RUST_ARCH)-unknown-linux-musl/$(PROFILE)/registrybox
|
|
|
|
install-registry: $(REGISTRY_TARGETS)
|
|
$(call mkdir,$(DESTDIR)/usr/bin)
|
|
$(call cp,core/target/$(RUST_ARCH)-unknown-linux-musl/$(PROFILE)/registrybox,$(DESTDIR)/usr/bin/start-registrybox)
|
|
$(call ln,/usr/bin/start-registrybox,$(DESTDIR)/usr/bin/start-registryd)
|
|
$(call ln,/usr/bin/start-registrybox,$(DESTDIR)/usr/bin/start-registry)
|
|
|
|
$(call mkdir,$(DESTDIR)/lib/systemd/system)
|
|
$(call cp,core/start-registryd.service,$(DESTDIR)/lib/systemd/system/start-registryd.service)
|
|
|
|
core/target/$(RUST_ARCH)-unknown-linux-musl/$(PROFILE)/registrybox: $(CORE_SRC) $(ENVIRONMENT_FILE)
|
|
ARCH=$(ARCH) PROFILE=$(PROFILE) ./core/build/build-registrybox.sh
|
|
|
|
tunnel: core/target/$(RUST_ARCH)-unknown-linux-musl/$(PROFILE)/tunnelbox
|
|
|
|
install-tunnel: core/target/$(RUST_ARCH)-unknown-linux-musl/$(PROFILE)/tunnelbox core/start-tunneld.service
|
|
$(call mkdir,$(DESTDIR)/usr/bin)
|
|
$(call cp,core/target/$(RUST_ARCH)-unknown-linux-musl/$(PROFILE)/tunnelbox,$(DESTDIR)/usr/bin/start-tunnelbox)
|
|
$(call ln,/usr/bin/start-tunnelbox,$(DESTDIR)/usr/bin/start-tunneld)
|
|
$(call ln,/usr/bin/start-tunnelbox,$(DESTDIR)/usr/bin/start-tunnel)
|
|
|
|
$(call mkdir,$(DESTDIR)/lib/systemd/system)
|
|
$(call cp,core/start-tunneld.service,$(DESTDIR)/lib/systemd/system/start-tunneld.service)
|
|
|
|
$(call mkdir,$(DESTDIR)/usr/lib/startos/scripts)
|
|
$(call cp,build/lib/scripts/forward-port,$(DESTDIR)/usr/lib/startos/scripts/forward-port)
|
|
|
|
$(call mkdir,$(DESTDIR)/etc/apt/sources.list.d)
|
|
$(call cp,apt/start9.list,$(DESTDIR)/etc/apt/sources.list.d/start9.list)
|
|
$(call mkdir,$(DESTDIR)/usr/share/keyrings)
|
|
$(call cp,apt/start9.gpg,$(DESTDIR)/usr/share/keyrings/start9.gpg)
|
|
|
|
core/target/$(RUST_ARCH)-unknown-linux-musl/$(PROFILE)/tunnelbox: $(CORE_SRC) $(ENVIRONMENT_FILE) $(GIT_HASH_FILE) web/dist/static/start-tunnel/index.html
|
|
ARCH=$(ARCH) PROFILE=$(PROFILE) ./core/build/build-tunnelbox.sh
|
|
|
|
deb: results/$(BASENAME).deb
|
|
|
|
results/$(BASENAME).deb: debian/dpkg-build.sh $(call ls-files,debian/startos) $(STARTOS_TARGETS)
|
|
PLATFORM=$(PLATFORM) REQUIRES=debian ./build/os-compat/run-compat.sh ./debian/dpkg-build.sh
|
|
|
|
registry-deb: results/$(REGISTRY_BASENAME).deb
|
|
|
|
results/$(REGISTRY_BASENAME).deb: debian/dpkg-build.sh $(call ls-files,debian/start-registry) $(REGISTRY_TARGETS)
|
|
PROJECT=start-registry PLATFORM=$(ARCH) REQUIRES=debian DEPENDS=ca-certificates ./build/os-compat/run-compat.sh ./debian/dpkg-build.sh
|
|
|
|
tunnel-deb: results/$(TUNNEL_BASENAME).deb
|
|
|
|
results/$(TUNNEL_BASENAME).deb: debian/dpkg-build.sh $(call ls-files,debian/start-tunnel) $(TUNNEL_TARGETS) build/lib/scripts/forward-port
|
|
PROJECT=start-tunnel PLATFORM=$(ARCH) REQUIRES=debian DEPENDS=wireguard-tools,iptables,conntrack ./build/os-compat/run-compat.sh ./debian/dpkg-build.sh
|
|
|
|
$(IMAGE_TYPE): results/$(BASENAME).$(IMAGE_TYPE)
|
|
|
|
squashfs: results/$(BASENAME).squashfs
|
|
|
|
results/$(BASENAME).$(IMAGE_TYPE) results/$(BASENAME).squashfs: $(IMAGE_RECIPE_SRC) results/$(BASENAME).deb
|
|
ARCH=$(ARCH) ./build/image-recipe/run-local-build.sh "results/$(BASENAME).deb"
|
|
|
|
# For creating os images. DO NOT USE
|
|
install: $(STARTOS_TARGETS)
|
|
$(call mkdir,$(DESTDIR)/usr/bin)
|
|
$(call mkdir,$(DESTDIR)/usr/sbin)
|
|
$(call cp,core/target/$(RUST_ARCH)-unknown-linux-musl/$(PROFILE)/startbox,$(DESTDIR)/usr/bin/startbox)
|
|
$(call ln,/usr/bin/startbox,$(DESTDIR)/usr/bin/startd)
|
|
$(call ln,/usr/bin/startbox,$(DESTDIR)/usr/bin/start-cli)
|
|
if [ "$(PLATFORM)" = "raspberrypi" ]; then $(call cp,target/aarch64-unknown-linux-musl/release/pi-beep,$(DESTDIR)/usr/bin/pi-beep); fi
|
|
if /bin/bash -c '[[ "${ENVIRONMENT}" =~ (^|-)unstable($$|-) ]]'; then \
|
|
$(call cp,target/$(RUST_ARCH)-unknown-linux-musl/release/flamegraph,$(DESTDIR)/usr/bin/flamegraph); \
|
|
fi
|
|
if /bin/bash -c '[[ "${ENVIRONMENT}" =~ (^|-)console($$|-) ]]'; then \
|
|
$(call cp,target/$(RUST_ARCH)-unknown-linux-musl/release/tokio-console,$(DESTDIR)/usr/bin/tokio-console); \
|
|
fi
|
|
$(call cp,target/$(RUST_ARCH)-unknown-linux-musl/release/startos-backup-fs,$(DESTDIR)/usr/bin/startos-backup-fs)
|
|
$(call ln,/usr/bin/startos-backup-fs,$(DESTDIR)/usr/sbin/mount.backup-fs)
|
|
|
|
$(call mkdir,$(DESTDIR)/lib/systemd/system)
|
|
$(call cp,core/startd.service,$(DESTDIR)/lib/systemd/system/startd.service)
|
|
if /bin/bash -c '[[ "${ENVIRONMENT}" =~ (^|-)unstable($$|-) ]]'; then \
|
|
sed -i '/^Environment=/a Environment=RUST_BACKTRACE=full' $(DESTDIR)/lib/systemd/system/startd.service; \
|
|
fi
|
|
|
|
$(call mkdir,$(DESTDIR)/usr/lib)
|
|
$(call rm,$(DESTDIR)/usr/lib/startos)
|
|
$(call cp,build/lib,$(DESTDIR)/usr/lib/startos)
|
|
$(call mkdir,$(DESTDIR)/usr/lib/startos/container-runtime)
|
|
$(call cp,container-runtime/rootfs.$(ARCH).squashfs,$(DESTDIR)/usr/lib/startos/container-runtime/rootfs.squashfs)
|
|
|
|
$(call cp,build/env/PLATFORM.txt,$(DESTDIR)/usr/lib/startos/PLATFORM.txt)
|
|
$(call cp,build/env/ENVIRONMENT.txt,$(DESTDIR)/usr/lib/startos/ENVIRONMENT.txt)
|
|
$(call cp,build/env/GIT_HASH.txt,$(DESTDIR)/usr/lib/startos/GIT_HASH.txt)
|
|
$(call cp,build/env/VERSION.txt,$(DESTDIR)/usr/lib/startos/VERSION.txt)
|
|
|
|
update-overlay: $(STARTOS_TARGETS)
|
|
@echo "\033[33m!!! THIS WILL ONLY REFLASH YOUR DEVICE IN MEMORY !!!\033[0m"
|
|
@echo "\033[33mALL CHANGES WILL BE REVERTED IF YOU RESTART THE DEVICE\033[0m"
|
|
@if [ -z "$(REMOTE)" ]; then >&2 echo "Must specify REMOTE" && false; fi
|
|
@if [ "`ssh $(REMOTE) 'cat /usr/lib/startos/VERSION.txt'`" != "`cat $(VERSION_FILE)`" ]; then >&2 echo "StartOS requires migrations: update-overlay is unavailable." && false; fi
|
|
$(call ssh,"sudo systemctl stop startd")
|
|
$(MAKE) install REMOTE=$(REMOTE) SSHPASS=$(SSHPASS) PLATFORM=$(PLATFORM)
|
|
$(call ssh,"sudo systemctl start startd")
|
|
|
|
wormhole: core/target/$(RUST_ARCH)-unknown-linux-musl/$(PROFILE)/startbox
|
|
@echo "Paste the following command into the shell of your StartOS server:"
|
|
@echo
|
|
@wormhole send core/target/$(RUST_ARCH)-unknown-linux-musl/$(PROFILE)/startbox 2>&1 | awk -Winteractive '/wormhole receive/ { printf "sudo /usr/lib/startos/scripts/chroot-and-upgrade \"cd /usr/bin && rm startbox && wormhole receive --accept-file %s && chmod +x startbox\"\n", $$3 }'
|
|
|
|
wormhole-deb: results/$(BASENAME).deb
|
|
@echo "Paste the following command into the shell of your StartOS server:"
|
|
@echo
|
|
@wormhole send results/$(BASENAME).deb 2>&1 | awk -Winteractive '/wormhole receive/ { printf "sudo /usr/lib/startos/scripts/chroot-and-upgrade '"'"'cd $$(mktemp -d) && wormhole receive --accept-file %s && apt-get install -y --reinstall ./$(BASENAME).deb'"'"'\n", $$3 }'
|
|
|
|
wormhole-squashfs: results/$(BASENAME).squashfs
|
|
$(eval SQFS_SUM := $(shell b3sum results/$(BASENAME).squashfs | head -c 32))
|
|
$(eval SQFS_SIZE := $(shell du -s --bytes results/$(BASENAME).squashfs | awk '{print $$1}'))
|
|
@echo "Paste the following command into the shell of your StartOS server:"
|
|
@echo
|
|
@wormhole send results/$(BASENAME).squashfs 2>&1 | awk -Winteractive '/wormhole receive/ { printf "sudo sh -c '"'"'/usr/lib/startos/scripts/prune-images $(SQFS_SIZE) && /usr/lib/startos/scripts/prune-boot && cd /media/startos/images && wormhole receive --accept-file %s && CHECKSUM=$(SQFS_SUM) /usr/lib/startos/scripts/upgrade ./$(BASENAME).squashfs'"'"'\n", $$3 }'
|
|
|
|
update: $(STARTOS_TARGETS)
|
|
@if [ -z "$(REMOTE)" ]; then >&2 echo "Must specify REMOTE" && false; fi
|
|
$(call ssh,'sudo /usr/lib/startos/scripts/chroot-and-upgrade --create')
|
|
$(MAKE) install REMOTE=$(REMOTE) SSHPASS=$(SSHPASS) DESTDIR=/media/startos/next PLATFORM=$(PLATFORM)
|
|
$(call ssh,'sudo /media/startos/next/usr/lib/startos/scripts/chroot-and-upgrade --no-sync "apt-get install -y $(shell cat ./build/lib/depends)"')
|
|
|
|
update-startbox: core/target/$(RUST_ARCH)-unknown-linux-musl/$(PROFILE)/startbox # only update binary (faster than full update)
|
|
@if [ -z "$(REMOTE)" ]; then >&2 echo "Must specify REMOTE" && false; fi
|
|
$(call ssh,'sudo /usr/lib/startos/scripts/chroot-and-upgrade --create')
|
|
$(call cp,core/target/$(RUST_ARCH)-unknown-linux-musl/$(PROFILE)/startbox,/media/startos/next/usr/bin/startbox)
|
|
$(call ssh,'sudo /media/startos/next/usr/lib/startos/scripts/chroot-and-upgrade --no-sync true')
|
|
|
|
update-deb: results/$(BASENAME).deb # better than update, but only available from debian
|
|
@if [ -z "$(REMOTE)" ]; then >&2 echo "Must specify REMOTE" && false; fi
|
|
$(call ssh,'sudo /usr/lib/startos/scripts/chroot-and-upgrade --create')
|
|
$(call mkdir,/media/startos/next/var/tmp/startos-deb)
|
|
$(call cp,results/$(BASENAME).deb,/media/startos/next/var/tmp/startos-deb/$(BASENAME).deb)
|
|
$(call ssh,'sudo /media/startos/next/usr/lib/startos/scripts/chroot-and-upgrade --no-sync "apt-get install -y --reinstall /var/tmp/startos-deb/$(BASENAME).deb"')
|
|
|
|
update-squashfs: results/$(BASENAME).squashfs
|
|
@if [ -z "$(REMOTE)" ]; then >&2 echo "Must specify REMOTE" && false; fi
|
|
$(eval SQFS_SUM := $(shell b3sum results/$(BASENAME).squashfs | head -c 32))
|
|
$(eval SQFS_SIZE := $(shell du -s --bytes results/$(BASENAME).squashfs | awk '{print $$1}'))
|
|
$(call ssh,'sudo /usr/lib/startos/scripts/prune-images $(SQFS_SIZE)')
|
|
$(call ssh,'sudo /usr/lib/startos/scripts/prune-boot')
|
|
$(call cp,results/$(BASENAME).squashfs,/media/startos/images/next.rootfs)
|
|
$(call ssh,'sudo CHECKSUM=$(SQFS_SUM) /usr/lib/startos/scripts/upgrade /media/startos/images/next.rootfs')
|
|
|
|
emulate-reflash: $(STARTOS_TARGETS)
|
|
@if [ -z "$(REMOTE)" ]; then >&2 echo "Must specify REMOTE" && false; fi
|
|
$(call ssh,'sudo /usr/lib/startos/scripts/chroot-and-upgrade --create')
|
|
$(MAKE) install REMOTE=$(REMOTE) SSHPASS=$(SSHPASS) DESTDIR=/media/startos/next PLATFORM=$(PLATFORM)
|
|
$(call ssh,'sudo rm -f /media/startos/config/disk.guid /media/startos/config/overlay/etc/hostname')
|
|
$(call ssh,'sudo /media/startos/next/usr/lib/startos/scripts/chroot-and-upgrade --no-sync "apt-get install -y $(shell cat ./build/lib/depends)"')
|
|
|
|
upload-ota: results/$(BASENAME).squashfs
|
|
TARGET=$(TARGET) KEY=$(KEY) ./build/upload-ota.sh
|
|
|
|
container-runtime/debian.$(ARCH).squashfs: ./container-runtime/download-base-image.sh
|
|
ARCH=$(ARCH) ./container-runtime/download-base-image.sh
|
|
|
|
container-runtime/package-lock.json: sdk/dist/package.json
|
|
npm --prefix container-runtime i
|
|
touch container-runtime/package-lock.json
|
|
|
|
container-runtime/node_modules/.package-lock.json: container-runtime/package-lock.json
|
|
npm --prefix container-runtime ci
|
|
touch container-runtime/node_modules/.package-lock.json
|
|
|
|
ts-bindings: core/bindings/index.ts
|
|
mkdir -p sdk/base/lib/osBindings
|
|
rsync -ac --delete core/bindings/ sdk/base/lib/osBindings/
|
|
|
|
core/bindings/index.ts: $(call ls-files, core) $(ENVIRONMENT_FILE)
|
|
rm -rf core/bindings
|
|
./core/build/build-ts.sh
|
|
ls core/bindings/*.ts | sed 's/core\/bindings\/\([^.]*\)\.ts/export { \1 } from ".\/\1";/g' | grep -v '"./index"' | tee core/bindings/index.ts
|
|
if [ -d core/bindings/tunnel ]; then \
|
|
ls core/bindings/tunnel/*.ts | sed 's/core\/bindings\/tunnel\/\([^.]*\)\.ts/export { \1 } from ".\/\1";/g' | grep -v '"./index"' > core/bindings/tunnel/index.ts; \
|
|
echo 'export * as Tunnel from "./tunnel";' >> core/bindings/index.ts; \
|
|
fi
|
|
npm --prefix sdk/base exec -- prettier --config=./sdk/base/package.json -w './core/bindings/**/*.ts'
|
|
touch core/bindings/index.ts
|
|
|
|
sdk/dist/package.json sdk/baseDist/package.json: $(call ls-files, sdk) sdk/base/lib/osBindings/index.ts
|
|
(cd sdk && make bundle)
|
|
touch sdk/dist/package.json
|
|
touch sdk/baseDist/package.json
|
|
|
|
# TODO: make container-runtime its own makefile?
|
|
container-runtime/dist/index.js: container-runtime/node_modules/.package-lock.json $(call ls-files, container-runtime/src) container-runtime/package.json container-runtime/tsconfig.json
|
|
npm --prefix container-runtime run build
|
|
|
|
container-runtime/dist/node_modules/.package-lock.json container-runtime/dist/package.json container-runtime/dist/package-lock.json: container-runtime/package.json container-runtime/package-lock.json sdk/dist/package.json container-runtime/install-dist-deps.sh
|
|
./container-runtime/install-dist-deps.sh
|
|
touch container-runtime/dist/node_modules/.package-lock.json
|
|
|
|
container-runtime/rootfs.$(ARCH).squashfs: container-runtime/debian.$(ARCH).squashfs container-runtime/container-runtime.service container-runtime/update-image.sh container-runtime/update-image-local.sh container-runtime/deb-install.sh container-runtime/dist/index.js container-runtime/dist/node_modules/.package-lock.json core/target/$(RUST_ARCH)-unknown-linux-musl/release/start-container
|
|
ARCH=$(ARCH) ./container-runtime/update-image-local.sh
|
|
|
|
build/lib/depends build/lib/conflicts: $(ENVIRONMENT_FILE) $(PLATFORM_FILE) $(shell ls build/dpkg-deps/*)
|
|
PLATFORM=$(PLATFORM) ARCH=$(ARCH) build/dpkg-deps/generate.sh
|
|
|
|
$(FIRMWARE_ROMS): build/lib/firmware.json ./build/download-firmware.sh $(PLATFORM_FILE)
|
|
./build/download-firmware.sh $(PLATFORM)
|
|
|
|
$(TOR_S9PK): ./build/download-tor-s9pk.sh
|
|
./build/download-tor-s9pk.sh $(ARCH)
|
|
|
|
core/target/$(RUST_ARCH)-unknown-linux-musl/$(PROFILE)/startbox: $(CORE_SRC) $(COMPRESSED_WEB_UIS) web/patchdb-ui-seed.json $(ENVIRONMENT_FILE)
|
|
ARCH=$(ARCH) PROFILE=$(PROFILE) ./core/build/build-startbox.sh
|
|
touch core/target/$(RUST_ARCH)-unknown-linux-musl/$(PROFILE)/startbox
|
|
|
|
core/target/$(RUST_ARCH)-unknown-linux-musl/release/start-container: $(CORE_SRC) $(ENVIRONMENT_FILE)
|
|
ARCH=$(ARCH) ./core/build/build-start-container.sh
|
|
touch core/target/$(RUST_ARCH)-unknown-linux-musl/release/start-container
|
|
|
|
web/package-lock.json: web/package.json sdk/baseDist/package.json
|
|
npm --prefix web i
|
|
touch web/package-lock.json
|
|
|
|
web/node_modules/.package-lock.json: web/package-lock.json
|
|
npm --prefix web ci
|
|
touch web/node_modules/.package-lock.json
|
|
|
|
web/.angular/.updated: patch-db/client/dist/index.js sdk/baseDist/package.json web/node_modules/.package-lock.json
|
|
rm -rf web/.angular
|
|
mkdir -p web/.angular
|
|
touch web/.angular/.updated
|
|
|
|
web/.i18n-checked: $(WEB_SHARED_SRC) $(WEB_UI_SRC) $(WEB_SETUP_WIZARD_SRC) $(WEB_START_TUNNEL_SRC)
|
|
npm --prefix web run check:i18n
|
|
touch web/.i18n-checked
|
|
|
|
web/dist/raw/ui/index.html: $(WEB_UI_SRC) $(WEB_SHARED_SRC) web/.angular/.updated web/.i18n-checked
|
|
npm --prefix web run build:ui
|
|
touch web/dist/raw/ui/index.html
|
|
|
|
web/dist/raw/setup-wizard/index.html: $(WEB_SETUP_WIZARD_SRC) $(WEB_SHARED_SRC) web/.angular/.updated web/.i18n-checked
|
|
npm --prefix web run build:setup
|
|
touch web/dist/raw/setup-wizard/index.html
|
|
|
|
web/dist/raw/start-tunnel/index.html: $(WEB_START_TUNNEL_SRC) $(WEB_SHARED_SRC) web/.angular/.updated web/.i18n-checked
|
|
npm --prefix web run build:tunnel
|
|
touch web/dist/raw/start-tunnel/index.html
|
|
|
|
web/dist/static/%/index.html: web/dist/raw/%/index.html
|
|
./web/compress-uis.sh $*
|
|
|
|
web/config.json: $(GIT_HASH_FILE) $(ENVIRONMENT_FILE) web/config-sample.json web/update-config.sh
|
|
./web/update-config.sh
|
|
|
|
patch-db/client/node_modules/.package-lock.json: patch-db/client/package.json
|
|
npm --prefix patch-db/client ci
|
|
touch patch-db/client/node_modules/.package-lock.json
|
|
|
|
patch-db/client/dist/index.js: $(PATCH_DB_CLIENT_SRC) patch-db/client/node_modules/.package-lock.json
|
|
rm -rf patch-db/client/dist
|
|
npm --prefix patch-db/client run build
|
|
touch patch-db/client/dist/index.js
|
|
|
|
# used by github actions
|
|
compiled-$(ARCH).tar: $(COMPILED_TARGETS) $(ENVIRONMENT_FILE) $(GIT_HASH_FILE) $(VERSION_FILE)
|
|
tar -cvf $@ $^
|
|
|
|
# this is a convenience step to build all web uis - it is not referenced elsewhere in this file
|
|
uis: $(WEB_UIS)
|
|
|
|
# this is a convenience step to build the UI
|
|
ui: web/dist/raw/ui
|
|
|
|
target/aarch64-unknown-linux-musl/release/pi-beep: ./build/build-cargo-dep.sh
|
|
ARCH=aarch64 ./build/build-cargo-dep.sh pi-beep
|
|
|
|
target/$(RUST_ARCH)-unknown-linux-musl/release/tokio-console: ./build/build-cargo-dep.sh
|
|
ARCH=$(ARCH) ./build/build-cargo-dep.sh tokio-console
|
|
touch $@
|
|
|
|
target/$(RUST_ARCH)-unknown-linux-musl/release/startos-backup-fs: ./build/build-cargo-dep.sh
|
|
ARCH=$(ARCH) ./build/build-cargo-dep.sh --git https://github.com/Start9Labs/start-fs.git startos-backup-fs
|
|
touch $@
|
|
|
|
target/$(RUST_ARCH)-unknown-linux-musl/release/flamegraph: ./build/build-cargo-dep.sh
|
|
ARCH=$(ARCH) ./build/build-cargo-dep.sh flamegraph
|
|
touch $@
|