@@ -7,7 +7,6 @@ export image_name := env("IMAGE_NAME", "hypercube")
77export base_image := env (" BASE_IMAGE" , " ghcr.io/ublue-os/bluefin-dx" )
88export base_image_nvidia := env (" BASE_IMAGE_NVIDIA" , " ghcr.io/ublue-os/bluefin-dx-nvidia" )
99export default_tag := env (" DEFAULT_TAG" , " stable-daily" )
10- export rechunker_image := " ghcr.io/hhd-dev/rechunk:v1.0.3"
1110
1211# Runtime detection
1312export SUDO := if ` id -u ` == " 0" { " " } else { " sudo" }
@@ -23,7 +22,7 @@ default:
2322
2423# Build container image
2524[group (' Build' )]
26- build flavor = " main" ghcr = " 0" rechunk = " 0" :
25+ build flavor = " main" ghcr = " 0":
2726 #!/usr/bin/env bash
2827 set -euo pipefail
2928
@@ -67,91 +66,24 @@ build flavor="main" ghcr="0" rechunk="0":
6766 .
6867 fi
6968
70- # Rechunk if requested
71- if [[ " {{ rechunk }} " == " 1" ]]; then
72- just rechunk " {{ image_name }} " " ${TAG}"
73- just load-rechunk " {{ image_name }} " " ${TAG}"
74- fi
75-
7669 echo " "
7770 echo " ========================================"
7871 echo " Build complete: ${IMAGE_FULL}"
7972 echo " ========================================"
8073
81- # Build with rechunking enabled (recommended for production)
82- [group (' Build' )]
83- build-rechunk flavor = " main":
84- @ just build {{ flavor }} 0 1
85-
86- # Build for GHCR push (rootful, with rechunking)
74+ # Build for GHCR push (rootful)
8775[group (' Build' )]
8876build-ghcr flavor = " main":
89- @ just build {{ flavor }} 1 1
77+ @ just build {{ flavor }} 1
9078
9179# Build both flavors
9280[group (' Build' )]
9381build-all :
9482 @ echo " Building main flavor..."
95- @ just build-rechunk main
83+ @ just build main
9684 @ echo " "
9785 @ echo " Building nvidia flavor..."
98- @ just build-rechunk nvidia
99-
100- # Rechunk image for optimized OCI layers
101- [group (' Build' )]
102- [private ]
103- rechunk image tag :
104- #!/usr/bin/env bash
105- set -euo pipefail
106-
107- IMAGE_FULL=" localhost/{{ image }} :{{ tag }} "
108- OUTPUT_DIR=" ${PWD}/_rechunk_output"
109-
110- echo " Rechunking: ${IMAGE_FULL}"
111-
112- rm -rf " ${OUTPUT_DIR}"
113- mkdir -p " ${OUTPUT_DIR}"
114-
115- # Run rechunker container
116- {{ PODMAN }} run --rm \
117- - -privileged \
118- - -security-opt label=disable \
119- - v " ${OUTPUT_DIR}:/output" \
120- - v / var/ lib/ containers:/ var/ lib/ containers \
121- {{ rechunker_image }} \
122- " ${IMAGE_FULL}" \
123- / output
124-
125- echo " Rechunk output saved to: ${OUTPUT_DIR}"
126-
127- # Load rechunked image into podman
128- [group (' Build' )]
129- [private ]
130- load-rechunk image tag :
131- #!/usr/bin/env bash
132- set -euo pipefail
133-
134- OUTPUT_DIR=" ${PWD}/_rechunk_output"
135- IMAGE_FULL=" {{ image }} :{{ tag }} "
136-
137- if [[ ! -d " ${OUTPUT_DIR}" ]]; then
138- echo " Error: Rechunk output not found at ${OUTPUT_DIR}"
139- exit 1
140- fi
141-
142- echo " Loading rechunked image..."
143-
144- # Load the OCI image
145- {{ PODMAN }} load -i " ${OUTPUT_DIR}/oci-archive.tar"
146-
147- # Tag it properly
148- LOADED_IMAGE=$({{ PODMAN }} images --format " {{ `{{.ID}} `}}" | head -1)
149- {{ PODMAN }} tag " ${LOADED_IMAGE}" " ${IMAGE_FULL}"
150-
151- # Cleanup
152- rm -rf " ${OUTPUT_DIR}"
153-
154- echo " Loaded: ${IMAGE_FULL}"
86+ @ just build nvidia
15587
15688# Run container interactively for testing
15789[group (' Build' )]
@@ -212,7 +144,7 @@ build-iso flavor="main": _titanoboa-setup
212144 # Check if image exists
213145 ID=$({{ PODMAN }} images --filter reference=" ${IMAGE_FULL}" --format ' {{ `{{.ID}} `}}' )
214146 if [[ -z " $ID" ]]; then
215- echo " Error: Image ${IMAGE_FULL} not found. Run 'just build-rechunk {{ flavor }} ' first."
147+ echo " Error: Image ${IMAGE_FULL} not found. Run 'just build {{ flavor }} ' first."
216148 exit 1
217149 fi
218150
@@ -352,7 +284,7 @@ verify-container image tag:
352284clean :
353285 #!/ usr/ bin/ bash
354286 set -eoux pipefail
355- rm -rf _build* _titanoboa _rechunk_output
287+ rm -rf _build* _titanoboa
356288 rm -f previous.manifest.json changelog.md output.env
357289 rm -rf output/
358290 rm -f *.iso
0 commit comments