Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 305263 - ebuild for media-sound/projectm-pulseaudio
Summary: ebuild for media-sound/projectm-pulseaudio
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Default Assignee for New Packages
URL: http://projectm.sourceforge.net
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-02-15 14:48 UTC by Florian Klink
Modified: 2013-01-21 20:30 UTC (History)
5 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
projectm-pulseaudio-2.0.1.ebuild (projectm-pulseaudio-2.0.1.ebuild,824 bytes, text/plain)
2010-02-15 14:50 UTC, Florian Klink
Details
ebuild avahi dep fix (projectm-pulseaudio-2.0.1.ebuild.diff,550 bytes, patch)
2010-02-27 07:25 UTC, Carlos Augusto
Details | Diff
ebuild (projectm-pulseaudio-2.0.1.ebuild,641 bytes, text/plain)
2011-03-20 01:15 UTC, Florian Klink
Details
include_mkdir.patch (include_mkdir.patch,322 bytes, patch)
2011-03-20 01:16 UTC, Florian Klink
Details | Diff
ebuild applying the exclude_browserh.patch (projectm-pulseaudio-2.0.1.ebuild,686 bytes, text/plain)
2011-11-27 14:52 UTC, Lukas Schneiderbauer
Details
remove #include browser.h directive. (exclude_browserh.patch,353 bytes, patch)
2011-11-27 14:53 UTC, Lukas Schneiderbauer
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Florian Klink 2010-02-15 14:48:26 UTC
Created ebuild for projectm-pulseaudio, "A Qt based GUI for projectM that visualizes your Pulseaudio output."

Ebuild heavily based on ebuild for projectm-pulseaudio

There is some symbolic-link quirk in it because cmake wants a header file to be somewhere else, I don't know to fix it instead.
Comment 1 Florian Klink 2010-02-15 14:50:12 UTC
Created attachment 219797 [details]
projectm-pulseaudio-2.0.1.ebuild
Comment 2 Florian Klink 2010-02-15 20:22:07 UTC
oops i meant the ebuild is based on projectm-jack ;-)
Comment 3 Carlos Augusto 2010-02-27 07:25:58 UTC
Created attachment 221395 [details, diff]
ebuild avahi dep fix

projectm-pulseaudio needs pulse/browser.h which only installs if you compile pulseaudio with avahi flag. The diff fix the dependency
Comment 4 Anatoly Yakovenko 2010-10-17 15:11:14 UTC
i get a bunch of compilation errors starting with this one:

[ 91%] Building CXX object CMakeFiles/projectM-pulseaudio.dir/moc_QPulseAudioDeviceChooser.o
In file included from /var/tmp/portage/media-sound/projectm-pulseaudio-2.0.1/work/projectm-pulseaudio-2.0.1_build/moc_QPulseAudioDeviceChooser.cxx:10:
/var/tmp/portage/media-sound/projectm-pulseaudio-2.0.1/work/projectm-pulseaudio-2.0.1_build/../projectM-pulseaudio-2.0.1-Source/QPulseAudioDeviceChooser.hpp:24:41: error: ui_PulseDeviceChooserDialog.h: No such file or directory
Comment 5 Florian Klink 2011-03-20 01:15:45 UTC
Created attachment 266575 [details]
ebuild

Got rid of the ugly symlink hack by using CMAKE_IN_SOURCE_BUILD, this fixed the ui_PulseDeviceChooserDialog.h header file problem.

Then I had to also #include <sys/stat.h> for a mkdir() in qprojectM-pulseaudio.cpp, so patching this file was necessary.
Comment 6 Florian Klink 2011-03-20 01:16:35 UTC
Created attachment 266577 [details, diff]
include_mkdir.patch
Comment 7 Lukas Schneiderbauer 2011-11-27 14:52:32 UTC
Created attachment 293939 [details]
ebuild applying the exclude_browserh.patch

It seems newer pulseraudio versions don't have a browser.h file at all (with or without avahi-useflag).

The patch removes the #include browser.h directive. The source compiles for me and the visualizer seems to work.

Patch follows.
Comment 8 Lukas Schneiderbauer 2011-11-27 14:53:25 UTC
Created attachment 293941 [details, diff]
remove #include browser.h directive.
Comment 9 JMW 2012-12-21 20:04:30 UTC
The ebuild compiles and installs on my AMD64 system. However, when I run the resulting binary, I get this error:

 ~ $ projectM-pulseaudio 
dir:/usr/share/projectM/config.inp 
reading ~/.projectM/config.inp 
libEGL warning: GLX/DRI2 is not supported
[projectM] config file: /home/rogue/.projectM/config.inp
Segmentation fault

The install file in the source package is no help of course. Has anyone else gotten this to work on AMD64, or is there something wrong with my setup?
Comment 10 JMW 2012-12-24 00:36:31 UTC
Here is the output when I run projectM-pulseaudio inside strace:


stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0
mmap(NULL, 266240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd040588000
poll([{fd=6, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=6, revents=POLLOUT}])
writev(6, [{"\22\0\n\0\3\0@\2\24\1\0\0\4\0\0\0 \0038\2\4\0\0\0\17\1\0\0\27\1\0\0"..., 16384}, {NULL, 0}, {"", 0}], 3) = 16384
read(6, "\34\0\363\0\3\0@\2'\0\0\0g\36\224\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 128
read(6, 0xf080e4, 4096)                 = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=6, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=6, revents=POLLOUT}])
writev(6, [{"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 16384}, {NULL, 0}, {"", 0}], 3) = 16384
read(6, 0xf080e4, 4096)                 = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=6, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=6, revents=POLLOUT}])
writev(6, [{"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 16384}, {NULL, 0}, {"", 0}], 3) = 16384
read(6, 0xf080e4, 4096)                 = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=6, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=6, revents=POLLOUT}])
writev(6, [{"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 16384}, {NULL, 0}, {"", 0}], 3) = 16384
read(6, 0xf080e4, 4096)                 = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=6, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=6, revents=POLLOUT}])
writev(6, [{"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 16384}, {NULL, 0}, {"", 0}], 3) = 16384
read(6, 0xf080e4, 4096)                 = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=6, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=6, revents=POLLOUT}])
writev(6, [{"\240T\0\377\1\1\0\377\0\0\0\377\0\0\0=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 6212}, {NULL, 0}, {"", 0}], 3) = 6212
poll([{fd=6, events=POLLIN}], 1, -1)    = 1 ([{fd=6, revents=POLLIN}])
read(6, "\34\0\375\0\3\0@\2:\1\0\0h\36\224\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 100
read(6, 0xf080e4, 4096)                 = -1 EAGAIN (Resource temporarily unavailable)
munmap(0x7fd040588000, 266240)          = 0
poll([{fd=6, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=6, revents=POLLOUT}])
writev(6, [{"\22\0\17\0\3\0@\2#\0\0\0#\0\0\0 \0\0\0\t\0\0\0G\0\0\0\1\0\0\0"..., 196}, {NULL, 0}, {"", 0}], 3) = 196
poll([{fd=6, events=POLLIN}], 1, -1)    = 1 ([{fd=6, revents=POLLIN}])
read(6, "\34\0\377\0\3\0@\2#\0\0\0h\36\224\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 172
read(6, 0xf080e4, 4096)                 = -1 EAGAIN (Resource temporarily unavailable)
read(6, 0xf080e4, 4096)                 = -1 EAGAIN (Resource temporarily unavailable)
read(6, 0xf080e4, 4096)                 = -1 EAGAIN (Resource temporarily unavailable)
read(6, 0xf080e4, 4096)                 = -1 EAGAIN (Resource temporarily unavailable)
read(6, 0xf080e4, 4096)                 = -1 EAGAIN (Resource temporarily unavailable)
read(6, 0xf080e4, 4096)                 = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=6, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=6, revents=POLLOUT}])
writev(6, [{"\226\4\5\0\r\0@\2\f\0@\2$\1\0\0\0\0\0\0\2\0\4\0\f\0@\2\20\0\0\0"..., 100}, {NULL, 0}, {"", 0}], 3) = 100
poll([{fd=6, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=6, revents=POLLOUT}])
writev(6, [{"7\0\5\0\17\0@\2\f\0@\2\1\0\0\0\3\0\0\0007\0\6\0\20\0@\2\f\0@\2"..., 52}], 1) = 52
poll([{fd=6, events=POLLIN}], 1, -1)    = 1 ([{fd=6, revents=POLLIN}])
read(6, "\1\30\16\1\0\0\0\0]\1\0\0\0\0\0\0d\0\36\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096) = 32
read(6, 0xf080e4, 4096)                 = -1 EAGAIN (Resource temporarily unavailable)
read(6, 0xf080e4, 4096)                 = -1 EAGAIN (Resource temporarily unavailable)
lstat("/home/rogue/.config/projectM/qprojectM.conf", 0x7fff9902f1b0) = -1 ENOENT (No such file or directory)
open("/home/rogue/.config/projectM/qprojectM.conf", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/rogue/.config/projectM/qprojectM.conf", 0x7fff9902f220) = -1 ENOENT (No such file or directory)
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0
lstat("/home/rogue/.config/projectM.conf", 0x7fff9902f1b0) = -1 ENOENT (No such file or directory)
open("/home/rogue/.config/projectM.conf", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/rogue/.config/projectM.conf", 0x7fff9902f220) = -1 ENOENT (No such file or directory)
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0
lstat("/etc/qt4/projectM/qprojectM.conf", 0x7fff9902f1b0) = -1 ENOENT (No such file or directory)
open("/etc/qt4/projectM/qprojectM.conf", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/etc/qt4/projectM/qprojectM.conf", 0x7fff9902f220) = -1 ENOENT (No such file or directory)
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0
lstat("/etc/qt4/projectM.conf", 0x7fff9902f1b0) = -1 ENOENT (No such file or directory)
open("/etc/qt4/projectM.conf", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/etc/qt4/projectM.conf", 0x7fff9902f220) = -1 ENOENT (No such file or directory)
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0
poll([{fd=6, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=6, revents=POLLOUT}])
writev(6, [{"\16\0\2\0\f\0@\2", 8}], 1) = 8
poll([{fd=6, events=POLLIN}], 1, -1)    = 1 ([{fd=6, revents=POLLIN}])
read(6, "\1\30\17\1\0\0\0\0]\1\0\0\0\0\0\0d\0\36\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096) = 32
futex(0x7fd0408ce908, FUTEX_WAKE_PRIVATE, 2147483647) = 0
write(3, "\1\0\0\0\0\0\0\0", 8)         = 8
write(3, "\1\0\0\0\0\0\0\0", 8)         = 8
lstat("/home/rogue/.config/projectM/qprojectM.conf", 0x7fff9902f080) = -1 ENOENT (No such file or directory)
open("/home/rogue/.config/projectM/qprojectM.conf", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/rogue/.config/projectM/qprojectM.conf", 0x7fff9902f0f0) = -1 ENOENT (No such file or directory)
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0
lstat("/home/rogue/.config/projectM.conf", 0x7fff9902f080) = -1 ENOENT (No such file or directory)
open("/home/rogue/.config/projectM.conf", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/rogue/.config/projectM.conf", 0x7fff9902f0f0) = -1 ENOENT (No such file or directory)
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0
lstat("/etc/qt4/projectM/qprojectM.conf", 0x7fff9902f080) = -1 ENOENT (No such file or directory)
open("/etc/qt4/projectM/qprojectM.conf", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/etc/qt4/projectM/qprojectM.conf", 0x7fff9902f0f0) = -1 ENOENT (No such file or directory)
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0
lstat("/etc/qt4/projectM.conf", 0x7fff9902f080) = -1 ENOENT (No such file or directory)
open("/etc/qt4/projectM.conf", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/etc/qt4/projectM.conf", 0x7fff9902f0f0) = -1 ENOENT (No such file or directory)
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0
read(6, 0xf080e4, 4096)                 = -1 EAGAIN (Resource temporarily unavailable)
lstat("/home/rogue/.config/projectM/qprojectM.conf", 0x7fff9902f070) = -1 ENOENT (No such file or directory)
open("/home/rogue/.config/projectM/qprojectM.conf", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/rogue/.config/projectM/qprojectM.conf", 0x7fff9902f0e0) = -1 ENOENT (No such file or directory)
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0
lstat("/home/rogue/.config/projectM.conf", 0x7fff9902f070) = -1 ENOENT (No such file or directory)
open("/home/rogue/.config/projectM.conf", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/rogue/.config/projectM.conf", 0x7fff9902f0e0) = -1 ENOENT (No such file or directory)
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0
lstat("/etc/qt4/projectM/qprojectM.conf", 0x7fff9902f070) = -1 ENOENT (No such file or directory)
open("/etc/qt4/projectM/qprojectM.conf", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/etc/qt4/projectM/qprojectM.conf", 0x7fff9902f0e0) = -1 ENOENT (No such file or directory)
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0
lstat("/etc/qt4/projectM.conf", 0x7fff9902f070) = -1 ENOENT (No such file or directory)
open("/etc/qt4/projectM.conf", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/etc/qt4/projectM.conf", 0x7fff9902f0e0) = -1 ENOENT (No such file or directory)
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0
write(3, "\1\0\0\0\0\0\0\0", 8)         = 8
write(3, "\1\0\0\0\0\0\0\0", 8)         = 8
write(1, "[projectM] config file: /home/ro"..., 57[projectM] config file: /home/rogue/.projectM/config.inp
) = 57
open("/home/rogue/.projectM/config.inp", O_RDONLY) = 12
read(12, "# config.inp\n# Configuration Fil"..., 8191) = 798
read(12, "", 8191)                      = 0
close(12)                               = 0
open("/usr/share/projectM/shaders/projectM.cg", O_RDONLY) = 12
read(12, "#define  M_PI   3.14159265359\n#d"..., 8191) = 2925
read(12, "", 8191)                      = 0
close(12)                               = 0
open("/usr/share/projectM/shaders/blur.cg", O_RDONLY) = 12
read(12, "struct outtype {float4 color : C"..., 8191) = 4522
read(12, "", 8191)                      = 0
close(12)                               = 0
brk(0x1263000)                          = 0x1263000
brk(0x12a6000)                          = 0x12a6000
brk(0x12d0000)                          = 0x12d0000
--- {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x10} (Segmentation fault) ---
+++ killed by SIGSEGV +++
Segmentation fault


If anyone can figure out why this is happening I would appreciate it.
Comment 11 JMW 2012-12-24 09:14:36 UTC
Gdb backtrace:


Core was generated by `./projectM-pulseaudio'.
Program terminated with signal 11, Segmentation fault.
#0  0x00007ffe3c96e214 in ?? () from /usr/lib64/libCgGL.so
(gdb) bt
#0  0x00007ffe3c96e214 in ?? () from /usr/lib64/libCgGL.so
#1  0x00007ffe3c953878 in cgGLIsProfileSupported () from /usr/lib64/libCgGL.so
#2  0x00007ffe3c9538ee in ?? () from /usr/lib64/libCgGL.so
#3  0x00007ffe3c954b35 in cgGLGetLatestProfile () from /usr/lib64/libCgGL.so
#4  0x00007ffe3c3de83b in ShaderEngine::SetupCg() ()
   from /usr/lib64/libprojectM.so.2
#5  0x00007ffe3c3e07d0 in ShaderEngine::ShaderEngine() ()
   from /usr/lib64/libprojectM.so.2
#6  0x00007ffe3c3da545 in Renderer::Renderer(int, int, int, int, int, BeatDetect*, std::string, std::string, std::string) () from /usr/lib64/libprojectM.so.2
#7  0x00007ffe3c3c0930 in projectM::projectM_init(int, int, int, int, int, int)
    () from /usr/lib64/libprojectM.so.2
#8  0x00007ffe3c3c14b5 in projectM::readConfig(std::string const&) ()
   from /usr/lib64/libprojectM.so.2
#9  0x00007ffe3c3c2013 in projectM::projectM(std::string, int) ()
   from /usr/lib64/libprojectM.so.2
#10 0x00007ffe3c6afd2c in QProjectMWidget::initializeGL() ()
   from /usr/lib64/libprojectM-qt.so.1
#11 0x00007ffe3b18b0c4 in QGLWidget::glInit() ()
   from /usr/lib64/qt4/libQtOpenGL.so.4
#12 0x00007ffe3b2048fc in QGLWidget::resizeEvent(QResizeEvent*) ()
   from /usr/lib64/qt4/libQtOpenGL.so.4
#13 0x00007ffe3b689826 in QWidget::event(QEvent*) ()
---Type <return> to continue, or q <return> to quit---

#14 0x00007ffe3b192c3c in QGLWidget::event(QEvent*) ()
   from /usr/lib64/qt4/libQtOpenGL.so.4
#15 0x00007ffe3b637be4 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
    () from /usr/lib64/qt4/libQtGui.so.4
#16 0x00007ffe3b63c82f in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib64/qt4/libQtGui.so.4
#17 0x0000000000411624 in ProjectMApplication::notify (this=0x7fffa17505f0, 
    receiver=0xcfba40, event=0x7fffa174fe10)
    at /home/rogue/projectM/projectM-complete-2.1.0-Source/src/projectM-pulseaudio/qprojectM-pulseaudio.cpp:101
#18 0x00007ffe3ae00c4c in QCoreApplication::notifyInternal(QObject*, QEvent*)
    () from /usr/lib64/qt4/libQtCore.so.4
#19 0x00007ffe3b68412f in QWidgetPrivate::sendPendingMoveAndResizeEvents(bool, bool) () from /usr/lib64/qt4/libQtGui.so.4
#20 0x00007ffe3b68bc93 in QWidgetPrivate::show_helper() ()
   from /usr/lib64/qt4/libQtGui.so.4
#21 0x00007ffe3b68c0ea in QWidget::setVisible(bool) ()
   from /usr/lib64/qt4/libQtGui.so.4
#22 0x00007ffe3b68bc46 in QWidgetPrivate::showChildren(bool) ()
   from /usr/lib64/qt4/libQtGui.so.4
#23 0x00007ffe3b68bcaf in QWidgetPrivate::show_helper() ()
   from /usr/lib64/qt4/libQtGui.so.4

---Type <return> to continue, or q <return> to quit---
#24 0x00007ffe3b68c0ea in QWidget::setVisible(bool) ()
   from /usr/lib64/qt4/libQtGui.so.4
#25 0x0000000000411210 in QWidget::show (this=0xc25d00)
    at /usr/include/qt4/QtGui/qwidget.h:494
#26 0x00000000004108a6 in main (argc=1, argv=0x7fffa1750738)
    at /home/rogue/projectM/projectM-complete-2.1.0-Source/src/projectM-pulseaudio/qprojectM-pulseaudio.cpp:129
(gdb) 

I'm not experienced with gdb, so I don't know why info locals didn't return any local variables. The code around frame 0 can be found here:

http://dpaste.org/GgSOY/

equery belongs /usr/lib64/libCgGl.so doesn't return any results, not sure if it is a bug in equery or if that library really is orphaned. If it is orphaned, that could explain the problem. If not, I guess it could easily be a bug in the
version of qt that I'm using (qt-core 4.8.1-r3), or it could be a problem with the graphics layer...
Comment 12 Tomáš Chvátal (RETIRED) gentoo-dev 2013-01-21 20:30:45 UTC
Fixed in main tree.