Opened 7 years ago

Closed 7 years ago

Last modified 7 years ago

#52850 closed defect (worksforme)

Quassel with qt5 cannot find sqlite

Reported by: afenioux (Arnaud Fenioux) Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: ports Version: 2.3.4
Keywords: Cc: mkae (Marko Käning), RJVB (René Bertin)
Port: quassel

Description (last modified by raimue (Rainer Müller))

When installing Quassel from a fresh install, Quassel can't find the sqlite backend even if depedencies look fine :

$/Applications/MacPorts/Quassel.app/Contents/MacOS/Quassel

("QSQLITE")
Storage Schema is missing!
Core is currently not configured! Please connect with a Quassel Client for basic setup.
Storage Schema is missing!
unhandled Error in QSqlQuery!
                  last Query:
 CREATE TABLE quasseluser (
       userid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
       username TEXT UNIQUE NOT NULL,
       password TEXT NOT NULL,
       hashversion INTEGER NOT NULL DEFAULT 0
)
              executed Query:

                bound Values:
                Error Number: 11
               Error Message: database disk image is malformed Unable to execute statement
              Driver Message: Unable to execute statement
                  DB Message: database disk image is malformed
Unable to setup Logging Backend!
FATAL: Selected storage backend is not available: "SQLite"
$ port installed | grep sql
  qt5-sqlite-plugin @5.6.1_1 (active) 

  sqlite3 @3.15.1_0 (active)

Change History (16)

comment:1 Changed 7 years ago by raimue (Rainer Müller)

Description: modified (diff)
Keywords: quassel sqlite qt5 removed

Remember to use WikiFormatting. The keywords are documented in TicketsKeywordGuidelines.

comment:2 Changed 7 years ago by mkae (Marko Käning)

Cc: mkae added

comment:3 Changed 7 years ago by RJVB (René Bertin)

So, this port was updated to use Qt5 without apparently noticing the fact that the preferred build still uses Qt4? Hmmm.

I don't use this client myself, but I updated my old port of it to see what gives. Maybe it's because I use my own Qt5 build which builds the sqlite plugin as an integral part of the main port, maybe it's because port:qt5-kde installs things to more standards-compliant locations and maybe it's because I have a proper port:qca-qt5 , but I'm seeing no problems. Could also be because I used the client before in its Qt4 incarnation.

https://github.com/RJVB/macstrop/tree/master/irc/quassel
https://github.com/RJVB/macstrop/tree/master/devel/qca
https://github.com/RJVB/macstrop/tree/master/aqua/qt5-kde

Note however that the actual error message seems to suggest that sqlite itself is working but cannot find a properly configured database. The final error message about the sqlite backend could just be a generic message that doesn't distinguish between the reasons why the backend isn't available.

comment:4 Changed 7 years ago by RJVB (René Bertin)

Cc: RJVB added

comment:5 Changed 7 years ago by mkae (Marko Käning)

@afenioux, can you check whether those 3 ports from @RJVB's git repo* solve the issue on your end?

*) Are you aware of the possibility to create a MacPorts tree on your machine which can locally host new/updated port files?

comment:6 Changed 7 years ago by mkae (Marko Käning)

I just tested installing port quassel on a MacPorts installation with René's added macstrop ports tree and was able to build and run Quassel.app successfully based on port qt5-kde-devel although I believe that qt5-kde should give the same result.

Output on console was this

$ /Applications/MacPorts/Qt5/Quassel.app/Contents/MacOS/Quassel 
2016-11-12 13:17:30 Warning: SslServer: Certificate file /Users/marko/Library/Application Support/Quassel/quasselCert.pem does not exist 
2016-11-12 13:17:30 Warning: SslServer: Unable to set certificate file
           Quassel Core will still work, but cannot provide SSL for client connections.
           Please see http://quassel-irc.org/faq/cert to learn how to enable SSL support. 
2016-11-12 13:17:30 Warning: SslServer: Certificate file /Users/marko/Library/Application Support/Quassel/quasselCert.pem does not exist 
2016-11-12 13:17:30 Info: SQLite Storage Backend is ready. Quassel Schema Version: 18 
2016-11-12 13:17:30 Info: Restoring previous core state... 

which is a normal warning since I didn't do anything about the SSL certificate yet.

comment:7 Changed 7 years ago by RJVB (René Bertin)

Yes, qt5-kde ought to give the exact same result here.

comment:8 Changed 7 years ago by neverpanic (Clemens Lang)

I was aware that Quassel defaults to Qt4, but chose to go for Qt5 anyway because Quassel+Qt4 doesn't look very good on HiDPI displays. I am pretty sure that's a configuration Quassel upstream would support.

I cannot reproduce the problem. I built a copy of Quassel as it currently is in the ports tree and started it:

$ /Applications/MacPorts/Quassel.app/Contents/MacOS/Quassel
2016-11-12 16:06:47 Warning: SslServer: Certificate file /Users/clemens/Library/Application Support/Quassel/quasselCert.pem does not exist
2016-11-12 16:06:47 Warning: SslServer: Unable to set certificate file
           Quassel Core will still work, but cannot provide SSL for client connections.
           Please see http://quassel-irc.org/faq/cert to learn how to enable SSL support.
2016-11-12 16:06:47 Warning: SslServer: Certificate file /Users/clemens/Library/Application Support/Quassel/quasselCert.pem does not exist


*** IMPORTANT: Config and data file locations have changed. Attempting to auto-migrate your core settings...
*   Your core settings have been migrated to "/Users/clemens/Library/Preferences/org.quassel-irc.quasselcore.plist"
*** Migration completed.


("QSQLITE")
Core is currently not configured! Please connect with a Quassel Client for basic setup.
Storage Schema is missing!
2016-11-12 16:06:47 Info: SQLite Storage Backend is ready. Quassel Schema Version: 18

I think the problem is a malformed SQLite database on disk, and there's little we can do about that.

This ticket should probably be closed as 'worksforme' or 'invalid.

comment:9 in reply to:  8 ; Changed 7 years ago by RJVB (René Bertin)

Replying to neverpanic:

I don't know what the upstream reasons are to prefer Qt4 for now. Chances are they're more important than "it doesn't look very good", which probably goes for all Qt4 applications (and possibly only on Mac) on a CrazyRes display, and which can presumably be compensated by using qtconfig to change the default font. Or even use a different theme which is more appropriate for higher resolutions (I *think* Fusion exists for Qt4, if so it could well have adapted drawing routines.

I think the problem is a malformed SQLite database on disk, and there's little we can do about that.

That was also my impression, but I gather that we both ran the Qt4 version before trying the Qt5 version. Maybe the OP never did, and the Qt5 version was the first that ever run on his account. Did you check after moving all settings aside, or from a virgin test account?

comment:10 Changed 7 years ago by afenioux (Arnaud Fenioux)

Thanks for the macstrop trics, I didn't know that. I was running Quassel with Qt4 before but when I tired to update all my setup (and removed all previous ports), I moved to Qt5 (where I had the problem).

But I guess I made you loose some time because as neverpanic mentionned it was a problem with a malformed SQLite database on disk (~/Library/Application Support/Quassel/quassel-storage.sqlite)

I confirm everything is now fine with Quassel and Qt5.

Thanks a lot for your help.

comment:11 in reply to:  9 ; Changed 7 years ago by neverpanic (Clemens Lang)

Replying to RJVB:

I don't know what the upstream reasons are to prefer Qt4 for now. Chances are they're more important than "it doesn't look very good", which probably goes for all Qt4 applications (and possibly only on Mac) on a CrazyRes display, and which can presumably be compensated by using qtconfig to change the default font. Or even use a different theme which is more appropriate for higher resolutions (I *think* Fusion exists for Qt4, if so it could well have adapted drawing routines.

Quassel upstream sits a level down from me at work and is very keen on Qt5, so the reason is probably lack of time to change the default. I'll make sure to ask, though.

That was also my impression, but I gather that we both ran the Qt4 version before trying the Qt5 version.

No, I didn't run the Qt4 version before.

Maybe the OP never did, and the Qt5 version was the first that ever run on his account. Did you check after moving all settings aside, or from a virgin test account?

I had no Quassel settings on this machine, I only use it on a different machine, so I probably didn't even have a database yet.

comment:12 in reply to:  10 Changed 7 years ago by mkae (Marko Käning)

Replying to afenioux:

But I guess I made you loose some time because as neverpanic mentionned it was a problem with a malformed SQLite database on disk (~/Library/Application Support/Quassel/quassel-storage.sqlite)

I confirm everything is now fine with Quassel and Qt5.

Out of curiosity - and for those who also run into this trap - how did you solve the SQLite issue?

comment:13 in reply to:  11 ; Changed 7 years ago by RJVB (René Bertin)

Replying to neverpanic:

Quassel upstream sits a level down from me at work and is very keen on Qt5, so the reason is probably lack of time to change the default. I'll make sure to ask, though.

There must be more than that I suppose. Just changing the default doesn't take more time than changing the initial value of 1 CMake option in the toplevel CMakeLists.txt ...

No, I didn't run the Qt4 version before.

So you don't actually know how the Qt4 version looks on a hi-res display, and what can be done to improve it? Not that I think we should hang on to Qt4 versions any longer than necessary when there are no valid reasons. All other things being equal Qt5 is evidently the way moving forward, coming with many advantages other than better hi-res support.

comment:14 in reply to:  13 ; Changed 7 years ago by neverpanic (Clemens Lang)

Resolution: worksforme
Status: newclosed

Replying to RJVB:

There must be more than that I suppose. Just changing the default doesn't take more time than changing the initial value of 1 CMake option in the toplevel CMakeLists.txt ...

And even that simple change requires testing and possibly new binaries to be built, which isn't trivial. This is useless speculation, because I can quickly confirm this on Monday and until then, it's not worth discussing any further.

Note, though, that the OS X binaries provided by upstream are linked against Qt 5.

No, I didn't run the Qt4 version before.

So you don't actually know how the Qt4 version looks on a hi-res display, and what can be done to improve it?

Quassel was using Qt 4 before the last update and did apply a patch to improve the output on HiDPI displays, but some things still looked odd. I did see this when updating Quassel to 0.12.4 which is why I switched it to Qt 5. I did also run the Qt 4 version to see how bad it looks back then, I just happened to do this on a different machine.

The machine that I tested for this issue has never run Quassel before, though.

I'm closing this ticket now, but I'd welcome if afenioux documented what they did to resolve the problem.

comment:15 in reply to:  14 Changed 7 years ago by afenioux (Arnaud Fenioux)

I'm closing this ticket now, but I'd welcome if afenioux documented what they did to resolve the problem.

Well, basically I deleted ~/Library/Application Support/Quassel/quassel-storage.sqlite

comment:16 Changed 7 years ago by mkae (Marko Käning)

Thanks, Arnaud, for the clarification!

Note: See TracTickets for help on using tickets.