aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Andree <mandree@FreeBSD.org>2024-02-20 23:24:23 +0000
committerMatthias Andree <mandree@FreeBSD.org>2024-02-23 17:37:09 +0000
commit7e027ece12342fab2bd29ce325c4a6109677ae8a (patch)
tree763c2571640f980f604f4a590fe0745d1eaa8316
parent8972ab311c750984f6936ea93e80642beb7f792a (diff)
downloadports-7e027ece12342fab2bd29ce325c4a6109677ae8a.tar.gz
ports-7e027ece12342fab2bd29ce325c4a6109677ae8a.zip
graphics/rawtherapee: update to 5.10
ChangeLog: https://rawtherapee.com/downloads/5.10/#new-features We need to stick to GCC because LLVM-compiled code may take more than twice as much processing time as GCC-compiled does, for my test set comparing a few images with denoising and stuff on FreeBSD-14.0-RELEASE amd64 comparing GCC 12.3 to clang 16.0, and similar values on FreeBSD-13.2-RELEASE. Pin GCC to 12 and override -stdlib accordingly, to fix PR: 273682 Clean up Makefile a bit, but we cannot let go of the CCACHE workarounds yet, which we need when enforcing GCC compile. Convert some .if branches to options helpers. Make LTO an option that defaults to on. For some strange reason, massively-parallel compilation WITHOUT LTO appears to trigger OOM kills much more than an LTO-enabled build. Upstream states that LTO build should run faster. For one self-test that fails frequently with SIGPIPE (Exit code 141 is 128 for core dump + 13 for SIGPIPE), pipe through dd with bigger input buffer to avoid SIGPIPE/exit code 141 test failures. Replace echo by ${ECHO_CMD} in self-tests to appease portlint. Portlint misdetects "file system" as bare use of file though and suggests ${FILE}, which is wrong. Revise warnings around the CCACHE hacks because https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=277204 strives to move ports to CCACHE_ENABLED, which does not work for this port. Also, 5.10 should fix the profile/locale related crash PR: 257255 by switching the std::map variable to use std::string as index, rather than Glib::ustring, which caused inconsistencies with locales. Upstream references (two bug reports, and the fix, in order): https://github.com/Beep6581/RawTherapee/issues/6357 https://github.com/Beep6581/RawTherapee/issues/6876 https://github.com/Beep6581/RawTherapee/pull/6889/commits/a95a58a8a399173e6947ff12a4b82b5d83ae80d9
-rw-r--r--graphics/rawtherapee/Makefile88
-rw-r--r--graphics/rawtherapee/distinfo6
-rw-r--r--graphics/rawtherapee/pkg-plist20
3 files changed, 68 insertions, 46 deletions
diff --git a/graphics/rawtherapee/Makefile b/graphics/rawtherapee/Makefile
index a361a50148fe..bb85be8aaa56 100644
--- a/graphics/rawtherapee/Makefile
+++ b/graphics/rawtherapee/Makefile
@@ -1,6 +1,6 @@
PORTNAME= rawtherapee
-PORTVERSION= 5.9
-PORTREVISION= 6
+PORTVERSION= 5.10
+PORTREVISION= 0
CATEGORIES= graphics
MASTER_SITES= https://rawtherapee.com/shared/source/ \
LOCAL/mandree/
@@ -12,8 +12,8 @@ WWW= https://www.rawtherapee.com/
LICENSE= GPLv3
LIB_DEPENDS= \
- liblensfun.so:graphics/lensfun \
libcanberra-gtk3.so:audio/libcanberra-gtk3 \
+ libexiv2.so:graphics/exiv2 \
libexpat.so:textproc/expat2 \
libfftw3.so:math/fftw3 \
libfftw3f.so:math/fftw3-float \
@@ -21,23 +21,26 @@ LIB_DEPENDS= \
libfreetype.so:print/freetype2 \
libiptcdata.so:graphics/libiptcdata \
liblcms2.so:graphics/lcms2 \
+ liblensfun.so:graphics/lensfun \
libpng.so:graphics/png \
libsigc-2.0.so:devel/libsigc++20 \
libtiff.so:graphics/tiff
-USES= cmake desktop-file-utils compiler:gcc-c++11-lib gnome \
+# We cannot use gcc-c++11-lib as of 2024-02-23 because
+# Uses/compiler.mk would use the default compiler instead
+# as though USE_GCC=yes had been set.
+USES= cmake desktop-file-utils compiler:c++11-lib gnome \
jpeg localbase:ldflags pkgconfig tar:xz
-# Binutils required for LTO (base ar/nm/ld/ranlib don't work)
-USE_BINUTILS= yes
-
-# As of 2019-09-29, this port is known to be miscompiled by clang90
-# (SIGSEGV or SIBGUS).
-# So we shall stick to a modern GCC for now,
-# XXX FIXME note that rawtherapee is somewhat sensitive
-# versus compiler details so we may need to pin GCC 9.x
-# or a version range.
-USE_GCC= yes
+# Older clang versions (for instance clang 9.0, as of 2019-09-29),
+# were known to miscompile RawTherapee, causing SIGSEGV or SIBGUS.
+# As of 2024-02, GCC-12.3 compiled RawTherapee appears to be
+# up to twice as fast as clang-16.0 compiled code.
+# So we shall stick to a modern GCC for now.
+#
+# Unfortunately, we can't even upgrade to GCC 13 because that fails
+# with our header files, see https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=273682
+USE_GCC= 12
USE_GNOME= gtkmm30 librsvg2
@@ -71,8 +74,8 @@ CMAKE_ARGS+= -DDOCDIR="${DOCSDIR}" \
# any more. The CMP0056 policy must be explicitly set to NEW to ensure
# linker flags are passed. Else -lomp is not found with clang.
# See: https://cmake.org/cmake/help/v3.4/policy/CMP0056.html
-CFLAGS+= -I${LOCALBASE}/include -fPIC ${_LTO_FLAGS} ${_OPT_FLAGS}
-LDFLAGS+= -Wl,--as-needed -lpthread ${_LTO_FLAGS} ${_OPT_FLAGS}
+CFLAGS+= -I${LOCALBASE}/include -fPIC ${_OPT_FLAGS}
+LDFLAGS+= -Wl,--as-needed -lpthread ${_OPT_FLAGS}
.if defined(PACKAGE_BUILDING) && empty(CFLAGS:M-march*) && (${ARCH} == i386 || ${ARCH} == amd64 || ${ARCH} == aarch64)
# this gets translated to -mtune=generic, see ${WRKSRC}/ProcessorTargets.cmake
@@ -81,42 +84,40 @@ LDFLAGS+= -Wl,--as-needed -lpthread ${_LTO_FLAGS} ${_OPT_FLAGS}
CMAKE_ARGS+= -DPROC_TARGET_NUMBER="1"
.endif
-# XXX FIXME - check this every few months, cmake might be fixed one day
+# For gcc-based builds, rawtherapee's cmake ends up with GCC's absolute path
+# in the CC/CXX variables, effectively disabling ccache. Wrap compiler in ccache explicitly.
+# CCACHE_ENABLED does not get enabled soon enough as of dceadb6b0011 in February 2024,
+# so we need to re-do what bsd.ccache.mk does.
+# See also https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=277204
+# NB: When changing this, make sure that the compiler is still wrapped by ccache!
.if "${WITH_CCACHE_BUILD}" == "yes" && !defined(NO_CCACHE)
CMAKE_ARGS+= -DCMAKE_C_COMPILER_LAUNCHER=${CCACHE_BIN} \
-DCMAKE_CXX_COMPILER_LAUNCHER=${CCACHE_BIN}
.endif
-OPTIONS_DEFINE= DOCS NATIVE
+OPTIONS_DEFINE= DOCS NATIVE LTO
OPTIONS_DEFINE_amd64= OPENMP
OPTIONS_DEFINE_i386= OPENMP
-OPTIONS_DEFAULT= OPENMP
+OPTIONS_DEFAULT= OPENMP LTO
NATIVE_DESC= Use -march=native (avoid for generic packages!)
OPENMP_DESC= Enable OpenMP parallel processing (i386/amd64 only)
+LTO_CFLAGS= ${_LTO_FLAGS}
+LTO_LDFLAGS= ${_LTO_FLAGS}
+NATIVE_CMAKE_ON= -DPROC_TARGET_NUMBER="2"
OPENMP_CMAKE_BOOL= OPTION_OMP
+OPENMP_LDFLAGS= -lm -lomp
.include <bsd.port.options.mk>
# -------------------------------------------------------------------
-.if (${OPSYS} == FreeBSD) && (${OSVERSION} >= 1400000)
+.if (${OPSYS} == FreeBSD) && (${OSVERSION} >= 1500000)
# don't waste everybody's time with Tier-2 and moving targets.
-# might add ARM64 later on if they are established by the
-# time FreeBSD 13 is out.
ONLY_FOR_ARCHS= amd64
ONLY_FOR_ARCHS_REASON=only amd64 is supported on non-released FreeBSD versions
.endif
-.if ${PORT_OPTIONS:MNATIVE}
-CMAKE_ARGS+= -DPROC_TARGET_NUMBER="2"
-.endif
-
-.if !empty(PORT_OPTIONS:MOPENMP) && !empty(OPTIONS_DEFINE:MOPENMP)
-OPENMP_FLAGS= -lm -lomp
-LDFLAGS+= ${OPENMP_FLAGS}
-.endif
-
.if defined(WITH_DEBUG)
STRIP=
CMAKE_BUILD_TYPE= None # Arch Linux packaging trick to avoid cmake overriding our flags
@@ -127,12 +128,9 @@ _OPT_FLAGS= -O3 -funroll-loops
# x86_64/amd64 includes -msse2 by default
.if ${ARCH} == i386
-# and SSE2 has been around since the year 2003 latest
+# -mstackrealign: workaround for values passed on the stack that cause SIGBUS on SSE2
+# -msse2: SSE2 has been around since the year 2003 latest
_OPT_FLAGS+= -msse2
-.endif
-
-# workaround for values passed on the stack that cause SIGBUS on SSE2
-.if ${ARCH} == i386
_OPT_FLAGS+= -mstackrealign
.endif
@@ -140,11 +138,15 @@ _OPT_FLAGS+= -mstackrealign
.include <bsd.port.pre.mk>
+.if ${COMPILER_FEATURES:Mlibc++}
+CXXFLAGS+= -stdlib=libc++
+.endif
+
post-patch:
@${REINPLACE_CMD} -e 's#DESTINATION "$${CMAKE_INSTALL_PREFIX}/share/man/man1"#DESTINATION "${PREFIX}/share/man/man1/"#' \
${WRKSRC}/CMakeLists.txt
-TESTIMAGES= ${FILESDIR}/../testimages
+TESTIMAGES= ${MASTERDIR}/testimages
# paranoia: run rawtherapee to be sure it finds all its
# shared libraries (this hinges on proper RPATH setting and propagation)
@@ -170,20 +172,20 @@ post-install:
(cd ${WRKSRC}/rtdata/ && ${COPYTREE_SHARE} "profiles dcpprofiles" ${WRKDIR}/rt-config ) ; \
(set -x ; TMP=$$(${MKTEMP} -d -t ${PORTNAME}) && trap "rc=$$? ; ${RM} -rf \"$$TMP\" ; exit \$$rc" 0 && \
( set +e ; ${SETENV} ${_env} ${STAGEDIR}${PREFIX}/bin/rawtherapee -v ; \
- echo $$? >&3 ) 3>&3 | ${EGREP} -q "RawTherapee, version ${_check_version:C/_.*//:C/,.*//}|cannot open display:" && \
- ( set +e ; ${SETENV} ${_env} ${STAGEDIR}${PREFIX}/bin/rawtherapee-cli ; \
- echo $$? >&3 ) 3>&3 | ${EGREP} -q "RawTherapee, version ${_check_version:C/_.*//:C/,.*//}" && \
+ ${ECHO_CMD} $$? >&3 ) 3>&3 | ${EGREP} -q "RawTherapee, version ${_check_version:C/_.*//:C/,.*//}|cannot open display:" && \
+ ( set +e ; ${SETENV} ${_env} ${STAGEDIR}${PREFIX}/bin/rawtherapee-cli | dd ibs=8k ; \
+ ${ECHO_CMD} $$? >&3 ) 3>&3 | ${EGREP} -q "RawTherapee, version ${_check_version:C/_.*//:C/,.*//}" && \
expect=$$'0\n0\n' && \
onefile=$$(ls "${TESTIMAGES}"/* | head -1) && \
if test -d "${TESTIMAGES}" && test -n "$$onefile" -a -r "$$onefile" ; then \
expect=$$'0\n0\n0\n0\n0\n' && \
( set +e ; \
/usr/bin/time ${SETENV} ${_env} ${STAGEDIR}${PREFIX}/bin/rawtherapee-cli \
- -o "$$TMP" -q -f -c ${TESTIMAGES} ; echo $$? >&3 ; \
+ -o "$$TMP" -q -f -c ${TESTIMAGES} ; ${ECHO_CMD} $$? >&3 ; \
/usr/bin/time ${SETENV} ${_env} ${STAGEDIR}${PREFIX}/bin/rawtherapee-cli \
- -o "$$TMP" -q -s -Y -c ${TESTIMAGES} ; echo $$? >&3 ; \
+ -o "$$TMP" -q -s -Y -c ${TESTIMAGES} ; ${ECHO_CMD} $$? >&3 ; \
/usr/bin/time ${SETENV} ${_env} ${STAGEDIR}${PREFIX}/bin/rawtherapee-cli \
- -o "$$TMP" -q -s -Y -tz -c ${TESTIMAGES} ; echo $$? >&3 ) 3>&3 ; \
+ -o "$$TMP" -q -s -Y -tz -c ${TESTIMAGES} ; ${ECHO_CMD} $$? >&3 ) 3>&3 ; \
fi ; \
ls -Rlbai "${TESTIMAGES}" "$${TMP}" || :; \
${PRINTF} "%s" "$$expect" >&4 ) ) 3>${WRKDIR}/selftest.exitcodes 4>${WRKDIR}/selftest.expect ; \
diff --git a/graphics/rawtherapee/distinfo b/graphics/rawtherapee/distinfo
index 7ceca4d8df87..3746e5beef68 100644
--- a/graphics/rawtherapee/distinfo
+++ b/graphics/rawtherapee/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1669839111
-SHA256 (rawtherapee-5.9.tar.xz) = 8eaf28c428185c165ef5a28f69595dc77a1c98826065a1f51a28c86c7b0d4823
-SIZE (rawtherapee-5.9.tar.xz) = 16219076
+TIMESTAMP = 1708462303
+SHA256 (rawtherapee-5.10.tar.xz) = a799b53cd54dba4a211479e342ffc9c5db1c44d3d6c3a27d5cc13adf0debd2da
+SIZE (rawtherapee-5.10.tar.xz) = 16943724
diff --git a/graphics/rawtherapee/pkg-plist b/graphics/rawtherapee/pkg-plist
index d770bc4026de..091e7d45d5d1 100644
--- a/graphics/rawtherapee/pkg-plist
+++ b/graphics/rawtherapee/pkg-plist
@@ -21,6 +21,7 @@ share/metainfo/com.rawtherapee.RawTherapee.appdata.xml
%%DATADIR%%/dcpprofiles/Canon EOS 100D.dcp
%%DATADIR%%/dcpprofiles/Canon EOS 1300D.dcp
%%DATADIR%%/dcpprofiles/Canon EOS 20D.dcp
+%%DATADIR%%/dcpprofiles/CANON EOS 250D.dcp
%%DATADIR%%/dcpprofiles/Canon EOS 400D.dcp
%%DATADIR%%/dcpprofiles/Canon EOS 40D.dcp
%%DATADIR%%/dcpprofiles/Canon EOS 450D.dcp
@@ -37,8 +38,10 @@ share/metainfo/com.rawtherapee.RawTherapee.appdata.xml
%%DATADIR%%/dcpprofiles/Canon EOS 6D.dcp
%%DATADIR%%/dcpprofiles/Canon EOS 7D Mark II.dcp
%%DATADIR%%/dcpprofiles/Canon EOS 7D.dcp
+%%DATADIR%%/dcpprofiles/CANON EOS 800D.dcp
%%DATADIR%%/dcpprofiles/Canon EOS 90D.dcp
%%DATADIR%%/dcpprofiles/Canon EOS D60.dcp
+%%DATADIR%%/dcpprofiles/CANON EOS M50.dcp
%%DATADIR%%/dcpprofiles/Canon EOS M6 Mark II.dcp
%%DATADIR%%/dcpprofiles/Canon EOS R.dcp
%%DATADIR%%/dcpprofiles/Canon EOS R5.dcp
@@ -50,19 +53,24 @@ share/metainfo/com.rawtherapee.RawTherapee.appdata.xml
%%DATADIR%%/dcpprofiles/Canon PowerShot G1 X Mark II.dcp
%%DATADIR%%/dcpprofiles/Canon PowerShot G10.dcp
%%DATADIR%%/dcpprofiles/Canon PowerShot G12.dcp
+%%DATADIR%%/dcpprofiles/CANON POWERSHOT G5 X MARK II.dcp
%%DATADIR%%/dcpprofiles/Canon PowerShot G7 X.dcp
%%DATADIR%%/dcpprofiles/Canon PowerShot S110.dcp
%%DATADIR%%/dcpprofiles/Canon PowerShot S120.dcp
+%%DATADIR%%/dcpprofiles/FUJIFILM DBP for GX680.dcp
%%DATADIR%%/dcpprofiles/FUJIFILM FinePix F600EXR.dcp
%%DATADIR%%/dcpprofiles/Fujifilm FinePix S9500.dcp
%%DATADIR%%/dcpprofiles/FUJIFILM GFX 50R.dcp
%%DATADIR%%/dcpprofiles/FUJIFILM X-A5.dcp
+%%DATADIR%%/dcpprofiles/FUJIFILM X-A7.dcp
%%DATADIR%%/dcpprofiles/Fujifilm X-E1.dcp
%%DATADIR%%/dcpprofiles/Fujifilm X-E2.dcp
+%%DATADIR%%/dcpprofiles/FUJIFILM X-E3.dcp
%%DATADIR%%/dcpprofiles/FUJIFILM X-H1.dcp
%%DATADIR%%/dcpprofiles/FUJIFILM X-Pro2.dcp
%%DATADIR%%/dcpprofiles/FUJIFILM X-Pro3.dcp
%%DATADIR%%/dcpprofiles/FUJIFILM X-S1.dcp
+%%DATADIR%%/dcpprofiles/FUJIFILM X-S10.dcp
%%DATADIR%%/dcpprofiles/FUJIFILM X-T1.dcp
%%DATADIR%%/dcpprofiles/FUJIFILM X-T10.dcp
%%DATADIR%%/dcpprofiles/FUJIFILM X-T2.dcp
@@ -80,6 +88,7 @@ share/metainfo/com.rawtherapee.RawTherapee.appdata.xml
%%DATADIR%%/dcpprofiles/NIKON D300.dcp
%%DATADIR%%/dcpprofiles/Nikon D3000.dcp
%%DATADIR%%/dcpprofiles/Nikon D3100.dcp
+%%DATADIR%%/dcpprofiles/NIKON D3300.dcp
%%DATADIR%%/dcpprofiles/Nikon D3S.dcp
%%DATADIR%%/dcpprofiles/NIKON D50.dcp
%%DATADIR%%/dcpprofiles/NIKON D500.dcp
@@ -101,12 +110,15 @@ share/metainfo/com.rawtherapee.RawTherapee.appdata.xml
%%DATADIR%%/dcpprofiles/NIKON D800E.dcp
%%DATADIR%%/dcpprofiles/NIKON D810.dcp
%%DATADIR%%/dcpprofiles/NIKON D850.dcp
+%%DATADIR%%/dcpprofiles/NIKON Z 5.dcp
%%DATADIR%%/dcpprofiles/NIKON Z 50.dcp
%%DATADIR%%/dcpprofiles/NIKON Z 6.dcp
+%%DATADIR%%/dcpprofiles/NIKON Z 6_2.dcp
%%DATADIR%%/dcpprofiles/NIKON Z 7.dcp
%%DATADIR%%/dcpprofiles/Olympus E-1.dcp
%%DATADIR%%/dcpprofiles/OLYMPUS E-510.dcp
%%DATADIR%%/dcpprofiles/Olympus E-520.dcp
+%%DATADIR%%/dcpprofiles/OLYMPUS E-M1.dcp
%%DATADIR%%/dcpprofiles/OLYMPUS E-M10.dcp
%%DATADIR%%/dcpprofiles/OLYMPUS E-M1MarkII.dcp
%%DATADIR%%/dcpprofiles/Olympus E-M5.dcp
@@ -129,6 +141,7 @@ share/metainfo/com.rawtherapee.RawTherapee.appdata.xml
%%DATADIR%%/dcpprofiles/Panasonic DMC-GH2.dcp
%%DATADIR%%/dcpprofiles/Panasonic DMC-GX7.dcp
%%DATADIR%%/dcpprofiles/Panasonic DMC-GX85.dcp
+%%DATADIR%%/dcpprofiles/PANASONIC DMC-LX100.dcp
%%DATADIR%%/dcpprofiles/PENTAX K-5 II.dcp
%%DATADIR%%/dcpprofiles/PENTAX K-5.dcp
%%DATADIR%%/dcpprofiles/PENTAX K-50.dcp
@@ -139,6 +152,7 @@ share/metainfo/com.rawtherapee.RawTherapee.appdata.xml
%%DATADIR%%/dcpprofiles/RICOH PENTAX K-1.dcp
%%DATADIR%%/dcpprofiles/RICOH PENTAX K-3.dcp
%%DATADIR%%/dcpprofiles/samsung SM-G930V.dcp
+%%DATADIR%%/dcpprofiles/SONY DSC-RX100M6.dcp
%%DATADIR%%/dcpprofiles/SONY DSLR-A580.dcp
%%DATADIR%%/dcpprofiles/Sony DSLR-A700.dcp
%%DATADIR%%/dcpprofiles/Sony DSLR-A900.dcp
@@ -147,11 +161,14 @@ share/metainfo/com.rawtherapee.RawTherapee.appdata.xml
%%DATADIR%%/dcpprofiles/SONY ILCE-6400.dcp
%%DATADIR%%/dcpprofiles/SONY ILCE-6500.dcp
%%DATADIR%%/dcpprofiles/SONY ILCE-6600.dcp
+%%DATADIR%%/dcpprofiles/SONY ILCE-7.dcp
+%%DATADIR%%/dcpprofiles/SONY ILCE-7C.dcp
%%DATADIR%%/dcpprofiles/SONY ILCE-7M2.dcp
%%DATADIR%%/dcpprofiles/SONY ILCE-7M3.dcp
%%DATADIR%%/dcpprofiles/SONY ILCE-7M4.dcp
%%DATADIR%%/dcpprofiles/SONY ILCE-7RM3.dcp
%%DATADIR%%/dcpprofiles/SONY ILCE-7RM4.dcp
+%%DATADIR%%/dcpprofiles/SONY ILCE-7SM3.dcp
%%DATADIR%%/dcpprofiles/SONY ILCE-9.dcp
%%DATADIR%%/dcpprofiles/Sony NEX-5N.dcp
%%DATADIR%%/dcpprofiles/Sony SLT-A55V.dcp
@@ -231,6 +248,7 @@ share/metainfo/com.rawtherapee.RawTherapee.appdata.xml
%%DATADIR%%/images/bidirectional-arrow-horizontal-prelight.svg
%%DATADIR%%/images/bidirectional-arrow-vertical-hicontrast.svg
%%DATADIR%%/images/bidirectional-arrow-vertical-prelight.svg
+%%DATADIR%%/images/box.svg
%%DATADIR%%/images/cancel-small.svg
%%DATADIR%%/images/cancel.svg
%%DATADIR%%/images/circle-black-small.svg
@@ -315,6 +333,8 @@ share/metainfo/com.rawtherapee.RawTherapee.appdata.xml
%%DATADIR%%/images/distortion-pincushion.svg
%%DATADIR%%/images/draw.svg
%%DATADIR%%/images/edit-point.svg
+%%DATADIR%%/images/edit-small.svg
+%%DATADIR%%/images/edit.svg
%%DATADIR%%/images/empty.png
%%DATADIR%%/images/equilizer-narrow.svg
%%DATADIR%%/images/equilizer-wide.svg