podman to compile for debian
This commit is contained in:
@@ -48,6 +48,10 @@ RUN node --version \
|
|||||||
&& test "$yarn_version" = 1.22.22 \
|
&& test "$yarn_version" = 1.22.22 \
|
||||||
&& echo "yarn $yarn_version"
|
&& echo "yarn $yarn_version"
|
||||||
|
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y --no-install-recommends lld \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
COPY container-build-debian.sh /usr/local/bin/build-komp-ac-debian
|
COPY container-build-debian.sh /usr/local/bin/build-komp-ac-debian
|
||||||
RUN chmod 755 /usr/local/bin/build-komp-ac-debian
|
RUN chmod 755 /usr/local/bin/build-komp-ac-debian
|
||||||
|
|
||||||
|
|||||||
@@ -59,7 +59,15 @@ The host source is mounted read-only and copied into the temporary container.
|
|||||||
Cargo and Yarn caches use named Podman volumes, so neither Cargo target files
|
Cargo and Yarn caches use named Podman volumes, so neither Cargo target files
|
||||||
nor frontend dependencies are written into the repository. The source snapshot
|
nor frontend dependencies are written into the repository. The source snapshot
|
||||||
excludes build outputs, local environment files and generated runtime data such
|
excludes build outputs, local environment files and generated runtime data such
|
||||||
as Tantivy indexes, dumps and embedded PostgreSQL data.
|
as Tantivy indexes, dumps and embedded PostgreSQL data. It also omits profiling
|
||||||
|
captures, benchmark and mutation reports, old AppImages, frontend caches, logs,
|
||||||
|
and local editor or agent state. Cargo configuration, SQLx offline metadata,
|
||||||
|
migrations and all crate/frontend source inputs remain in the snapshot. The
|
||||||
|
container validates the completed snapshot and stops before compilation if a
|
||||||
|
known runtime, cache or private-data path survived the exclusions. Top-level
|
||||||
|
copying is allowlisted to workspace manifests, required crates, `client-gui2`
|
||||||
|
and the packaging layer, so unrelated future repository directories are omitted
|
||||||
|
by default.
|
||||||
|
|
||||||
The server feature is a required argument. Nothing implicitly chooses the
|
The server feature is a required argument. Nothing implicitly chooses the
|
||||||
database implementation:
|
database implementation:
|
||||||
|
|||||||
@@ -37,19 +37,91 @@ tar \
|
|||||||
--exclude='*/.direnv' \
|
--exclude='*/.direnv' \
|
||||||
--exclude='./.env' \
|
--exclude='./.env' \
|
||||||
--exclude='*/.env' \
|
--exclude='*/.env' \
|
||||||
|
--exclude='./.env.*' \
|
||||||
|
--exclude='*/.env.*' \
|
||||||
|
--exclude='./.env_*' \
|
||||||
|
--exclude='*/.env_*' \
|
||||||
|
--exclude='*/.envrc' \
|
||||||
|
--exclude='*/.agents' \
|
||||||
|
--exclude='*/.claude' \
|
||||||
|
--exclude='*/.codex' \
|
||||||
|
--exclude='*/.codex-scheduled' \
|
||||||
|
--exclude='*/.forge' \
|
||||||
|
--exclude='*/.opencode' \
|
||||||
|
--exclude='*/.idea' \
|
||||||
|
--exclude='*/.vscode' \
|
||||||
|
--exclude='./.aider*' \
|
||||||
--exclude='*/tantivy_indexes' \
|
--exclude='*/tantivy_indexes' \
|
||||||
--exclude='*/dumps' \
|
--exclude='*/dumps' \
|
||||||
--exclude='*/.postgres-data' \
|
--exclude='*/.postgres-data' \
|
||||||
--exclude='*/benchmark-results' \
|
--exclude='*/benchmark-results' \
|
||||||
--exclude='*/.mutants-run' \
|
--exclude='*/.mutants-run' \
|
||||||
|
--exclude='./mutants*' \
|
||||||
|
--exclude='*/metrics_output' \
|
||||||
|
--exclude='*/metrics.json' \
|
||||||
|
--exclude='*/perf.data*' \
|
||||||
|
--exclude='*/flamegraph.svg' \
|
||||||
--exclude='*/__pycache__' \
|
--exclude='*/__pycache__' \
|
||||||
--exclude='./client-gui2/node_modules' \
|
--exclude='*/node_modules' \
|
||||||
--exclude='./client-gui2/dist' \
|
--exclude='./client-gui2/dist' \
|
||||||
|
--exclude='./client-gui2/dist-ssr' \
|
||||||
|
--exclude='./client-gui2/coverage' \
|
||||||
|
--exclude='./client-gui2/.vite' \
|
||||||
|
--exclude='./client-gui2/src-tauri/gen/schemas' \
|
||||||
|
--exclude='./client-gui2/scripts' \
|
||||||
|
--exclude='*.tsbuildinfo' \
|
||||||
|
--exclude='*.log' \
|
||||||
|
--exclude='*.swp' \
|
||||||
|
--exclude='*.swo' \
|
||||||
|
--exclude='*~' \
|
||||||
|
--exclude='*.local' \
|
||||||
|
--exclude='./server/docs-prod' \
|
||||||
|
--exclude='./testing' \
|
||||||
|
--exclude='./run_bins' \
|
||||||
|
--exclude='./corporate_erp' \
|
||||||
--exclude='./debian-dist' \
|
--exclude='./debian-dist' \
|
||||||
--exclude='./result' \
|
--exclude='./result' \
|
||||||
-C /source -cf - . \
|
--exclude='./result-*' \
|
||||||
|
-C /source -cf - \
|
||||||
|
Cargo.toml \
|
||||||
|
Cargo.lock \
|
||||||
|
.cargo \
|
||||||
|
.sqlx \
|
||||||
|
client \
|
||||||
|
client-gui2 \
|
||||||
|
common \
|
||||||
|
komp-app \
|
||||||
|
packaging \
|
||||||
|
search \
|
||||||
|
server \
|
||||||
|
tui-canvas \
|
||||||
|
tui-pages \
|
||||||
|
web \
|
||||||
| tar -C "$source_root" -xf -
|
| tar -C "$source_root" -xf -
|
||||||
|
|
||||||
|
unexpected_snapshot_path="$(find "$source_root" \
|
||||||
|
\( \
|
||||||
|
-name target -o \
|
||||||
|
-name node_modules -o \
|
||||||
|
-name tantivy_indexes -o \
|
||||||
|
-name dumps -o \
|
||||||
|
-name .postgres-data -o \
|
||||||
|
-name .direnv -o \
|
||||||
|
-name .env -o \
|
||||||
|
-name '.env.*' -o \
|
||||||
|
-name '.env_*' -o \
|
||||||
|
-name .envrc -o \
|
||||||
|
-name benchmark-results -o \
|
||||||
|
-name metrics_output -o \
|
||||||
|
-name 'perf.data*' \
|
||||||
|
\) \
|
||||||
|
-print -quit)"
|
||||||
|
if [[ -n "$unexpected_snapshot_path" ]]; then
|
||||||
|
echo "Generated or private data entered the production snapshot: $unexpected_snapshot_path" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "Source snapshot size: $(du -sh "$source_root" | cut -f1)"
|
||||||
|
|
||||||
cd "$source_root/client-gui2"
|
cd "$source_root/client-gui2"
|
||||||
echo "+ yarn install --frozen-lockfile --non-interactive"
|
echo "+ yarn install --frozen-lockfile --non-interactive"
|
||||||
yarn install --frozen-lockfile --non-interactive
|
yarn install --frozen-lockfile --non-interactive
|
||||||
@@ -78,6 +150,16 @@ fi
|
|||||||
install -Dm755 "$server_binary" /out/bin/server
|
install -Dm755 "$server_binary" /out/bin/server
|
||||||
|
|
||||||
cd "$source_root/client-gui2"
|
cd "$source_root/client-gui2"
|
||||||
|
appimage_bundle_dir=/cargo-target/release/bundle/appimage
|
||||||
|
case "$appimage_bundle_dir" in
|
||||||
|
/cargo-target/release/bundle/appimage)
|
||||||
|
rm -rf -- "$appimage_bundle_dir"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Refusing to clear unexpected AppImage staging path: $appimage_bundle_dir" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
echo "+ yarn tauri build --bundles appimage"
|
echo "+ yarn tauri build --bundles appimage"
|
||||||
set +e
|
set +e
|
||||||
APPIMAGE_EXTRACT_AND_RUN=1 \
|
APPIMAGE_EXTRACT_AND_RUN=1 \
|
||||||
@@ -87,7 +169,7 @@ tauri_status=$?
|
|||||||
set -e
|
set -e
|
||||||
|
|
||||||
shopt -s nullglob
|
shopt -s nullglob
|
||||||
gui_appimages=(/cargo-target/release/bundle/appimage/*.AppImage)
|
gui_appimages=("$appimage_bundle_dir"/*.AppImage)
|
||||||
gui_bundle=""
|
gui_bundle=""
|
||||||
if [[ $tauri_status -eq 0 && ${#gui_appimages[@]} -gt 0 ]]; then
|
if [[ $tauri_status -eq 0 && ${#gui_appimages[@]} -gt 0 ]]; then
|
||||||
gui_bundle="${gui_appimages[0]}"
|
gui_bundle="${gui_appimages[0]}"
|
||||||
@@ -99,7 +181,7 @@ if [[ $tauri_status -eq 0 && ${#gui_appimages[@]} -gt 0 ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -z "$gui_bundle" ]]; then
|
if [[ -z "$gui_bundle" ]]; then
|
||||||
gui_appdir=/cargo-target/release/bundle/appimage/komp_ac.AppDir
|
gui_appdir="$appimage_bundle_dir/komp_ac.AppDir"
|
||||||
if [[ -d "$gui_appdir" ]] \
|
if [[ -d "$gui_appdir" ]] \
|
||||||
&& cmp -s /cargo-target/release/client-gui2 "$gui_appdir/usr/bin/client-gui2"; then
|
&& cmp -s /cargo-target/release/client-gui2 "$gui_appdir/usr/bin/client-gui2"; then
|
||||||
gui_bundle="$gui_appdir"
|
gui_bundle="$gui_appdir"
|
||||||
|
|||||||
Reference in New Issue
Block a user