From 4bf904749f9c121eabc9e32d6be61290699ab138 Mon Sep 17 00:00:00 2001 From: Eldred Habert Date: Thu, 6 Jan 2022 00:52:22 +0100 Subject: [PATCH] Use brand new PKGBUILD for Aseprite Package (#1) * Use brand new PKGBUILD instead Attempting to fix the old one's jank * Install third-party licenses as well * Install .desktop file as well * Add missing build-time dependencies * Install icons in the icon theme directories instead Also remove redundant `$srcdir`s in `package()` * Put font license in the central directory as well * Bump pkgrel It was bumped during my work * Ignore files in subdirectories * Add missing resource files * Use underscores for local variable names https://wiki.archlinux.org/title/Arch_package_guidelines#Package_etiquette https://github.com/ImperatorStorm/PKGBUILDs/pull/1#discussion_r777122781 * Use HTTPS for upstream URL * Add myself as co-maintainer Thanks! * Remove ICU dependency We are using a statically-linked version instead, apparently * Avoid interactive prompts when patching fails * Clean up $srcdir Extract Aseprite's sources into a separate directory Configure Aseprite out-of-tree Configure Skia in a fresh directory (apparently `gn` does not support out-of-tree) * Disable Skottie in Skia This functionality doesn't appear to be used by Aseprite, and excluding it should reduce build time * Only pull Skia dependencies that we need This significantly reduces initial build time (from syncing large repos) and storage use. The only remaining dependency that has a chance to be axed is `dng_sdk`, for which more investigation is needed. * Avoid printing redundant flags in `gn` args Brainfart. "static" flags like `is_debug` were re-printed for each "non-static" (e.g. `skia_use_*`) variant. Doing it this way also allows getting rid of weird quote shenanigans. * Simplify `gn` configure line `is_official_build=true` sets Skia up to use system libs by default, so only specify those that we *don't* want * Pull `gn` version ourselves That way, we can additionally check its integrity via the SHA256 * Add forgotten `libgl` dependency What's weird is that the lib seems not to be linked to dynamically, but I can't see it not being required at run time. Right? * Maybe use system libwebp? Based on https://patch-diff.githubusercontent.com/raw/aseprite/aseprite/pull/2535.patch * Fix system `libwebp`, add `pixman` as makedep * possibly fix shared-libwebp.patch? * Disable updater https://github.com/ImperatorStorm/PKGBUILDs/pull/1#issuecomment-1003838784 * Avoid creating symlinks to Skia deps in their dirs Would occur if they were already symlinked * Use system HarfBuzz and FreeType I remember getting build errors, but cannot reproduce them anymore. So use the system libs more where possible! * Find all WebP libs * Mark libwebp as runtime dep * Remove CMake variables used by libwebp build They do nothing now that we are using shared libwebp * Remove build-time dep on Pixman It doesn't wind up being used at all in the end * Trim off a bunch of dependencies from Skia Only libpng is required to render some of the images, it seems, so this reduces build time and the amount of sources, which is good! Co-authored-by: ImperatorStorm <30777770+ImperatorStorm@users.noreply.github.com> --- .SRCINFO | 138 +++++------------- .gitignore | 12 +- PKGBUILD | 300 +++++++++++++++------------------------- is_clang.py | 17 +++ optional-pixman.patch | 23 +++ shared-libarchive.patch | 74 ++++++++++ shared-libwebp.patch | 58 ++++++++ 7 files changed, 322 insertions(+), 300 deletions(-) create mode 100755 is_clang.py create mode 100644 optional-pixman.patch create mode 100644 shared-libarchive.patch create mode 100644 shared-libwebp.patch diff --git a/.SRCINFO b/.SRCINFO index 9a8f6d6..b8a7c13 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,129 +1,55 @@ pkgbase = aseprite pkgdesc = Create animated sprites and pixel art pkgver = 1.2.30 - pkgrel = 3 - url = http://www.aseprite.org/ + pkgrel = 4 + url = https://www.aseprite.org/ arch = x86_64 license = custom makedepends = cmake makedepends = ninja makedepends = git - makedepends = python2 makedepends = python - makedepends = freeglut - makedepends = xorgproto makedepends = libxi + makedepends = pixman makedepends = harfbuzz-icu - makedepends = nettle depends = cmark - depends = curl - depends = giflib + depends = libcurl.so + depends = libgif.so + depends = libjpeg.so depends = zlib depends = libpng depends = tinyxml - depends = freetype2 - depends = fontconfig - depends = libxcursor + depends = libfreetype.so + depends = libarchive.so + depends = libwebp.so + depends = libwebpmux.so + depends = libwebpdemux.so depends = hicolor-icon-theme - conflicts = aseprite-git - conflicts = aseprite-gpl - conflicts = skia-git - noextract = aseprite-1.2.30-buildtools.tar.gz - noextract = aseprite-1.2.30-common.tar.gz - noextract = aseprite-1.2.30-angle2.tar.gz - noextract = aseprite-1.2.30-dawn.tar.gz - noextract = aseprite-1.2.30-dng_sdk.tar.gz - noextract = aseprite-1.2.30-egl-registry.tar.gz - noextract = aseprite-1.2.30-expat.tar.gz - noextract = aseprite-1.2.30-freetype.tar.gz - noextract = aseprite-1.2.30-harfbuzz.tar.gz - noextract = aseprite-1.2.30-icu.tar.gz - noextract = aseprite-1.2.30-imgui.tar.gz - noextract = aseprite-1.2.30-libgifcodec.tar.gz - noextract = aseprite-1.2.30-libjpeg-turbo.tar.gz - noextract = aseprite-1.2.30-libpng.tar.gz - noextract = aseprite-1.2.30-libwebp.tar.gz - noextract = aseprite-1.2.30-lua.tar.gz - noextract = aseprite-1.2.30-microhttpd.tar.gz - noextract = aseprite-1.2.30-opencl-lib.tar.gz - noextract = aseprite-1.2.30-opencl-registry.tar.gz - noextract = aseprite-1.2.30-opengl-registry.tar.gz - noextract = aseprite-1.2.30-piex.tar.gz - noextract = aseprite-1.2.30-sdl.tar.gz - noextract = aseprite-1.2.30-sfntly.tar.gz - noextract = aseprite-1.2.30-spirv-cross.tar.gz - noextract = aseprite-1.2.30-spirv-headers.tar.gz - noextract = aseprite-1.2.30-spirv-tools.tar.gz - noextract = aseprite-1.2.30-swiftshader.tar.gz - noextract = aseprite-1.2.30-wuffs.tar.gz - noextract = aseprite-1.2.30-zlib.tar.gz + depends = libexpat.so=1-64 + depends = libharfbuzz.so=0-64 + depends = libgl + depends = libfontconfig.so + depends = libxcursor + noextract = Aseprite-v1.2.30-Source.zip source = https://github.com/aseprite/aseprite/releases/download/v1.2.30/Aseprite-v1.2.30-Source.zip - source = aseprite.desktop - source = git+https://chromium.googlesource.com/chromium/tools/depot_tools.git source = git+https://github.com/aseprite/skia.git#branch=aseprite-m81 - source = aseprite-1.2.30-buildtools.tar.gz::https://chromium.googlesource.com/chromium/buildtools.git/+archive/505de88083136eefd056e5ee4ca0f01fe9b33de8.tar.gz - source = aseprite-1.2.30-common.tar.gz::https://skia.googlesource.com/common.git/+archive/9737551d7a52c3db3262db5856e6bcd62c462b92.tar.gz - source = aseprite-1.2.30-angle2.tar.gz::https://chromium.googlesource.com/angle/angle.git/+archive/ee07cb317579dfda40dabb5d6d9c209e0e9e0643.tar.gz - source = aseprite-1.2.30-dawn.tar.gz::https://dawn.googlesource.com/dawn.git/+archive/604072bc2ed01018eb03bcbbf9d94042f679af63.tar.gz - source = aseprite-1.2.30-dng_sdk.tar.gz::https://android.googlesource.com/platform/external/dng_sdk.git/+archive/c8d0c9b1d16bfda56f15165d39e0ffa360a11123.tar.gz - source = aseprite-1.2.30-egl-registry.tar.gz::https://skia.googlesource.com/external/github.com/KhronosGroup/EGL-Registry/+archive/a0bca08de07c7d7651047bedc0b653cfaaa4f2ae.tar.gz - source = aseprite-1.2.30-expat.tar.gz::https://android.googlesource.com/platform/external/expat.git/+archive/e5aa0a2cb0a5f759ef31c0819dc67d9b14246a4a.tar.gz - source = aseprite-1.2.30-freetype.tar.gz::https://skia.googlesource.com/third_party/freetype2.git/+archive/0a3d2bb99b45b72e1d45185ab054efa993d97210.tar.gz - source = aseprite-1.2.30-harfbuzz.tar.gz::https://chromium.googlesource.com/external/github.com/harfbuzz/harfbuzz.git/+archive/3a74ee528255cc027d84b204a87b5c25e47bff79.tar.gz - source = aseprite-1.2.30-icu.tar.gz::https://chromium.googlesource.com/chromium/deps/icu.git/+archive/dbd3825b31041d782c5b504c59dcfb5ac7dda08c.tar.gz - source = aseprite-1.2.30-imgui.tar.gz::https://skia.googlesource.com/external/github.com/ocornut/imgui.git/+archive/d38d7c6628bebd02692cfdd6fa76b4d992a35b75.tar.gz - source = aseprite-1.2.30-libgifcodec.tar.gz::https://skia.googlesource.com/libgifcodec/+archive/38d9c73f49b861bb4a9829371ac311544b120023.tar.gz - source = aseprite-1.2.30-libjpeg-turbo.tar.gz::https://skia.googlesource.com/external/github.com/libjpeg-turbo/libjpeg-turbo.git/+archive/574f3a772c96dc9db2c98ef24706feb3f6dbda9a.tar.gz - source = aseprite-1.2.30-libpng.tar.gz::https://skia.googlesource.com/third_party/libpng.git/+archive/386707c6d19b974ca2e3db7f5c61873813c6fe44.tar.gz - source = aseprite-1.2.30-libwebp.tar.gz::https://chromium.googlesource.com/webm/libwebp.git/+archive/0fe1a89dbf1930fc2554dbe76adad5d962054ead.tar.gz - source = aseprite-1.2.30-lua.tar.gz::https://skia.googlesource.com/external/github.com/lua/lua.git/+archive/e354c6355e7f48e087678ec49e340ca0696725b1.tar.gz - source = aseprite-1.2.30-microhttpd.tar.gz::https://android.googlesource.com/platform/external/libmicrohttpd/+archive/748945ec6f1c67b7efc934ab0808e1d32f2fb98d.tar.gz - source = aseprite-1.2.30-opencl-lib.tar.gz::https://skia.googlesource.com/external/github.com/GPUOpen-Tools/common-lib-amd-APPSDK-3.0/+archive/4e6d30e406d2e5a65e1d65e404fe6df5f772a32b.tar.gz - source = aseprite-1.2.30-opencl-registry.tar.gz::https://skia.googlesource.com/external/github.com/KhronosGroup/OpenCL-Registry/+archive/932ed55c85f887041291cef8019e54280c033c35.tar.gz - source = aseprite-1.2.30-opengl-registry.tar.gz::https://skia.googlesource.com/external/github.com/KhronosGroup/OpenGL-Registry/+archive/14b80ebeab022b2c78f84a573f01028c96075553.tar.gz - source = aseprite-1.2.30-piex.tar.gz::https://android.googlesource.com/platform/external/piex.git/+archive/bb217acdca1cc0c16b704669dd6f91a1b509c406.tar.gz - source = aseprite-1.2.30-sdl.tar.gz::https://skia.googlesource.com/third_party/sdl/+archive/5d7cfcca344034aff9327f77fc181ae3754e7a90.tar.gz - source = aseprite-1.2.30-sfntly.tar.gz::https://chromium.googlesource.com/external/github.com/googlei18n/sfntly.git/+archive/b55ff303ea2f9e26702b514cf6a3196a2e3e2974.tar.gz - source = aseprite-1.2.30-spirv-cross.tar.gz::https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross/+archive/53ab2144b90abede33be5161aec5dfc94ddc3caf.tar.gz - source = aseprite-1.2.30-spirv-headers.tar.gz::https://skia.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers.git/+archive/29c11140baaf9f7fdaa39a583672c556bf1795a1.tar.gz - source = aseprite-1.2.30-spirv-tools.tar.gz::https://skia.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+archive/0c4feb643b89d1792b02f7cbef315e9d95633bd7.tar.gz - source = aseprite-1.2.30-swiftshader.tar.gz::https://swiftshader.googlesource.com/SwiftShader/+archive/430def835f9f85d52f4a96db9b715cd9a7403c9c.tar.gz - source = aseprite-1.2.30-wuffs.tar.gz::https://skia.googlesource.com/external/github.com/google/wuffs.git/+archive/4080840928c0b05a80cda0d14ac2e2615f679f1a.tar.gz - source = aseprite-1.2.30-zlib.tar.gz::https://chromium.googlesource.com/chromium/src/third_party/zlib/+archive/ea3ba903faac98b64b2bf8de5e98cd97b335a474.tar.gz source = gn::https://chromium-gn.storage-download.googleapis.com/3523d50538357829725d4ed74b777a572ce0ac74 + source = git+https://chromium.googlesource.com/chromium/buildtools.git#commit=505de88083136eefd056e5ee4ca0f01fe9b33de8 + source = git+https://skia.googlesource.com/common.git#commit=9737551d7a52c3db3262db5856e6bcd62c462b92 + source = aseprite.desktop + source = is_clang.py + source = shared-libarchive.patch + source = shared-libwebp.patch + source = optional-pixman.patch sha256sums = 9f4b098fe2327f2e9d73eb9f2aeebecad63e87ff2cf6fb6eeeee3c0778bb8874 + sha256sums = SKIP + sha256sums = c8c2d617f1a33d6eb27f25ebcc30bd8ba1e6a0aa980cada21dda2ad1401fa4a2 + sha256sums = SKIP + sha256sums = SKIP sha256sums = deaf646a615c79a4672b087562a09c44beef37e7acfc6f5f66a437d4f3b97a25 - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP - sha256sums = SKIP + sha256sums = cb901aaf479bcf1a2406ce21eb31e43d3581712a9ea245672ffd8fbcd9190441 + sha256sums = e42675504bfbc17655aef1dca957041095026cd3dd4e6981fb6df0a363948aa7 + sha256sums = 9a85e9b1b52c1d33d128cb87c12395d9a245049cfc10e148659ae2acd4cab3e6 + sha256sums = c2d14f9738a96a9db3695c00ac3d14b1312b6a595b151bd56e19422c86517654 pkgname = aseprite diff --git a/.gitignore b/.gitignore index 91bec31..3b15a45 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,9 @@ * -!.gitignore -!.SRCINFO -!aseprite.desktop -!PKGBUILD \ No newline at end of file +!/.gitignore +!/.SRCINFO +!/aseprite.desktop +!/PKGBUILD +!/is_clang.py +!/shared-libarchive.patch +!/shared-libwebp.patch +!/optional-pixman.patch diff --git a/PKGBUILD b/PKGBUILD index 53b153c..ae87442 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,4 +1,5 @@ # Maintainer: Imperator Storm <30777770+ImperatorStorm@users.noreply.github.com> +# Co-Maintainer: Eldred Habert # Contributor: Fredrick Brennan # Contributor: Andrew Bueide # Contributor: rouhannb @@ -9,213 +10,132 @@ pkgname=aseprite pkgver=1.2.30 -pkgrel=3 +pkgrel=4 pkgdesc='Create animated sprites and pixel art' arch=('x86_64') -url="http://www.aseprite.org/" +url="https://www.aseprite.org/" license=('custom') -depends=('cmark' 'curl' 'giflib' 'zlib' 'libpng' 'tinyxml' 'freetype2' 'fontconfig' 'libxcursor' - 'hicolor-icon-theme') -makedepends=('cmake' 'ninja' 'git' 'python2' 'python' 'freeglut' 'xorgproto' 'libxi' 'harfbuzz-icu' - 'nettle') -conflicts=("aseprite-git" "aseprite-gpl" "skia-git") -source=("https://github.com/${pkgname}/${pkgname}/releases/download/v${pkgver}/${pkgname^}-\ -v${pkgver}-Source.zip" -"${pkgname}.desktop" -"git+https://chromium.googlesource.com/chromium/tools/depot_tools.git" -"git+https://github.com/${pkgname}/skia.git#branch=${pkgname}-m81" -"${pkgname}-${pkgver}-buildtools.tar.gz::https://chromium.googlesource.com/chromium/buildtools.git/+archive/\ -505de88083136eefd056e5ee4ca0f01fe9b33de8.tar.gz" -"${pkgname}-${pkgver}-common.tar.gz::https://skia.googlesource.com/common.git/+archive/\ -9737551d7a52c3db3262db5856e6bcd62c462b92.tar.gz" -"${pkgname}-${pkgver}-angle2.tar.gz::https://chromium.googlesource.com/angle/angle.git/+archive/\ -ee07cb317579dfda40dabb5d6d9c209e0e9e0643.tar.gz" -"${pkgname}-${pkgver}-dawn.tar.gz::https://dawn.googlesource.com/dawn.git/+archive/\ -604072bc2ed01018eb03bcbbf9d94042f679af63.tar.gz" -"${pkgname}-${pkgver}-dng_sdk.tar.gz::https://android.googlesource.com/platform/external/dng_sdk.git/\ -+archive/c8d0c9b1d16bfda56f15165d39e0ffa360a11123.tar.gz" -"${pkgname}-${pkgver}-egl-registry.tar.gz::https://skia.googlesource.com/external/github.com/KhronosGroup\ -/EGL-Registry/+archive/a0bca08de07c7d7651047bedc0b653cfaaa4f2ae.tar.gz" -"${pkgname}-${pkgver}-expat.tar.gz::https://android.googlesource.com/platform/external/expat.git/+archive/\ -e5aa0a2cb0a5f759ef31c0819dc67d9b14246a4a.tar.gz" -"${pkgname}-${pkgver}-freetype.tar.gz::https://skia.googlesource.com/third_party/freetype2.git/+archive/\ -0a3d2bb99b45b72e1d45185ab054efa993d97210.tar.gz" -"${pkgname}-${pkgver}-harfbuzz.tar.gz::https://chromium.googlesource.com/external/github.com/harfbuzz/\ -harfbuzz.git/+archive/3a74ee528255cc027d84b204a87b5c25e47bff79.tar.gz" -"${pkgname}-${pkgver}-icu.tar.gz::https://chromium.googlesource.com/chromium/deps/icu.git/+archive/\ -dbd3825b31041d782c5b504c59dcfb5ac7dda08c.tar.gz" -"${pkgname}-${pkgver}-imgui.tar.gz::https://skia.googlesource.com/external/github.com/ocornut/imgui.git\ -/+archive/d38d7c6628bebd02692cfdd6fa76b4d992a35b75.tar.gz" -"${pkgname}-${pkgver}-libgifcodec.tar.gz::https://skia.googlesource.com/libgifcodec/+archive/\ -38d9c73f49b861bb4a9829371ac311544b120023.tar.gz" -"${pkgname}-${pkgver}-libjpeg-turbo.tar.gz::https://skia.googlesource.com/external/github.com/libjpeg-turbo\ -/libjpeg-turbo.git/+archive/574f3a772c96dc9db2c98ef24706feb3f6dbda9a.tar.gz" -"${pkgname}-${pkgver}-libpng.tar.gz::https://skia.googlesource.com/third_party/libpng.git/+archive/\ -386707c6d19b974ca2e3db7f5c61873813c6fe44.tar.gz" -"${pkgname}-${pkgver}-libwebp.tar.gz::https://chromium.googlesource.com/webm/libwebp.git/+archive/\ -0fe1a89dbf1930fc2554dbe76adad5d962054ead.tar.gz" -"${pkgname}-${pkgver}-lua.tar.gz::https://skia.googlesource.com/external/github.com/lua/lua.git/+archive/\ -e354c6355e7f48e087678ec49e340ca0696725b1.tar.gz" -"${pkgname}-${pkgver}-microhttpd.tar.gz::https://android.googlesource.com/platform/external/libmicrohttpd\ -/+archive/748945ec6f1c67b7efc934ab0808e1d32f2fb98d.tar.gz" -"${pkgname}-${pkgver}-opencl-lib.tar.gz::https://skia.googlesource.com/external/github.com/GPUOpen-Tools/\ -common-lib-amd-APPSDK-3.0/+archive/4e6d30e406d2e5a65e1d65e404fe6df5f772a32b.tar.gz" -"${pkgname}-${pkgver}-opencl-registry.tar.gz::https://skia.googlesource.com/external/github.com/\ -KhronosGroup/OpenCL-Registry/+archive/932ed55c85f887041291cef8019e54280c033c35.tar.gz" -"${pkgname}-${pkgver}-opengl-registry.tar.gz::https://skia.googlesource.com/external/github.com/\ -KhronosGroup/OpenGL-Registry/+archive/14b80ebeab022b2c78f84a573f01028c96075553.tar.gz" -"${pkgname}-${pkgver}-piex.tar.gz::https://android.googlesource.com/platform/external/piex.git/+archive/\ -bb217acdca1cc0c16b704669dd6f91a1b509c406.tar.gz" -"${pkgname}-${pkgver}-sdl.tar.gz::https://skia.googlesource.com/third_party/sdl/+archive/\ -5d7cfcca344034aff9327f77fc181ae3754e7a90.tar.gz" -"${pkgname}-${pkgver}-sfntly.tar.gz::https://chromium.googlesource.com/external/github.com/googlei18n/\ -sfntly.git/+archive/b55ff303ea2f9e26702b514cf6a3196a2e3e2974.tar.gz" -"${pkgname}-${pkgver}-spirv-cross.tar.gz::https://chromium.googlesource.com/external/github.com/\ -KhronosGroup/SPIRV-Cross/+archive/53ab2144b90abede33be5161aec5dfc94ddc3caf.tar.gz" -"${pkgname}-${pkgver}-spirv-headers.tar.gz::https://skia.googlesource.com/external/github.com/KhronosGroup/\ -SPIRV-Headers.git/+archive/29c11140baaf9f7fdaa39a583672c556bf1795a1.tar.gz" -"${pkgname}-${pkgver}-spirv-tools.tar.gz::https://skia.googlesource.com/external/github.com/KhronosGroup\ -/SPIRV-Tools.git/+archive/0c4feb643b89d1792b02f7cbef315e9d95633bd7.tar.gz" -"${pkgname}-${pkgver}-swiftshader.tar.gz::https://swiftshader.googlesource.com/SwiftShader/+archive/\ -430def835f9f85d52f4a96db9b715cd9a7403c9c.tar.gz" -"${pkgname}-${pkgver}-wuffs.tar.gz::https://skia.googlesource.com/external/github.com/google/wuffs.git\ -/+archive/4080840928c0b05a80cda0d14ac2e2615f679f1a.tar.gz" -"${pkgname}-${pkgver}-zlib.tar.gz::https://chromium.googlesource.com/chromium/src/third_party/zlib/+archive/\ -ea3ba903faac98b64b2bf8de5e98cd97b335a474.tar.gz" -"gn::https://chromium-gn.storage-download.googleapis.com/3523d50538357829725d4ed74b777a572ce0ac74" -) -_gitsrc=("${source[@]:4:29}") -noextract=("${_gitsrc[@]%%::*}") +depends=(# ~ Aseprite's direct dependencies ~ + # pixman is not linked to because we use Skia instead + # harfbuzz is linked statically because Aseprite expects an older version + cmark libcurl.so libgif.so libjpeg.so zlib libpng tinyxml libfreetype.so libarchive.so + libwebp.so libwebpmux.so libwebpdemux.so + hicolor-icon-theme # For installing Aseprite's icons + # ~ Skia deps ~ + # (Skia links dynamically to HarfBuzz, only Aseprite itself doesn't. >_<) + libexpat.so=1-64 libharfbuzz.so=0-64 libgl + # Already required by Aseprite: libjpeg-turbo libpng zlib freetype2 + # These two are only reported by Namcap, but don't seem to be direct dependencies? + libfontconfig.so libxcursor) +makedepends=(# "Meta" dependencies + cmake ninja git python + # Aseprite (including e.g. LAF) + libxi pixman + # Skia + 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-m81" + # `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::https://chromium-gn.storage-download.googleapis.com/3523d50538357829725d4ed74b777a572ce0ac74" + # Skia dependencies, determined from `skia/DEPS` + # Only pulling what we need, though + "git+https://chromium.googlesource.com/chromium/buildtools.git#commit=505de88083136eefd056e5ee4ca0f01fe9b33de8" + "git+https://skia.googlesource.com/common.git#commit=9737551d7a52c3db3262db5856e6bcd62c462b92" + "$pkgname.desktop" + # Python 3-compliant version of the script + is_clang.py + # Based on https://patch-diff.githubusercontent.com/raw/aseprite/aseprite/pull/2535.patch + shared-libarchive.patch + # Based on https://patch-diff.githubusercontent.com/raw/aseprite/aseprite/pull/2523.patch + shared-libwebp.patch + optional-pixman.patch) +noextract=("${source[0]##*/}") # Don't extract Aseprite sources at the root sha256sums=('9f4b098fe2327f2e9d73eb9f2aeebecad63e87ff2cf6fb6eeeee3c0778bb8874' + 'SKIP' + 'c8c2d617f1a33d6eb27f25ebcc30bd8ba1e6a0aa980cada21dda2ad1401fa4a2' + 'SKIP' + 'SKIP' 'deaf646a615c79a4672b087562a09c44beef37e7acfc6f5f66a437d4f3b97a25' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP' - 'SKIP') + 'cb901aaf479bcf1a2406ce21eb31e43d3581712a9ea245672ffd8fbcd9190441' + 'e42675504bfbc17655aef1dca957041095026cd3dd4e6981fb6df0a363948aa7' + '9a85e9b1b52c1d33d128cb87c12395d9a245049cfc10e148659ae2acd4cab3e6' + 'c2d14f9738a96a9db3695c00ac3d14b1312b6a595b151bd56e19422c86517654') prepare() { - cd "${srcdir}" + # Extract Aseprite's sources + mkdir -p aseprite + bsdtar -xf "${noextract[0]}" -C aseprite - # Install skia deps (essentially runs git-sync-deps with the files already downloaded) - mkdir --parents --verbose skia/third_party/externals + # Symlink Skia's build dependencies + # Sort of emulating `skia/tools/git-sync-deps`, but only grabbing what we need + mkdir -p skia/third_party/externals + # Key = repo name (from above), value = path under `src/skia/` + local -A _skiadeps=([buildtools]=buildtools + [common]=common) _dep + for _dep in "${!_skiadeps[@]}"; do + ln -svfT "$(realpath $_dep)" "skia/${_skiadeps[$_dep]}" + done + chmod 755 gn - for _dep in buildtools common - do - mkdir --parents --verbose "skia/${_dep}" - tar --verbose --extract --file "${pkgname}-${pkgver}-${_dep}.tar.gz" --directory "skia/${_dep}" - done + # Replace `is_clang.py` with Python 3-compliant version + cp -v is_clang.py skia/gn - for _dep in angle2 dawn dng_sdk egl-registry expat freetype harfbuzz icu imgui opencl-registry \ - libjpeg-turbo libpng libwebp lua microhttpd opencl-lib opengl-registry piex \ - sdl sfntly spirv-cross spirv-headers spirv-tools swiftshader zlib wuffs - do - mkdir --parents --verbose "skia/third_party/externals/${_dep}" - tar --verbose --extract --file "${pkgname}-${pkgver}-${_dep}.tar.gz" --directory \ - "skia/third_party/externals/${_dep}" - done - - chmod u=rwx,g=rx,o=rx --verbose gn - mv --verbose gn skia/bin/gn - cp --verbose skia/bin/gn skia/buildtools/linux64/gn - - mkdir --parents --verbose binsub - ln --force --symbolic $(which python2) binsub/python + # Allow using shared libarchive (the bundled version prevents using the `None` build type...) + env -C aseprite patch -tp1 +Date: Fri, 9 Oct 2020 02:18:36 +0300 +Subject: [PATCH] Make LibArchive as shared library dependency + +--- + CMakeLists.txt | 11 +++++++++++ + src/app/CMakeLists.txt | 2 +- + third_party/CMakeLists.txt | 22 ++++++++++++---------- + 3 files changed, 24 insertions(+), 11 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 9cb5a2cdfb..9d95936f36 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -60,6 +60,7 @@ option(USE_SHARED_CURL "Use your installed copy of curl" off) + option(USE_SHARED_GIFLIB "Use your installed copy of giflib" off) + option(USE_SHARED_JPEGLIB "Use your installed copy of jpeglib" off) + option(USE_SHARED_ZLIB "Use your installed copy of zlib" off) ++option(USE_SHARED_LIBARCHIVE "Use your installed copy of libarchive" off) + option(USE_SHARED_LIBPNG "Use your installed copy of libpng" off) + option(USE_SHARED_TINYXML "Use your installed copy of tinyxml" off) + option(USE_SHARED_PIXMAN "Use your installed copy of pixman" off) +@@ -200,6 +201,16 @@ else() + endif() + include_directories(${ZLIB_INCLUDE_DIRS}) + ++# libarchive ++if(USE_SHARED_LIBARCHIVE) ++ find_package(LibArchive REQUIRED) ++else() ++ set(LibArchive_FOUND) ++ set(LibArchive_LIBRARIES archive_static) ++ set(LibArchive_INCLUDE_DIRS $) ++endif() ++include_directories(${LibArchive_INCLUDE_DIRS}) ++ + # libpng + if(USE_SHARED_LIBPNG) + find_package(PNG REQUIRED) +diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt +index e1e3bc1ae3..4a37838e95 100644 +--- a/src/app/CMakeLists.txt ++++ b/src/app/CMakeLists.txt +@@ -651,8 +651,8 @@ target_link_libraries(app-lib + ${ZLIB_LIBRARIES} + ${FREETYPE_LIBRARIES} + ${HARFBUZZ_LIBRARIES} ++ ${LibArchive_LIBRARIES} + json11 +- archive_static + fmt + tinyexpr) + +diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt +index ffd1c0cfcd..4839d4097c 100644 +--- a/third_party/CMakeLists.txt.orig ++++ b/third_party/CMakeLists.txt +@@ -110,6 +110,7 @@ endif() + add_subdirectory(json11) + + # libarchive ++if(NOT USE_SHARED_LIBARCHIVE) + set(ENABLE_WERROR OFF CACHE BOOL "Treat warnings as errors - default is ON for Debug, OFF otherwise.") + set(ENABLE_TEST OFF CACHE BOOL "Enable unit and regression tests") + set(ENABLE_COVERAGE OFF CACHE BOOL "Enable code coverage (GCC only, automatically sets ENABLE_TEST to ON)") +@@ -123,6 +124,7 @@ set(ENABLE_CPIO OFF CACHE BOOL "Enable cpio building") + add_subdirectory(libarchive) + target_include_directories(archive_static INTERFACE + $) ++endif() + + # benchmark + if(ENABLE_BENCHMARKS) diff --git a/shared-libwebp.patch b/shared-libwebp.patch new file mode 100644 index 0000000..65de0c6 --- /dev/null +++ b/shared-libwebp.patch @@ -0,0 +1,58 @@ +From ca9e20a87be6dcc8d9b97841535b2320d2eb2f91 Mon Sep 17 00:00:00 2001 +From: Drauthius +Date: Sat, 26 Sep 2020 10:40:13 +0200 +Subject: [PATCH] Shared webp library + +Making optional linking with shared system webp library with +-DUSE_SHARED_WEBP option. +--- + CMakeLists.txt | 12 +++++++++--- + third_party/CMakeLists.txt | 2 +- + 2 files changed, 10 insertions(+), 4 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index f16f09660d..40065905d3 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -66,6 +66,7 @@ option(USE_SHARED_TINYXML "Use your installed copy of tinyxml" off) + option(USE_SHARED_PIXMAN "Use your installed copy of pixman" off) + option(USE_SHARED_FREETYPE "Use shared FreeType library" off) + option(USE_SHARED_HARFBUZZ "Use shared HarfBuzz library" off) ++option(USE_SHARED_WEBP "Use your installed copy of webp" off) + option(ENABLE_ASEPRITE_EXE "Compile main Aseprite executable" on) + option(ENABLE_MEMLEAK "Enable memory-leaks detector (only for developers)" off) + option(ENABLE_NEWS "Enable the news in Home tab" on) +@@ -229,9 +230,17 @@ add_definitions(-DPNG_NO_MMX_CODE) # Do not use MMX optimizations in PNG code + + # libwebp + if(WITH_WEBP_SUPPORT) +- set(WEBP_LIBRARIES webp webpdemux libwebpmux) +- set(WEBP_INCLUDE_DIR ${LIBWEBP_DIR}/src) +- include_directories(${WEBP_INCLUDE_DIR}) ++ if(USE_SHARED_WEBP) ++ find_library(WEBP_LIBRARY NAMES webp) ++ find_library(WEBPDEMUX_LIBRARY NAMES webpdemux) ++ find_library(WEBPMUX_LIBRARY NAMES webpmux) ++ set(WEBP_LIBRARIES ${WEBP_LIBRARY} ${WEBPDEMUX_LIBRARY} ${WEBPMUX_LIBRARY}) ++ find_path(WEBP_INCLUDE_DIRS NAMES decode.h PATH_SUFFIXES webp) ++ else() ++ set(WEBP_LIBRARIES webp webpdemux libwebpmux) ++ set(WEBP_INCLUDE_DIR ${LIBWEBP_DIR}/src) ++ include_directories(${WEBP_INCLUDE_DIR}) ++ endif() + endif() + + # tinyxml +diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt +index 4839d4097c..e8c3e83cbc 100644 +--- a/third_party/CMakeLists.txt ++++ b/third_party/CMakeLists.txt +@@ -32,7 +32,7 @@ if(NOT USE_SHARED_GIFLIB) + add_subdirectory(giflib) + endif() + +-if(WITH_WEBP_SUPPORT) ++if(WITH_WEBP_SUPPORT AND NOT USE_SHARED_WEBP) + set(WEBP_BUILD_EXTRAS OFF CACHE BOOL "Build extras.") + add_subdirectory(libwebp) + endif()