[Guix packaging] NatronGitHub/Natron #78
Labels
No labels
accessibility
bug
category:ai-tool
category:browser
category:command-line-tool
category:compiler-toolchain
category:desktop-application
category:developer-tool
category:editor-extension
category:emulator
category:font
category:game
category:input-accessibility
category:library-framework
category:mud-client
category:multimedia
category:networking-client
category:programming-language
category:roguelike
category:storage-media-tool
category:system-tool
category:terminal-application
complexity:high
complexity:low
complexity:medium
difficulty:blocked
difficulty:easy
difficulty:hard
difficulty:moderate
documentation
duplicate
enhancement
good first issue
gooflow:guix-package-high
gooflow:guix-package-moderate
gooflow:guix-package-quality-gates
gooflow:guix-research-disposition
gooflow:guix-runtime-evidence-refresh
help wanted
invalid
kind:disposition
kind:packaging
needs:license-investigation
priority:quick
question
ready-for-agent
state:available-elsewhere
state:blocked
state:deferred
state:out-of-scope
state:ready
state:research
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
tay/guix-channel#78
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Candidate
3763d805d7d277d10af10025ae41af677682b3e6onRB-2.6(default branch snapshot reviewed 2026-08-14).NatronandNatronRendererexecutables)CMakeLists.txt; bundled qmake metadata and third-party trees)LICENSE_SHORT.txtstates GPLv2-or-later; bundledlibs/and submodules carry additional notices that require a dependency license audit.Scope and blockers
Package the pinned upstream source as the stated deliverable, retaining upstream notices and making runtime services, credentials, downloaded assets, and optional integrations explicit. Map all bundled and submodule licenses, replace or pin incompatible system dependencies, and make the large CMake build reproducible.
Acceptance checks
guix lint -L. natronpasses with no new errors.guix build -L. natronsucceeds from the pinned source with tests enabled where practical.guix lint/build, then start Natron under Xvfb with an empty project and render a tiny offline test graph.Imported from GitHub issue/PR. Originally posted by htayj on 2026-08-14T13:17:05Z.
Goocastle recorded disposition: implementation-ready.
Created implementation ticket: #628.
Implementation-ready for a core Natron host package. Canonical upstream is https://github.com/NatronGitHub/Natron; use Guix version 2.6.0-0.20260724 for the CMake project version 2.6.0 at the immutable RB-2.6 commit 3763d805d7d277d10af10025ae41af677682b3e6. Fetch it with a recursive git-fetch and pin/verify every submodule below; the existing source-snapshot codeload hash 1x4pwgxnzjdg5mvzyr2bf7i55x4aaw58yfwvpgiglhp0jpn9rxyn covers only the parent archive and cannot produce a buildable tree because submodule contents are absent. The parent redistribution grant is GPL-2.0-or-later, explicitly stated by LICENSE_SHORT.txt and LICENSE.txt at
github.com/NatronGitHub/Natron@3763d805d7/LICENSE_SHORT.txtandgithub.com/NatronGitHub/Natron@3763d805d7/LICENSE.txt. Independently fetched origins and exact-revision license evidence are: NatronGitHub/google-mock at 17945db42c0b42496b2f3c6530307979f2e2a5ce, BSD-3-Clause ingithub.com/NatronGitHub/google-mock@17945db42c/LICENSE; NatronGitHub/google-test at 50d6fc317c843a2e40dbf08c2efd3f068801ae6d, BSD-3-Clause ingithub.com/NatronGitHub/google-test@50d6fc317c/LICENSE; NatronGitHub/openfx at 2303ff811bee3ffe085287602f684fe5fe5357e0, 3-Clause BSD ingithub.com/NatronGitHub/openfx@2303ff811b/LICENSE.md; NatronGitHub/SequenceParsing at 3c93fcc488632b0bdfeee3181586809932357598, GPL-2.0-or-later ingithub.com/NatronGitHub/SequenceParsing@3c93fcc488/LICENSE.md; its separately fetched nested NatronGitHub/tinydir at 64fb1d4376d7580aa1013fdbacddbbeba67bb085, BSD-style 3-clause grant ingithub.com/NatronGitHub/tinydir@64fb1d4376/COPYING; and NatronGitHub/google-breakpad at 9474c3f7f9939391f281d46c42bfe20cc0f0abd9, BSD-3-Clause plus the included Unicode notice ingithub.com/NatronGitHub/google-breakpad@9474c3f7f9/LICENSE. All required origins have clear redistribution grants; no parent-license substitution was used. The parent exact-commit inventory atgithub.com/NatronGitHub/Natron@3763d805d7/tools/license/components/README.mdalso identifies the bundled code that must retain notices: Eigen MPL-2.0; Ceres, gflags, and glog New BSD; libmv MIT; openMVG MPL-2.0 with its third-party map; hoedown permissive MIT/BSD-style; libtess SGI Free Software License B; qhttpserver and its Joyent http-parser MIT; generated GLAD MIT; OpenFX HostSupport's embedded Expat MIT; and google-breakpad's embedded curl and musl MIT notices. The same inventory records the licenses of optional plugin/codecs/image integrations, including LGPL, BSD, zlib, Apache, GPL, CeCILL-C, MPL, and public-domain components; do not silently fetch or bundle those optional repositories. Preserve the parent, submodule, bundled-library, and optional-inventory notices in a license directory in the output because upstream CMake installs binaries and desktop metadata but does not install a complete license bundle. No equivalent package with the same NatronGitHub/Natron origin was found: local guix package -A natron is empty and the audited GNU Guix, Nonguix, Guix Science, Guix HPC, Guix Past, Guix R Us, and RDE channel coverage has no equivalent. Add a new module such as tay/packages/natron.scm using guix build-system cmake, recursive fixed-source git-fetch, and the exact parent revision above. Configure C++17 CMake with -DNATRON_QT6=ON, -DNATRON_SYSTEM_LIBS=OFF, and -DNATRON_BUILD_TESTS=ON. Required build inputs are CMake, pkg-config, extra-cmake-modules, Boost headers and serialization, Python 3 interpreter/development, python-pyside-6, python-shiboken-6 and their Qt 6.9-compatible tool/config files, qtbase with the Qt Core/Gui/Network/Widgets/Concurrent/OpenGLWidgets components, qtwayland or the Wayland client/EGL libraries, Cairo, fontconfig, Expat, libX11, and the compiler/toolchain; the parent CMake intentionally builds its fixed bundled gflags/glog/Ceres/openMVG/libmv/hoedown/libtess inputs when NATRON_SYSTEM_LIBS is off. Install Natron and NatronRenderer, and retain natron-python plus the upstream desktop/appdata/MIME/icon assets if the module keeps the CMake install set. Stage Gui/Resources/etc/fonts at the relative Resources/etc/fonts location expected by Engine/AppManager.cpp or set FONTCONFIG_PATH explicitly in the wrapper. Wrap Qt6/PySide6 runtime paths as needed, leave standard user configuration/cache/data locations writable through XDG variables, and never hard-code credentials or a home directory. Do not force an OCIO configuration, download OpenColorIO-Configs, or fetch the mutable upstream CI plugin archive; accept an explicit OCIO path or a separately packaged fixed config. Do not claim FFmpeg, OpenImageIO, or the normal Read/Write plugin set is included: the parent builds the host but not openfx-io, openfx-misc, or openfx-arena, and its Read/Write meta-nodes dispatch to external OpenFX readers and writers, including the video ReadFFmpeg/WriteFFmpeg IDs. Expose an optional OFX_PLUGIN_PATH only when a separately pinned and audited plugin package is composed. Upstream CTest compilation is practical with the recursive Google test/mock submodules, but Tests/BaseTest requires the externally supplied SeNoise, ReadOIIO, and WriteOIIO plugins, so do not use the mutable CI download as a Guix input; either run only tests that do not require those plugins or provide a separately fixed test fixture. The isolated acceptance proof must run guix lint -L. natron with no new errors, then guix build -L. natron with the pinned recursive source and tests enabled, and verify the installed bin/Natron and bin/NatronRenderer paths. In a network-disabled temporary container, create empty XDG/HOME directories and a tiny local OpenFX generator/writer fixture compiled against the pinned OpenFX headers, set only a temporary OFX_PLUGIN_PATH, and use Natron's documented Python API to create a deterministic 2x2 one-frame graph. Start Natron in GUI mode with an empty project under xvfb-run -a and confirm it initializes and exits cleanly; then run NatronRenderer on the generated script with the writer and frame 1, asserting exit status zero, the expected output magic, dimensions and deterministic digest, and no writes outside the temporary directories. Keep the graph CPU-only and avoid OCIO unless a fixed config is explicitly staged. These are implementation gates, not package proof; no package build or smoke proof is being claimed by this research disposition.Imported from GitHub comment. Originally posted by htayj on 2026-08-26T10:22:13Z.