# Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 PYTHON_COMPAT=( python3_{10..12} ) inherit cmake desktop flag-o-matic ninja-utils python-any-r1 toolchain-funcs xdg-utils SKIA_VER="m102" # Last commit in ${SKIA_VER} feature branch # Don't use skia.googlesource.com, it produces non-reproducible tarballs SKIA_REV="3338e90707323d2cd3a150276acb9f39933deee2" DESCRIPTION="Animated sprite editor & pixel art tool" HOMEPAGE="https://www.aseprite.org" SRC_URI="https://github.com/aseprite/aseprite/releases/download/v${PV}/Aseprite-v${PV}-Source.zip https://github.com/google/skia/archive/${SKIA_REV}.tar.gz -> skia-${SKIA_VER}-${SKIA_REV}.gh.tar.gz" # See https://github.com/aseprite/aseprite#license LICENSE="Aseprite-EULA" SLOT="0" KEYWORDS="amd64 x86" IUSE="kde test webp" RESTRICT="bindist mirror !test? ( test )" RDEPEND=" app-arch/libarchive:= app-text/cmark:= dev-cpp/json11 dev-libs/tinyxml media-libs/freetype media-libs/giflib:= media-libs/harfbuzz:=[truetype] media-libs/libjpeg-turbo:= media-libs/libpng:= net-misc/curl sys-libs/zlib:= virtual/opengl x11-libs/libX11 x11-libs/libXcursor x11-libs/libXi x11-libs/libxcb:= kde? ( dev-qt/qtcore:5 dev-qt/qtgui:5 kde-frameworks/kio:5 ) webp? ( media-libs/libwebp:= )" DEPEND=" ${RDEPEND} x11-base/xorg-proto" BDEPEND=" ${PYTHON_DEPS} test? ( dev-cpp/gtest ) app-arch/unzip dev-build/gn virtual/pkgconfig" DOCS=( docs/ase-file-specs.md docs/gpl-palette-extension.md README.md ) S="${WORKDIR}" PATCHES=( "${FILESDIR}/skia-${SKIA_VER}_remove_angle2.patch" "${FILESDIR}/${PN}-1.2.40_shared_libarchive.patch" "${FILESDIR}/${PN}-1.2.40_shared_json11.patch" "${FILESDIR}/${PN}-1.2.40_shared_webp.patch" "${FILESDIR}/${PN}-1.2.35_laf_fixes.patch" "${FILESDIR}/${PN}-1.2.40_musl_pthreads.patch" "${FILESDIR}/${PN}-1.2.40_ixwebsocket-gcc13.patch" "${FILESDIR}/${PN}-1.2.40_laf-gcc13.patch" ) src_prepare() { # Remove extra \r on ends, #895504 sed -i -e 's/\r$//' \ third_party/IXWebSocket/ixwebsocket/IXWebSocketSendData.h || die cmake_src_prepare # Skia: remove custom optimizations sed -i -e 's:"\/\/gn\/skia\:optimize",::g' \ "skia-${SKIA_REV}/gn/BUILDCONFIG.gn" || die # Aseprite: don't install tga bundled library sed -i -e '/install/d' src/tga/CMakeLists.txt || die # Aseprite: don't use bundled gtest sed -i -e '/add_subdirectory(googletest)/d' \ laf/third_party/CMakeLists.txt || die # Fix shebang in thumbnailer sed -i -e 's:#!/usr/bin/sh:#!/bin/sh:' \ src/desktop/linux/aseprite-thumbnailer || die } src_configure() { # -Werror=strict-aliasing, -Werror=odr, -Werror=lto-type-mismatch # https://bugs.gentoo.org/924692 # https://github.com/aseprite/aseprite/issues/4413 # # There is a bundled skia that fails with ODR errors. When excluding just # skia from testing, aseprite itself fails with strict-aliasing, and when # that is disabled, fails again with ODR and lto-type-mismatch issues. # # There are a lot of issues, so don't trust any fixes without thorough # testing. append-flags -fno-strict-aliasing filter-lto einfo "Skia configuration" cd "${WORKDIR}/skia-${SKIA_REV}" || die tc-export AR CC CXX passflags() { local _f _x _f=( ${1} ) _x="[$(printf '"%s", ' "${_f[@]}")]" myconf_gn+=( ${2}="${_x}" ) } local myconf_gn=( ar=\"${AR}\" cc=\"${CC}\" cxx=\"${CXX}\" is_official_build=true is_component_build=false is_debug=false skia_use_egl=false skia_use_dawn=false skia_use_dng_sdk=false skia_use_metal=false skia_use_sfntly=false skia_use_wuffs=false skia_enable_pdf=false skia_enable_svg=false skia_use_expat=false skia_use_ffmpeg=false skia_use_fontconfig=false skia_use_freetype=true skia_use_gl=true skia_use_harfbuzz=true skia_use_icu=false skia_use_libjpeg_turbo_decode=true skia_use_libjpeg_turbo_encode=true skia_use_libpng_decode=true skia_use_libpng_encode=true skia_use_libwebp_decode=$(usex webp true false) skia_use_libwebp_encode=$(usex webp true false) skia_use_lua=false skia_use_vulkan=false skia_use_x11=false skia_use_xps=false skia_use_zlib=true ) passflags "${CFLAGS}" extra_cflags_c passflags "${CXXFLAGS}" extra_cflags_cc passflags "${LDFLAGS}" extra_ldflags myconf_gn="${myconf_gn[@]}" set -- gn gen --args="${myconf_gn% }" out/Static echo "$@" "$@" || die einfo "Aseprite configuration" cd "${WORKDIR}" || die local mycmakeargs=( -DENABLE_CCACHE=OFF -DENABLE_DESKTOP_INTEGRATION=ON -DENABLE_STEAM=OFF -DENABLE_TESTS="$(usex test)" -DENABLE_QT_THUMBNAILER="$(usex kde)" -DENABLE_UPDATER=OFF -DENABLE_UI=ON -DENABLE_WEBP="$(usex webp)" -DLAF_WITH_EXAMPLES=OFF -DLAF_WITH_TESTS="$(usex test)" -DFULLSCREEN_PLATFORM=ON -DSKIA_DIR="${WORKDIR}/skia-${SKIA_REV}/" -DSKIA_LIBRARY_DIR="${WORKDIR}/skia-${SKIA_REV}/out/Static/" -DSKIA_LIBRARY="${WORKDIR}/skia-${SKIA_REV}/out/Static/libskia.a" -DSKSHAPER_LIBRARY="${WORKDIR}/skia-${SKIA_REV}/out/Static/libskshaper.a" -DUSE_SHARED_CMARK=ON -DUSE_SHARED_CURL=ON -DUSE_SHARED_FREETYPE=ON -DUSE_SHARED_GIFLIB=ON -DUSE_SHARED_HARFBUZZ=ON -DUSE_SHARED_JPEGLIB=ON -DUSE_SHARED_JSON11=ON -DUSE_SHARED_LIBARCHIVE=ON -DUSE_SHARED_LIBPNG=ON -DUSE_SHARED_PIXMAN=ON -DUSE_SHARED_TINYXML=ON -DUSE_SHARED_WEBP=ON -DUSE_SHARED_ZLIB=ON ) cmake_src_configure } src_compile() { einfo "Skia compilation" cd "${WORKDIR}/skia-${SKIA_REV}" || die eninja -C out/Static einfo "Aseprite compilation" cd "${WORKDIR}" || die cmake_src_compile } src_install() { newicon -s 64 "${S}/data/icons/ase64.png" "${PN}.png" cmake_src_install } pkg_postinst() { xdg_desktop_database_update xdg_icon_cache_update xdg_mimeinfo_database_update } pkg_postrm() { xdg_desktop_database_update xdg_icon_cache_update xdg_mimeinfo_database_update }