commit:     de8cacd724566ceb8c32a72e8d44005f26d136ab
Author:     Marek Szuba <marecki <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 14 12:57:06 2021 +0000
Commit:     Marek Szuba <marecki <AT> gentoo <DOT> org>
CommitDate: Tue Dec 14 13:11:30 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=de8cacd7

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 <AT> gentoo.org>

 media-gfx/darktable/darktable-3.6.1-r3.ebuild | 176 ++++++++++++++++++++++++++
 1 file changed, 176 insertions(+)

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
+}

Reply via email to