summaryrefslogtreecommitdiffstats
path: root/pkgs/applications/editors/aseprite
diff options
context:
space:
mode:
authorLoïc Fontaine <loicfontaine@fastmail.fm>2019-06-04 14:16:34 +0200
committerLoïc Fontaine <loicfontaine@fastmail.fm>2019-06-07 15:07:26 +0200
commitcaa4e6dcb24fe5f0d9bc334049f90bbece8fa461 (patch)
tree18d3a242988cef885b6acab96aa8e418835504a9 /pkgs/applications/editors/aseprite
parent6104102c247ce6b19ab56b860ee28d00c50ef2bd (diff)
aseprite-unfree: 1.2.9 -> 1.2.11
Diffstat (limited to 'pkgs/applications/editors/aseprite')
-rw-r--r--pkgs/applications/editors/aseprite/default.nix55
-rw-r--r--pkgs/applications/editors/aseprite/skia-deps.nix23
-rwxr-xr-xpkgs/applications/editors/aseprite/skia-make-deps.sh37
-rw-r--r--pkgs/applications/editors/aseprite/skia.nix68
4 files changed, 169 insertions, 14 deletions
diff --git a/pkgs/applications/editors/aseprite/default.nix b/pkgs/applications/editors/aseprite/default.nix
index 7af3742349a6..7db4d3e947bf 100644
--- a/pkgs/applications/editors/aseprite/default.nix
+++ b/pkgs/applications/editors/aseprite/default.nix
@@ -1,17 +1,17 @@
-{ stdenv, lib, fetchFromGitHub, fetchpatch, cmake, pkgconfig
-, curl, freetype, giflib, harfbuzz, libjpeg, libpng, libwebp, pixman, tinyxml, zlib
-, libX11, libXext, libXcursor, libXxf86vm
+{ stdenv, lib, callPackage, fetchFromGitHub, fetchpatch, cmake, ninja, pkgconfig
+, curl, freetype, giflib, libjpeg, libpng, libwebp, pixman, tinyxml, zlib
+, harfbuzzFull, glib, fontconfig, pcre
+, libX11, libXext, libXcursor, libXxf86vm, libGL
, unfree ? false
, cmark
}:
-# Unfree version is not redistributable:
-# https://dev.aseprite.org/2016/09/01/new-source-code-license/
-# Consider supporting the developer: https://aseprite.org/#buy
-
+let
+ skia = callPackage ./skia.nix {};
+in
stdenv.mkDerivation rec {
name = "aseprite-${version}";
- version = if unfree then "1.2.9" else "1.1.7";
+ version = if unfree then "1.2.11" else "1.1.7";
src = fetchFromGitHub {
owner = "aseprite";
@@ -19,21 +19,27 @@ stdenv.mkDerivation rec {
rev = "v${version}";
fetchSubmodules = true;
sha256 = if unfree
- then "0a9xk163j0984n8nn6pqf27n83gr6w7g25wkiv591zx88pa6cpbd"
+ then "1illr51jpg5g6nx29rav9dllyy5lzyyn7lj2fhrnpz1ysqgaq5p8"
else "0gd49lns2bpzbkwax5jf9x1xmg1j8ij997kcxr2596cwiswnw4di";
};
- nativeBuildInputs = [ cmake pkgconfig ];
+ nativeBuildInputs = [
+ cmake pkgconfig
+ ] ++ lib.optionals unfree [ ninja ];
buildInputs = [
- curl freetype giflib harfbuzz libjpeg libpng libwebp pixman tinyxml zlib
+ curl freetype giflib libjpeg libpng libwebp pixman tinyxml zlib
libX11 libXext libXcursor libXxf86vm
- ] ++ lib.optionals unfree [ cmark harfbuzz ];
+ ] ++ lib.optionals unfree [
+ cmark
+ harfbuzzFull glib fontconfig pcre
+ skia libGL
+ ];
patches = lib.optionals unfree [
(fetchpatch {
- url = "https://github.com/aseprite/aseprite/commit/cfb4dac6feef1f39e161c23c886055a8f9acfd0d.patch";
- sha256 = "1qhjfpngg8b1vvb9w26lhjjfamfx57ih0p31km3r5l96nm85l7f9";
+ url = "https://github.com/lfont/aseprite/commit/f1ebc47012d3fed52306ed5922787b4b98cc0a7b.patch";
+ sha256 = "03xg7x6b9iv7z18vzlqxhcfphmx4v3qhs9f5rgf38ppyklca5jyw";
})
(fetchpatch {
url = "https://github.com/orivej/aseprite/commit/ea87e65b357ad0bd65467af5529183b5a48a8c17.patch";
@@ -67,6 +73,9 @@ stdenv.mkDerivation rec {
"-DENABLE_CAT=OFF"
"-DENABLE_CPIO=OFF"
"-DENABLE_TAR=OFF"
+ # UI backend.
+ "-DLAF_OS_BACKEND=skia"
+ "-DSKIA_DIR=${skia}"
];
postInstall = ''
@@ -87,6 +96,24 @@ stdenv.mkDerivation rec {
homepage = https://www.aseprite.org/;
description = "Animated sprite editor & pixel art tool";
license = if unfree then licenses.unfree else licenses.gpl2;
+ longDescription =
+ ''Aseprite is a program to create animated sprites. Its main features are:
+
+ - Sprites are composed by layers & frames (as separated concepts).
+ - Supported color modes: RGBA, Indexed (palettes up to 256 colors), and Grayscale.
+ - Load/save sequence of PNG files and GIF animations (and FLC, FLI, JPG, BMP, PCX, TGA).
+ - Export/import animations to/from Sprite Sheets.
+ - Tiled drawing mode, useful to draw patterns and textures.
+ - Undo/Redo for every operation.
+ - Real-time animation preview.
+ - Multiple editors support.
+ - Pixel-art specific tools like filled Contour, Polygon, Shading mode, etc.
+ - Onion skinning.
+ '' + lib.optionalString unfree
+ ''
+ This version is not redistributable: https://dev.aseprite.org/2016/09/01/new-source-code-license/
+ Consider supporting the developer: https://aseprite.org/#buy
+ '';
maintainers = with maintainers; [ orivej ];
platforms = platforms.linux;
};
diff --git a/pkgs/applications/editors/aseprite/skia-deps.nix b/pkgs/applications/editors/aseprite/skia-deps.nix
new file mode 100644
index 000000000000..e5655ca8315d
--- /dev/null
+++ b/pkgs/applications/editors/aseprite/skia-deps.nix
@@ -0,0 +1,23 @@
+{ fetchgit }:
+{
+ angle2 = fetchgit {
+ url = "https://chromium.googlesource.com/angle/angle.git";
+ rev = "956ab4d9fab36be9929e63829475d4d69b2c681c";
+ sha256 = "0fcw04wwkn3ixr9l9k0d32n78r9g72p31ii9i5spsq2d0wlylr38";
+ };
+ dng_sdk = fetchgit {
+ url = "https://android.googlesource.com/platform/external/dng_sdk.git";
+ rev = "96443b262250c390b0caefbf3eed8463ba35ecae";
+ sha256 = "1rsr7njhj7c5p87hfznj069fdc3qqhvvnq9sa2rb8c4q849rlzx6";
+ };
+ piex = fetchgit {
+ url = "https://android.googlesource.com/platform/external/piex.git";
+ rev = "bb217acdca1cc0c16b704669dd6f91a1b509c406";
+ sha256 = "05ipmag6k55jmidbyvg5mkqm69zfw03gfkqhi9jnjlmlbg31y412";
+ };
+ sfntly = fetchgit {
+ url = "https://chromium.googlesource.com/external/github.com/googlei18n/sfntly.git";
+ rev = "b18b09b6114b9b7fe6fc2f96d8b15e8a72f66916";
+ sha256 = "0zf1h0dibmm38ldypccg4faacvskmd42vsk6zbxlfcfwjlqm6pp4";
+ };
+}
diff --git a/pkgs/applications/editors/aseprite/skia-make-deps.sh b/pkgs/applications/editors/aseprite/skia-make-deps.sh
new file mode 100755
index 000000000000..5e12c4f5c858
--- /dev/null
+++ b/pkgs/applications/editors/aseprite/skia-make-deps.sh
@@ -0,0 +1,37 @@
+#!/usr/bin/env bash
+
+FILTER=$1
+OUT=skia-deps.nix
+REVISION=89e4ca4352d05adc892f5983b108433f29b2c0c2
+DEPS=$(curl -s https://raw.githubusercontent.com/aseprite/skia/$REVISION/DEPS)
+THIRD_PARTY_DEPS=$(echo "$DEPS" | grep third_party | grep "#" -v | sed 's/"//g')
+
+function write_fetch_defs ()
+{
+ while read -r DEP; do
+ NAME=$(echo "$DEP" | cut -d: -f1 | cut -d/ -f3 | sed 's/ //g')
+ URL=$(echo "$DEP" | cut -d: -f2- | cut -d@ -f1 | sed 's/ //g')
+ REV=$(echo "$DEP" | cut -d: -f2- | cut -d@ -f2 | sed 's/[ ,]//g')
+
+ echo "Fetching $NAME@$REV"
+ PREFETCH=$(nix-prefetch-git --rev "$REV" "$URL")
+
+(
+cat <<EOF
+ $NAME = fetchgit {
+ url = "$URL";
+ rev = "$REV";
+ sha256 = $(echo $PREFETCH | jq '.sha256');
+ };
+EOF
+) >> "$OUT"
+
+ echo "----------"
+ echo
+ done <<< "$1"
+}
+
+echo "{ fetchgit }:" > "$OUT"
+echo "{" >> "$OUT"
+write_fetch_defs "$(echo "$THIRD_PARTY_DEPS" | grep -E "$FILTER")"
+echo "}" >> "$OUT"
diff --git a/pkgs/applications/editors/aseprite/skia.nix b/pkgs/applications/editors/aseprite/skia.nix
new file mode 100644
index 000000000000..038ff96ad3bd
--- /dev/null
+++ b/pkgs/applications/editors/aseprite/skia.nix
@@ -0,0 +1,68 @@
+{ stdenv, lib, fetchFromGitHub, fetchgit, python2, gn, ninja
+, fontconfig, expat, icu58, libjpeg, libpng, libwebp, zlib
+, mesa, libX11
+}:
+
+let
+ # skia-deps.nix is generated by: ./skia-make-deps.sh 'angle2|dng_sdk|piex|sfntly'
+ depSrcs = import ./skia-deps.nix { inherit fetchgit; };
+in
+stdenv.mkDerivation rec {
+ name = "skia-aseprite-m71";
+
+ src = fetchFromGitHub {
+ owner = "aseprite";
+ repo = "skia";
+ # latest commit from aseprite-m71 branch
+ rev = "89e4ca4352d05adc892f5983b108433f29b2c0c2";
+ sha256 = "0n3vrkswvi6rib9zv2pzi18h3j5wm7flmgkgaikcm6q7iw4l2c7x";
+ };
+
+ nativeBuildInputs = [ python2 gn ninja ];
+
+ buildInputs = [
+ fontconfig expat icu58 libjpeg libpng libwebp zlib
+ mesa libX11
+ ];
+
+ preConfigure = with depSrcs; ''
+ mkdir -p third_party/externals
+ ln -s ${angle2} third_party/externals/angle2
+ ln -s ${dng_sdk} third_party/externals/dng_sdk
+ ln -s ${piex} third_party/externals/piex
+ ln -s ${sfntly} third_party/externals/sfntly
+ '';
+
+ configurePhase = ''
+ runHook preConfigure
+ gn gen out/Release --args="is_debug=false is_official_build=true"
+ runHook postConfigure
+ '';
+
+ buildPhase = ''
+ runHook preBuild
+ ninja -C out/Release skia
+ runHook postBuild
+ '';
+
+ installPhase = ''
+ mkdir -p $out
+
+ # Glob will match all subdirs.
+ shopt -s globstar
+
+ # All these paths are used in some way when building aseprite.
+ cp -r --parents -t $out/ \
+ include/codec \
+ include/config \
+ include/core \
+ include/effects \
+ include/gpu \
+ include/private \
+ include/utils \
+ out/Release/*.a \
+ src/gpu/**/*.h \
+ third_party/externals/angle2/include \
+ third_party/skcms/**/*.h
+ '';
+}