summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Szuba <marecki@gentoo.org>2021-12-14 12:57:06 +0000
committerMarek Szuba <marecki@gentoo.org>2021-12-14 13:11:30 +0000
commitde8cacd724566ceb8c32a72e8d44005f26d136ab (patch)
tree1df5d9f5c773f942e116f376f0e670f6bdd8980b
parentsys-kernel/gentoo-sources: Linux version bumps and genpatches (diff)
downloadgentoo-de8cacd724566ceb8c32a72e8d44005f26d136ab.tar.gz
gentoo-de8cacd724566ceb8c32a72e8d44005f26d136ab.tar.bz2
gentoo-de8cacd724566ceb8c32a72e8d44005f26d136ab.zip
media-gfx/darktable: support cpu_flags_x86_avx, with workaround for gcc-11 alignment issues
Darktable determines which instruction sets are available by parsing the CPU ID so while it would be non-trivial to actually prevent it from using SSE3 or AVX, at least we can make sure compiler/linker flags match what darktable has detected - as long as CPU_FLAGS_x86 is up to date, naturally. The second change will no longer be needed come next upstream release. Closes: https://bugs.gentoo.org/828992 Signed-off-by: Marek Szuba <marecki@gentoo.org>
-rw-r--r--media-gfx/darktable/darktable-3.6.1-r3.ebuild176
1 files changed, 176 insertions, 0 deletions
diff --git a/media-gfx/darktable/darktable-3.6.1-r3.ebuild b/media-gfx/darktable/darktable-3.6.1-r3.ebuild
new file mode 100644
index 000000000000..746a8b4aaf9b
--- /dev/null
+++ b/media-gfx/darktable/darktable-3.6.1-r3.ebuild
@@ -0,0 +1,176 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LUA_COMPAT=( lua5-3 )
+
+inherit cmake flag-o-matic lua-single toolchain-funcs xdg
+
+DESCRIPTION="A virtual lighttable and darkroom for photographers"
+HOMEPAGE="https://www.darktable.org/"
+LICENSE="GPL-3 CC-BY-3.0"
+SLOT="0"
+
+if [[ ${PV} == *9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/darktable-org/${PN}.git"
+
+ LANGS=" af ca cs da de el es fi fr gl he hu it ja nb nl pl pt-BR pt-PT ro ru sk sl sq sv th uk zh-CN zh-TW"
+else
+ DOC_PV="3.6"
+ MY_PV="${PV/_/}"
+ MY_P="${P/_/.}"
+
+ SRC_URI="https://github.com/darktable-org/${PN}/releases/download/release-${MY_PV}/${MY_P}.tar.xz
+ doc? ( https://docs.darktable.org/usermanual/${DOC_PV}/${PN}_user_manual.pdf -> ${PN}-usermanual-${DOC_PV}.pdf )"
+
+ KEYWORDS="~amd64 ~arm64 -x86"
+ LANGS=" af de eo es fr he hu it nl pt-BR ru sl uk"
+fi
+
+IUSE="avif colord cpu_flags_x86_avx cpu_flags_x86_sse3 cups doc flickr geolocation gmic gnome-keyring gphoto2 graphicsmagick jpeg2k kwallet
+ lto lua nls opencl openmp openexr test tools webp
+ ${LANGS// / l10n_}"
+
+REQUIRED_USE="lua? ( ${LUA_REQUIRED_USE} )"
+
+RESTRICT="!test? ( test )"
+
+BDEPEND="dev-util/intltool
+ virtual/pkgconfig
+ nls? ( sys-devel/gettext )
+ test? ( >=dev-python/jsonschema-3.2.0 )"
+DEPEND="dev-db/sqlite:3
+ dev-libs/json-glib
+ dev-libs/libxml2:2
+ >=dev-libs/pugixml-1.8:0=
+ gnome-base/librsvg:2
+ >=media-gfx/exiv2-0.25-r2:0=[xmp]
+ media-libs/lcms:2
+ >=media-libs/lensfun-0.2.3:0=
+ media-libs/libpng:0=
+ media-libs/tiff:0
+ net-libs/libsoup:2.4
+ net-misc/curl
+ sys-libs/zlib:=
+ virtual/jpeg:0
+ x11-libs/cairo
+ >=x11-libs/gtk+-3.22:3
+ x11-libs/pango
+ avif? ( >=media-libs/libavif-0.8.2:= )
+ colord? ( x11-libs/colord-gtk:0= )
+ cups? ( net-print/cups )
+ flickr? ( media-libs/flickcurl )
+ geolocation? ( >=sci-geosciences/osm-gps-map-1.1.0 )
+ gmic? ( media-gfx/gmic )
+ gnome-keyring? ( >=app-crypt/libsecret-0.18 )
+ gphoto2? ( media-libs/libgphoto2:= )
+ graphicsmagick? ( media-gfx/graphicsmagick )
+ jpeg2k? ( media-libs/openjpeg:2= )
+ lua? ( ${LUA_DEPS} )
+ opencl? ( virtual/opencl )
+ openexr? ( media-libs/openexr:= )
+ webp? ( media-libs/libwebp:0= )"
+RDEPEND="${DEPEND}
+ kwallet? ( >=kde-frameworks/kwallet-5.34.0-r1 )"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-3.0.0_find-opencl-header.patch
+ "${FILESDIR}"/${PN}-3.0.2_cmake-march-autodetection.patch
+ "${FILESDIR}"/${PN}-3.4.0_jsonschema-automagic.patch
+ "${FILESDIR}"/${PN}-3.4.1_libxcf-cmake.patch
+ "${FILESDIR}"/${PN}-3.6.1_openexr.patch
+)
+
+S="${WORKDIR}/${P/_/~}"
+
+pkg_pretend() {
+ if [[ ${MERGE_TYPE} != binary ]]; then
+ # Bug #695658
+ if tc-is-gcc; then
+ test-flags-CC -floop-block &> /dev/null || \
+ die "Please switch to a gcc version built with USE=graphite"
+ fi
+
+ use openmp && tc-check-openmp
+ fi
+}
+
+pkg_setup() {
+ use lua && lua-single_pkg_setup
+}
+
+src_prepare() {
+ if use cpu_flags_x86_avx; then
+ append-flags -mavx
+ # Bug #828992. clang does not support this flag so users building darktable
+ # with it will have to live with this bug (assuming they have suffered
+ # from it in the first place, as it might be specific to gcc-11) - this
+ # has already been fixed upstream and it looks like we won't have to wait
+ # much longer for 3.8.0.
+ tc-is-gcc && append-flags -mprefer-avx128
+ fi
+ use cpu_flags_x86_sse3 && append-flags -msse3
+
+ sed -i -e 's:/appdata:/metainfo:g' data/CMakeLists.txt || die
+
+ cmake_src_prepare
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DBUILD_CURVE_TOOLS=$(usex tools)
+ -DBUILD_NOISE_TOOLS=$(usex tools)
+ -DBUILD_PRINT=$(usex cups)
+ -DCUSTOM_CFLAGS=ON
+ -DDONT_USE_INTERNAL_LUA=ON
+ -DRAWSPEED_ENABLE_LTO=$(usex lto)
+ -DTESTBUILD_OPENCL_PROGRAMS=OFF
+ -DUSE_AVIF=$(usex avif)
+ -DUSE_CAMERA_SUPPORT=$(usex gphoto2)
+ -DUSE_COLORD=$(usex colord)
+ -DUSE_FLICKR=$(usex flickr)
+ -DUSE_GMIC=$(usex gmic)
+ -DUSE_GRAPHICSMAGICK=$(usex graphicsmagick)
+ -DUSE_KWALLET=$(usex kwallet)
+ -DUSE_LIBSECRET=$(usex gnome-keyring)
+ -DUSE_LUA=$(usex lua)
+ -DUSE_MAP=$(usex geolocation)
+ -DUSE_NLS=$(usex nls)
+ -DUSE_OPENCL=$(usex opencl)
+ -DUSE_OPENEXR=$(usex openexr)
+ -DUSE_OPENJPEG=$(usex jpeg2k)
+ -DUSE_OPENMP=$(usex openmp)
+ -DUSE_WEBP=$(usex webp)
+ -DWANT_JSON_VALIDATION=$(usex test)
+ )
+ CMAKE_BUILD_TYPE="RELWITHDEBINFO"
+ cmake_src_configure
+}
+
+src_install() {
+ cmake_src_install
+ # This USE flag is masked for -9999
+ use doc && dodoc "${DISTDIR}"/${PN}-usermanual-${DOC_PV}.pdf
+
+ if use nls; then
+ for lang in ${LANGS} ; do
+ if ! use l10n_${lang}; then
+ rm -r "${ED}"/usr/share/locale/${lang/-/_} || die
+ fi
+ done
+ fi
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+
+ elog
+ elog "When updating a major version,"
+ elog "please bear in mind that your edits will be preserved during this process,"
+ elog "but it will not be possible to downgrade any more."
+ elog
+ ewarn "It will not be possible to downgrade!"
+ ewarn
+}