1- PACKAGE_ID := $(shell awk -F"'" '/id:/ {print $$2}' startos/manifest.ts)
2- INGREDIENTS := $(shell start-cli s9pk list-ingredients 2>/dev/null)
3-
4- .PHONY : all aarch64 x86_64 riscv64 arm arm64 x86 riscv arch/* clean install check-deps check-init package ingredients
5- .DELETE_ON_ERROR :
6- .SECONDARY :
7-
8- define SUMMARY
9- @manifest=$$(start-cli s9pk inspect $(1 ) manifest ) ; \
10- size=$$(du -h $(1 ) | awk '{print $$1}' ) ; \
11- title=$$(printf '%s' "$$manifest" | jq -r .title ) ; \
12- version=$$(printf '%s' "$$manifest" | jq -r .version ) ; \
13- arches=$$(printf '%s' "$$manifest" | jq -r '.hardwareRequirements.arch | join(", " ) '); \
14- sdkv=$$(printf '%s' "$$manifest" | jq -r .sdkVersion ) ; \
15- gitHash=$$(printf '%s' "$$manifest" | jq -r .gitHash | sed -E 's/(.*-modified ) $$/\x1b[0;31m\1\x1b[0m/'); \
16- printf "\n"; \
17- printf "\033[1;32m✅ Build Complete!\033[0m\n"; \
18- printf "\n"; \
19- printf "\033[1;37m📦 $$title\033[0m \033[36mv$$version\033[0m\n"; \
20- printf "───────────────────────────────\n"; \
21- printf " \033[1;36mFilename:\033[0m %s\n" "$(1 ) "; \
22- printf " \033[1;36mSize:\033[0m %s\n" "$$size"; \
23- printf " \033[1;36mArch:\033[0m %s\n" "$$arches"; \
24- printf " \033[1;36mSDK:\033[0m %s\n" "$$sdkv"; \
25- printf " \033[1;36mGit:\033[0m %s\n" "$$gitHash"; \
26- echo ""
27- endef
28-
29- all : $(PACKAGE_ID ) .s9pk
30- $(call SUMMARY,$< )
31-
32- arch/% : $(PACKAGE_ID ) _% .s9pk
33- $(call SUMMARY,$< )
34-
35- x86 x86_64 : arch/x86_64
36- arm arm64 aarch64 : arch/aarch64
37- riscv riscv64 : arch/riscv64
38-
39- $(PACKAGE_ID ) .s9pk : $(INGREDIENTS ) .git/HEAD .git/index
40- @$(MAKE ) --no-print-directory ingredients
41- @echo " Packing '$@ '..."
42- start-cli s9pk pack -o $@
43-
44- $(PACKAGE_ID ) _% .s9pk : $(INGREDIENTS ) .git/HEAD .git/index
45- @$(MAKE ) --no-print-directory ingredients
46- @echo " Packing '$@ '..."
47- start-cli s9pk pack --arch=$* -o $@
48-
49- ingredients : $(INGREDIENTS )
50- @echo " Re-evaluating ingredients..."
51-
52- install : | check-deps check-init
53- @HOST=$$(awk -F'/' '/^host:/ {print $$3}' ~/.startos/config.yaml ) ; \
54- if [ -z " $$ HOST" ]; then \
55- echo " Error: You must define \" host: http://server-name.local\" in ~/.startos/config.yaml" ; \
56- exit 1; \
57- fi ; \
58- S9PK=$$(ls -t *.s9pk 2>/dev/null | head -1 ) ; \
59- if [ -z " $$ S9PK" ]; then \
60- echo " Error: No .s9pk file found. Run 'make' first." ; \
61- exit 1; \
62- fi ; \
63- printf " \n🚀 Installing %s to %s ...\n" " $$ S9PK" " $$ HOST" ; \
64- start-cli package install -s " $$ S9PK"
65-
66- check-deps :
67- @command -v start-cli > /dev/null || \
68- (echo " Error: start-cli not found. Please see https://docs.start9.com/latest/developer-guide/sdk/installing-the-sdk" && exit 1)
69- @command -v npm > /dev/null || \
70- (echo " Error: npm not found. Please install Node.js and npm." && exit 1)
71-
72- check-init :
73- @if [ ! -f ~ /.startos/developer.key.pem ]; then \
74- echo " Initializing StartOS developer environment..." ; \
75- start-cli init-key; \
76- fi
77-
78- javascript/index.js : $(shell find startos -type f) tsconfig.json node_modules
79- npm run build
80-
81- node_modules : package-lock.json
82- npm ci
83-
84- package-lock.json : package.json
85- npm i
86-
87- clean :
88- @echo " Cleaning up build artifacts..."
1+ # overrides to s9pk.mk must precede the include statement
2+ ARCHES := x86 arm
3+ include s9pk.mk
0 commit comments