Install this version:
emerge -a =media-video/openshot-4.0.0
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =media-video/openshot-4.0.0
Or alternatively:
emerge --autounmask-write -a =media-video/openshot-4.0.0
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_SINGLE_IMPL=1
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{12..14} )
inherit distutils-r1 xdg
MY_PN="openshot-qt"
DESCRIPTION="Free, open-source, non-linear video editor"
HOMEPAGE="https://www.openshot.org/ https://github.com/OpenShot/openshot-qt"
SRC_URI="https://github.com/OpenShot/${MY_PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/${MY_PN}-${PV}"
LICENSE="GPL-3+"
SLOT="0"
KEYWORDS="~amd64 ~arm64"
# The suite is a full Qt GUI driver: it instantiates MainWindow, needs a
# libopenshot runtime and a usable QPA platform. Not validated in a sandbox
# yet, so it is restricted rather than shipped broken behind USE=test.
RESTRICT="test"
# dev-python/pyqt6[scxml] is not optional: src/qt_api.py raises
# "PyQt6 QtStateMachine module not available" and aborts the launch without it.
# scxml is what pulls dev-qt/qtscxml in and enables the QtStateMachine binding
# (pyqt_use_enable scxml QtStateMachine); it is NOT default-on in pyqt6.
# [svg] backs the 17 QtSvg call sites; [gui] and [widgets] are default-on but
# spelled out because svg/scxml require them anyway.
#
# dev-python/sentry-sdk is deliberately absent: it is genuinely optional
# (the app logs "No sentry_sdk module detected" and continues), and telemetry
# should be opt-in, not pulled in by a dependency graph.
RDEPEND="
>=media-libs/libopenshot-1.0.0[python,${PYTHON_SINGLE_USEDEP}]
$(python_gen_cond_dep '
dev-python/certifi[${PYTHON_USEDEP}]
dev-python/defusedxml[${PYTHON_USEDEP}]
dev-python/distro[${PYTHON_USEDEP}]
dev-python/numpy[${PYTHON_USEDEP}]
dev-python/pillow[${PYTHON_USEDEP}]
dev-python/pyopengl[${PYTHON_USEDEP}]
dev-python/pyqt6[${PYTHON_USEDEP},gui,scxml,svg,widgets]
dev-python/pyzmq[${PYTHON_USEDEP}]
dev-python/requests[${PYTHON_USEDEP}]
')
"
src_prepare() {
default
# Upstream ships a top-level installer/__init__.py, which makes "installer"
# a real importable package rooted at ${S}. gpep517 install-wheel runs with
# ${S} on sys.path, so that directory shadows dev-python/installer and the
# wheel install dies with "cannot import name 'install' from 'installer'".
# The directory is macOS/Windows/AppImage packaging scaffolding; setup.py
# never reads it and nothing under src/ imports it, so drop it outright.
[[ -f installer/__init__.py ]] \
|| die "installer/__init__.py is gone; re-check the sys.path shadowing"
rm -r installer || die
# setup.py runs update-mime-database, update-mime and update-desktop-database
# against the LIVE prefix (sys.prefix, i.e. /usr) whenever euid == 0. With
# FEATURES=-userpriv the build phases are root, so that fires and either trips
# the sandbox or mutates the host outside ${D}. Upstream only self-disarms on
# FAKEROOTKEY, which Portage does not set. Pin the flag to False instead.
grep -qF 'ROOT = os.geteuid() == 0' setup.py \
|| die "setup.py root detection changed; re-audit the update-* calls"
sed -i 's/^ROOT = os\.geteuid() == 0$/ROOT = False # Gentoo: never touch the live prefix/' \
setup.py || die
}
python_install_all() {
distutils-r1_python_install_all
# xdg/openshot-qt is a Debian mime-support entry (update-mime reads
# /usr/lib/mime/packages). Gentoo has no update-mime; the file would be
# dead weight in a non-arch-specific /usr/lib subtree. share/mime/packages
# is the one that matters and is kept.
rm -r "${ED}/usr/lib/mime" || die
}
>=media-libs/libopenshot-1.0.0[python,${PYTHON_SINGLE_USEDEP}] $(python_gen_cond_dep ' dev-python/certifi[${PYTHON_USEDEP}] dev-python/defusedxml[${PYTHON_USEDEP}] dev-python/distro[${PYTHON_USEDEP}] dev-python/numpy[${PYTHON_USEDEP}] dev-python/pillow[${PYTHON_USEDEP}] dev-python/pyopengl[${PYTHON_USEDEP}] dev-python/pyqt6[${PYTHON_USEDEP},gui,scxml,svg,widgets] dev-python/pyzmq[${PYTHON_USEDEP}] dev-python/requests[${PYTHON_USEDEP}] ')
| Type | File | Size | Source URLs |
|---|---|---|---|
| DIST | openshot-4.0.0.tar.gz | 140201342 bytes | https://github.com/OpenShot/openshot-qt/archive/refs/tags/v4.0.0.tar.gz |