forked from akippnn/docker-aseprite-linux
fix(Dockerfile, Makefile, manifest): Address user/group ID mapping and attempt to resolve ninja errors
This commit is contained in:
76
Makefile
76
Makefile
@@ -6,8 +6,13 @@ TARGET_DIR := ${PWD}/target
|
||||
OUTPUT_FILE := ${TARGET_DIR}/aseprite.flatpak
|
||||
BUILD_DIR := ${PWD}/build
|
||||
SRC_DIR := ${PWD}/src
|
||||
FLATPAK_STATE_DIR := ${PWD}/flatpak-state
|
||||
FLATPAK_CACHE_DIR := ${PWD}/flatpak-cache
|
||||
|
||||
# Host-side cache directories for Flatpak builder and ccache
|
||||
# These will be mounted into the container
|
||||
FLATPAK_BUILDER_CACHE_DIR := ${PWD}/.flatpak-builder-cache
|
||||
FLATPAK_STATE_DIR := ${FLATPAK_BUILDER_CACHE_DIR}/state
|
||||
FLATPAK_CACHE_DIR := ${FLATPAK_BUILDER_CACHE_DIR}/cache
|
||||
CCACHE_DIR := ${PWD}/.ccache
|
||||
|
||||
# Get current user and group IDs to avoid permission issues with Docker
|
||||
USER_ID := $(shell id -u)
|
||||
@@ -21,52 +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 -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}
|
||||
@docker run \
|
||||
--rm \
|
||||
--privileged \
|
||||
--device /dev/fuse \
|
||||
-v ${SRC_DIR}:/sources:ro \
|
||||
-v ${BUILD_DIR}:/build \
|
||||
-v ${FLATPAK_STATE_DIR}:/root/.local/share/flatpak-builder \
|
||||
-v ${FLATPAK_CACHE_DIR}:/root/.cache/flatpak-builder \
|
||||
-v ${PWD}/com.aseprite.Aseprite.yaml:/build/com.aseprite.Aseprite.yaml:ro \
|
||||
-e FLATPAK_USER_DIR=/build/.flatpak \
|
||||
-e USER_ID=${USER_ID} \
|
||||
-e GROUP_ID=${GROUP_ID} \
|
||||
-w /build \
|
||||
${IMAGE_NAME} \
|
||||
sh -c "flatpak-builder --disable-rofiles-fuse --state-dir=/root/.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 && chown -R ${USER_ID}:${GROUP_ID} /build"
|
||||
@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 \
|
||||
-v ${BUILD_DIR}:/build \
|
||||
-e USER_ID=${USER_ID} \
|
||||
-e GROUP_ID=${GROUP_ID} \
|
||||
-w /build \
|
||||
${IMAGE_NAME} \
|
||||
sh -c "flatpak build-bundle repo aseprite.flatpak com.aseprite.Aseprite && chown ${USER_ID}:${GROUP_ID} aseprite.flatpak"
|
||||
@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
|
||||
|
||||
Reference in New Issue
Block a user