linebender / resvg-test-suite

resvg test suite
https://linebender.org/resvg-test-suite/svg-support-table.html
MIT License
24 stars 14 forks source link

vdiff supports Qt6? #34

Closed JoKalliauer closed 3 years ago

JoKalliauer commented 3 years ago

According to https://github.com/RazrFalcon/resvg-test-suite/blob/master/tools/vdiff/README.md#dependencies vdiff depends on Qt5, but is Qt6 also supported?

sudo dnf install /usr/bin/qmake
sudo dnf install inkscape qt6-qtbase-devel qt6-qtsvg-devel wxsvg wxsvg-devel
cd /home/jkalliau/Documents/GitHub/resvg-test-suite/tools/vdiff
cd ../chrome-svgrender
npm i puppeteer
cd ../qtsvgrender
qmake
make #returns `make: Nothing to be done for 'first'.`
cd ../wxsvgrender
qmake
make #returns `fatal error: wx/wx.h: No such file or directory`
./build #returns `fatal error: wx/wx.h: No such file or directory`
cd ../vdiff
qmake
make # that is the problematic step

the last make-command returns:

g++ -c -pipe -O2 -Wall -Wextra -D_REENTRANT -fPIC -DSRCDIR=\"/home/jkalliau/Documents/GitHub/resvg-test-suite/tools/vdiff/\" -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CONCURRENT_LIB -DQT_SQL_LIB -DQT_CORE_LIB -I. -I/usr/include/qt6 -I/usr/include/qt6/QtWidgets -I/usr/include/qt6/QtGui -I/usr/include/qt6/QtConcurrent -I/usr/include/qt6/QtSql -I/usr/include/qt6/QtCore -I. -I. -I/../lib64/qt6/mkspecs/linux-g++ -o tests.o src/tests.cpp
src/tests.cpp:12:37: error: ‘QStringRef’ does not name a type; did you mean ‘QStringView’?
   12 | static TestState stateFormStr(const QStringRef &str)
      |                                     ^~~~~~~~~~
      |                                     QStringView
src/tests.cpp: In function ‘TestState stateFormStr(const int&)’:
src/tests.cpp:15:25: error: request for member ‘toInt’ in ‘str’, which is of non-class type ‘const int’
   15 |     const int idx = str.toInt(&ok);
      |                         ^~~~~
src/tests.cpp:18:57: error: request for member ‘toString’ in ‘str’, which is of non-class type ‘const int’
   18 |         throw QString("Invalid state ID: '%1'").arg(str.toString());
      |                                                         ^~~~~~~~
src/tests.cpp: In function ‘QString parseTitle(const QString&)’:
src/tests.cpp:43:34: error: conversion from ‘const char [6]’ to ‘QChar’ is ambiguous
   43 |             if (reader.name() == "title") {
      |                                  ^~~~~~~
In file included from /usr/include/qt6/QtCore/qstring.h:50,
                 from /usr/include/qt6/QtCore/qobject.h:47,
                 from /usr/include/qt6/QtCore/qiodevice.h:46,
                 from /usr/include/qt6/QtCore/qfiledevice.h:43,
                 from /usr/include/qt6/QtCore/qfile.h:44,
                 from /usr/include/qt6/QtCore/QFile:1,
                 from src/tests.cpp:1:
/usr/include/qt6/QtCore/qchar.h:125:45: note: candidate: ‘constexpr QChar::QChar(char)’ (near match)
  125 |     QT_ASCII_CAST_WARN constexpr Q_IMPLICIT QChar(char c) noexcept : ucs(uchar(c)) { }
      |                                             ^~~~~
/usr/include/qt6/QtCore/qchar.h:125:45: note:   conversion of argument 1 would be ill-formed:
src/tests.cpp:43:34: error: invalid conversion from ‘const char*’ to ‘char’ [-fpermissive]
   43 |             if (reader.name() == "title") {
      |                                  ^~~~~~~
      |                                  |
      |                                  const char*
In file included from /usr/include/qt6/QtCore/qstring.h:50,
                 from /usr/include/qt6/QtCore/qobject.h:47,
                 from /usr/include/qt6/QtCore/qiodevice.h:46,
                 from /usr/include/qt6/QtCore/qfiledevice.h:43,
                 from /usr/include/qt6/QtCore/qfile.h:44,
                 from /usr/include/qt6/QtCore/QFile:1,
                 from src/tests.cpp:1:
/usr/include/qt6/QtCore/qchar.h:118:26: note: candidate: ‘constexpr QChar::QChar(char16_t)’ (near match)
  118 |     constexpr Q_IMPLICIT QChar(char16_t ch) noexcept : ucs(ch) {}
      |                          ^~~~~
/usr/include/qt6/QtCore/qchar.h:118:26: note:   conversion of argument 1 would be ill-formed:
src/tests.cpp:43:34: error: invalid conversion from ‘const char*’ to ‘char16_t’ [-fpermissive]
   43 |             if (reader.name() == "title") {
      |                                  ^~~~~~~
      |                                  |
      |                                  const char*
In file included from /usr/include/qt6/QtCore/qstring.h:50,
                 from /usr/include/qt6/QtCore/qobject.h:47,
                 from /usr/include/qt6/QtCore/qiodevice.h:46,
                 from /usr/include/qt6/QtCore/qfiledevice.h:43,
                 from /usr/include/qt6/QtCore/qfile.h:44,
                 from /usr/include/qt6/QtCore/QFile:1,
                 from src/tests.cpp:1:
/usr/include/qt6/QtCore/qchar.h:113:26: note: candidate: ‘constexpr QChar::QChar(short int)’ (near match)
  113 |     constexpr Q_IMPLICIT QChar(short rc) noexcept : ucs(char16_t(rc)) {}
      |                          ^~~~~
/usr/include/qt6/QtCore/qchar.h:113:26: note:   conversion of argument 1 would be ill-formed:
src/tests.cpp:43:34: error: invalid conversion from ‘const char*’ to ‘short int’ [-fpermissive]
   43 |             if (reader.name() == "title") {
      |                                  ^~~~~~~
      |                                  |
      |                                  const char*
In file included from /usr/include/qt6/QtCore/qstring.h:50,
                 from /usr/include/qt6/QtCore/qobject.h:47,
                 from /usr/include/qt6/QtCore/qiodevice.h:46,
                 from /usr/include/qt6/QtCore/qfiledevice.h:43,
                 from /usr/include/qt6/QtCore/qfile.h:44,
                 from /usr/include/qt6/QtCore/QFile:1,
                 from src/tests.cpp:1:
/usr/include/qt6/QtCore/qchar.h:111:26: note: candidate: ‘constexpr QChar::QChar(ushort)’ (near match)
  111 |     constexpr Q_IMPLICIT QChar(ushort rc) noexcept : ucs(rc) {}
      |                          ^~~~~
/usr/include/qt6/QtCore/qchar.h:111:26: note:   conversion of argument 1 would be ill-formed:
src/tests.cpp:43:34: error: invalid conversion from ‘const char*’ to ‘ushort’ {aka ‘short unsigned int’} [-fpermissive]
   43 |             if (reader.name() == "title") {
      |                                  ^~~~~~~
      |                                  |
      |                                  const char*
In file included from /usr/include/qt6/QtCore/qchar.h:665,
                 from /usr/include/qt6/QtCore/qstring.h:50,
                 from /usr/include/qt6/QtCore/qobject.h:47,
                 from /usr/include/qt6/QtCore/qiodevice.h:46,
                 from /usr/include/qt6/QtCore/qfiledevice.h:43,
                 from /usr/include/qt6/QtCore/qfile.h:44,
                 from /usr/include/qt6/QtCore/QFile:1,
                 from src/tests.cpp:1:
/usr/include/qt6/QtCore/qstringview.h:412:51: note:   initializing argument 2 of ‘bool operator==(QStringView, QChar)’
  412 |     friend bool operator==(QStringView lhs, QChar rhs) noexcept { return lhs == QStringView(&rhs, 1); }
      |                                             ~~~~~~^~~
src/tests.cpp: In static member function ‘static Tests Tests::load(TestSuite, const QString&, const QString&)’:
src/tests.cpp:70:16: error: ‘QStringRef’ does not name a type; did you mean ‘QStringView’?
   70 |     for (const QStringRef &line : text.splitRef('\n')) {
      |                ^~~~~~~~~~
      |                QStringView
src/tests.cpp:110:6: error: expected ‘;’ before ‘return’
  110 |     }
      |      ^
      |      ;
  111 | 
  112 |     return tests;
      |     ~~~~~~
src/tests.cpp:112:5: error: expected primary-expression before ‘return’
  112 |     return tests;
      |     ^~~~~~
src/tests.cpp:110:6: error: expected ‘;’ before ‘return’
  110 |     }
      |      ^
      |      ;
  111 | 
  112 |     return tests;
      |     ~~~~~~
src/tests.cpp:112:5: error: expected primary-expression before ‘return’
  112 |     return tests;
      |     ^~~~~~
src/tests.cpp:110:6: error: expected ‘)’ before ‘return’
  110 |     }
      |      ^
      |      )
  111 | 
  112 |     return tests;
      |     ~~~~~~
src/tests.cpp:70:9: note: to match this ‘(’
   70 |     for (const QStringRef &line : text.splitRef('\n')) {
      |         ^
src/tests.cpp:69:9: warning: unused variable ‘row’ [-Wunused-variable]
   69 |     int row = 1;
      |         ^~~
src/tests.cpp:54:35: warning: unused parameter ‘testSuite’ [-Wunused-parameter]
   54 | Tests Tests::load(const TestSuite testSuite, const QString &path, const QString &testsPath)
      |                   ~~~~~~~~~~~~~~~~^~~~~~~~~
src/tests.cpp:54:82: warning: unused parameter ‘testsPath’ [-Wunused-parameter]
   54 | Tests Tests::load(const TestSuite testSuite, const QString &path, const QString &testsPath)
      |                                                                   ~~~~~~~~~~~~~~~^~~~~~~~~
src/tests.cpp: In static member function ‘static void Tests::resync(const Settings&)’:
src/tests.cpp:199:16: error: ‘QStringRef’ does not name a type; did you mean ‘QStringView’?
  199 |     for (const QStringRef &line : text.splitRef('\n')) {
      |                ^~~~~~~~~~
      |                QStringView
src/tests.cpp:215:6: error: expected ‘;’ before ‘newTests’
  215 |     }
      |      ^
      |      ;
  216 | 
  217 |     newTests.save(settings.resultsPath());
      |     ~~~~~~~~
src/tests.cpp:217:18: error: could not convert ‘newTests.Tests::save(Settings::resultsPath() const())’ from ‘void’ to ‘bool’
  217 |     newTests.save(settings.resultsPath());
      |     ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
      |                  |
      |                  void
src/tests.cpp:218:1: error: expected primary-expression before ‘}’ token
  218 | }
      | ^
src/tests.cpp:217:43: error: expected ‘)’ before ‘}’ token
  217 |     newTests.save(settings.resultsPath());
      |                                           ^
      |                                           )
  218 | }
      | ~                                          
src/tests.cpp:199:9: note: to match this ‘(’
  199 |     for (const QStringRef &line : text.splitRef('\n')) {
      |         ^
src/tests.cpp:218:1: error: expected primary-expression before ‘}’ token
  218 | }
      | ^
src/tests.cpp: In static member function ‘static Tests Tests::load(TestSuite, const QString&, const QString&)’:
src/tests.cpp:113:1: warning: control reaches end of non-void function [-Wreturn-type]
  113 | }
      | ^
src/tests.cpp: At global scope:
src/tests.cpp:32:16: warning: ‘QString parseTitle(const QString&)’ defined but not used [-Wunused-function]
   32 | static QString parseTitle(const QString &path)
      |                ^~~~~~~~~~
src/tests.cpp:12:18: warning: ‘TestState stateFormStr(const int&)’ defined but not used [-Wunused-function]
   12 | static TestState stateFormStr(const QStringRef &str)
      |                  ^~~~~~~~~~~~
make: *** [Makefile:529: tests.o] Error 1

Device:

Operating System: Fedora 34 (Workstation Edition) 
          Kernel: Linux 5.12.13-300.fc34.x86_64
$ qmake --version
QMake version 3.1
Using Qt version 6.1.1 in /usr/lib64
$ make --version
GNU Make 4.3
Built for x86_64-redhat-linux-gnu
Copyright (C) 1988-2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
RazrFalcon commented 3 years ago

No, it has to be updated.

JoKalliauer commented 3 years ago

Thanks! (Confirm it is fixed)