tristelune1 writes

Hello,

I have installed upplay 1.2.1 and I don’t see the icons in the GUI. For example there is a button to stop the music. If I click where the button should be, the music stops and I see an effect in the GUI which shows there is a button. But without clicking I see nothing.

I’m on gentoo and I have created the package to install the 1.2.1 version exactly as for the 1.1.0 version. Perhaps you did some changes in between. There was no problem with 1.1.0.

When I start upplay, the following information are displayed in the terminal:

% upplay
libupnpp/upnpplib.cxx:146::LibUPnP: Using IP 192.168.1.37 port 49152
QSystemTrayIcon::setVisible: No Icon set
No systemtrayicon available
libupnpp/control/discovery.cxx:147::discoExplorer: downloading http://192.168.1.37:8200/rootDesc.xml
libupnpp/control/discovery.cxx:147::discoExplorer: downloading http://192.168.1.37:8200/rootDesc.xml
libupnpp/control/discovery.cxx:147::discoExplorer: downloading http://192.168.1.1:49153/description.xml
libupnpp/control/discovery.cxx:147::discoExplorer: downloading http://192.168.1.1:49153/description.xml
libupnpp/control/discovery.cxx:147::discoExplorer: downloading http://192.168.1.33:55178/Ds/device.xml
Application::setupRenderer: OHTm ok, no need for avt
libupnpp/control/mediarenderer.cxx:133::MediaRenderer: RenderingControl service not found
libupnpp/control/service.cxx:110::Service::~Service: urn:av-openhome-org:service:Volume:1 SID
Application::setupRenderer: using OHVolume
OHPL::onIdArrayChanged: emit trackArrayChanged().  idsv size 10  pool size  10
PlaylistOHPL::onRemoteMetaArray:  10  entries
libupnpp/control/discovery.cxx:147::discoExplorer: downloading http://192.168.1.33:55178/MediaRenderer/device.xml
PlaylistOHPL::onRemoteCurrentTrackid:  -1
PlaylistOHPL::onRemoteCurrentTrackid:  210
GUI_Player::update_track()
OHProductQo: Changed:  SourceIndex  (int):  0
OHProductQo: Changed:  Standby  (int):  0
Application::onSourceTypeChanged:  1
Application::onSourceTypeChanged: same type
OHPL::onIdArrayChanged: emit trackArrayChanged().  idsv size 10  pool size  10
PlaylistOHPL::onRemoteMetaArray:  10  entries
PlaylistOHPL::onRemoteCurrentTrackid:  210
GUI_Player::update_track()
PlaylistOHPL::onRemoteCurrentTrackid:  210
GUI_Player::update_track()
CDBrowser::initialPage: waiting  3
libupnpp/control/discovery.cxx:147::discoExplorer: downloading http://192.168.1.1:49153/description.xml
libupnpp/control/discovery.cxx:147::discoExplorer: downloading http://192.168.1.1:49154/gatedesc.xml
libupnpp/control/discovery.cxx:147::discoExplorer: downloading http://192.168.1.1:49153/description.xml
libupnpp/control/discovery.cxx:147::discoExplorer: downloading http://192.168.1.1:49154/gatedesc.xml
libupnpp/control/discovery.cxx:147::discoExplorer: downloading http://192.168.1.1:49154/gatedesc.xml
libupnpp/control/discovery.cxx:147::discoExplorer: downloading http://192.168.1.1:49154/gatedesc.xml
libupnpp/control/discovery.cxx:147::discoExplorer: downloading http://192.168.1.33:55178/Ds/device.xml
libupnpp/control/discovery.cxx:147::discoExplorer: downloading http://192.168.1.33:55178/MediaRenderer/device.xml
libupnpp/control/discovery.cxx:147::discoExplorer: downloading http://192.168.1.1:49153/description.xml
libupnpp/control/discovery.cxx:147::discoExplorer: downloading http://192.168.1.1:49153/description.xml
libupnpp/control/discovery.cxx:142::discovery:cllb: already downloading http://192.168.1.1:49153/description.xml
libupnpp/control/discovery.cxx:142::discovery:cllb: already downloading http://192.168.1.1:49153/description.xml

medoc92 writes

tristelune1 writes:

> Hello,
>
> I have installed upplay 121 and I don't see the icons in the GUI For example
> there is a button to stop the music If I click where the button should be, the
> music stops and I see an effect in the GUI which shows there is a button But
> without clicking I see nothing
>
> I'm on gentoo and I have created the package to install the 121 version exactly
> as for the 110 version Perhaps you did some changes in between There was no
> problem with 110
>
> When I start upplay, the following information are displayed in the terminal:

There has been a change about icons in the last version: they are kept in the file system instead of being compiled in the program. This is to make it easier if someone would like to improve them.

make install should copy them to /usr/share/icons:

 $ ls /usr/share/upplay/icons/
addtab.png       edit.png         rec.png
append.png       fwd_orange.png       reload.png
append_small.png     fwd.png          rep_1.png
arrow_down_orange.png    id3.png          rep1.png
arrow_down.png       import.png       repAll.png
arrow_left_orange.png    info.png         save_as.png
arrow_left.png       info_small.png       save.png
arrow_right_orange.png   logo.png         scroll_hor_bg.png
arrow_right.png      logo_small.png       scroll_ver_bg.png
arrow_up_orange.png  lyrics.png       shuffle.png
arrow_up.png         numbers.png          slider_hor_bg.png
broom.png        pause.png        slider_ver_bg.png
bwd_orange.png       playlist.png         stop.png
bwd.png          play.png         upplay.png
cb_checked_disabled.png  play_small.png       vol_1.png
cb_checked.png       power_off.png        vol_2.png
close.png        power_on.png         vol_3.png
cross.png        radio.png        vol_mute.png
dark             rb_checked_disabled.png  volume-slider-inside.png
delete.png       rb_checked.png       volume-slider-outside.png
dynamic.png      rec_off.png

Maybe the gentoo package needs to take this into account. Does this occur too with "make install" or just with the package ?

Cheers,

jf

tristelune1 writes

I’m the maintainer of the package, so I have to adapt it. I have the same issue on Archlinux. You can have a look at the package here:

The command "make install" is run. I have some icons in /usr/share/upplay. For example (I didn’t list all of them):

% ls -l /usr/share/upplay/icons
total 452
-rw-r--r-- 1 root root    499 Nov  7  2014 addtab.png
-rw-r--r-- 1 root root    750 Jun 15  2013 append.png
-rw-r--r-- 1 root root    672 Oct 15  2012 append_small.png
-rw-r--r-- 1 root root    460 Mar 16  2013 arrow_down_orange.png
-rw-r--r-- 1 root root    233 Mar 16  2013 arrow_down.png
-rw-r--r-- 1 root root    450 Mar 16  2013 arrow_left_orange.png
-rw-r--r-- 1 root root    244 Mar 16  2013 arrow_left.png
-rw-r--r-- 1 root root    460 Mar 16  2013 arrow_right_orange.png
-rw-r--r-- 1 root root    238 Mar 16  2013 arrow_right.png
-rw-r--r-- 1 root root    449 Mar 16  2013 arrow_up_orange.png
-rw-r--r-- 1 root root    242 Mar 16  2013 arrow_up.png
-rw-r--r-- 1 root root    784 Oct 15  2012 broom.png

Perhaps a permission problem ? Or do I have to refresh something such that my system know there are new icons ? I can also think to a missing dependency. At the moment I have only "qtwebkit" and "libupnpp".

medoc92 writes

There are many icons missing in the above directory listing. I just checked again, the required icon files are in the tar file, and they are installed by "make install" so I don’t know why they are not in your target directory.

Could you please point me to a build log ? We’ll probably see if the icons are copied or not

tristelune1 writes

First, the content of my package for Gentoo is here:

The build log:

Perhaps lines like the following are a problem, because of "…image//usr/share/…."

install -m 644 -p /var/tmp/portage/media-sound/upplay-1.2.1/work/upplay-1.2.1/GUI/icons/vol_1.png /var/tmp/portage/media-sound/upplay-1.2.1/image//usr/share/upplay/icons/dark/

medoc92 writes

The pastebin traces look good to me. The lines you are mentionning are probably because of DESTDIR (a replacement for root while pseudo-installing the package) /var/tmp/portage/media-sound/upplay-1.2.1/image/ is $DESTDIR

I don’t know what’s going on. I think that the next step is to use strace to see where it tries to access the icon (you can grep for an icon name to extract the good parts). Example:

strace upplay 2 >&1 | grep broom
  stat("/usr/share/upplay/icons/broom.png", {st_mode=S_IFREG|0644, st_size=784, ...}) = 0
  open("/usr/share/upplay/icons/broom.png", O_RDONLY|O_CLOEXEC) = 25
  stat("/usr/share/upplay/icons/broom.png", {st_mode=S_IFREG|0644, st_size=784, ...}) = 0

tristelune1 writes

I tried strace and for an unknown reason I was able to start upplay with the icons. I normally starts upplay with dmenu. With dmenu I had no icons and when upplay was started in a terminal everything were fine. But it works 2-3 times and now it doesn’t work anymore. My strace:

% strace upplay 2 >&1 | grep pause
stat("/home/user/icons/pause.png", 0x7ffcda403b40) = -1 ENOENT (No such file or directory)
stat("/home/user/icons/pause.png", 0x7ffcda400270) = -1 ENOENT (No such file or directory)
stat("/home/user/icons/pause.png", 0x7ffcda400730) = -1 ENOENT (No such file or directory)

Now I understand why the icons are not found. Do I have to set a variable somewhere ?

medoc92 writes

The code works as follows: - if /usr/share/upplay exists, then the icons directory is /usr/share/upplay/icons - Else the icons directory is searched in the current directory (this is a leftover from sayonara, I guess that it was used for testing without installing (running in the source directory).

So it would appear that /usr/share/upplay does not exist ? Or that the --prefix used at build time is not consistent with where the upplay directory is actually installed ?

tristelune1 writes

Ok, now I remember what I did to create the package. /usr/share/upplay exists, you can have a look at the first pastebin. When I create the package, the following command is run:

eqmake4 PREFIX=/var/tmp/portage/media-sound/upplay-1.2.1/image/usr

eqmake is for qmake4 in a gentoo package. The package can be installed and I can start the application, but the directory of PREFIX is not found. So I have no icons. I can change it, but in this case can’t create the package.

If I run:

eqmake4 PREFIX=/usr

When all files are compiled, with "make install" all files are copied to the filesystem, like /usr/share/upplay. When the package is created, it’s not possible. The "make install" step must install all packages in a temporary directory. After that the package manager will copy all files to the root filesystem. If I want that all files in the "make install" step are copied to a particular directory (in my case /var/tmp/portage/media-sound/upplay-1.2.1/image/usr) which variable can I use ? I have also tried DESTDIR, but it doesn’t work. And when do I have to set it ? For example, I have tried:

eqmake4 PREFIX=/usr DESTDIR=/var/tmp/portage/media-sound/upplay-1.2.1/image/usr

or

make DESTDIR=/var/tmp/portage/media-sound/upplay-1.2.1/image/usr install

without success.

medoc92 writes

DESTDIR is a pseudo-root used to create the package. PREFIX tells the package where it will be finally installed. So I think that:

eqmake4 PREFIX=/usr DESTDIR=/var/tmp/portage/media-sound/upplay-1.2.1/image/

should work (I removed usr from DESTDIR)

tristelune1 writes

Hi,

after a break I tried your suggestion. Unfortunately, it doesn’t work. You can have a look at the log file here:

I used the following command (line 14):

eqmake4 PREFIX=/usr DESTDIR=/var/tmp/portage/media-sound/upplay-1.2.1/image/

Some Error I get (line 190 and the following):

install -m 755 -p "../../image/upplay" "/usr/bin/upplay"
install -m 644 -p /var/tmp/portage/media-sound/upplay-1.2.1/work/upplay-1.2.1/dirbrowser/cdbrowser.css /usr/share/upplay/cdbrowser/
install -m 644 -p /var/tmp/portage/media-sound/upplay-1.2.1/work/upplay-1.2.1/GUI/standard.css /usr/share/upplay/
install -m 644 -p /var/tmp/portage/media-sound/upplay-1.2.1/work/upplay-1.2.1/upplay.desktop /usr/share/applications/
 * ACCESS DENIED:  unlink:       /usr/share/upplay/standard.css
/usr/bin/install: cannot remove ‘/usr/share/upplay/standard.css’: Permission denied
Makefile:1401: recipe for target 'install_gdata' failed
make: [install_gdata] Error 1 (ignored)
install -m 644 -p /var/tmp/portage/media-sound/upplay-1.2.1/work/upplay-1.2.1/GUI/dark.css /usr/share/upplay/
 * ACCESS DENIED:  unlink:       /usr/share/applications/upplay.desktop
/usr/bin/install: cannot remove ‘/usr/share/applications/upplay.desktop’: Permission denied
Makefile:1391: recipe for target 'install_desktop' failed
make: [install_desktop] Error 1 (ignored)

It seems that DESTDIR is not used.

medoc92 writes

tristelune1 writes:

> Hi,
>
> after a break I tried your suggestion. Unfortunately, it doesn't work. You can
> have a look at the log file here:

After having a look at the Makefile generated by qmake, it seems that they actually use INSTALL_ROOT, not DESTDIR for this. Could you please try the same with:

PREFIX=/usr INSTALL_ROOT=/var/tmp/portage/media-sound/upplay-1.2.1/image/

I sure wish the different build system could agree on some basic stuff like this !

> http://pastebin.fr/44858
>
> I used the following command (line 14):
>
> eqmake4
>
> Some Error I get (line 190 and the following):
>
> install -m 755 -p "../../image/upplay" "/usr/bin/upplay"
> install -m 644 -p /var/tmp/portage/media-sound/upplay-1.2.1/work/upplay-1.2.1/dirbrowser/cdbrowser.css /usr/share/upplay/cdbrowser/
> install -m 644 -p /var/tmp/portage/media-sound/upplay-1.2.1/work/upplay-1.2.1/GUI/standard.css /usr/share/upplay/
> install -m 644 -p /var/tmp/portage/media-sound/upplay-1.2.1/work/upplay-1.2.1/upplay.desktop /usr/share/applications/
> - ACCESS DENIED:  unlink:       /usr/share/upplay/standard.css
>   /usr/bin/install: cannot remove ‘/usr/share/upplay/standard.css’: Permission denied
>   Makefile:1401: recipe for target 'install_gdata' failed
>   make: [install_gdata] Error 1 (ignored)
>   install -m 644 -p /var/tmp/portage/media-sound/upplay-1.2.1/work/upplay-1.2.1/GUI/dark.css /usr/share/upplay/
> - ACCESS DENIED:  unlink:       /usr/share/applications/upplay.desktop
>   /usr/bin/install: cannot remove ‘/usr/share/applications/upplay.desktop’: Permission denied
>   Makefile:1391: recipe for target 'install_desktop' failed
>   make: [install_desktop] Error 1 (ignored)
>
> It seems that DESTDIR is not used.
>
> —
> Reply to this email directly or view it on GitHub.*

medoc92 writes

After having a look at the Makefile generated by qmake, it seems that they actually use INSTALL_ROOT, not DESTDIR for this. Could you please try the same with:

 PREFIX=/usr INSTALL_ROOT=/var/tmp/portage/media-sound/upplay-1.2.1/image/

I sure wished the different build system could agree on some basic stuff like this !

tristelune1 writes

I had in mind I already tried it, and it didn’t work. After testing it, unfortunately it doesn’t work. You can have a look at the log here:

The command on line 14:

eqmake4 PREFIX=/usr INSTALL_ROOT=/var/tmp/portage/media-sound/upplay-1.2.1/image/

And after I get the same "access denied" as before. When I try to install it without creating the package, I see the variable INSTALL_ROOT in the Makefile. I also see the variable DESTDIR. I don’t understand the following: - There is a line:

DESTDIR =

The variable is empty, because I didn’t set it. The problem as we have seen: after that the variable is not used. - The variable INSTALL_ROOT is used. But there is no line:

INSTALL_ROOT = /my/path

So I think even if I set that variable as a parameter to make, make won’t assign the value of the parameter to INSTALL_ROOT. I don’t know qmake, but after searching I assume the makefile is created with the file upplay.pro. Is it possible there is a change to make there ? In the following thread somebody had the same problem for another software and the solution was to modify the .pro file:

Perhaps DESTDIR can be also used, but the .pro file has to be modified. I agree with your last comment ;-).

medoc92 writes

I just checked and using INSTALL_ROOT does work when doing a raw "make install":

INSTALL_ROOT=/tmp make install
install -m 755 -p "upplay" "/tmp/usr/bin/upplay"
strip "/tmp/usr/bin/upplay"
...

Or:

make INSTALL_ROOT=/tmp  install
install -m 755 -p "upplay" "/tmp/usr/bin/upplay"
strip "/tmp/usr/bin/upplay"
...

I don’t know why there is an empty, and unused, declaration for DESTDIR in the Makefile generated by qmake (looks like qmake bitrot), but INSTALL_ROOT is properly used.

The fact that there is no line to set INSTALL_ROOT in the Makefile is not an issue, make will use an environment variable or a command line assignment.

I think that the problem is that you try to set the variable at "qmake" time, but this must be set at "make" time.

I don’t know much about arch packaging, but if the standard variable used by the system is DESTDIR, I think that modifying the "make install" line to read something like the following should solve the issue:

INSTALL_ROOT=$DESTDIR make install

tristelune1 writes

You’re right, I was wrong. I was setting the variable INSTALL_ROOT at the compile step, not install step. Sometimes I should read twice what I have written…….

There is still a small problem, but I think it’s rather related to gentoo than a problem with upplay. On gentoo, when the files are installed I have for example:

install -m 644 -p /var/tmp/portage/media-sound/upplay-1.2.2/work/upplay-1.2.2/GUI/icons/slider_hor_bg.png /var/tmp/portage/media-sound/upplay-1.2.2/image//usr/share/upplay/icons/

Have a look at the second path: ….image//usr/share….

There is no problem on Archlinux. So I think you can close this issue.

Even if there is this small problem for Gentoo, the users can install the package. So upplay is now updated for Archlinux and Gentoo.

Thank you for your help!

medoc92 writes

Thanks for doing this packaging work !