diff --git a/.gitignore b/.gitignore index 031836e..7a5cfa7 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,22 @@ /third_party-0.5.tar.gz /jpegxl-0.6.1.tar.gz /third_party-0.6.1.tar.gz +/jpegxl-c426256.tar.gz +/third_party-c426256.tar.gz +/jpegxl-0.7rc.tar.gz +/third_party-0.7rc.tar.gz +/jpegxl-0.7.0.tar.gz +/third_party-0.7.0.tar.gz +/jpegxl-0.8.1.tar.gz +/third_party-0.8.1.tar.gz +/jpegxl-0.8.2.tar.gz +/third_party-0.8.2.tar.gz +/jpegxl-0.9.2.tar.gz +/third_party-0.9.2.tar.gz +/jpegxl-0.10.2.tar.gz +/third_party-0.10.2.tar.gz +/jpegxl-0.10.3.tar.gz +/third_party-0.10.3.tar.gz +/jpegxl-0.11.1.tar.gz +/third_party-0.11.1.tar.gz +/testdata-0.11.1.tar.gz diff --git a/.packit.yaml b/.packit.yaml new file mode 100644 index 0000000..cd9ebce --- /dev/null +++ b/.packit.yaml @@ -0,0 +1,17 @@ +# See the documentation for more information: +# https://packit.dev/docs/configuration/ + +upstream_project_url: https://github.com/libjxl/libjxl +upstream_tag_template: v{version} + +# run opencv-clean.sh +# the sed currently hacks the script so that the version is correctly set and the sources upload is handled by Packit +actions: + pre-sync: + - bash -c "cd ${PACKIT_DOWNSTREAM_REPO}; sed '1d' ./update_third_party.sh | VERSION=${PACKIT_PROJECT_VERSION} bash" + +jobs: + - job: pull_from_upstream + trigger: release + dist_git_branches: + - fedora-rawhide diff --git a/README.packit b/README.packit new file mode 100644 index 0000000..fafa6eb --- /dev/null +++ b/README.packit @@ -0,0 +1,3 @@ +This repository is maintained by packit. +https://packit.dev/ +The file was generated using packit 0.104.1. diff --git a/jpegxl.spec b/jpegxl.spec index dab0cd3..f17a415 100644 --- a/jpegxl.spec +++ b/jpegxl.spec @@ -1,12 +1,16 @@ +# epel 8 need this other already have it +%undefine __cmake_in_source_build + +# developper recommendation +%global toolchain clang + # Uncomment for special build to rebuild aom on bumped soname. #global new_soname 1 -%global sover_old 0.6 -%global sover 0.6 - -%global gdk_pixbuf_moduledir $(pkgconf gdk-pixbuf-2.0 --variable=gdk_pixbuf_moduledir) +%global sover_old 0.10 +%global sover 0.11 +%bcond_with gimp_plugin %if 0%{?fedora} -%bcond_without gimp_plugin %bcond_without tcmalloc %endif @@ -15,7 +19,8 @@ This package contains a reference implementation of JPEG XL (encoder and decoder).} Name: jpegxl -Version: 0.6.1 +Epoch: 1 +Version: 0.11.1 Release: %autorelease %{?new_soname:-p -e 0~sonamebump} Summary: JPEG XL image format reference implementation @@ -23,70 +28,76 @@ Summary: JPEG XL image format reference implementation # lodepng: zlib # sjpeg: ASL 2.0 # skcms: BSD -License: BSD and ASL 2.0 and zlib +License: BSD-3-Clause AND Apache-2.0 AND Zlib URL: https://jpeg.org/jpegxl/ -VCS: https://github.com/libjxl/libjxl -Source0: %vcs/archive/v%{version}/%{name}-%{version}.tar.gz +Source0: https://github.com/libjxl/libjxl/archive/v%{version}/%{name}-%{version}.tar.gz -# git clone https://github.com/libjxl/libjxl -# cd libjxl/ -# git checkout v%%{version} -# git submodule init ; git submodule update -# rm -r third_party/brotli/ third_party/difftest_ng/ third_party/googletest/ -# rm -r third_party/HEVCSoftware/ third_party/highway/ -# rm -r third_party/IQA-optimization/ third_party/lcms/ -# rm -r third_party/skcms/profiles/ third_party/vmaf/ third_party/testdata/ -# tar -zcvf ../third_party-%%{version}.tar.gz third_party/ +# set VERSION and run ./update_third_party.sh to get Source1 and Source2 Source1: third_party-%{version}.tar.gz +Source2: testdata-%{version}.tar.gz BuildRequires: asciidoc BuildRequires: cmake BuildRequires: doxygen -BuildRequires: extra-cmake-modules -BuildRequires: gcc-c++ +BuildRequires: clang BuildRequires: giflib-devel %if %{with tcmalloc} BuildRequires: gperftools-devel %endif BuildRequires: ninja-build %if %{with gimp_plugin} -BuildRequires: pkgconfig(gimp-2.0) +BuildRequires: pkgconfig(gimp-3.0) %endif -BuildRequires: (pkgconfig(glut) or pkgconfig(freeglut)) +## sjpeg examples are not built +#BuildRequires: (pkgconfig(glut) or pkgconfig(freeglut)) BuildRequires: gtest-devel +BuildRequires: gflags-devel +BuildRequires: gmock-devel BuildRequires: pkgconfig(libhwy) BuildRequires: pkgconfig(libbrotlicommon) +BuildRequires: pkgconfig(lcms2) BuildRequires: pkgconfig(libjpeg) BuildRequires: pkgconfig(libpng) -BuildRequires: pkgconfig(libwebp) +## benchmark tools are not built +#BuildRequires: pkgconfig(libwebp) BuildRequires: pkgconfig(OpenEXR) -BuildRequires: pkgconfig(Qt5) -BuildRequires: pkgconfig(Qt5X11Extras) +## viewers are not built +#BuildRequires: extra-cmake-modules +#BuildRequires: pkgconfig(Qt5) +#BuildRequires: pkgconfig(Qt5X11Extras) BuildRequires: pkgconfig(zlib) +# epel 8 need this other already have it +BuildRequires: python3-devel %if 0%{?new_soname} -BuildRequires: libjxl < %{version} +BuildRequires: libjxl < %{epoch}:%{version} %endif -# Header-only library to be directly included in the project's source tree -Provides: bundled(lodepng) = 0-0.1.20210522git48e5364 # No official release -Provides: bundled(sjpeg) = 0-0.1.20210522git868ab55 +Provides: bundled(sjpeg) = 0-0.1.20230608gite5ab130 # Build system is Bazel, which is not packaged by Fedora -Provides: bundled(skcms) = 0-0.1.20210522git6437475 +Provides: bundled(skcms) = 0-0.1.20240122git51b7f2a %description %common_description %package -n libjxl-utils Summary: Utilities for manipulating JPEG XL images -Recommends: jxl-pixbuf-loader = %{version}-%{release} -Recommends: gimp-jxl-plugin = %{version}-%{release} -Provides: jpegxl-utils = %{version}-%{release} +Recommends: gimp-jxl-plugin = %{epoch}:%{version}-%{release} +Provides: jpegxl-utils = %{epoch}:%{version}-%{release} Obsoletes: jpegxl-utils < 0.3.7-5 %description -n libjxl-utils %{common_description} +%package -n libjxl-devtools +Summary: Development tools for JPEG-XL +Requires: libjxl%{?_isa} = %{epoch}:%{version}-%{release} + +%description -n libjxl-devtools +%{common_description} + +Development tools for JPEG-XL + %package doc Summary: Documentation for JPEG-XL BuildArch: noarch @@ -99,9 +110,12 @@ Documentation for JPEG-XL. %package -n libjxl Summary: Library files for JPEG-XL Requires: shared-mime-info -Recommends: jxl-pixbuf-loader = %{version}-%{release} -Provides: jpegxl-libs = %{version}-%{release} +Provides: jpegxl-libs = %{epoch}:%{version}-%{release} Obsoletes: jpegxl-libs < 0.3.7-5 +Obsoletes: jxl-pixbuf-loader < %{epoch}:%{version}-%{release} +%if %{without gimp_plugin} +Obsoletes: gimp-jxl-plugin < 1:0.10.3-4 +%endif %description -n libjxl %{common_description} @@ -110,8 +124,8 @@ Library files for JPEG-XL. %package -n libjxl-devel Summary: Development files for JPEG-XL -Requires: libjxl%{?_isa} = %{version}-%{release} -Provides: jpegxl-devel = %{version}-%{release} +Requires: libjxl%{?_isa} = %{epoch}:%{version}-%{release} +Provides: jpegxl-devel = %{epoch}:%{version}-%{release} Obsoletes: jpegxl-devel < 0.3.7-5 %description -n libjxl-devel @@ -119,14 +133,6 @@ Obsoletes: jpegxl-devel < 0.3.7-5 Development files for JPEG-XL. -%package -n jxl-pixbuf-loader -Summary: JPEG-XL image loader for GTK+ applications -BuildRequires: pkgconfig(gdk-pixbuf-2.0) -Requires: gdk-pixbuf2 - -%description -n jxl-pixbuf-loader -Jxl-pixbuf-loader contains a plugin to load JPEG-XL images in GTK+ applications. - %if %{with gimp_plugin} %package -n gimp-jxl-plugin Summary: A plugin for loading and saving JPEG-XL images @@ -138,39 +144,72 @@ This is a GIMP plugin for loading and saving JPEG-XL images. %prep %autosetup -p1 -n libjxl-%{version} -rm -rf third_party/ -%setup -q -T -D -a 1 -n libjxl-%{version} +rm -rf testdata/ third_party/ +%setup -q -T -D -a 1 -a 2 -n libjxl-%{version} %build +export CC=clang CXX=clang++ %cmake -DENABLE_CCACHE=1 \ - -DBUILD_TESTING=OFF \ + -DBUILD_TESTING=ON \ -DINSTALL_GTEST:BOOL=OFF \ -DJPEGXL_ENABLE_BENCHMARK:BOOL=OFF \ -DJPEGXL_ENABLE_PLUGINS:BOOL=ON \ + -DJPEGXL_ENABLE_PLUGIN_GDKPIXBUF:BOOL=OFF \ -DJPEGXL_FORCE_SYSTEM_BROTLI:BOOL=ON \ -DJPEGXL_FORCE_SYSTEM_GTEST:BOOL=ON \ -DJPEGXL_FORCE_SYSTEM_HWY:BOOL=ON \ -DJPEGXL_WARNINGS_AS_ERRORS:BOOL=OFF \ - -DBUILD_SHARED_LIBS:BOOL=OFF + -DBUILD_SHARED_LIBS:BOOL=ON \ + -DBUNDLE_LIBPNG_DEFAULT:BOOL=OFF \ + -DBUNDLE_GFLAGS_DEFAULT:BOOL=OFF \ + -DJPEGXL_ENABLE_DEVTOOLS=ON %cmake_build -- all doc %install %cmake_install -rm -v %{buildroot}%{_libdir}/*.a +#rm -v %{buildroot}%{_libdir}/*.a %if 0%{?new_soname} cp -p %{_libdir}/libjxl.so.%{sover_old}* \ %{_libdir}/libjxl_threads.so.%{sover_old}* \ + %{_libdir}/libjxl_cms.so.%{sover_old}* \ %{buildroot}%{_libdir} %endif +%check +%ifarch s390x +# https://github.com/libjxl/libjxl/issues/3629 +%ctest -E 'DecodeTest\.(ProgressionTestLosslessAlpha|FlushTestLosslessProgressiveAlpha)|EncodeTest\.FrameSettingsTest|JxlTest\.RoundtripAlpha(Resampling(OnlyAlpha)?|16)|JxlTest\.RoundtripProgressive(Level2Slow)?|ModularTest\.RoundtripLossy(DeltaPalette|16)?|RoundtripLossless/ModularTestParam\.RoundtripLossless/1bitSqueeze|RoundtripLossless/ModularTestParam\.RoundtripLossless/(1|2[01467]|30)bitSqueeze|PassesTest\.ProgressiveDownsample2DegradesCorrectly(Grayscale)?' +%else +%ctest +%endif + %files -n libjxl-utils %doc CONTRIBUTING.md CONTRIBUTORS README.md %{_bindir}/cjxl %{_bindir}/djxl +%{_bindir}/jxlinfo %{_mandir}/man1/cjxl.1* %{_mandir}/man1/djxl.1* +%files -n libjxl-devtools +%{_bindir}/djxl_fuzzer_corpus +%{_bindir}/butteraugli_main +%{_bindir}/decode_and_encode +%{_bindir}/display_to_hlg +%{_bindir}/exr_to_pq +%{_bindir}/icc_simplify +%{_bindir}/pq_to_hlg +%{_bindir}/render_hlg +%{_bindir}/tone_map +%{_bindir}/texture_to_cube +%{_bindir}/generate_lut_template +%{_bindir}/ssimulacra_main +%{_bindir}/ssimulacra2 +%{_bindir}/xyb_range +%{_bindir}/jxl_from_tree +%{_bindir}/local_tone_map + %files doc %doc doc/*.md %doc %{_vpath_builddir}/html @@ -180,12 +219,12 @@ cp -p %{_libdir}/libjxl.so.%{sover_old}* \ %license LICENSE %{_libdir}/libjxl.so.%{sover}* %{_libdir}/libjxl_threads.so.%{sover}* +%{_libdir}/libjxl_cms.so.%{sover}* %if 0%{?new_soname} %{_libdir}/libjxl.so.%{sover_old}* %{_libdir}/libjxl_threads.so.%{sover_old}* +%{_libdir}/libjxl_cms.so.%{sover_old}* %endif -%dir %{_datadir}/thumbnailers -%{_datadir}/thumbnailers/jxl.thumbnailer %{_datadir}/mime/packages/image-jxl.xml %files -n libjxl-devel @@ -193,12 +232,11 @@ cp -p %{_libdir}/libjxl.so.%{sover_old}* \ %{_includedir}/jxl/ %{_libdir}/libjxl.so %{_libdir}/libjxl_threads.so +%{_libdir}/libjxl_cms.so +%{_libdir}/libjxl_extras_codec.a %{_libdir}/pkgconfig/libjxl.pc %{_libdir}/pkgconfig/libjxl_threads.pc - -%files -n jxl-pixbuf-loader -%license LICENSE -%{_libdir}/gdk-pixbuf-2.0/*/loaders/libpixbufloader-jxl.so +%{_libdir}/pkgconfig/libjxl_cms.pc %if %{with gimp_plugin} %files -n gimp-jxl-plugin diff --git a/sources b/sources index 75007c0..f7d352f 100644 --- a/sources +++ b/sources @@ -1,2 +1,3 @@ -SHA512 (jpegxl-0.6.1.tar.gz) = 302935d722160b0b288ac63301f9e95caf82eccf6ad76c4f4da6316a0314ee3562115932b1ceacb0d02708de0a07788992d3478cae73af0b90193f5769f9fb52 -SHA512 (third_party-0.6.1.tar.gz) = 7e416daf97e1cc54da00ec9b58636151308371d223fe29fcc22f6e9087852fd6fe9784a4e2f3e191a85a6f907a2732520ee7c8fd387292e19b5cc0b8a9d9392b +SHA512 (jpegxl-0.11.1.tar.gz) = 0cfd81d9d3b783f96bd04f244d73ffbc12186c89993d46064a2751bef0a446a5e86be05add5c10f60d4482d39333d9bf3f9a866d6eb84f8fa0d4e8b5828fd74c +SHA512 (testdata-0.11.1.tar.gz) = e775be0e8a56a828a4b70a174c841b3d474dbd170d899c50343896b21e46c6ae20f017f905ad7b83e097031e8add2788a00b1c452aa22e159b1f3a4e72a47155 +SHA512 (third_party-0.11.1.tar.gz) = 720544bd722cbc6ef81db660786e4b022f156d05672b7d7ee6110d367272dcf22a35458f51e0d850df2f6fb368978c43fa4fff99763010360a8b5673d2e556ca diff --git a/update_third_party.sh b/update_third_party.sh new file mode 100755 index 0000000..70ba696 --- /dev/null +++ b/update_third_party.sh @@ -0,0 +1,20 @@ +VERSION=0.11.1 + +git clone https://github.com/libjxl/libjxl +cd libjxl/ +git checkout . +git checkout v${VERSION} +./deps.sh +rm -rvf third_party/brotli/ +rm -rvf third_party/googletest/ +rm -rvf third_party/HEVCSoftware/ +rm -rvf third_party/highway/ +rm -rvf third_party/lcms/ +rm -rvf third_party/libjpeg-turbo +rm -rvf third_party/libpng/ +rm -rvf third_party/skcms/profiles/ +rm -rvf third_party/zlib +tar -zcf ../third_party-${VERSION}.tar.gz third_party/ +tar -zcf ../testdata-${VERSION}.tar.gz testdata/ +cd .. +rm -rf libjxl/