From 02647a7ee4eff45bdb532ebe7330e19b7e3e3830 Mon Sep 17 00:00:00 2001 From: nils Date: Wed, 6 Apr 2022 11:37:51 +0200 Subject: [PATCH] Fix build & compile skia from source --- Dockerfile | 9 +++++---- README.md | 8 +++++++- compile.sh | 41 ++++++++++++++++++++++++++++++++++++----- docker-compose.yml | 4 ++-- 4 files changed, 50 insertions(+), 12 deletions(-) diff --git a/Dockerfile b/Dockerfile index e35595d..261de20 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 +FROM python #Required for tzdata ENV TZ=Europe/Amsterdam @@ -9,12 +9,13 @@ RUN apt-get update RUN apt-get upgrade -y RUN apt-get install -y git unzip curl build-essential cmake ninja-build libx11-dev libxcursor-dev libxi-dev libgl1-mesa-dev libfontconfig1-dev +COPY compile.sh / + VOLUME /dependencies VOLUME /output WORKDIR /output -COPY compile.sh / - RUN ["chmod", "+x", "/compile.sh"] -ENTRYPOINT ["/compile.sh"] \ No newline at end of file + +ENTRYPOINT ["/compile.sh"] diff --git a/README.md b/README.md index 92a2e14..dd5904e 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,12 @@ This repository allows you to compile Aseprite without installing any build tool After spending hours trying to get Aseprite to compile, I decided to just make a Docker image for it -To simplify and speed up the build process, the build script uses the precompiled version of Skia, which it downloads from the Github repo. +Currently the script checks out Skia version `m96` and Aseprite version `1.2.34.1`. You can easily change this in `compile.sh` by changing the `-b` flag to the desired versions. + +If any of the folders of the projects folder isn't empty, the script will skip checking out the latest versions. In order to re-download, delete the according folder. +* ./dependencies/depot_tools +* ./dependencies/skia +* ./output/aseprite ## Usage * Install docker @@ -12,5 +17,6 @@ To simplify and speed up the build process, the build script uses the precompile * cd into cloned repository * Run `docker-compose build` * Run `docker-compose up` + * Grab a cup of coffee, since this can take quite a while (Compiling build deps, skia, and aseprite) You can now find the compiled version of Aseprite in the `output/aseprite/build/bin` folder diff --git a/compile.sh b/compile.sh index 89e8f23..5a7f576 100755 --- a/compile.sh +++ b/compile.sh @@ -1,16 +1,45 @@ #!/bin/bash -# Download Skia -if [ ! -d "/dependencies/skia" ] +# Fail on errors +set -e + +echo "Download and compile Skia & other dependencies" +cd /dependencies + +if [ ! -d "/dependencies/depot_tools" ] then - curl -L https://github.com/aseprite/skia/releases/download/m96-2f1f21b8a9/Skia-Linux-Release-x64.zip --output /dependencies/skia.zip - unzip /dependencies/skia.zip -d /dependencies/skia + git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git +fi + +if [ ! -d "/dependencies/skia" ] +then + git clone -b aseprite-m96 https://github.com/aseprite/skia.git +fi + +export PATH="${PWD}/depot_tools:${PATH}" + +cd skia +pwd +echo "Syncing skia dependencies" +python3 tools/git-sync-deps + +echo "Compiling skia" +gn gen out/Release-x64 --args="is_debug=false is_official_build=true skia_use_system_expat=false skia_use_system_icu=false skia_use_system_libjpeg_turbo=false skia_use_system_libpng=false skia_use_system_libwebp=false skia_use_system_zlib=false skia_use_sfntly=false skia_use_freetype=true skia_use_harfbuzz=true skia_pdf_subset_harfbuzz=true skia_use_system_freetype2=false skia_use_system_harfbuzz=false" +ninja -C out/Release-x64 skia modules + +echo "Download Aseprite and compile" +cd /output + +if [ ! -d "/output/aseprite" ] +then + git clone -b v1.2.34.1 --recursive https://github.com/aseprite/aseprite.git fi -git clone --recursive https://github.com/aseprite/aseprite.git cd aseprite mkdir -p build cd build + +echo "Compiling Asperite" cmake \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DLAF_BACKEND=skia \ @@ -19,4 +48,6 @@ cmake \ -DSKIA_LIBRARY=/dependencies/skia/out/Release-x64/libskia.a \ -G Ninja \ .. + +echo "Linking Aseprite" ninja aseprite diff --git a/docker-compose.yml b/docker-compose.yml index 04b9f66..18c269a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,5 +4,5 @@ services: installer: build: . volumes: - - ./output:/output - - ./dependencies:/dependencies \ No newline at end of file + - "./output:/output:rw" + - "./dependencies:/dependencies:rw"