Code Monkey home page Code Monkey logo

Comments (15)

dtschump avatar dtschump commented on August 16, 2024 1

Here, swap() refers to CImgList<>::swap(), which are methods of the CImg Library (defined in file CImg.h). These methods exist in the library since a long time
(see: http://cimg.eu/reference/structcimg__library_1_1CImgList.html#a6c12806e432683b06fbc8919daa0a3d7).

Could it be be that CImg has not been updated from your side?

from gmic-qt.

dtschump avatar dtschump commented on August 16, 2024 1

@peterhoeg I am completely unable to do this, I have never been interested in cmake (and I honestly don't have the time to spend on it). Maybe @c-koi could help, he knows cmake surely a lot more than me.
Or anyone else interested, of course ;)

from gmic-qt.

dtschump avatar dtschump commented on August 16, 2024

Yes the API has changed, but the code of the G'MIC-Qt plug-in as well.
Did you also update the code of the plug-in ?

from gmic-qt.

picnoir avatar picnoir commented on August 16, 2024

Yes, we bumped to the v.3.2.0 tag.

Looking at the source code, the culprit seems to be this swap() call here: https://github.com/c-koi/gmic-qt/blob/master/src/FilterSyncRunner.cpp#L77

There's no such function anymore in the gmic 3.2.0 codebase: https://github.com/GreycLab/gmic/blob/master/src/gmic.h#L137

That being said, I can't find the swap operation either on the 3.1.9 codebase https://github.com/GreycLab/gmic/blob/v.218/src/gmic.h#L105 . I assume I'm missing something here 🤔

from gmic-qt.

tobiasBora avatar tobiasBora commented on August 16, 2024

Nix packs the latest stable version 3.2.0 (freshly updated last week from 3.1.6).

EDIT: Sorry, I misread the log without realizing hydra was still building the old gmic-qt package, I removed my comment regarding hydra's error message.

from gmic-qt.

picnoir avatar picnoir commented on August 16, 2024

^ please ignore the above message. This is the pre-bump build log. I'll paste the new one once the recently merged NixOS/nixpkgs#211600 (containing the gmic-qt update) hits our CI.

[edit]: np Tobias :)


Ack for the CImgList reference. I'll try digging more into that soon. The issue probably comes from our end.

Here's the full build log: https://pastebin.aquilenet.fr/?0aa186b0b11956fc#DwxVLPoTs4Ae2SyFqnxJ9BLc6eLGDNAavCy4QcqdJpiH

We're building the package with these dependencies in scope:

bash-5.2-p15
pkg-config-wrapper-0.29.2
zlib-1.2.13
fftw-double-3.3.10
ninja-1.11.1
cmake-3.24.3
cimg-3.2.0
openexr-2.5.8
libjpeg-turbo-2.1.4
libpng-apng-1.6.39
libtiff-4.5.0
graphicsmagick-1.3.39
gmic-3.2.0
qtbase-5.15.8
qttools-5.15.8
curl-7.87.0
opencv-3.4.18

from gmic-qt.

dtschump avatar dtschump commented on August 16, 2024

Ah I see you are using cmake.
I'm not sure this is working anymore. I use qmake to build the plug-in.
I'll try to see if I get the same errors.

from gmic-qt.

dtschump avatar dtschump commented on August 16, 2024

OK, this doesn't work for me, for another reason:

Building for target host application: gimp
CMake Error at CMakeLists.txt:145 (find_package):
  Could not find a package configuration file provided by "Gmic" with any of
  the following names:

    GmicConfig.cmake
    gmic-config.cmake

  Add the installation prefix of "Gmic" to CMAKE_PREFIX_PATH or set
  "Gmic_DIR" to a directory containing one of the above files.  If "Gmic"
  provides a separate development package or SDK, be sure it has been
  installed.


-- Configuring incomplete, errors occurred!

I have no clue how to make it work, I must say :)

from gmic-qt.

picnoir avatar picnoir commented on August 16, 2024

Ack. No worries :)

I'll migrate this to qmake tonight. Thanks for the help!

from gmic-qt.

peterhoeg avatar peterhoeg commented on August 16, 2024

Isn't qmake deprecated in qt6?

from gmic-qt.

jtojnar avatar jtojnar commented on August 16, 2024

Yes, that’s one of the reasons I switched the Nixpkgs build to CMake in the first place. In addition to qmake having even worse developer experience than CMake.

from gmic-qt.

peterhoeg avatar peterhoeg commented on August 16, 2024

So we need to appeal to @dtschump to do the qmake -> cmake move then.

from gmic-qt.

jtojnar avatar jtojnar commented on August 16, 2024

The issue is that GMic will now substitute CImg definitions with its own broken stubs when gmic_core preprocessor variable is not defined.

That is the case when building gmic-qt with -DENABLE_SYSTEM_GMIC=on since d7cb84a.

Unfortunately, it is hard to tell why that decision was made on gmic side due to horrible engineering practices. git blame just points to https://github.com/GreycLab/gmic/blame/c3b2009a44bbf5afa993e4674624564c801bbbec/src/gmic.h#L81.

from gmic-qt.

dtschump avatar dtschump commented on August 16, 2024

Unfortunately, it is hard to tell why that decision was made on gmic side due to horrible engineering practices.

Honestly, this is a very awkward way to approach the discussion.
This decision was made for certain reasons, which you may find wrong (but I doubt you have all the cards in your hands to properly analyze the situation as a whole). In any case, it is a decision that has been made and it will probably not be reversed.
Your opinion on this issue is therefors irrelevant. I'd prefer we try to move forward rather than questioning what has already been done, and which works for other contexts than the compilation of the plug-in.

I, for one, will not participate in this kind of discussion if it goes in this direction.

from gmic-qt.

jtojnar avatar jtojnar commented on August 16, 2024

Sorry, I could have probably phrased that better. I have only mentioned the practice of destroying git repository history because it is harmful to trying to debug issues like this. I was hoping that by bringing out this problem we could not repeat it in the future.


I tried digging deeper starting with v.3.1.0 tag but it looks like the #ifndef gmic_core was already there in 3.1.0. Since 3.1.5 compiled successfully for us, the issue is probably something different.

from gmic-qt.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.