[packages/FreeImage] - switched to maintained fork, updated to 3.19.15, use system libs (thus fixing maaaany CVEs)

qboosh qboosh at pld-linux.org
Sun Sep 20 17:01:55 CEST 2026


commit 19176408a2df45084bf68250b794ebff1abd43ec
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Sun Sep 20 17:02:06 2026 +0200

    - switched to maintained fork, updated to 3.19.15, use system libs (thus fixing maaaany CVEs)

 FreeImage-cmake-with-plus.patch |  80 +++++++++++++++++++++
 FreeImage-openjp2.patch         |  11 +++
 FreeImage.spec                  | 152 ++++++++++++++++++++++++++++------------
 3 files changed, 198 insertions(+), 45 deletions(-)
---
diff --git a/FreeImage.spec b/FreeImage.spec
index cd77499..c0c2af6 100644
--- a/FreeImage.spec
+++ b/FreeImage.spec
@@ -1,29 +1,60 @@
-# TODO: use system libraries (if possible):
-# libjpeg 9c
-# libpng 1.6.35
-# libtiff 4.0.9+git
-# libraw 0.19
-# openjpeg 2.1.0+svn
-# zlib 1.2.11
-# libwebp 1.0.0+git
-# LibJXR 1.1+git
-# OpenEXR 2.2.1
-%define	fver	%(echo %{version} | tr -d .)
+#
+# Conditional build:
+%bcond_without	static_libs	# static library
+
+# require at least bundled versions (except for libjpeg v9d, where we use libjpeg-turbo, which provides v8)
+%define		imath_ver	3.1.12
+%define		openexr_ver	3.3.13
+%define		jxrlib_ver	1.1-0.2019.10.9.2
+%define		libdeflate_ver	1.18
+%define		libjpeg_ver	8
+%define		libpng_ver	2:1.6.39
+%define		libtiff_ver	4.6.0
+%define		libwebp_ver	1.6.0
+%define		libraw_ver	0.21.1
+%define		openjp2_ver	2.5.4
+%define		zlib_ver	1.3.2
+
 Summary:	Library for handling different graphics files formats
 Summary(pl.UTF-8):	Biblioteka do manipulacji różnymi formatami plików graficznych
 Name:		FreeImage
-Version:	3.18.0
-Release:	2
+Version:	3.19.15
+Release:	1
 License:	GPL and FIPL v1.0 (see the license-fi.txt)
 Group:		Libraries
-Source0:	http://downloads.sourceforge.net/freeimage/%{name}%{fver}.zip
-# Source0-md5:	f8ba138a3be233a3eed9c456e42e2578
-Source1:	http://downloads.sourceforge.net/freeimage/%{name}%{fver}.pdf
+#Source0Download: https://github.com/danoli3/FreeImage/releases
+Source0:	https://github.com/danoli3/FreeImage/archive/%{version}/%{name}-%{version}.tar.gz
+# Source0-md5:	00748dfb77cf611f1cf92deb9ca83b3b
+Source1:	https://downloads.sourceforge.net/freeimage/%{name}3180.pdf
 # Source1-md5:	01d2b93728273caec87f19949fcc4981
-URL:		http://freeimage.sourceforge.net/index.html
-BuildRequires:	libstdc++-devel
+Patch0:		%{name}-openjp2.patch
+Patch1:		%{name}-cmake-with-plus.patch
+# original project at https://freeimage.sourceforge.io/ (stopped at 3.18.0), here is maintained fork
+URL:		https://github.com/danoli3/FreeImage/releases
+BuildRequires:	Imath-devel >= %{imath_ver}
+BuildRequires:	OpenEXR-devel >= %{openexr_ver}
+BuildRequires:	jxrlib-devel >= %{jxrlib_ver}
+BuildRequires:	libdeflate-devel >= %{libdeflate_ver}
+BuildRequires:	libjpeg-devel >= %{libjpeg_ver}
+BuildRequires:	libpng-devel >= %{libpng_ver}
+BuildRequires:	libstdc++-devel >= 6:7
+BuildRequires:	libtiff-devel >= %{libtiff_ver}
+BuildRequires:	libwebp-devel >= %{libwebp_ver}
+BuildRequires:	libraw-devel >= %{libraw_ver}
+BuildRequires:	openjpeg2-devel >= %{openjp2_ver}
+BuildRequires:	pkgconfig
 BuildRequires:	rpmbuild(macros) >= 1.752
-BuildRequires:	unzip
+BuildRequires:	zlib-devel >= %{zlib_ver}
+Requires:	Imath >= %{imath_ver}
+Requires:	OpenEXR >= %{openexr_ver}
+Requires:	jxrlib >= %{jxrlib_ver}
+Requires:	libdeflate >= %{libdeflate_ver}
+Requires:	libjpeg >= %{libjpeg_ver}
+Requires:	libpng >= %{libpng_ver}
+Requires:	libtiff >= %{libtiff_ver}
+Requires:	libwebp >= %{libwebp_ver}
+Requires:	openjpeg2 >= %{openjp2_ver}
+Requires:	zlib >= %{zlib_ver}
 BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
 %description
@@ -43,7 +74,16 @@ Summary:	Header files for FreeImage library
 Summary(pl.UTF-8):	Pliki nagłówkowe biblioteki FreeImage
 Group:		Development/Libraries
 Requires:	%{name} = %{version}-%{release}
-Requires:	libstdc++-devel
+Requires:	Imath-devel >= %{imath_ver}
+Requires:	OpenEXR-devel >= %{openexr_ver}
+Requires:	jxrlib-devel >= %{jxrlib_ver}
+Requires:	libjpeg-devel >= %{libjpeg_ver}
+Requires:	libpng-devel >= %{libpng_ver}
+Requires:	libstdc++-devel >= 6:7
+Requires:	libtiff-devel >= %{libtiff_ver}
+Requires:	libwebp-devel >= %{libwebp_ver}
+Requires:	openjpeg2-devel >= %{openjp2_ver}
+Requires:	zlib-devel >= %{zlib_ver}
 
 %description devel
 Header files for FreeImage library.
@@ -76,37 +116,56 @@ Documentation for FreeImage library.
 Dokumentacja do biblioteki FreeImage.
 
 %prep
-%setup -q -n %{name}
+%setup -q
+%patch -P0 -p1
+%patch -P1 -p1
 
 %build
-CFLAGS="%{rpmcflags} -fPIC -fvisibility=hidden" \
-CXXFLAGS="%{rpmcxxflags} -fPIC -fvisibility=hidden -Wno-ctor-dtor-privacy" \
-%{__make} \
-	CC="%{__cc}" \
-	CXX="%{__cxx}"
-
+%if %{with static_libs}
+%cmake -B build-static \
+	-DBUILD_JXR=ON \
+	-DCMAKE_CXX_STANDARD=17 \
+	-DFREEIMAGE_STATIC=ON \
+	-DFREEIMAGE_USE_SYSTEM_LIBS=ON \
+	-DFREEIMAGE_VERSION="%{version}"
+
+%{__make} -C build-static
+%endif
+
+%cmake -B build \
+	-DBUILD_JXR=ON \
+	-DCMAKE_CXX_STANDARD=17 \
+	-DFREEIMAGE_USE_SYSTEM_LIBS=ON \
+	-DFREEIMAGE_VERSION="%{version}"
+
+%{__make} -C build
+
+%if 0
 CFLAGS="%{rpmcflags} -fPIC -fvisibility=hidden" \
 CXXFLAGS="%{rpmcxxflags} -fPIC -fvisibility=hidden -Wno-ctor-dtor-privacy" \
 %{__make} -f Makefile.fip \
 	CC="%{__cc}" \
 	CXX="%{__cxx}"
+%endif
 
 %install
 rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{%{_libdir},%{_includedir}}
-install -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
+#install -d $RPM_BUILD_ROOT{%{_libdir},%{_includedir}}
+install -d $RPM_BUILD_ROOT%{_examplesdir}
+
+#install Dist/libfreeimage* $RPM_BUILD_ROOT%{_libdir}
+#install Dist/*.h $RPM_BUILD_ROOT%{_includedir}
 
-install Dist/libfreeimage* $RPM_BUILD_ROOT%{_libdir}
-install Dist/*.h $RPM_BUILD_ROOT%{_includedir}
+%if %{with static_libs}
+%{__make} -C build-static install \
+	DESTDIR=$RPM_BUILD_ROOT
+%endif
 
-cp -rf Examples $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
-cp -f %{SOURCE1} .
+%{__make} -C build install \
+	DESTDIR=$RPM_BUILD_ROOT
 
-/sbin/ldconfig -n $RPM_BUILD_ROOT%{_libdir}
-ln -sf libfreeimage-%{version}.so \
-	$RPM_BUILD_ROOT%{_libdir}/libfreeimage.so
-ln -sf libfreeimageplus-%{version}.so \
-	$RPM_BUILD_ROOT%{_libdir}/libfreeimageplus.so
+cp -pr Examples $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
+cp -p %{SOURCE1} .
 
 %clean
 rm -rf $RPM_BUILD_ROOT
@@ -117,24 +176,27 @@ rm -rf $RPM_BUILD_ROOT
 %files
 %defattr(644,root,root,755)
 %doc README.linux README.md Whatsnew.txt license-fi.txt
-%attr(755,root,root) %{_libdir}/libfreeimage-%{version}.so
-%attr(755,root,root) %ghost %{_libdir}/libfreeimage.so.3
-%attr(755,root,root) %{_libdir}/libfreeimageplus-%{version}.so
-%attr(755,root,root) %ghost %{_libdir}/libfreeimageplus.so.3
+%{_libdir}/libfreeimage.so.*.*.*
+%ghost %{_libdir}/libfreeimage.so.3
+%{_libdir}/libfreeimageplus.so.*.*.*
+%ghost %{_libdir}/libfreeimageplus.so.3
 
 %files devel
 %defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libfreeimage.so
-%attr(755,root,root) %{_libdir}/libfreeimageplus.so
+%{_libdir}/libfreeimage.so
+%{_libdir}/libfreeimageplus.so
 %{_includedir}/FreeImage.h
 %{_includedir}/FreeImagePlus.h
+%{_libdir}/cmake/FreeImage
 %{_examplesdir}/%{name}-%{version}
 
+%if %{with static_libs}
 %files static
 %defattr(644,root,root,755)
 %{_libdir}/libfreeimage.a
 %{_libdir}/libfreeimageplus.a
+%endif
 
 %files apidocs
 %defattr(644,root,root,755)
-%doc FreeImage%{fver}.pdf
+%doc FreeImage3180.pdf
diff --git a/FreeImage-cmake-with-plus.patch b/FreeImage-cmake-with-plus.patch
new file mode 100644
index 0000000..8f0c5c0
--- /dev/null
+++ b/FreeImage-cmake-with-plus.patch
@@ -0,0 +1,80 @@
+--- FreeImage-3.19.15/CMakeLists.txt.orig	2026-09-20 15:58:32.111396863 +0200
++++ FreeImage-3.19.15/CMakeLists.txt	2026-09-20 16:09:14.051252510 +0200
+@@ -1042,16 +1042,31 @@ if(WIN32)
+     list(APPEND FreeImage_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/FreeImage.rc")
+ endif()
+ 
++set(FreeImagePlus_SOURCES
++    Wrapper/FreeImagePlus/src/fipImage.cpp
++    Wrapper/FreeImagePlus/src/fipMemoryIO.cpp
++    Wrapper/FreeImagePlus/src/fipMetadataFind.cpp
++    Wrapper/FreeImagePlus/src/fipMultiPage.cpp
++    Wrapper/FreeImagePlus/src/fipTag.cpp
++    Wrapper/FreeImagePlus/src/fipWinImage.cpp
++    Wrapper/FreeImagePlus/src/FreeImagePlus.cpp 
++)
++
+ if(FREEIMAGE_STATIC)
+     # Define the FreeImage library
+     add_library(${PROJECT_NAME} STATIC
+         ${FreeImage_SOURCES}
+ )
++    add_library(FreeImagePlus STATIC ${FreeImagePlus_SOURCES})
+ else()
+     add_library(${PROJECT_NAME} SHARED
+         ${FreeImage_SOURCES}
+ )
++    add_library(FreeImagePlus SHARED ${FreeImagePlus_SOURCES})
+ endif()
++set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${FREEIMAGE_VERSION} SOVERSION 3 OUTPUT_NAME freeimage)
++set_target_properties(FreeImagePlus PROPERTIES VERSION ${FREEIMAGE_VERSION} SOVERSION 3 OUTPUT_NAME freeimageplus)
++target_link_libraries(FreeImagePlus ${PROJECT_NAME})
+ 
+ if (DEFINED FreeImage_LIBS)
+     target_link_libraries(${PROJECT_NAME} ${FreeImage_LIBS})
+@@ -1093,17 +1108,26 @@ endif ()
+ install(TARGETS ${PROJECT_NAME}
+     EXPORT ${PROJECT_NAME}Targets
+     RUNTIME DESTINATION bin
+-    LIBRARY DESTINATION lib
+-    ARCHIVE DESTINATION lib
++    LIBRARY DESTINATION lib${LIB_SUFFIX}
++    ARCHIVE DESTINATION lib${LIB_SUFFIX}
++    INCLUDES DESTINATION include
++)
++install(TARGETS FreeImagePlus
++    EXPORT FreeImagePlusTargets
++    RUNTIME DESTINATION bin
++    LIBRARY DESTINATION lib${LIB_SUFFIX}
++    ARCHIVE DESTINATION lib${LIB_SUFFIX}
+     INCLUDES DESTINATION include
+ )
++
+ install(FILES Source/FreeImage.h DESTINATION include)
++install(FILES Wrapper/FreeImagePlus/FreeImagePlus.h DESTINATION include)
+ 
+ # Install the CMake Targets
+ install(EXPORT ${PROJECT_NAME}Targets
+     FILE ${PROJECT_NAME}Targets.cmake
+     NAMESPACE ${PROJECT_NAME}::
+-    DESTINATION lib/cmake/${PROJECT_NAME}
++    DESTINATION lib${LIB_SUFFIX}/cmake/${PROJECT_NAME}
+ )
+ 
+ # Install the CMake config
+@@ -1111,7 +1135,7 @@ include(CMakePackageConfigHelpers)
+ configure_package_config_file(
+     ${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake.in
+     ${PROJECT_NAME}Config.cmake
+-    INSTALL_DESTINATION lib/cmake/${PROJECT_NAME}
++    INSTALL_DESTINATION lib${LIB_SUFFIX}/cmake/${PROJECT_NAME}
+ )
+ write_basic_package_version_file(
+     ${PROJECT_NAME}ConfigVersion.cmake
+@@ -1121,5 +1145,5 @@ write_basic_package_version_file(
+ install(FILES
+     ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
+     ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
+-    DESTINATION lib/cmake/${PROJECT_NAME}
++    DESTINATION lib${LIB_SUFFIX}/cmake/${PROJECT_NAME}
+ )
diff --git a/FreeImage-openjp2.patch b/FreeImage-openjp2.patch
new file mode 100644
index 0000000..5e0487b
--- /dev/null
+++ b/FreeImage-openjp2.patch
@@ -0,0 +1,11 @@
+Drop OPJ_STATIC which breaks linking with system openjp2
+--- FreeImage-3.19.15/CMakeLists.txt.orig	2026-09-14 09:13:38.000000000 +0200
++++ FreeImage-3.19.15/CMakeLists.txt	2026-09-20 13:26:34.037460378 +0200
+@@ -1060,7 +1060,6 @@ endif()
+ # Preprocessor definitions
+ target_compile_definitions(${PROJECT_NAME} PUBLIC
+     DISABLE_PERF_MEASUREMENT
+-    OPJ_STATIC
+     NO_LCMS
+     NO_WINDOWS
+ )
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/FreeImage.git/commitdiff/19176408a2df45084bf68250b794ebff1abd43ec



More information about the pld-cvs-commit mailing list