diff --git a/.gitignore b/.gitignore index e8fe342..c89510f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,9 @@ .idea +.flatpak-builder-cache +.ccache +flatpak-state src/ target/ build/ *.flatpak -*.log \ No newline at end of file +*.log diff --git a/Makefile b/Makefile index 34e7716..1783e46 100644 --- a/Makefile +++ b/Makefile @@ -26,53 +26,53 @@ all: build # Use .PHONY to ensure it always runs if called directly .PHONY: prepare-sources prepare-sources: -@echo "--- Preparing sources using prepare_sources.sh ---" -./prepare_sources.sh -./prepare_sources.sh --check-integrity + @echo "--- Preparing sources using prepare_sources.sh ---" + ./prepare_sources.sh + ./prepare_sources.sh --check-integrity # Build the Docker image which runs flatpak-builder inside # Implicitly depends on sources being ready after prepare-sources runs .PHONY: build-image build-image: -@echo "--- Building Aseprite Flatpak builder image (${IMAGE_NAME}) ---" -@docker build \ ---build-arg UID=${USER_ID} \ ---build-arg GID=${GROUP_ID} \ --t ${IMAGE_NAME} -f ${DOCKERFILE} . + @echo "--- Building Aseprite Flatpak builder image (${IMAGE_NAME}) ---" + @docker build \ + --build-arg UID=${USER_ID} \ + --build-arg GID=${GROUP_ID} \ + -t ${IMAGE_NAME} -f ${DOCKERFILE} . # Run flatpak-builder inside a privileged container with proper user permissions .PHONY: run-flatpak-builder run-flatpak-builder: -@echo "--- Running flatpak-builder inside container ---" -@mkdir -p ${BUILD_DIR} ${FLATPAK_STATE_DIR} ${FLATPAK_CACHE_DIR} ${CCACHE_DIR} -@docker run \ ---rm \ ---privileged \ ---device /dev/fuse \ --u ${USER_ID}:${GROUP_ID} \ --v ${SRC_DIR}:/sources:ro \ --v ${BUILD_DIR}:/build \ --v ${FLATPAK_STATE_DIR}:/home/builder/.local/share/flatpak-builder \ --v ${FLATPAK_CACHE_DIR}:/home/builder/.cache/flatpak-builder \ --v ${CCACHE_DIR}:/home/builder/.cache/ccache \ --v ${PWD}/com.aseprite.Aseprite.yaml:/build/com.aseprite.Aseprite.yaml:ro \ --w /build \ -${IMAGE_NAME} \ -sh -c "flatpak-builder --disable-rofiles-fuse --state-dir=/home/builder/.local/share/flatpak-builder --ccache build-dir com.aseprite.Aseprite.yaml --repo=repo && if [ -d 'build-dir/files/third_party/externals/emsdk' ]; then rm -rf build-dir/files/third_party/externals/emsdk; fi" + @echo "--- Running flatpak-builder inside container ---" + @mkdir -p ${BUILD_DIR} ${FLATPAK_STATE_DIR} ${FLATPAK_CACHE_DIR} ${CCACHE_DIR} + @docker run \ + --rm \ + --privileged \ + --device /dev/fuse \ + -u ${USER_ID}:${GROUP_ID} \ + -v ${SRC_DIR}:/sources:ro \ + -v ${BUILD_DIR}:/build \ + -v ${FLATPAK_STATE_DIR}:/home/builder/.local/share/flatpak-builder \ + -v ${FLATPAK_CACHE_DIR}:/home/builder/.cache/flatpak-builder \ + -v ${CCACHE_DIR}:/home/builder/.cache/ccache \ + -v ${PWD}/com.aseprite.Aseprite.yaml:/build/com.aseprite.Aseprite.yaml:ro \ + -w /build \ + ${IMAGE_NAME} \ + sh -c "flatpak-builder --disable-rofiles-fuse --state-dir=/home/builder/.local/share/flatpak-builder --ccache build-dir com.aseprite.Aseprite.yaml --repo=repo && if [ -d 'build-dir/files/third_party/externals/emsdk' ]; then rm -rf build-dir/files/third_party/externals/emsdk; fi" # Create the Flatpak bundle from the repo built in the previous step .PHONY: create-bundle create-bundle: run-flatpak-builder -@echo "--- Creating Flatpak bundle ---" -@docker run \ ---rm \ ---privileged \ ---device /dev/fuse \ --u ${USER_ID}:${GROUP_ID} \ --v ${BUILD_DIR}:/build \ --w /build \ -${IMAGE_NAME} \ -sh -c "flatpak build-bundle repo aseprite.flatpak com.aseprite.Aseprite" + @echo "--- Creating Flatpak bundle ---" + @docker run \ + --rm \ + --privileged \ + --device /dev/fuse \ + -u ${USER_ID}:${GROUP_ID} \ + -v ${BUILD_DIR}:/build \ + -w /build \ + ${IMAGE_NAME} \ + sh -c "flatpak build-bundle repo aseprite.flatpak com.aseprite.Aseprite" # Copy the final bundle from the intermediate directory to the output directory .PHONY: extract-flatpak @@ -89,7 +89,7 @@ prepare: prepare-sources build-image # Main build target: Run builder, create bundle, extract .PHONY: build -build: run-flatpak-builder create-bundle extract-flatpak +build: build-image run-flatpak-builder create-bundle extract-flatpak @echo "--- Build complete ---" # Clean up only the source files and downloaded content