Announcing Pegasus Frontend
-
@fluffypillow after many hours of trial and error I managed to get Qt-everywhere to compile, but now I am having problems compiling pegasus-frontend itself, I get this error:
/tmp/ccKnint8.ltrans30.ltrans.o:<artificial>:function global constructors keyed to 65535_0_main.o.637746: error: undefined reference to 'qt_static_plugin_QSvgPlugin()'
/tmp/ccKnint8.ltrans30.ltrans.o:<artificial>:function global constructors keyed to 65535_0_main.o.637746: error: undefined reference to 'qt_static_plugin_QICNSPlugin()'
/tmp/ccKnint8.ltrans30.ltrans.o:<artificial>:function global constructors keyed to 65535_0_main.o.637746: error: undefined reference to 'qt_static_plugin_QICOPlugin()'
/tmp/ccKnint8.ltrans30.ltrans.o:<artificial>:function global constructors keyed to 65535_0_main.o.637746: error: undefined reference to 'qt_static_plugin_QJpegPlugin()'
/tmp/ccKnint8.ltrans30.ltrans.o:<artificial>:function global constructors keyed to 65535_0_main.o.637746: error: undefined reference to 'qt_static_plugin_QTgaPlugin()'
/tmp/ccKnint8.ltrans30.ltrans.o:<artificial>:function global constructors keyed to 65535_0_main.o.637746: error: undefined reference to 'qt_static_plugin_QTiffPlugin()'
/tmp/ccKnint8.ltrans30.ltrans.o:<artificial>:function global constructors keyed to 65535_0_main.o.637746: error: undefined reference to 'qt_static_plugin_QWbmpPlugin()'
/tmp/ccKnint8.ltrans30.ltrans.o:<artificial>:function global constructors keyed to 65535_0_main.o.637746: error: undefined reference to 'qt_static_plugin_QWebpPlugin()'
/tmp/ccKnint8.ltrans30.ltrans.o:<artificial>:function global constructors keyed to 65535_0_main.o.637746: error: undefined reference to 'qt_static_plugin_QGenericEnginePlugin()'
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:72: pegasus-fe] Error 1
make[1]: *** [Makefile:44: sub-app-make_first] Error 2
make: *** [Makefile:43: sub-src-make_first] Error 2do you have any idea what might be the problem?
Thank you!
-
It seems you're trying to do a static build, but some plugins are either not available, or not linked to the final binary. You should see eg.
-L<QT PATH>/plugins/imageformats -lsvg
in the linking command.Static build may require some additional tweaking, because the compiler also has to scan the QML files to figure out which additional plugins will it have to link to the binary. I haven't set up an automatic build test for that yet, but I plan to (there are a lot of build parameters that can be tweaked!), but I plan to.
Also if you're on desktop linux, you won't have to build your own Qt, you can use the official release (unless of course you explicitly want to do a static build or want a Qt with some additional tweaks).
-
@fluffypillow said in Announcing Pegasus Frontend:
It seems you're trying to do a static build, but some plugins are either not available, or not linked to the final binary. You should see eg.
-L<QT PATH>/plugins/imageformats -lsvg
in the linking command.Static build may require some additional tweaking, because the compiler also has to scan the QML files to figure out which additional plugins will it have to link to the binary. I haven't set up an automatic build test for that yet, but I plan to (there are a lot of build parameters that can be tweaked!), but I plan to.
Also if you're on desktop linux, you won't have to build your own Qt, you can use the official release (unless of course you explicitly want to do a static build or want a Qt with some additional tweaks).
Thanks! I recompiled QT without the static flag and now it seems it compiled, but I do have a small problem.
mkdir: cannot create directory '/opt/pegasus-frontend': Permission denied
Since this is not retropie the /opt folder does not exists, is there an option to change this while compiling it?
I can see the Makefile has several lines hardcoded:
mkdir -p $(INSTALL_ROOT)/opt/pegasus-frontend
not sure if that can be changed.
Edit: nevermind, I should have read the building Wiki!
Thanks!
-
I'm really excited for Pegasus to become available!
In my humble view, as nothing more than a simple retrogamer, it looks so much harder, better, faster, stronger than EmulationStation.. So much that I'm currently pausing further setting up of my arcade build's software part, since I don't want to immerse myself in all this setting up, if it'll be replaced soon by something that's better.
So, just to be sure, is it not everyone's opinion that Pegasus will totally race from and replace EmulationStation in the near future?
And exactly what is it, in layman's terms, that does that Pegasus is both better looking and faster than ES? Does it utilize the RaspberryPi's hardware better, or?
Sorry if these questions are silly...
-
@AndersHP In my eyes, it is a frontend that was built from scratch with all kinds of features added from the beginning, rather than taking 2 year old code and trying to shove changes in.
Artists depiction of Emulationstation with all of these features:
-
@AndersHP That is what I'm hoping. I'm anxiously waiting for a working build I can easily install.
-
Me when I see that people like Pegasus:
-
@fluffypillow Is Pegasus going to have the same views as ES, simple, detailed, video, etc. ?
Sidenote, if you need any graphics, just let me know.
-
Let me know too.
-
Thanks, actually, I was thinking about collecting the different asset types in separate GitHub repos: there could be a repo for colored system logos, one for white-only logos, or another for platform controller icons (like you can see on lakka.tv's front page; I wonder where are those from?). So kind of like themes, but without the ES-specific XML files. I think assets like system logos are usually not customized as often as eg. backgrounds, so with this method you could create separate asset packs, and when you start working on a new theme, you can just pull the one that feels right for your project. I could also imagine a theme and separate icon/logo set mixing feature in the program itself too (in the far future).
As for the views, there is no such settings yet. Since the simple and detailed views look completely different, instead of forcing one theme to support all kinds of user configurations, and keeping the theme updated when a new type of view is added (like video mode), I think creating separate themes would be more maintainable.
-
@fluffypillow said in Announcing Pegasus Frontend:
I wonder where are those from?
https://github.com/libretro/retroarch-assets/tree/master/xmb/systematic/png
How will theme creation work? Would it be done with the Qt Creator?
-
@lilbud oh nice, thanks. There's a drag-and-drop kind of layout designer in Qt Creator, but it's so slow on my PC I can't use it. It can help learning the basic layout and item types at the beginning though. I've found the regular text editor in Qt Creator comfortable enough (auto complete, jump to definition, debug tools, ...), but as with XML, you can use any other editor if you want.
-
@fluffypillow sorry to keep bothering you about this, I think I am very close to getting this to work on my Amlogic S905 using Libreelec but I ran into a problem I am not sure why its happening:
qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or directory
do you have any udea why its trying to use qt4 instead of qt5 to compile ?
I am sure it has to be something on my system but I cannot figure it out :(
-
@shantigilbert There's probably a different
qmake
in your$PATH
(eg. under/usr/bin/
), or you have an old package calledqtchooser
installed, which tends to set up some weird symlinks (but x64 on an ARM? Wow).It's not really a problem though, you can have more than one Qt setup. Just call your own
qmake
directly (/path/to/my/qmake [params]
). Make sure the libs are installed to the location you've set during the Qt build. -
@fluffypillow I am cross compiling so x64 is not running on ARM, but I compile and installed QT5, I don't think I ever installed QT4 at all, so not sure why its trying to call it in that path.
-
@shantigilbert for some reason
qtchooser
is a dependency of some Qt4-based programs on Debian, it might've been installed with your system. But as long as you either you directly call your ownqmake
or make it so it's the firstqmake
in your$PATH
, compilation should work fine. -
@fluffypillow Well I finally got it to work someway or the other, now unfortunately when I try to run the FE itself I get this error:
This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".Available platform plugins are: linuxfb, minimal, offscreen, vnc.
Reinstalling the application may fix this problem.
Aborted (core dumped)QT was compiled without xcb (as per your instructions) is there a way to tell pegasus not tu use xcb?
-
@shantigilbert hm it sounds like the embedded graphics plugin (
eglfs
) is not available; either it has some missing library dependencies, or it was not build. Here's what you can do:- Check that
[QTDIR]/plugins/platforms/libqeglfs.so
does exist - If it's there, it was built correctly, but it might have some separate dependencies (I think if it found touchscreen libs during the build, it tries to access them on the device too). Post the output of
ldd /path/to/libqeglfs.so
, which will tell what it needs exactly. - If it's not there, it was not build for some reason -- make sure that sou see EGL detected on the output of the Qt
configure
script (there should be a backup of that inconfig.summary
). You should seeEGL: yes
,OpenGL ES 2.0: yes
,EGLFS: yes
and andEGLFS Mali: yes
on the output.
- Check that
-
I did a recompile making sure eglfs was there, and now this is the error:
This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc.
Reinstalling the application may fix this problem.
Aborted (core dumped)when I do ldd libqeglfs.so this is the result:
/usr/lib/libarmmem.so (0xf74a2000) libQt5EglFSDeviceIntegration.so.5 => /usr/local/qt5/lib/libQt5EglFSDeviceIntegration.so.5 (0xf746b000) libQt5Gui.so.5 => /usr/local/qt5/lib/libQt5Gui.so.5 (0xf7097000) libQt5Core.so.5 => /usr/local/qt5/lib/libQt5Core.so.5 (0xf6bfc000) libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xf6ab7000) libc.so.6 => /usr/lib/libc.so.6 (0xf6982000) libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xf68fb000) libEGL.so => /usr/lib/libEGL.so (0xf67e2000) libpthread.so.0 => /usr/lib/libpthread.so.0 (0xf67ba000) libdl.so.2 => /usr/lib/libdl.so.2 (0xf67a5000) libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0xf6779000) libz.so.1 => /usr/lib/libz.so.1 (0xf6766000) libm.so.6 => /usr/lib/libm.so.6 (0xf66e8000) librt.so.1 => /usr/lib/librt.so.1 (0xf66d1000) /usr/lib/ld-linux-armhf.so.3 (0xab243000) libbz2.so.1.0 => /usr/lib/libbz2.so.1.0 (0xf66b2000)
I made a pastebin of config.sumary
Thanks for the help!
-
Progress of week 11 (I think?):
- The gamepad config screen is now functional: https://webmshare.com/QPnKL It's not 100% complete, but it works, so I think I'll check some other features now. The gamepad image is a bit meh, I'll redraw it later.
- Qt 5.9 is now out, it has performance and memory consumption improvements. I'm experimenting with its build system, trying to find the best build parameters I'd use for a release.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.