a sleepy crow's nest

angry bird caws at the internet

Aseprite is by far the best pixel art tool I've ever had the pleasure of using. I've been happily using it for quite a few years without any issue. That's until I decided to move to fedora.

You see, while Aseprite's creator – David Capellodoes theoretically provide linux builds of Aseprite (at some added cost), he – annoyingly enough – only builds .deb packages.

Luckily, thanks to Aseprite's unique business model – that being open source, but with paid builds – it's somewhat easy to compile Aseprite from source code by yourself.

Step 1: Install dependencies

This one-liner is the same as in the official install instructions, with one small change – I've added python2, which is required by some of the scripts you'll be running in the next step.

sudo dnf install -y gcc-c++ cmake ninja-build libX11-devel libXcursor-devel libXi-devel mesa-libGL-devel fontconfig-devel python2

Step 2: Build Skia

Skia is a 2D graphic library developed by Google Inc., and pretty much the only dependency of Aseprite that you'll have to compile yourself. Sadly, the build process is somewhat tricky, as it depends on the deprecated python2, and does require some super-secret tricks you might now know about!

First off, you'll need to make a deps/ directory in your home folder, then clone google's build tools repo and the aseprite-m81 branch of the aseprite fork of skia into it, like so:

mkdir $HOME/deps
cd $HOME/deps
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
git clone -b aseprite-m81 https://github.com/aseprite/skia.git

...then add the depot_tools repo to your PATH environment variable, and cd into the skia repo:

export PATH="${PWD}/depot_tools:${PATH}"
cd skia

Now's the tricky part that you won't find in dacap's documentation! In the skia/ folder you'd just cd'd into, you'll find a file called .gn. Open it up in a text editor, then add the following line at the end:

script_executable = "python2"

Having done that, you may now run the following commands to download dependencies, prepare build files for ninja, then (finally) build the library with ninja.

python tools/git-sync-deps
gn gen out/Release-x64 --args="is_debug=false is_official_build=true skia_use_system_expat=false skia_use_system_icu=false skia_use_system_libjpeg_turbo=false skia_use_system_libpng=false skia_use_system_libwebp=false skia_use_system_zlib=false"
ninja -C out/Release-x64 skia modules

Step 3: Build Aseprite

Finally, having built Skia, you can now build Aseprite itself. Download the Aseprite-v1.x-Source.zip file from the latest Aseprite release and extract it somewhere, then, cd into that folder, and run the following bundle of commands:

mkdir build
cd build
cmake \
  -DCMAKE_BUILD_TYPE=RelWithDebInfo \
  -DLAF_BACKEND=skia \
  -DSKIA_DIR=$HOME/deps/skia \
  -DSKIA_LIBRARY_DIR=$HOME/deps/skia/out/Release-x64 \
  -DSKIA_LIBRARY=$HOME/deps/skia/out/Release-x64/libskia.a \
  -G Ninja \
  ..
ninja aseprite

This bundle is exactly the same as in the official INSTALL.md build instructions, and – just as in the original – $HOME/deps/skia is the directory where you'd built Skia earlier.

...and you're done!

Yep, that's it. Provided none of the commands errored out – you should now have a built, working version of aseprite in the build/bin/ folder. :)

If you enjoy Aseprite, make sure to support it's creator by buying it!