diff options
author | mohad12211 | 2022-01-11 00:53:07 +0300 |
---|---|---|
committer | mohad12211 | 2022-01-11 00:53:07 +0300 |
commit | 994a266bff6a3aef2de9482787977c91437e09fb (patch) | |
tree | e67d1fa8b0f6885b2b6663143c937559e77327de | |
parent | 4ced026add5c8aa23a592c7a7e5c777a77a4a776 (diff) | |
download | aur-994a266bff6a3aef2de9482787977c91437e09fb.tar.gz |
Big refactors, thanks to ISSOtm
-rw-r--r-- | .SRCINFO | 41 | ||||
-rw-r--r-- | .gitignore | 8 | ||||
-rw-r--r-- | PKGBUILD | 158 | ||||
-rw-r--r-- | aseprite.desktop | 14 | ||||
-rw-r--r-- | optional-pixman.patch | 23 | ||||
-rw-r--r-- | shared-libarchive.patch | 74 | ||||
-rw-r--r-- | shared-libwebp.patch | 56 |
7 files changed, 260 insertions, 114 deletions
@@ -1,40 +1,45 @@ pkgbase = aseprite-skia-bin pkgdesc = Create animated sprites and pixel art pkgver = 1.2.30 - pkgrel = 1 - url = http://www.aseprite.org/ + pkgrel = 2 + url = https://www.aseprite.org/ arch = x86_64 license = custom makedepends = cmake - makedepends = libglvnd makedepends = ninja - makedepends = freeglut - makedepends = harfbuzz-icu - makedepends = nettle + makedepends = git + makedepends = python makedepends = libxi + makedepends = pixman + makedepends = harfbuzz-icu depends = cmark - depends = curl - depends = libjpeg-turbo - depends = giflib + depends = libcurl.so + depends = libgif.so + depends = libjpeg.so depends = zlib depends = libpng depends = tinyxml - depends = pixman - depends = freetype2 - depends = fontconfig - depends = libxcursor + depends = libfreetype.so=6-64 + depends = libarchive.so + depends = libexpat.so=1-64 + depends = libharfbuzz.so=0-64 depends = hicolor-icon-theme + depends = libgl + depends = libfontconfig.so + depends = libxcursor provides = aseprite - conflicts = aseprite-git - conflicts = aseprite-gpl - conflicts = skia-git conflicts = aseprite + noextract = Aseprite-v1.2.30-Source.zip noextract = Skia-Linux-Release-x64.zip source = https://github.com/aseprite/aseprite/releases/download/v1.2.30/Aseprite-v1.2.30-Source.zip source = https://github.com/aseprite/skia/releases/download/m81-b607b32047/Skia-Linux-Release-x64.zip - source = aseprite.desktop + source = shared-libarchive.patch + source = shared-libwebp.patch + source = optional-pixman.patch sha256sums = 9f4b098fe2327f2e9d73eb9f2aeebecad63e87ff2cf6fb6eeeee3c0778bb8874 sha256sums = 37cb146efbffb0571a541c48acd7926ed6571cd3aa50be67f8a9b97901e26769 - sha256sums = deaf646a615c79a4672b087562a09c44beef37e7acfc6f5f66a437d4f3b97a25 + sha256sums = e42675504bfbc17655aef1dca957041095026cd3dd4e6981fb6df0a363948aa7 + sha256sums = 942aaa70bc67955e83e227f95171d8cf126526a7692074fdeef1a47d287f6242 + sha256sums = c2d14f9738a96a9db3695c00ac3d14b1312b6a595b151bd56e19422c86517654 pkgname = aseprite-skia-bin diff --git a/.gitignore b/.gitignore index 91bec3194be6..50c8aba9b796 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ * -!.gitignore -!.SRCINFO -!aseprite.desktop -!PKGBUILD
\ No newline at end of file +!/.gitignore +!/.SRCINFO +!/PKGBUILD +!/*.patch @@ -1,7 +1,8 @@ # Maintainer: Typology <mohammedkaabi64@gmail.com> -# Maintainer: Fredrick Brennan <copypaste@kittens.ph> -# Maintainer: Andrew Bueide <abueide@protonmail.com> -# Maintainer: rouhannb <rouhannb@gmail.com> +# Co-Maintainer: Fredrick Brennan <copypaste@kittens.ph> +# Co-Maintainer: Andrew Bueide <abueide@protonmail.com> +# Co-Maintainer: rouhannb <rouhannb@gmail.com> +# Contributor: Eldred Habert <me@eldred.fr> # Contributor: Wilson E. Alvarez <wilson.e.alvarez1@gmail.com> # Contributor: Benoit Favre <benoit.favre@gmail.com> # Contributor: Alexander Rødseth <rodseth@gmail.com> @@ -9,95 +10,96 @@ pkgname=aseprite-skia-bin pkgver=1.2.30 -pkgrel=1 +pkgrel=2 pkgdesc='Create animated sprites and pixel art' arch=('x86_64') url='http://www.aseprite.org/' license=('custom') -depends=('cmark' 'curl' 'libjpeg-turbo' 'giflib' 'zlib' 'libpng' 'tinyxml' 'pixman' 'freetype2' - 'fontconfig' 'libxcursor' 'hicolor-icon-theme') -makedepends=('cmake' 'libglvnd' 'ninja' 'freeglut' 'harfbuzz-icu' 'nettle' 'libxi') -provides=('aseprite') -conflicts=('aseprite-git' 'aseprite-gpl' 'skia-git' 'aseprite') -source=("https://github.com/aseprite/aseprite/releases/download/v${pkgver}/Aseprite-v${pkgver}\ --Source.zip" -'https://github.com/aseprite/skia/releases/download/m81-b607b32047/Skia-Linux-Release-x64.zip' -'aseprite.desktop' -) -noextract=('Skia-Linux-Release-x64.zip') +url="https://www.aseprite.org/" +license=('custom') +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=6-64 libarchive.so + libexpat.so=1-64 libharfbuzz.so=0-64 + hicolor-icon-theme # For installing Aseprite's icons + # ~ Skia deps ~ + libgl + # 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) +provides=(aseprite) +conflicts=(aseprite) +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` + "https://github.com/aseprite/skia/releases/download/m81-b607b32047/Skia-Linux-Release-x64.zip" + # 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]##*/}" "${source[1]##*/}") # Don't extract Aseprite sources or Skia at the root sha256sums=('9f4b098fe2327f2e9d73eb9f2aeebecad63e87ff2cf6fb6eeeee3c0778bb8874' '37cb146efbffb0571a541c48acd7926ed6571cd3aa50be67f8a9b97901e26769' - 'deaf646a615c79a4672b087562a09c44beef37e7acfc6f5f66a437d4f3b97a25') + 'e42675504bfbc17655aef1dca957041095026cd3dd4e6981fb6df0a363948aa7' + '942aaa70bc67955e83e227f95171d8cf126526a7692074fdeef1a47d287f6242' + 'c2d14f9738a96a9db3695c00ac3d14b1312b6a595b151bd56e19422c86517654') prepare() { - mkdir --verbose "${srcdir}/skia" - bsdtar --extract --verbose --directory "${srcdir}/skia" --file 'Skia-Linux-Release-x64.zip' + mkdir -p aseprite skia + bsdtar -xf ${noextract[0]} -C aseprite + bsdtar -xf ${noextract[1]} -C skia + + # 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...) + 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 } build() { - cd "${srcdir}" - - mkdir --parents --verbose build && cd build - - cmake \ - -DUSE_SHARED_CURL=ON \ - -DUSE_SHARED_JPEGLIB=ON \ - -DUSE_SHARED_GIFLIB=ON \ - -DUSE_SHARED_ZLIB=ON \ - -DUSE_SHARED_LIBPNG=ON \ - -DUSE_SHARED_TINYXML=ON \ - -DUSE_SHARED_PIXMAN=ON \ - -DUSE_SHARED_FREETYPE=ON \ - -DUSE_SHARED_HARFBUZZ=ON \ - -DENABLE_UPDATER=OFF \ - -DWITH_WEBP_SUPPORT=ON \ - -DCMAKE_BUILD_TYPE=RelWithDebInfo \ - -DCMAKE_INSTALL_PREFIX=/usr \ - -DLAF_BACKEND=skia \ - -DSKIA_DIR="${srcdir}/skia" \ - -DSKIA_LIBRARY_DIR="${srcdir}/skia/out/Release-x64" \ - -DSKIA_LIBRARY="${srcdir}/skia/out/Release-x64/libskia.a" \ - -DLAF_WITH_TESTS=OFF \ - -DLAF_WITH_EXAMPLES=OFF \ - -G Ninja \ - .. - - # Workaround for the multiple definition error (https://github.com/aseprite/aseprite/issues/2387#issuecomment-697334354) - var=$(ninja aseprite | tee /dev/tty) - var=$(echo $var | grep -o -P '(?<=&&).*(?=&&)') - var=${var/"lib/libwebp.a"} - printf "\n\n:: Executing the linking command. Please wait...\n\n" - $var - + local _skiadir="$srcdir/skia/out/Release-x64" + # 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_BACKEND=skia \ +-DSKIA_DIR="$srcdir/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 \ +-DWEBP_INCLUDE_DIR="$srcdir/skia/third_party/externals/libwebp/src" \ +-DWEBP{,MUX,DEMUX}_LIBRARY= # Use Skia's already-bundled WebP library (link to no additional libs) + ninja -C build } package() { - cd "${srcdir}"/build - - install -D --verbose 'bin/aseprite' "${pkgdir}/usr/bin/aseprite" - - # Aseprite, by default, doesn't install a few files on its own. So, they are installed manually. - - install --directory --verbose "${pkgdir}/usr/share/aseprite/data" - cp --recursive --verbose 'bin/data' "${pkgdir}/usr/share/aseprite" - - install --directory --verbose "${pkgdir}/usr/share/doc/aseprite" - cp --recursive --verbose '../docs' "${pkgdir}/usr/share/doc/aseprite" - install --mode=644 --verbose 'bin/data/EULA.txt' "${pkgdir}/usr/share/doc/aseprite" - install --mode=644 --verbose '../README.md' "${pkgdir}/usr/share/doc/aseprite" - - install -D --mode=644 --verbose '../aseprite.desktop' \ - "${pkgdir}/usr/share/applications/aseprite.desktop" - - for _size in 32 48 64 - do - install -D --mode=644 --verbose "../data/icons/ase${_size}.png" \ - "${pkgdir}/usr/share/icons/hicolor/${_size}x${_size}/apps/aseprite.png" - done - - install -D --mode=644 --verbose --target-directory "${pkgdir}/usr/share/licenses/${pkgname}" \ - 'bin/data/EULA.txt' - install --mode=644 --verbose '../docs/LICENSES.md' "${pkgdir}/usr/share/licenses/${pkgname}" + # Now the fun part: components of e.g. `libwebp` get installed as well, + # since we've had to compile it. But we don't want them. + # So, install normally, and then cherry-pick Aseprite's files out of that. + # Use a whitelist to prefer installing not enough (breakage goes noticed), + # instead of too much (cruft rarely goes noticed). Also hope that it doesn't break :) + cmake --install build --prefix=staging --strip + + # Install the binary and its `.desktop` file + install -vDm 755 staging/bin/aseprite "$pkgdir/usr/bin/aseprite" + install -vDm 644 aseprite/src/desktop/linux/aseprite.desktop "$pkgdir/usr/share/applications/aseprite.desktop" + # Install the icons in the correct directory (which is not the default) + local _size + for _size in 16 32 48 64 128 256; do + # The installed icon's name is taken from the `.desktop` file + install -vDm 644 staging/share/aseprite/data/icons/ase$_size.png "$pkgdir/usr/share/icons/hicolor/${_size}x$_size/apps/aseprite.png" + done + # Delete the icons to avoid copying them in two places (they aren't used by Aseprite itself) + rm -rf staging/share/aseprite/data/icons + # Install all of the program's data + cp -vrt "$pkgdir/usr/share" staging/share/aseprite + # Also install the licenses + install -vDm 644 -t "$pkgdir/usr/share/licenses/$pkgname" aseprite/{EULA.txt,docs/LICENSES.md} + # Copy the font's license, but leave it in the font directory as well (probably doesn't hurt) + install -vm 644 aseprite/data/fonts/LICENSE.txt "$pkgdir/usr/share/licenses/$pkgname/font.txt" } # vim:set ts=2 sw=2 et: diff --git a/aseprite.desktop b/aseprite.desktop deleted file mode 100644 index 306b8df12c70..000000000000 --- a/aseprite.desktop +++ /dev/null @@ -1,14 +0,0 @@ -[Desktop Entry] -Type=Application -Encoding=UTF-8 -Name=Aseprite -GenericName=Sprite Editor -Comment=Animated sprite editor & pixel art tool -Icon=aseprite -Categories=Graphics;2DGraphics;RasterGraphics -Exec=aseprite %U -TryExec=aseprite -Terminal=false -StartupNotify=false -StartupWMClass=Aseprite -MimeType=image/bmp;image/gif;image/jpeg;image/png;image/x-pcx;image/x-tga;image/vnd.microsoft.icon;video/x-flic;image/webp;image/x-aseprite; diff --git a/optional-pixman.patch b/optional-pixman.patch new file mode 100644 index 000000000000..bf65e2cf047d --- /dev/null +++ b/optional-pixman.patch @@ -0,0 +1,23 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index f16f09660d..40065905d3 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -271,16 +271,18 @@ + include_directories(${TINYXML_INCLUDE_DIR}) + + # pixman ++if(NOT LAF_BACKEND STREQUAL "skia") + if(USE_SHARED_PIXMAN) + find_library(PIXMAN_LIBRARY NAMES pixman pixman-1) + find_path(PIXMAN_INCLUDE_DIR NAMES pixman.h PATH_SUFFIXES pixman-1) + else() + set(PIXMAN_LIBRARY pixman) + set(PIXMAN_INCLUDE_DIR + ${PIXMAN_DIR}/pixman + ${CMAKE_BINARY_DIR}) # For pixman-version.h + endif() + include_directories(${PIXMAN_INCLUDE_DIR}) ++endif() + + # freetype + if(USE_SHARED_FREETYPE) diff --git a/shared-libarchive.patch b/shared-libarchive.patch new file mode 100644 index 000000000000..481ff374175a --- /dev/null +++ b/shared-libarchive.patch @@ -0,0 +1,74 @@ +From cf84155eb143d821963e8fdf18781dfa164eac9b Mon Sep 17 00:00:00 2001 +From: "Azamat H. Hackimov" <azamat.hackimov@gmail.com> +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 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/libarchive/libarchive>) ++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 + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/libarchive/libarchive>) ++endif() + + # benchmark + if(ENABLE_BENCHMARKS) diff --git a/shared-libwebp.patch b/shared-libwebp.patch new file mode 100644 index 000000000000..a4c3234fd000 --- /dev/null +++ b/shared-libwebp.patch @@ -0,0 +1,56 @@ +From ca9e20a87be6dcc8d9b97841535b2320d2eb2f91 Mon Sep 17 00:00:00 2001 +From: Drauthius <albert@diserholt.com> +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,8 +230,16 @@ 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) ++ 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_DIR NAMES decode.h PATH_SUFFIXES webp) ++ else() ++ set(WEBP_LIBRARIES webp webpdemux libwebpmux) ++ set(WEBP_INCLUDE_DIR ${LIBWEBP_DIR}/src) ++ endif() + include_directories(${WEBP_INCLUDE_DIR}) + endif() + +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() |