Post Reply 
 
Thread Rating:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Arch Linux PKGBUILD for PPSSPP with Qt UI
11-23-2013, 03:12 AM (This post was last modified: 11-25-2013 02:52 AM by m45t3r.)
Post: #1
Arch Linux PKGBUILD for PPSSPP with Qt UI
I created a PKGBUILD for Arch Linux users that compiles PPSSPP from source with Qt UI. So this should offer a better user experience for those who use Arch than using the SDL UI (that was the only option offered on AUR before), even if the Qt UI is still somewhat simple (at least it is simpler than the current Windows UI).

The compile path is unoptimal btw: it firstly clone everything (including the submodules), then compiles the SDL version and after all that it compiles the Qt version, and only installs the Qt UI, discarding the SDL version. Edit: fixed, now it only compiles the Qt version, thanks xsacha Big Grin .

The clone part is especially bad, since it always clone all submodules (I don't know why, I thought it would only do a update). And every asset is build in on binary, but I think this is the way it works anyway.

But yeah, it works, as you can see below:
[Image: qovDiwSl.jpg]

It includes a custom made .desktop file (that I can upstream if there is interest) and a icon so it shows on the menu.

Here are the links:
Qt4: https://aur.archlinux.org/packages/ppsspp-qt4-git/
Qt5: https://aur.archlinux.org/packages/ppsspp-qt-git/

If someone knows a better way to do something, you can post on this topic or make a pull request on GitHub: https://github.com/m45t3r/pkgbuilds
Find all posts by this user
Quote this message in a reply
11-23-2013, 05:25 AM (This post was last modified: 11-23-2013 05:34 AM by xsacha.)
Post: #2
RE: Arch Linux PKGBUILD for PPSSPP with Qt UI
If you just want to build the Qt version and NOT the SDL one, remove these lines:

Code:
mkdir build
    pushd build
    cmake ..
    make
    popd


SDL is optional (just adds gamepad support). So you could remove that from:
Code:
depends=('zlib' 'sdl' 'qt4')
Also, zlib is part of qt4 and is not a requirement. It's also part of PPSSPP as a backup.
Code:
depends=('qt4')
Find all posts by this user
Quote this message in a reply
11-23-2013, 12:00 PM (This post was last modified: 11-23-2013 12:00 PM by m45t3r.)
Post: #3
RE: Arch Linux PKGBUILD for PPSSPP with Qt UI
(11-23-2013 05:25 AM)xsacha Wrote:  If you just want to build the Qt version and NOT the SDL one, remove these lines:

Code:
mkdir build
    pushd build
    cmake ..
    make
    popd


SDL is optional (just adds gamepad support). So you could remove that from:
Code:
depends=('zlib' 'sdl' 'qt4')
Also, zlib is part of qt4 and is not a requirement. It's also part of PPSSPP as a backup.
Code:
depends=('qt4')

Without compiling SDL first I got this error:

Code:
ar cqs libNative.a .obj/Native/glew.o .obj/Native/backtrace.o .obj/Native/rg_etc1.o .obj/Native/jpgd.o .obj/Native/jpge.o .obj/Native/stb_image.o .obj/Native/stb_vorbis.o .obj/Native/snappy-c.o .obj/Native/snappy.o .obj/Native/mixer.o .obj/Native/wav_read.o .obj/Native/buffer.o .obj/Native/colorutil.o .obj/Native/display.o .obj/Native/error_context.o .obj/Native/fastlist_test.o .obj/Native/stringutil.o .obj/Native/timeutil.o .obj/Native/compression.o .obj/Native/chunk_file.o .obj/Native/dialog.o .obj/Native/easy_file.o .obj/Native/fd_util.o .obj/Native/file_util.o .obj/Native/ini_file.o .obj/Native/path.o .obj/Native/zip_read.o .obj/Native/gl_debug_log.o .obj/Native/gl_lost_manager.o .obj/Native/texture.o .obj/Native/texture_atlas.o .obj/Native/texture_gen.o .obj/Native/draw_buffer.o .obj/Native/draw_text.o .obj/Native/fbo.o .obj/Native/gl_state.o .obj/Native/glsl_program.o .obj/Native/gpu_features.o .obj/Native/vertex_format.o .obj/Native/gl3stub.o .obj/Native/i18n.o .obj/Native/png_load.o .obj/Native/zim_load.o .obj/Native/zim_save.o .obj/Native/gesture_detector.o .obj/Native/input_state.o .obj/Native/curves.o .obj/Native/expression_parser.o .obj/Native/math_util.o .obj/Native/aabb.o .obj/Native/matrix4x4.o .obj/Native/plane.o .obj/Native/quat.o .obj/Native/vec3.o .obj/Native/http_client.o .obj/Native/resolve.o .obj/Native/url.o .obj/Native/profiler.o .obj/Native/prioritizedworkqueue.o .obj/Native/threadpool.o .obj/Native/threadutil.o .obj/Native/screen.o .obj/Native/ui.o .obj/Native/ui_context.o .obj/Native/ui_screen.o .obj/Native/view.o .obj/Native/viewgroup.o .obj/Native/virtual_input.o .obj/Native/bits.o .obj/Native/varint.o .obj/Native/hash.o .obj/Native/perlin.o .obj/Native/utf8.o
make[1]: Leaving directory '/home/m45t3r/Source/pkgbuilds/ppsspp-qt-git/src/ppsspp/build'
make -f Makefile.Core
make[1]: Entering directory '/home/m45t3r/Source/pkgbuilds/ppsspp-qt-git/src/ppsspp/build'
/home/m45t3r/Source/pkgbuilds/ppsspp-qt-git/src/ppsspp/Qt/../Qt/git-version-gen.sh
make[1]: *** No rule to make target '../git-version.cpp', needed by '.obj/Core/git-version.o'.  Stop.
make[1]: ** Waiting other process to finish.
make[1]: Leaving directory '/home/m45t3r/Source/pkgbuilds/ppsspp-qt-git/src/ppsspp/build'
Makefile:74: recipe for target 'sub-Core-pro-make_default-ordered' failed
make: *** [sub-Core-pro-make_default-ordered] Error 2

I will remove zlib. I thought about removing sdl and putting on optdepends, but I think if there is no sdl on system there will be not support on gamepads even if you install sdl afterwards (at least until you recompile), so I will maintain the sdl on depends.
Find all posts by this user
Quote this message in a reply
11-23-2013, 03:10 PM (This post was last modified: 11-23-2013 04:01 PM by xsacha.)
Post: #4
RE: Arch Linux PKGBUILD for PPSSPP with Qt UI
(11-23-2013 12:00 PM)m45t3r Wrote:  make[1]: *** No rule to make target '../git-version.cpp', needed by '.obj/Core/git-version.o'. Stop.
Oh, git script isn't working?
/home/m45t3r/Source/pkgbuilds/ppsspp-qt-git/src/ppsspp/Qt/../Qt/git-version-gen.sh

I think maybe it isn't updated to recognise out-of-tree builds yet. I can fix.

Edit: Nope, it's working here!

(11-23-2013 12:00 PM)m45t3r Wrote:  I think if there is no sdl on system there will be not support on gamepads even if you install sdl afterwards (at least until you recompile), so I will maintain the sdl on depends.
Yes, that is right. They'd need to recompile to add gamepad support.
Find all posts by this user
Quote this message in a reply
11-23-2013, 04:13 PM
Post: #5
RE: Arch Linux PKGBUILD for PPSSPP with Qt UI
(11-23-2013 03:10 PM)xsacha Wrote:  I think maybe it isn't updated to recognise out-of-tree builds yet. I can fix.

Edit: Nope, it's working here!

Well, the script after modifications is this: http://pastebin.com/SGQqzqXU
Find all posts by this user
Quote this message in a reply
11-23-2013, 04:44 PM (This post was last modified: 11-23-2013 04:53 PM by xsacha.)
Post: #6
RE: Arch Linux PKGBUILD for PPSSPP with Qt UI
Are you still having issues with git-version.cpp not being created?

What happens if the user has qt5 but not qt4?
Find all posts by this user
Quote this message in a reply
11-23-2013, 06:22 PM
Post: #7
RE: Arch Linux PKGBUILD for PPSSPP with Qt UI
(11-23-2013 04:44 PM)xsacha Wrote:  Are you still having issues with git-version.cpp not being created?

What happens if the user has qt5 but not qt4?

Did a clean compile, still the same problem.

I will try qt5 later, but which qt packages I need?

Code:
extra/qt5-base 5.1.1-5 (qt qt5)
    A cross-platform application and UI framework
extra/qt5-declarative 5.1.1-5 (qt qt5)
    A cross-platform application and UI framework (QtQml, QtQuick)
extra/qt5-doc 5.1.1-5
    A cross-platform application and UI framework (Documentation)
extra/qt5-graphicaleffects 5.1.1-5 (qt qt5)
    A cross-platform application and UI framework (QtGraphicalEffects)
extra/qt5-imageformats 5.1.1-5 (qt qt5)
    A cross-platform application and UI framework (Images plugins)
extra/qt5-jsbackend 5.1.1-5 (qt qt5)
    A cross-platform application and UI framework (QtV8)
extra/qt5-multimedia 5.1.1-5 (qt qt5)
    A cross-platform application and UI framework (QtMultimedia)
extra/qt5-quick1 5.1.1-5 (qt qt5)
    A cross-platform application and UI framework (QtDeclarative)
extra/qt5-quickcontrols 5.1.1-5 (qt qt5)
    A cross-platform application and UI framework (QtQuick)
extra/qt5-script 5.1.1-5 (qt qt5)
    A cross-platform application and UI framework (QtScript)
extra/qt5-sensors 5.1.1-5 (qt qt5)
    A cross-platform application and UI framework (QtSensors)
extra/qt5-serialport 5.1.1-5 (qt qt5)
    A cross-platform application and UI framework (QtSerialPort)
extra/qt5-svg 5.1.1-5 (qt qt5)
    A cross-platform application and UI framework (QtSvg)
extra/qt5-tools 5.1.1-5 (qt qt5)
    A cross-platform application and UI framework (Development Tools, QtHelp)
extra/qt5-translations 5.1.1-5 (qt qt5)
    A cross-platform application and UI framework (Translations)
extra/qt5-webkit 5.1.1-5 (qt qt5)
    A cross-platform application and UI framework (QtWebKit)
extra/qt5-x11extras 5.1.1-5 (qt qt5)
    A cross-platform application and UI framework (QtX11Extras)
extra/qt5-xmlpatterns 5.1.1-5 (qt qt5)
    A cross-platform application and UI framework (QtXmlPatterns)
Find all posts by this user
Quote this message in a reply
11-23-2013, 06:33 PM (This post was last modified: 11-23-2013 06:38 PM by Bigpet.)
Post: #8
RE: Arch Linux PKGBUILD for PPSSPP with Qt UI
qt5-base (contains qt5-gui and gt5-widgets)
qt5-multimedia
qt5-tools (for lrelease)

That's about all you'd need.
Find all posts by this user
Quote this message in a reply
11-23-2013, 07:43 PM
Post: #9
RE: Arch Linux PKGBUILD for PPSSPP with Qt UI
(11-23-2013 06:33 PM)Bigpet Wrote:  qt5-base (contains qt5-gui and gt5-widgets)
qt5-multimedia
qt5-tools (for lrelease)

That's about all you'd need.

Same problem:
Code:
make[1]: Leaving directory '/home/m45t3r/Source/pkgbuilds/ppsspp-qt-git/src/ppsspp/build'
( test -e Makefile.Core || /usr/lib/qt/bin/qmake /home/m45t3r/Source/pkgbuilds/ppsspp-qt-git/src/ppsspp/Qt/Core.pro -o Makefile.Core ) && make -f Makefile.Core
WARNING: Failure to find: ../git-version.cpp
make[1]: Entering directory '/home/m45t3r/Source/pkgbuilds/ppsspp-qt-git/src/ppsspp/build'
/home/m45t3r/Source/pkgbuilds/ppsspp-qt-git/src/ppsspp/Qt/../Qt/git-version-gen.sh
make[1]: *** No rule to make target '../git-version.cpp', needed by '.obj/Core/git-version.o'.  Stop.
make[1]: ** Waiting other process to finish.
make[1]: Leaving directory '/home/m45t3r/Source/pkgbuilds/ppsspp-qt-git/src/ppsspp/build'
Makefile:68: recipe for target 'sub-Core-pro-make_first-ordered' failed
Find all posts by this user
Quote this message in a reply
11-23-2013, 11:27 PM
Post: #10
RE: Arch Linux PKGBUILD for PPSSPP with Qt UI
Yes, qt5 won't affect the git-version issue you get.

I was just asking what happens if the user has qt5 but not qt4. Your dependencies list that 'qt4' is required.
Find all posts by this user
Quote this message in a reply
11-23-2013, 11:44 PM
Post: #11
RE: Arch Linux PKGBUILD for PPSSPP with Qt UI
(11-23-2013 11:27 PM)xsacha Wrote:  Yes, qt5 won't affect the git-version issue you get.

I was just asking what happens if the user has qt5 but not qt4. Your dependencies list that 'qt4' is required.

Ah, no problem since I use:
qmake-qt4

Instead of:
qmake

On Arch Linux qmake is for qt5 programs, and qmake-qt4 is for qt4 programs.
Find all posts by this user
Quote this message in a reply
11-24-2013, 01:57 AM (This post was last modified: 11-24-2013 02:38 AM by xsacha.)
Post: #12
RE: Arch Linux PKGBUILD for PPSSPP with Qt UI
I mean what if the user wants to compile with Qt5 instead. Currently it is hardcoded to use Qt4.
Actually Qt5 provides better audio.
PPSSPP works with both.

Also, I think I fixed git-version issue for you. Try latest code.
Find all posts by this user
Quote this message in a reply
11-24-2013, 03:23 AM
Post: #13
RE: Arch Linux PKGBUILD for PPSSPP with Qt UI
(11-24-2013 01:57 AM)xsacha Wrote:  I mean what if the user wants to compile with Qt5 instead. Currently it is hardcoded to use Qt4.
Actually Qt5 provides better audio.
PPSSPP works with both.

Also, I think I fixed git-version issue for you. Try latest code.

There is no easy way to make a PKGBUILD that compiles code for both qt4 and qt5. The easiest way would be to maintain separate packages (like ppsspp-qt4-git and ppsspp-qt-git), I prefer to compile for qt4 since I already have some qt4 packages on my PC (PPSSPP would be the only qt5 package btw), but if you says the qt5 version is better I can modify the package to use qt5. I don't know what would be better Big Grin .

I will try tomorrow the new code, thanks for the (possible) fix.
Find all posts by this user
Quote this message in a reply
11-24-2013, 05:43 AM (This post was last modified: 11-24-2013 05:44 AM by xsacha.)
Post: #14
RE: Arch Linux PKGBUILD for PPSSPP with Qt UI
OK, that's odd you can't use qt4|qt5 for dependency. I think this would be required for many apps?

So you'd probably want a -qt4 and -qt5 script then.

Actually, qt5 one is only better if your qt4 doesn't have QtMultimedia.
Find all posts by this user
Quote this message in a reply
11-24-2013, 12:14 PM (This post was last modified: 11-24-2013 12:41 PM by m45t3r.)
Post: #15
RE: Arch Linux PKGBUILD for PPSSPP with Qt UI
(11-24-2013 05:43 AM)xsacha Wrote:  OK, that's odd you can't use qt4|qt5 for dependency. I think this would be required for many apps?

So you'd probably want a -qt4 and -qt5 script then.

Actually, qt5 one is only better if your qt4 doesn't have QtMultimedia.

For now, not really. I don't know any program that are compiled with qt5 for now on Arch Linux repository (excluding AUR programs that are a different matter btw). When KDE 4.11(2?) comes maybe this will be a problem but for now there isn't.

I will maintain the two versions them. It's not that difficult anyway.

Well:

Code:
make[1]: *** No rule to make target '../git-version.cpp', needed by '.obj/Core/git-version.o'.  Stop.
make[1]: ** Waiting process to finish.
make[1]: Leaving directory '/home/m45t3r/Source/pkgbuilds/ppsspp-qt-git/src/ppsspp/build'
Makefile:74: recipe for target 'sub-Core-pro-make_default-ordered' failed
make: *** [sub-Core-pro-make_default-ordered] Error 2

I made a clean build with v0.9.5-607-gf650b23, still the same error.
Find all posts by this user
Quote this message in a reply
Post Reply 


Forum Jump: