summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO5
-rw-r--r--.gitignore1
-rw-r--r--PKGBUILD26
-rw-r--r--shared-skia-deps.patch21
4 files changed, 38 insertions, 15 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 0068a37d0258..88add275bab8 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -11,6 +11,7 @@ pkgbase = aseprite
makedepends = python
makedepends = libxi
makedepends = pixman
+ makedepends = gn
makedepends = harfbuzz-icu
depends = cmark
depends = libcurl.so
@@ -33,21 +34,21 @@ pkgbase = aseprite
noextract = Aseprite-v1.2.31-Source.zip
source = https://github.com/aseprite/aseprite/releases/download/v1.2.31/Aseprite-v1.2.31-Source.zip
source = git+https://github.com/aseprite/skia.git#branch=aseprite-m96
- source = gn.zip::https://chrome-infra-packages.appspot.com/dl/gn/gn/linux-amd64/+/git_revision:d62642c920e6a0d1756316d225a90fd6faa9e21e
source = git+https://chromium.googlesource.com/chromium/buildtools.git#commit=505de88083136eefd056e5ee4ca0f01fe9b33de8
source = git+https://skia.googlesource.com/common.git#commit=9737551d7a52c3db3262db5856e6bcd62c462b92
source = is_clang.py
source = shared-libarchive.patch
source = shared-libwebp.patch
+ source = shared-skia-deps.patch
source = optional-pixman.patch
sha256sums = 966bd940e1072ed24b70e211ca2bb1eb9aa6432ca12972a8e1df5f1e0150213d
sha256sums = SKIP
- sha256sums = 0ef7a431fa1bfd2d12edd1f6ceffac7e2b6ed89dcfae9aea9bf681d42a068347
sha256sums = SKIP
sha256sums = SKIP
sha256sums = cb901aaf479bcf1a2406ce21eb31e43d3581712a9ea245672ffd8fbcd9190441
sha256sums = e42675504bfbc17655aef1dca957041095026cd3dd4e6981fb6df0a363948aa7
sha256sums = 2d6b5f33f23adc4f9912511ac35311a776ce34519ef40e9db3659e4c5457f055
+ sha256sums = eb9f544e68b41b5cb1a9ab7a6648db51587e67e94f1a452cb5a84f3d224bf5d0
sha256sums = c2d14f9738a96a9db3695c00ac3d14b1312b6a595b151bd56e19422c86517654
pkgname = aseprite
diff --git a/.gitignore b/.gitignore
index 3b15a4531f75..95f1d6aef701 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,4 +6,5 @@
!/is_clang.py
!/shared-libarchive.patch
!/shared-libwebp.patch
+!/shared-skia-deps.patch
!/optional-pixman.patch
diff --git a/PKGBUILD b/PKGBUILD
index 2de6978c0a30..edc712081c43 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -32,13 +32,10 @@ makedepends=(# "Meta" dependencies
# Aseprite (including e.g. LAF)
libxi pixman
# Skia
- harfbuzz-icu)
+ gn harfbuzz-icu)
source=("https://github.com/aseprite/aseprite/releases/download/v$pkgver/Aseprite-v$pkgver-Source.zip"
# Which branch a given build of Aseprite requires is noted in its `INSTALL.md`
"git+https://github.com/aseprite/skia.git#branch=aseprite-m96"
- # `gn` executable required to configure Skia, pulled from `skia/bin/fetch-gn`
- # Normally we'd use the Arch-provided one, but it has API incompatibilities
- "gn.zip::https://chrome-infra-packages.appspot.com/dl/gn/gn/linux-amd64/+/git_revision:d62642c920e6a0d1756316d225a90fd6faa9e21e"
# Skia dependencies, determined from `skia/DEPS`
# Only pulling what we need, though
"git+https://chromium.googlesource.com/chromium/buildtools.git#commit=505de88083136eefd056e5ee4ca0f01fe9b33de8"
@@ -49,16 +46,17 @@ source=("https://github.com/aseprite/aseprite/releases/download/v$pkgver/Aseprit
shared-libarchive.patch
# Based on https://patch-diff.githubusercontent.com/raw/aseprite/aseprite/pull/2523.patch
shared-libwebp.patch
+ shared-skia-deps.patch
optional-pixman.patch)
noextract=("${source[0]##*/}") # Don't extract Aseprite sources at the root
sha256sums=('966bd940e1072ed24b70e211ca2bb1eb9aa6432ca12972a8e1df5f1e0150213d'
'SKIP'
- '0ef7a431fa1bfd2d12edd1f6ceffac7e2b6ed89dcfae9aea9bf681d42a068347'
'SKIP'
'SKIP'
'cb901aaf479bcf1a2406ce21eb31e43d3581712a9ea245672ffd8fbcd9190441'
'e42675504bfbc17655aef1dca957041095026cd3dd4e6981fb6df0a363948aa7'
'2d6b5f33f23adc4f9912511ac35311a776ce34519ef40e9db3659e4c5457f055'
+ 'eb9f544e68b41b5cb1a9ab7a6648db51587e67e94f1a452cb5a84f3d224bf5d0'
'c2d14f9738a96a9db3695c00ac3d14b1312b6a595b151bd56e19422c86517654')
prepare() {
@@ -75,34 +73,36 @@ prepare() {
for _dep in "${!_skiadeps[@]}"; do
ln -svfT "$(realpath $_dep)" "skia/${_skiadeps[$_dep]}"
done
- bsdtar -xf gn.zip gn
- chmod 755 gn
# Replace `is_clang.py` with Python 3-compliant version
cp -v is_clang.py skia/gn
# Allow using shared libarchive (the bundled version prevents using the `None` build type...)
env -C aseprite patch -tp1 <shared-libarchive.patch
- # Allow using shared libarchive (breaks builds otherwise...)
+ # Allow using shared libwebp (breaks builds otherwise...)
env -C aseprite patch -tp1 <shared-libwebp.patch
# Skip the build-time dependency on Pixman since it doesn't get used in the end
env -C aseprite patch -tp1 <optional-pixman.patch
+ # Their "FindSkia" module forcefully tries to use Skia's FreeType and HarfBuzz,
+ # but we don't clone those because we use the shared ones. Avoid overwriting the settings instead.
+ env -C aseprite patch -tp1 <shared-skia-deps.patch
}
build() {
echo Building Skia...
local _skiadir="$PWD/skia/obj"
- # Must use the bundled `gn` executable and HarfBuzz libraries because of incompatibilities
# Flags can typically be found in `src/skia/gn/skia.gni`... but you're kind of on your own
- env -C skia ../gn gen "$_skiadir" --args="`printf '%s ' \
-is_debug=false is_official_build=true skia_enable_{skottie,pdf}=false \
-skia_use_{expat,libwebp,xps,zlib,libgifcodec,sfntly}=false`"
+ env -C skia gn gen "$_skiadir" --args="`printf '%s ' \
+is_debug=false is_official_build=true skia_build_fuzzers=false \
+skia_enable_{pdf,skottie,skrive,sksl}=false \
+skia_use_{libjpeg_turbo,libwebp}_{encode,decode}=false \
+skia_use_{expat,xps,zlib,libgifcodec,sfntly}=false`"
ninja -C "$_skiadir" skia modules
echo Building Aseprite...
# Suppress install messages since we install to a temporary area; `install -v` will do the job
cmake -S aseprite -B build -G Ninja -Wno-dev -DCMAKE_INSTALL_MESSAGE=NEVER -DCMAKE_BUILD_TYPE=None \
--DENABLE_UPDATER=NO -DLAF_WITH_EXAMPLES=OFF -DLAF_WITH_TESTS=OFF -DLAF_OS_BACKEND=skia -DLAF_BACKEND=skia \
+-DENABLE_{UPDATER,SCRIPTING,WEBSOCKET}=NO -DLAF_WITH_EXAMPLES=OFF -DLAF_WITH_TESTS=OFF -DLAF_BACKEND=skia \
-DSKIA_DIR="$PWD/skia" -DSKIA_LIBRARY_DIR="$_skiadir" -DSKIA_LIBRARY="$_skiadir/libskia.a" \
-DUSE_SHARED_{CMARK,CURL,GIFLIB,JPEGLIB,ZLIB,LIBPNG,TINYXML,PIXMAN,FREETYPE,HARFBUZZ,LIBARCHIVE,WEBP}=YES
ninja -C build
diff --git a/shared-skia-deps.patch b/shared-skia-deps.patch
new file mode 100644
index 000000000000..77bdebc8b06d
--- /dev/null
+++ b/shared-skia-deps.patch
@@ -0,0 +1,21 @@
+--- src/laf/cmake/FindSkia.cmake.orig 2022-01-08 02:15:13.417619266 +0100
++++ src/laf/cmake/FindSkia.cmake 2022-01-08 02:15:43.603960491 +0100
+@@ -32,14 +32,18 @@
+ # SkShaper module + freetype + harfbuzz
+ find_library(SKSHAPER_LIBRARY skshaper PATH "${SKIA_LIBRARY_DIR}")
+
++if(NOT USE_SHARED_FREETYPE)
+ set(FREETYPE_FOUND ON)
+ find_library(FREETYPE_LIBRARY freetype2 PATH "${SKIA_LIBRARY_DIR}" NO_DEFAULT_PATH)
+ set(FREETYPE_LIBRARIES ${FREETYPE_LIBRARY})
+ set(FREETYPE_INCLUDE_DIRS "${SKIA_DIR}/third_party/externals/freetype/include")
++endif()
+
++if(NOT USE_SHARED_HARFBUZZ)
+ find_library(HARFBUZZ_LIBRARY harfbuzz PATH "${SKIA_LIBRARY_DIR}" NO_DEFAULT_PATH)
+ set(HARFBUZZ_LIBRARIES ${HARFBUZZ_LIBRARY})
+ set(HARFBUZZ_INCLUDE_DIRS "${SKIA_DIR}/third_party/externals/harfbuzz/src")
++endif()
+
+ set(SKIA_LIBRARIES
+ ${SKIA_LIBRARY}