From b0b57a5a2649d9d40f132633dd9a97aa8d771c8d Mon Sep 17 00:00:00 2001 From: gabrix73 Date: Sun, 12 Apr 2026 16:59:35 +0200 Subject: fix: build AppImage entirely inside container to avoid symlink cross-device errors --- Makefile | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index a53c992..464bb91 100644 --- a/Makefile +++ b/Makefile @@ -91,30 +91,33 @@ appimage: @echo "$(BLUE)[AppImage]$(NC) Building Docker image..." docker build --network=host -t khimera-builder -f docker/Dockerfile.appimage . @echo "$(BLUE)[AppImage]$(NC) Compiling and packaging..." + @mkdir -p $(OUTPUT_DIR)/Linux docker run --rm --privileged --network=host \ - -v $(shell pwd):/build \ - -w /build \ + -v $(shell pwd):/src:ro \ + -v $(shell pwd)/$(OUTPUT_DIR)/Linux:/out \ khimera-builder \ bash -c " \ + cp -r /src /work && cd /work && \ go mod tidy && \ CGO_ENABLED=1 go build \ -ldflags='$(LDFLAGS)' \ - -o /tmp/khimera-bin \ + -o /work/khimera-bin \ ./khimera-main.go && \ - mkdir -p AppDir/usr/bin AppDir/usr/share/icons/hicolor/256x256/apps && \ - cp /tmp/khimera-bin AppDir/usr/bin/khimera && \ - cp appimage/khimera.desktop AppDir/khimera.desktop && \ - cp appimage/khimera.png AppDir/usr/share/icons/hicolor/256x256/apps/khimera.png && \ - cp appimage/khimera.png AppDir/khimera.png && \ + mkdir -p /work/AppDir/usr/bin \ + /work/AppDir/usr/share/applications \ + /work/AppDir/usr/share/icons/hicolor/256x256/apps && \ + cp /work/khimera-bin /work/AppDir/usr/bin/khimera && \ + cp /work/appimage/khimera.desktop /work/AppDir/usr/share/applications/khimera.desktop && \ + cp /work/appimage/khimera.png /work/AppDir/usr/share/icons/hicolor/256x256/apps/khimera.png && \ + cd /work && \ linuxdeploy --appdir AppDir \ --library /usr/lib/x86_64-linux-gnu/libGL.so.1 \ --library /usr/lib/x86_64-linux-gnu/libX11.so.6 \ - --output appimage \ + --desktop-file AppDir/usr/share/applications/khimera.desktop \ + --icon-file AppDir/usr/share/icons/hicolor/256x256/apps/khimera.png \ + --output appimage && \ + cp /work/*.AppImage /out/Khimera-v$(VERSION)-x86_64.AppImage \ " - @mkdir -p $(OUTPUT_DIR)/Linux - @mv Khimera*.AppImage $(OUTPUT_DIR)/Linux/Khimera-v$(VERSION)-x86_64.AppImage 2>/dev/null || \ - mv khimera*.AppImage $(OUTPUT_DIR)/Linux/Khimera-v$(VERSION)-x86_64.AppImage - @rm -rf AppDir @echo "$(GREEN)✓ AppImage build complete!$(NC)" @echo "Output: $(OUTPUT_DIR)/Linux/Khimera-v$(VERSION)-x86_64.AppImage" -- cgit v1.2.3