Date: Wednesday, February 22, 2023 @ 13:18:35
Author: arojas
Revision: 1403609
archrelease: copy trunk to community-x86_64
Added:
krita-plugin-gmic/repos/community-x86_64/PKGBUILD
(from rev 1403608, krita-plugin-gmic/trunk/PKGBUILD)
krita-plugin-gmic/repos/community-x86_64/fix-build.patch
(from rev 1403608, krita-plugin-gmic/trunk/fix-build.patch)
krita-plugin-gmic/repos/community-x86_64/keys/
Deleted:
krita-plugin-gmic/repos/community-x86_64/PKGBUILD
krita-plugin-gmic/repos/community-x86_64/keys/
-----------------+
PKGBUILD | 64 ++++++++++++++++++++-----------------
fix-build.patch | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 128 insertions(+), 29 deletions(-)
Deleted: PKGBUILD
===================================================================
--- PKGBUILD 2023-02-22 13:18:23 UTC (rev 1403608)
+++ PKGBUILD 2023-02-22 13:18:35 UTC (rev 1403609)
@@ -1,29 +0,0 @@
-# Maintainer: Antonio Rojas <[email protected]>
-
-pkgname=krita-plugin-gmic
-pkgver=3.1.6.1
-pkgrel=1
-pkgdesc='GMic plugin for Krita'
-arch=(x86_64)
-url='https://github.com/amyspark/gmic'
-license=(custom:CeCILL)
-depends=(krita gmic)
-makedepends=(extra-cmake-modules qt5-tools)
-source=(https://github.com/amyspark/gmic/releases/download/v$pkgver/gmic-$pkgver-patched.tar.xz{,.asc})
-sha256sums=('f2b24a24bd99626557d6a99891931a46d7ca87f0a72e966319ba81a1a6905e1c'
- 'SKIP')
-validpgpkeys=(4894424D2412FEE5176732A3FC00108CFD9DBF1E) #
https://github.com/amyspark.gpg
-options=(debug)
-
-build() {
- cmake -B build -S gmic-$pkgver-patched/gmic-qt \
- -DCMAKE_INSTALL_PREFIX=/usr \
- -DGMIC_QT_HOST=krita-plugin
- cmake --build build
-}
-
-package() {
- DESTDIR="$pkgdir" cmake --install build
- rm "$pkgdir"/usr/share/gmic/gmic_cluts.gmz # Provided by gmic
- install -Dm644 gmic-$pkgver-patched/COPYING -t
"$pkgdir"/usr/share/licenses/$pkgname
-}
Copied: krita-plugin-gmic/repos/community-x86_64/PKGBUILD (from rev 1403608,
krita-plugin-gmic/trunk/PKGBUILD)
===================================================================
--- PKGBUILD (rev 0)
+++ PKGBUILD 2023-02-22 13:18:35 UTC (rev 1403609)
@@ -0,0 +1,35 @@
+# Maintainer: Antonio Rojas <[email protected]>
+
+pkgname=krita-plugin-gmic
+pkgver=3.2.1.1
+pkgrel=1
+pkgdesc='GMic plugin for Krita'
+arch=(x86_64)
+url='https://github.com/amyspark/gmic'
+license=(custom:CeCILL)
+depends=(krita gmic)
+makedepends=(extra-cmake-modules qt5-tools)
+source=(https://github.com/amyspark/gmic/releases/download/v$pkgver/gmic-$pkgver-patched.tar.xz{,.asc}
+ fix-build.patch)
+sha256sums=('1af73f90052f4af6b07e1d4f90e23b3a55576f81959562630fabe395d07ee3b9'
+ 'SKIP'
+ 'b5709ae7c49fb08e354a3c1f19d91d0233b8397b41593a4f5e6b4dd26a47bd85')
+validpgpkeys=(4894424D2412FEE5176732A3FC00108CFD9DBF1E) #
https://github.com/amyspark.gpg
+
+prepare() {
+ chmod 755 gmic-$pkgver-patched/gmic-qt/translations/lrelease.sh
+ patch -d gmic-$pkgver-patched -p1 < fix-build.patch
+}
+
+build() {
+ cmake -B build -S gmic-$pkgver-patched/gmic-qt \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DGMIC_QT_HOST=krita-plugin
+ cmake --build build
+}
+
+package() {
+ DESTDIR="$pkgdir" cmake --install build
+ rm "$pkgdir"/usr/share/gmic/gmic_cluts.gmz # Provided by gmic
+ install -Dm644 gmic-$pkgver-patched/COPYING -t
"$pkgdir"/usr/share/licenses/$pkgname
+}
Copied: krita-plugin-gmic/repos/community-x86_64/fix-build.patch (from rev
1403608, krita-plugin-gmic/trunk/fix-build.patch)
===================================================================
--- fix-build.patch (rev 0)
+++ fix-build.patch 2023-02-22 13:18:35 UTC (rev 1403609)
@@ -0,0 +1,93 @@
+From 8ec85444535bd50aea2d19050f7d4e4ed7c8380b Mon Sep 17 00:00:00 2001
+From: "L. E. Segovia" <[email protected]>
+Date: Mon, 20 Feb 2023 18:09:05 -0300
+Subject: [PATCH] CMake: actually fix ENABLE_SYSTEM_GMIC
+
+PR c-koi/gmic-qt#172 is correct in that it is no longer possible
+to build without -Dgmic_core, due to G'MIC-Qt relying in
+now-private implementation details of G'MIC; namely, the extensions
+made in gmic.cpp to CImg.
+
+However, the solution chosen has significant shortcomings:
+
+1. It blindly assumes that the consumed library has been built by a
+ GCC-compatible compiler. This is easily inferred from the lack of
+ symbol exports in {CImg,gmic}.{h,cpp}.
+2. It makes no provision for the exported library type; G'MIC can be
+ built statically or dynamically.
+3. In Windows, when built with MSVC, the kind of symbol export that
+ gmic_core implies is only available with a static libgmic.
+
+To fix this, this commit augments G'MIC-Qt's `ENABLE_DYNAMIC_LINKING`
+handling with target detection code for the above described cases.
+In the case where a compatible library is not found, a fallback is
+specified that will build libgmic as a separate target, then make
+G'MIC-Qt link against it in order to mimic the requirements. If a
+suitable system library is found, we augment it with the gmic.cpp
+plugin to make the symbols visible at compile time.
+---
+ gmic-qt/CMakeLists.txt | 49 ++++++++++++++++++++++++++++++++++++++----
+ 1 file changed, 45 insertions(+), 4 deletions(-)
+
+diff --git a/gmic-qt/CMakeLists.txt b/gmic-qt/CMakeLists.txt
+index ed9aa07..7c1c0d1 100644
+--- a/gmic-qt/CMakeLists.txt
++++ b/gmic-qt/CMakeLists.txt
+@@ -562,12 +562,53 @@ set (gmic_qt_FORMS
+
+ if(ENABLE_DYNAMIC_LINKING)
+ set(CMAKE_SKIP_RPATH TRUE)
+- set(gmic_qt_LIBRARIES
+- ${gmic_qt_LIBRARIES}
+- "gmic"
++ # G'MIC-Qt needs visibility into the private symbols defined
++ # by the gmic.cpp plugin. However, this is only possible
++ # if the library is static OR if it's dynamic and built by
++ # a compiler that supports .so-style exports.
++ if (TARGET libgmicstatic OR MSVC OR NOT ENABLE_SYSTEM_GMIC)
++ set(gmic_qt_LIBRARIES
++ ${gmic_qt_LIBRARIES}
++ libgmicstatic
++ )
++ elseif(TARGET libgmic)
++ set(gmic_qt_LIBRARIES
++ ${gmic_qt_LIBRARIES}
++ libgmic
++ )
++ elseif(GMIC_LIB_PATH)
++ set(gmic_qt_LIBRARIES
++ ${gmic_qt_LIBRARIES}
++ "gmic"
+ )
++ else()
++ message(FATAL_ERROR "No G'MIC library is available for linking. Please
build libgmic as a static library.")
++ endif()
+ if (NOT ENABLE_SYSTEM_GMIC)
+- link_directories(${GMIC_LIB_PATH})
++ if (GMIC_LIB_PATH)
++ link_directories(${GMIC_LIB_PATH})
++ # Inject the G'MIC CImg plugin.
++ include_directories(../src)
++ else()
++ # Mimic an external G'MIC library build for catching link ABI errors.
++ add_library(libgmicstatic STATIC ../src/gmic.cpp)
++ target_include_directories(libgmicstatic PUBLIC ../src)
++ # We need internal access into the gmic-core API.
++ target_compile_definitions(libgmicstatic PUBLIC gmic_core)
++ set_target_properties(libgmicstatic
++ PROPERTIES
++ AUTOMOC OFF
++ )
++ target_link_libraries(libgmicstatic PUBLIC
++ ${PNG_LIBRARIES}
++ ${FFTW3_LIBRARIES}
++ ${ZLIB_LIBRARIES}
++ ${CURL_LIBRARIES}
++ ${EXTRA_LIBRARIES})
++ endif()
++ else()
++ # Inject the G'MIC CImg plugin.
++ include_directories(../src)
+ endif()
+ else(ENABLE_DYNAMIC_LINKING)
+ set(gmic_qt_SRCS