gnu: Add friction.

* gnu/packages/graphics.scm (friction): New variable.

Change-Id: I8ce4d20ce410e1fb6e5578d59cb72597469b58f1
This commit is contained in:
Ricardo Wurmus 2025-05-15 08:06:10 +02:00
parent f353896b10
commit ae8ff7c8c0
No known key found for this signature in database
GPG key ID: 197A5888235FACAC

View file

@ -94,6 +94,7 @@
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages jemalloc)
#:use-module (gnu packages kde-frameworks)
#:use-module (gnu packages libunwind)
#:use-module (gnu packages libusb)
#:use-module (gnu packages linux)
#:use-module (gnu packages logging)
@ -395,6 +396,99 @@ objects!")
(home-page "http://www.fox-toolkit.org")
(license license:lgpl2.1+)))
(define-public friction
(package
(name "friction")
(version "0.9.6.1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/friction2d/friction")
(commit (string-append "v" version))
(recursive? #true)))
(file-name (git-file-name name version))
(sha256
(base32 "1ndg9f4m3zmdn89llchfnc4dmhckms3cx8vm6pqr8fvd7w95ak37"))
(modules '((guix build utils)))
(snippet
'(begin
(delete-file-recursively "src/engine/skia")
(delete-file-recursively "src/gperftools")))))
(build-system cmake-build-system)
(arguments
(list
#:tests? #false ;there is no test target
#:configure-flags
'(list "-DCMAKE_CXX_COMPILER=clang++"
"-DCMAKE_C_COMPILER=clang")
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'use-system-libraries
(lambda _
(substitute* "CMakeLists.txt"
(("add_subdirectory\\(src/engine\\)") "")
(("add_dependencies\\(frictioncore Engine\\)") "")
(("add_subdirectory\\(src/gperftools\\)") ""))
(substitute* "src/app/CMakeLists.txt"
(("\\$\\{GPERF_LIBRARIES\\}") "-ltcmalloc_and_profiler")
(("\\$\\{GPERF_INCLUDE_DIRS\\}")
(string-append #$(this-package-input "gperftools") "/include")))
(substitute* "src/app/memorychecker.cpp"
(("../gperftools/include/") ""))
(substitute* '("src/app/CMakeLists.txt"
"src/core/CMakeLists.txt"
"src/ui/CMakeLists.txt")
(("\\$\\{CMAKE_CURRENT_BINARY_DIR\\}/../engine/skia")
(string-append #$(this-package-input "skia") "/lib/"))
(("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/../engine/skia")
(string-append #$(this-package-input "skia") "/include/skia")))))
;; Ensure that all required Qt plugins are found at runtime.
(add-after 'install 'wrap-executable
(lambda* (#:key inputs #:allow-other-keys)
(let ((qt '("qtbase" "qtdeclarative" "qtmultimedia")))
(wrap-program (string-append #$output "/bin/friction")
`("QT_PLUGIN_PATH" ":" prefix
,(map (lambda (label)
(string-append (assoc-ref inputs label)
"/lib/qt5/plugins/"))
qt)))))))))
(inputs
(list expat
ffmpeg-for-friction ;version 4.2 is recommended; does not work with version 7+.
fontconfig
freetype
gperftools-for-friction
harfbuzz
icu4c
libjpeg-turbo
libpng
libunwind
libwebp
python
qscintilla
qtbase-5
qtdeclarative-5
qtmultimedia-5
skia-for-friction
zlib))
(native-inputs (list clang-15 llvm-15 pkg-config))
(home-page "https://friction.graphics")
(synopsis "Create vector and raster animations for web and video")
(description "Friction is a versatile motion graphics application that
allows you to create vector and raster animations for web and video.
Motion graphics has a wide variety of uses, including:
@itemize
@item Television and film: Title sequences, commercials, and visual effects
@item Web design: Animated logos, banners, and interactive elements
@item Social media: Animated posts and stories
@item Presentations: Animated infographics and slideshows
@end itemize
")
(license license:gpl3+)))
(define-public autotrace
(package
(name "autotrace")