Package Details: friction 1.0.0_rc.3-1

Git Clone URL: https://aur.archlinux.org/friction.git (read-only, click to copy)
Package Base: friction
Description: Motion graphics and animation app
Upstream URL: https://friction.graphics/
Licenses: GPL-3.0-or-later
Submitter: tecnotercio
Maintainer: tecnotercio
Last Packager: tecnotercio
Votes: 4
Popularity: 0.073461
First Submitted: 2024-12-08 05:30 (UTC)
Last Updated: 2026-01-02 06:36 (UTC)

Latest Comments

elsonfernand commented on 2026-05-04 17:16 (UTC) (edited on 2026-05-04 17:28 (UTC) by elsonfernand)

Hi everyone,

If you are struggling to build Friction on a modern Arch Linux system (using Clang 19/22 and having FFmpeg 6/7 as default), I managed to fix the "undeclared identifier" errors in Skia and the FFmpeg API mismatch.

The main issues were: Skia/skcms: Clang 19+ fails on certain hardware intrinsics in Transform_inl.h.

FFmpeg: The build system often picks up system-wide FFmpeg 6/7 headers instead of the required ffmpeg4.4.

Solution You can fix this by modifying your PKGBUILD with the following changes:

  • In the prepare() function Add this line to patch Skia's source code:
# Fix for Clang 19+ half-float conversion error
sed -i 's/return __builtin_ia32_vcvtph2ps256/\/\/return __builtin_ia32_vcvtph2ps256/' \
"$pkgname-$_pkgver/src/skia/third_party/skcms/src/Transform_inl.h"
  • In the build() function Force the FFmpeg 4.4 paths and use the portable flag by updating the variables and the cmake command:
export CFLAGS="$CFLAGS -DSKCMS_PORTABLE -I/usr/include/ffmpeg4.4"
export CXXFLAGS="$CXXFLAGS -DSKCMS_PORTABLE -I/usr/include/ffmpeg4.4"
export LDFLAGS="$LDFLAGS -L/usr/lib/ffmpeg4.4"

cmake -B build \
...
-DCMAKE_PREFIX_PATH="/usr/lib/ffmpeg4.4" \
-DPKG_CONFIG_PATH="/usr/lib/ffmpeg4.4/pkgconfig"

These adjustments bypass the broken hardware instructions and ensure the compiler uses the correct legacy FFmpeg headers. Hope this helps!

Popolon commented on 2025-07-25 13:41 (UTC) (edited on 2025-07-25 13:48 (UTC) by Popolon)

It looks like a binary coming from the tarball is executed. If I try to compile it from non-x86_64 architecture, the following error occur (there are no x86_64 binaries on my Arch Linux:

[2/545] Performing configure step for 'Engine'
x86_64-binfmt-P: Could not open '/lib64/ld-linux-x86-64.so.2': No such file or directory
FAILED: src/engine/Engine-prefix/src/Engine-stamp/Engine-configure /home/popolon/.cache/yay/friction/src/friction-1.0.0-rc.1/build/src/engine/Engine-prefix/src/Engine-stamp/Engine-configure 

By launching ninja -C build by hand, I found the binary executed, it's skia, very very not clean from friction devs :(.

cd /home/popolon/.cache/yay/friction/src/friction-1.0.0-rc.1/build/src/engine/skia && /home/popolon/.cache/yay/friction/src/friction-1.0.0-rc.1/src/engine/skia/bin/gn gen --root=/home/popolon/.cache/yay/friction/src/friction-1.0.0-rc.1/src/engine/skia /home/popolon/.cache/yay/friction/src/friction-1.0.0-rc.1/build/src/engine/skia "--args=ar=\"/usr/bin/llvm-ar\" cc=\"/usr/bin/clang\" cxx=\"/usr/bin/clang++\" skia_use_egl=true is_component_build=true extra_cflags=[\"-Wno-error\", \"-Wno-psabi\"] is_official_build=true is_debug=false skia_enable_pdf=false skia_enable_skottie=false skia_enable_tools=false skia_use_dng_sdk=false skia_use_system_expat=true skia_use_system_libjpeg_turbo=true skia_use_system_libpng=true skia_use_system_libwebp=true skia_use_system_icu=true skia_use_system_harfbuzz=true skia_use_system_freetype2=true" && /usr/bin/cmake -E touch /home/popolon/.cache/yay/friction/src/friction-1.0.0-rc.1/build/src/engine/Engine-prefix/src/Engine-stamp/Engine-configure