summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Bermond2021-06-02 18:29:08 +0000
committerDaniel Bermond2021-06-02 18:29:08 +0000
commit1e185ba12de31af6e52cefd10607ea40a13706d3 (patch)
treeb8cc46287828a2a2c532e083fcd99a47dd3b373e
downloadaur-1e185ba12de31af6e52cefd10607ea40a13706d3.tar.gz
Initial commit
Package libjpeg-xl renamed to libjxl to follow the upstream name change.
-rw-r--r--.SRCINFO70
-rw-r--r--010-libjxl-openexr-fix.patch37
-rw-r--r--PKGBUILD107
3 files changed, 214 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..fd55246ae76c
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,70 @@
+pkgbase = libjxl
+ pkgdesc = JPEG XL image format reference implementation
+ pkgver = 0.3.7
+ pkgrel = 1
+ url = https://jpeg.org/jpegxl/
+ arch = x86_64
+ license = Apache
+ makedepends = git
+ makedepends = cmake
+ makedepends = clang
+ makedepends = brotli
+ makedepends = gdk-pixbuf2
+ makedepends = giflib
+ makedepends = gimp
+ makedepends = libjpeg-turbo
+ makedepends = libpng
+ makedepends = openexr
+ makedepends = zlib
+ makedepends = libgl
+ makedepends = freeglut
+ makedepends = gtest
+ makedepends = gmock
+ makedepends = python
+ makedepends = asciidoc
+ makedepends = doxygen
+ makedepends = graphviz
+ source = git+https://github.com/libjxl/libjxl.git#tag=v0.3.7
+ source = git+https://github.com/google/brotli.git
+ source = git+https://github.com/lvandeve/lodepng.git
+ source = git+https://github.com/mm2/Little-CMS.git
+ source = git+https://github.com/google/googletest.git
+ source = git+https://github.com/webmproject/sjpeg.git
+ source = git+https://skia.googlesource.com/skcms.git
+ source = git+https://github.com/veluca93/IQA-optimization.git
+ source = git+https://github.com/Netflix/vmaf.git
+ source = git+https://github.com/thorfdbg/difftest_ng.git
+ source = git+https://github.com/google/highway.git
+ source = 010-libjxl-openexr-fix.patch
+ sha256sums = SKIP
+ sha256sums = SKIP
+ sha256sums = SKIP
+ sha256sums = SKIP
+ sha256sums = SKIP
+ sha256sums = SKIP
+ sha256sums = SKIP
+ sha256sums = SKIP
+ sha256sums = SKIP
+ sha256sums = SKIP
+ sha256sums = SKIP
+ sha256sums = 55e6c00fa8293d5cdcf205c88f21764bb89a2c8d2d252d059ec68091e3ee57ee
+
+pkgname = libjxl
+ depends = brotli
+ optdepends = gdk-pixbuf2: for gdk-pixbuf loader
+ optdepends = giflib: for CLI tools
+ optdepends = gimp: for gimp plugin
+ optdepends = libjpeg-turbo: for CLI tools
+ optdepends = libpng: for CLI tools
+ optdepends = openexr: for CLI tools
+ provides = libjpeg-xl
+ provides = libjxl.so
+ conflicts = libjpeg-xl
+ replaces = libjpeg-xl
+
+pkgname = libjxl-doc
+ pkgdesc = JPEG XL image format reference implementation (documentation)
+ arch = any
+ provides = libjeg-xl-doc
+ conflicts = libjpeg-xl-doc
+ replaces = libjpeg-xl-doc
diff --git a/010-libjxl-openexr-fix.patch b/010-libjxl-openexr-fix.patch
new file mode 100644
index 000000000000..a6d247958c1c
--- /dev/null
+++ b/010-libjxl-openexr-fix.patch
@@ -0,0 +1,37 @@
+--- a/lib/extras/codec_exr.cc
++++ b/lib/extras/codec_exr.cc
+@@ -32,6 +32,12 @@ namespace {
+ namespace OpenEXR = OPENEXR_IMF_NAMESPACE;
+ namespace Imath = IMATH_NAMESPACE;
+
++// OpenEXR::Int64 is deprecated in favor of using uint64_t directly, but using
++// uint64_t as recommended causes build failures with previous OpenEXR versions
++// on macOS, where the definition for OpenEXR::Int64 was actually not equivalent
++// to uint64_t. This alternative should work in all cases.
++using ExrInt64 = decltype(std::declval<OpenEXR::IStream>().tellg());
++
+ constexpr int kExrBitsPerSample = 16;
+ constexpr int kExrAlphaBits = 16;
+
+@@ -90,8 +96,8 @@ class InMemoryIStream : public OpenEXR::IStream {
+ return pos_ < bytes_.size();
+ }
+
+- OpenEXR::Int64 tellg() override { return pos_; }
+- void seekg(const OpenEXR::Int64 pos) override {
++ ExrInt64 tellg() override { return pos_; }
++ void seekg(const ExrInt64 pos) override {
+ JXL_ASSERT(pos + 1 <= bytes_.size());
+ pos_ = pos;
+ }
+@@ -115,8 +121,8 @@ class InMemoryOStream : public OpenEXR::OStream {
+ pos_ += n;
+ }
+
+- OpenEXR::Int64 tellp() override { return pos_; }
+- void seekp(const OpenEXR::Int64 pos) override {
++ ExrInt64 tellp() override { return pos_; }
++ void seekp(const ExrInt64 pos) override {
+ if (bytes_.size() + 1 < pos) {
+ bytes_.resize(pos - 1);
+ }
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..5afadbb32dc7
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,107 @@
+# Maintainer: Daniel Bermond <dbermond@archlinux.org>
+
+pkgbase=libjxl
+pkgname=('libjxl' 'libjxl-doc')
+pkgver=0.3.7
+pkgrel=1
+pkgdesc='JPEG XL image format reference implementation'
+arch=('x86_64')
+url='https://jpeg.org/jpegxl/'
+#license=('BSD') # license will change on the next release
+license=('Apache')
+makedepends=('git' 'cmake' 'clang' 'brotli' 'gdk-pixbuf2' 'giflib' 'gimp'
+ 'libjpeg-turbo' 'libpng' 'openexr' 'zlib' 'libgl' 'freeglut'
+ 'gtest' 'gmock' 'python' 'asciidoc' 'doxygen' 'graphviz')
+source=("git+https://github.com/libjxl/libjxl.git#tag=v${pkgver}"
+ 'git+https://github.com/google/brotli.git'
+ 'git+https://github.com/lvandeve/lodepng.git'
+ 'git+https://github.com/mm2/Little-CMS.git'
+ 'git+https://github.com/google/googletest.git'
+ 'git+https://github.com/webmproject/sjpeg.git'
+ 'git+https://skia.googlesource.com/skcms.git'
+ 'git+https://github.com/veluca93/IQA-optimization.git'
+ 'git+https://github.com/Netflix/vmaf.git'
+ 'git+https://github.com/thorfdbg/difftest_ng.git'
+ 'git+https://github.com/google/highway.git'
+ '010-libjxl-openexr-fix.patch')
+sha256sums=('SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ '55e6c00fa8293d5cdcf205c88f21764bb89a2c8d2d252d059ec68091e3ee57ee')
+
+prepare() {
+ git -C libjxl submodule init
+ git -C libjxl config --local submodule.third_party/brotli.url "${srcdir}/brotli"
+ git -C libjxl config --local submodule.third_party/lodepng.url "${srcdir}/lodepng"
+ git -C libjxl config --local submodule.third_party/lcms.url "${srcdir}/Little-CMS"
+ git -C libjxl config --local submodule.third_party/googletest.url "${srcdir}/googletest"
+ git -C libjxl config --local submodule.third_party/sjpeg.url "${srcdir}/sjpeg"
+ git -C libjxl config --local submodule.third_party/skcms.url "${srcdir}/skcms"
+ git -C libjxl config --local submodule.third_party/IQA-optimization.url "${srcdir}/IQA-optimization"
+ git -C libjxl config --local submodule.third_party/vmaf.url "${srcdir}/vmaf"
+ git -C libjxl config --local submodule.third_party/difftest_ng.url "${srcdir}/difftest_ng"
+ git -C libjxl config --local submodule.third_party/highway.url "${srcdir}/highway"
+ git -C libjxl submodule update
+
+ # https://gitlab.com/wg1/jpeg-xl/-/issues/162
+ # https://gitlab.com/wg1/jpeg-xl/-/issues/238
+ # https://github.com/libjxl/libjxl/commit/9a8f5195e4d1c45112fd65f184ebe115f4163ba2#diff-5302e2eb1ae00d323a83e482b68cbcc96bd3d717f3414663a5fffd29428808b3
+ patch -d libjxl -Np1 -i "${srcdir}/010-libjxl-openexr-fix.patch"
+}
+
+build() {
+ export CC='clang'
+ export CXX='clang++'
+ cmake -B build -S libjxl \
+ -DCMAKE_BUILD_TYPE:STRING='None' \
+ -DCMAKE_INSTALL_PREFIX:PATH='/usr' \
+ -DJPEGXL_ENABLE_BENCHMARK:BOOL='false' \
+ -DJPEGXL_ENABLE_FUZZERS:BOOL='false' \
+ -DJPEGXL_ENABLE_PLUGINS:BOOL='true' \
+ -DJPEGXL_ENABLE_VIEWERS:BOOL='false' \
+ -DJPEGXL_ENABLE_GIMP_SAVING:BOOL='ON' \
+ -DJPEGXL_FORCE_SYSTEM_BROTLI:BOOL='true' \
+ -DJPEGXL_FORCE_SYSTEM_GTEST:BOOL='true' \
+ -DJPEGXL_FORCE_SYSTEM_HWY:BOOL='false' \
+ -DJPEGXL_WARNINGS_AS_ERRORS:BOOL='false' \
+ -Wno-dev
+ make -C build all doc
+}
+
+check() {
+ make -C build test
+}
+
+package_libjxl() {
+ depends=('brotli')
+ optdepends=('gdk-pixbuf2: for gdk-pixbuf loader'
+ 'giflib: for CLI tools'
+ 'gimp: for gimp plugin'
+ 'libjpeg-turbo: for CLI tools'
+ 'libpng: for CLI tools'
+ 'openexr: for CLI tools')
+ provides=('libjpeg-xl' 'libjxl.so')
+ conflicts=('libjpeg-xl')
+ replaces=('libjpeg-xl')
+
+ make -C build DESTDIR="$pkgdir" install
+}
+
+package_libjxl-doc() {
+ pkgdesc+=' (documentation)'
+ arch=('any')
+ provides=('libjeg-xl-doc')
+ conflicts=('libjpeg-xl-doc')
+ replaces=('libjpeg-xl-doc')
+
+ install -d -m755 "${pkgdir}/usr/share/doc"
+ cp -dr --no-preserve='ownership' build/html "${pkgdir}/usr/share/doc/libjxl"
+}