forked from aki/docker-aseprite-linux
fix(makefile): Improve user permissions handling in Docker build process
This commit is contained in:
parent
5a4239dd9e
commit
78c3eed0fc
44
Makefile
44
Makefile
@ -8,8 +8,10 @@ BUILD_DIR := ${PWD}/build
|
|||||||
SRC_DIR := ${PWD}/src
|
SRC_DIR := ${PWD}/src
|
||||||
FLATPAK_STATE_DIR := ${PWD}/flatpak-state
|
FLATPAK_STATE_DIR := ${PWD}/flatpak-state
|
||||||
FLATPAK_CACHE_DIR := ${PWD}/flatpak-cache
|
FLATPAK_CACHE_DIR := ${PWD}/flatpak-cache
|
||||||
# Whether to use a clean build each time (set to empty to disable)
|
|
||||||
# CLEAN_BUILD := --force-clean
|
# Get current user and group IDs to avoid permission issues with Docker
|
||||||
|
USER_ID := $(shell id -u)
|
||||||
|
GROUP_ID := $(shell id -g)
|
||||||
|
|
||||||
# --- Main Targets ---
|
# --- Main Targets ---
|
||||||
# Default target
|
# Default target
|
||||||
@ -20,7 +22,8 @@ all: build
|
|||||||
.PHONY: prepare-sources
|
.PHONY: prepare-sources
|
||||||
prepare-sources:
|
prepare-sources:
|
||||||
@echo "--- Preparing sources using prepare_sources.sh ---"
|
@echo "--- Preparing sources using prepare_sources.sh ---"
|
||||||
@./prepare_sources.sh
|
./prepare_sources.sh
|
||||||
|
./prepare_sources.sh --check-integrity
|
||||||
|
|
||||||
# Build the Docker image which runs flatpak-builder inside
|
# Build the Docker image which runs flatpak-builder inside
|
||||||
# Implicitly depends on sources being ready after prepare-sources runs
|
# Implicitly depends on sources being ready after prepare-sources runs
|
||||||
@ -29,8 +32,7 @@ build-image:
|
|||||||
@echo "--- Building Aseprite Flatpak builder image (${IMAGE_NAME}) ---"
|
@echo "--- Building Aseprite Flatpak builder image (${IMAGE_NAME}) ---"
|
||||||
@docker build -t ${IMAGE_NAME} -f ${DOCKERFILE} .
|
@docker build -t ${IMAGE_NAME} -f ${DOCKERFILE} .
|
||||||
|
|
||||||
# Run flatpak-builder inside a privileged container
|
# Run flatpak-builder inside a privileged container with proper user permissions
|
||||||
# Create persistent cache directories to improve caching
|
|
||||||
.PHONY: run-flatpak-builder
|
.PHONY: run-flatpak-builder
|
||||||
run-flatpak-builder:
|
run-flatpak-builder:
|
||||||
@echo "--- Running flatpak-builder inside container ---"
|
@echo "--- Running flatpak-builder inside container ---"
|
||||||
@ -44,9 +46,12 @@ run-flatpak-builder:
|
|||||||
-v ${FLATPAK_STATE_DIR}:/root/.local/share/flatpak-builder \
|
-v ${FLATPAK_STATE_DIR}:/root/.local/share/flatpak-builder \
|
||||||
-v ${FLATPAK_CACHE_DIR}:/root/.cache/flatpak-builder \
|
-v ${FLATPAK_CACHE_DIR}:/root/.cache/flatpak-builder \
|
||||||
-v ${PWD}/com.aseprite.Aseprite.yaml:/build/com.aseprite.Aseprite.yaml:ro \
|
-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 \
|
-w /build \
|
||||||
${IMAGE_NAME} \
|
${IMAGE_NAME} \
|
||||||
sh -c "flatpak-builder --disable-rofiles-fuse --state-dir=/root/.local/share/flatpak-builder --ccache ${CLEAN_BUILD} 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"
|
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"
|
||||||
|
|
||||||
# Create the Flatpak bundle from the repo built in the previous step
|
# Create the Flatpak bundle from the repo built in the previous step
|
||||||
.PHONY: create-bundle
|
.PHONY: create-bundle
|
||||||
@ -57,9 +62,11 @@ create-bundle: run-flatpak-builder
|
|||||||
--privileged \
|
--privileged \
|
||||||
--device /dev/fuse \
|
--device /dev/fuse \
|
||||||
-v ${BUILD_DIR}:/build \
|
-v ${BUILD_DIR}:/build \
|
||||||
|
-e USER_ID=${USER_ID} \
|
||||||
|
-e GROUP_ID=${GROUP_ID} \
|
||||||
-w /build \
|
-w /build \
|
||||||
${IMAGE_NAME} \
|
${IMAGE_NAME} \
|
||||||
sh -c "flatpak build-bundle repo aseprite.flatpak com.aseprite.Aseprite"
|
sh -c "flatpak build-bundle repo aseprite.flatpak com.aseprite.Aseprite && chown ${USER_ID}:${GROUP_ID} aseprite.flatpak"
|
||||||
|
|
||||||
# Copy the final bundle from the intermediate directory to the output directory
|
# Copy the final bundle from the intermediate directory to the output directory
|
||||||
.PHONY: extract-flatpak
|
.PHONY: extract-flatpak
|
||||||
@ -79,24 +86,9 @@ prepare: prepare-sources build-image
|
|||||||
build: run-flatpak-builder create-bundle extract-flatpak
|
build: run-flatpak-builder create-bundle extract-flatpak
|
||||||
@echo "--- Build complete ---"
|
@echo "--- Build complete ---"
|
||||||
|
|
||||||
# --- Utility Targets ---
|
# Clean up only the source files and downloaded content
|
||||||
# Clean up the output and intermediate build directories
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
@echo "--- Cleaning up ---"
|
@echo "--- Cleaning source files ---"
|
||||||
@rm -rf ${TARGET_DIR}
|
@rm -rf ${SRC_DIR}
|
||||||
@rm -rf ${BUILD_DIR}
|
@echo "Source files cleaned. Run 'prepare-sources' to download them again."
|
||||||
@echo "Cleanup complete."
|
|
||||||
|
|
||||||
# Deep clean - removes all caches as well
|
|
||||||
.PHONY: deep-clean
|
|
||||||
deep-clean: clean
|
|
||||||
@echo "--- Deep cleaning (including caches) ---"
|
|
||||||
@rm -rf ${FLATPAK_STATE_DIR}
|
|
||||||
@rm -rf ${FLATPAK_CACHE_DIR}
|
|
||||||
@echo "Deep cleanup complete."
|
|
||||||
|
|
||||||
# Force clean build by setting CLEAN_BUILD variable
|
|
||||||
.PHONY: force-clean-build
|
|
||||||
force-clean-build:
|
|
||||||
@$(MAKE) CLEAN_BUILD="--force-clean" build
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user