1
0

22 Commits

Author SHA1 Message Date
aki
78c3eed0fc fix(makefile): Improve user permissions handling in Docker build process 2025-05-07 02:10:12 +08:00
aki
5a4239dd9e fix(manifest): Attmept at handling library 2025-05-07 01:55:48 +08:00
aki
a0506f94a3 fix(manifest): Fix the build process by extracting and installing static libraries from Skia 2025-05-07 01:48:30 +08:00
aki
b0479bfbf4 feat: Implement Flatpak build system using flatpak-builder in Docker
This commit replaces the previous multi-distribution Docker build system with a unified Flatpak build process executed inside a Docker container. This is the intended final architecture for building Aseprite bundles.

**Key Changes:**

*   **Transition to Flatpak:** The core build logic now uses `flatpak-builder` and a Flatpak manifest (`com.aseprite.Aseprite.yaml`) to compile Aseprite and its dependencies against a standard Flatpak SDK runtime.
*   **Unified Docker Environment:** Replaced distribution-specific `Dockerfile.<distro>` files with a single `Dockerfile` that sets up a consistent environment containing `flatpak-builder` and the necessary Flatpak SDK.
*   **Simplified Makefile:** Removed OS detection logic and multi-distro targets. The Makefile now orchestrates:
    1.  Running `prepare_sources.sh` on the host (still responsible for reliable source fetching/syncing).
    2.  Building the single Flatpak builder Docker image.
    3.  Running `flatpak-builder` inside a *privileged* container (required for `flatpak-builder` sandboxing) to perform the actual build.
    4.  Running `flatpak build-bundle` inside the container.
    5.  Extracting the final `.flatpak` bundle from the container to `./target/aseprite.flatpak`.
*   **Updated .gitignore:** Added `build/`, `target/`, `*.flatpak`, and `*.log` to ignore Flatpak build directories, output bundles, and logs. Removed the old `dependencies` ignore pattern.
*   **Prepare Sources Update:** Modified `prepare_sources.sh` to explicitly initialize `depot_tools` on the host, as this is required before sources are copied into the Flatpak build environment for `gn` usage.
*   **Removal of Old Files:** Deleted `Dockerfile.<distro>`, `Dockerfile.debian`, `Dockerfile.fedora`, `Dockerfile.arch` (multi-distro Dockerfiles), and the original generic `Dockerfile` and `docker-compose.yml`.

**Rationale:**

This refactor moves to the planned final architecture. Building within a Flatpak SDK provides a highly consistent environment independent of the host Linux distribution. The output is a portable `.flatpak` bundle, simplifying distribution and runtime compatibility compared to dynamically linking against varied host libraries. While `prepare_sources.sh` on the host still handles the initial (and potentially rate-limited) source fetching, the subsequent build process is significantly standardized and more reliable.

This architecture is now the **forward-maintained** build method.
2025-05-06 17:02:01 +08:00
aki
2b47036cc8 docs(README): Rewrite README.md from the ground up 2025-05-05 01:20:53 +08:00
aki
d12f0bdf88 refactor: Overhaul build system for reliability and future portability
This commit introduces a major refactoring of the Aseprite build process. It replaces the previous fragile system (prone to dependency fetching failures) with an interim multi-distribution Docker approach, paving the way for a future transition to Flatpak.

**Problems Addressed:**

*   **Build Fragility & Dependency Fetching:** The prior method, compiling dependencies from source within a generic container, frequently failed due to network issues and rate limiting during source/sub-dependency acquisition (e.g., Skia's `git-sync-deps`), often late in the process. Source state inconsistencies could also cause failures.
*   **Complexity of Full Source Builds:** Managing the compilation of the entire dependency tree from source was complex.

**New Architecture & Rationale:**

*   **Host-Side Source Preparation (`prepare_sources.sh`):** Isolates the problematic source fetching and state management to a host-side script run *before* the main build. Key features:
    *   Handles cloning/updating core sources (`depot_tools`, Skia, Aseprite).
    *   Runs Skia `git-sync-deps` with **robust retry logic** to specifically address rate limit errors.
    *   Includes an `--check-integrity` flag which performs **aggressive checks and resets** (fetching, checking out specific tags/commits, resetting state) to ensure the local source directories precisely match the required state for the build, potentially involving significant network activity.
*   **Distribution-Specific Builds (Interim Step):** Introduced `Dockerfile.arch`, `Dockerfile.debian`, `Dockerfile.fedora`. These use native package managers to install pre-built *common* development libraries within the container, simplifying the Docker build stage itself. Requires OS detection or manual selection (`TARGET_DISTRO`).
*   **Clear Build Stages (Makefile):** Orchestrates source preparation, image building, and final binary extraction (`docker cp` to `./output/bin`).
*   **Cleaned Structure:** Removed obsolete scripts/files (`compile.sh`, generic `Dockerfile`, `docker-compose.yml`) and updated `.gitignore`.

**Limitations & Future Direction (Flatpak):**

*   **Fetching Challenges Persist:** While reliability is improved by isolating source prep and adding retries/integrity checks in `prepare_sources.sh`, the core challenge of potential rate limits or network issues during this initial step remains.
*   **Flatpak for Portability:** The current multi-distro Docker setup is an **intermediate solution**. The ultimate goal and **forward-maintained approach** is migrating to **Flatpak (`flatpak-builder`)**. Flatpak will provide a **unified, distribution-agnostic build environment** using standard runtimes and produce a **portable `.flatpak` bundle**, eliminating the need for OS detection/separate Dockerfiles and ensuring consistent builds *after* sources are successfully prepared.
2025-05-05 01:16:07 +08:00
nilsve
45184df371
Update README.md 2025-02-05 09:17:00 +01:00
nilsve
c749ea2fed
Update README.md 2024-07-09 11:44:06 +02:00
nilsve
7e71eab87c
Merge pull request #9 from xackery/xackery/docker
Add non-compose support
2023-10-11 15:31:52 +02:00
xackery
fb299896b9 Add non-compose support 2023-10-01 13:52:52 -07:00
nilsve
fc75ad175a
Merge pull request #8 from BareTuna/patch-1
Add fix for libcrypto error in FAQ
2023-07-14 16:26:04 +02:00
Tuna
2d3ec8b873
Add fix for libcrypto error in FAQ 2023-07-06 23:01:22 -06:00
nilsve
c4216126fa
Merge pull request #6 from joshthemisanthrope/master
Updated to Aseprite v1.2.40 and Skia m102
v1.2
2023-02-03 15:23:58 +01:00
Josh
47eb4fb9d5 Updated to Aseprite v1.2.40 and Skia m102 2023-01-03 19:41:08 -04:00
nilsve
910c68d20b
Update README.md 2022-04-26 15:13:49 +02:00
nils
02647a7ee4 Fix build & compile skia from source v1.1 2022-04-06 11:37:51 +02:00
nilsve
18470299dc
Merge pull request #1 from up201806330/bug-outdated-skia-download
Fixed outdated skia download link in compile step
2022-03-17 13:01:42 +01:00
Rafael Ribeiro
d0cbd4022d Fixed outdated skia download link in compile step 2022-03-16 12:43:58 +00:00
nilsve
df6cf4ddb0
Update README.md 2021-04-16 13:24:13 +02:00
nils
68a9c4cf7d Initial commit 2021-04-16 13:22:50 +02:00
nils
0309364dec Initial commit 2021-04-16 13:19:27 +02:00
nils
1231e4b7f4 Initial commit 2021-04-16 13:15:19 +02:00