Opening a project of ninety 17 MP photos got Effector killed by the kernel's OOM killer: 4.6 GB of decoded RGB on a machine with 3.6 GB free, and no core dump to show for it. Bulk allocations are now sized first and refused with an OutOfMemoryError past three quarters of the free memory (MemAvailable, or less under a cgroup memory.max). loadImages sizes the batch from the file headers and refuses it before decoding anything, and holds the decodes in flight to what is left; renderChain and renderFrames refuse a canvas at 24 bytes a pixel, plus any picture a Path param loads. The interface keeps a refused batch's paths, so saving the project never drops them. Version 0.6.1. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
32 lines
994 B
Bash
32 lines
994 B
Bash
# Builds the release tagged v$pkgver from the repository this file sits in,
|
|
# so pkgver must follow the project() line of CMakeLists.txt (the version core
|
|
# test checks it). From this folder: makepkg -si
|
|
pkgname=effector
|
|
pkgver=0.6.1
|
|
pkgrel=1
|
|
pkgdesc='Image effects app: a GTK4 interface and a headless CLI over pluggable effects'
|
|
arch=('x86_64' 'aarch64')
|
|
url='https://git.plan9.uber.space/hans/effector'
|
|
license=('GPL-3.0-or-later')
|
|
depends=('gtkmm-4.0' 'gdk-pixbuf2' 'pango' 'cairo' 'glib2' 'glibc' 'gcc-libs')
|
|
optdepends=('ffmpeg: write video projects')
|
|
makedepends=('cmake' 'ninja' 'git')
|
|
checkdepends=('xorg-server-xvfb')
|
|
source=("$pkgname::git+file://${startdir%/packaging/arch}#tag=v$pkgver")
|
|
sha256sums=('SKIP')
|
|
|
|
build() {
|
|
cmake -S "$pkgname" -B build -G Ninja \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCMAKE_INSTALL_PREFIX=/usr
|
|
cmake --build build
|
|
}
|
|
|
|
check() {
|
|
ctest --test-dir build --output-on-failure
|
|
}
|
|
|
|
package() {
|
|
DESTDIR="$pkgdir" cmake --install build
|
|
}
|