hyperion-project / hyperion.ng

The successor to Hyperion aka Hyperion Next Generation
https://hyperion-project.org/
MIT License
2.96k stars 373 forks source link

Executables installed to non-standard location #1638

Open christian-heusel opened 10 months ago

christian-heusel commented 10 months ago

Bug report

Hyperion installs executables to /usr/share/hyperion/bin and just symlinks them to /usr/bin

Steps to reproduce

Build the application like you normally would and like we do in the ArchLinux PKGBUILD:

$ cmake -DCMAKE_INSTALL_PREFIX="/usr/" \
     -DCMAKE_BUILD_TYPE=Release \
     -DENABLE_QT5=ON \
     -DPLATFORM=x86 \
     -DPROTOBUF_PROTOC_EXECUTABLE=/usr/bin/protoc \
     -DUSE_SYSTEM_PROTO_LIBS=ON \
     -DUSE_SYSTEM_FLATBUFFERS_LIBS=ON \
     -DUSE_SYSTEM_QMDNS_LIBS=ON \
     -DUSE_SYSTEM_MBEDTLS_LIBS=ON \
     -DENABLE_DEPLOY_DEPENDENCIES=OFF \
     ..
$ make
$ make install

See that the binaries are installed to /usr/share/hyperion/bin and that /usr/bin/ just contains symlinks to the afforementioned location.

What is expected?

The compiled binaries should be installed to /usr/bin instead of /usr/share/hyperion/bin as per the Filesystem Hierarchy Standard and the Arch Packaging Guidelines:

This was noticed because we have tooling in archlinux that scans through the binaries and notifies us when there are rebuilds needed (i.e. in this case for a protobuf update) where hyperion was missed because it has its binaries in this non-standard location.

We can of course patch the install step downstream, but in my opinion it would be best just to fix it here 👍🏻

What is actually happening?

See above

System

Hyperion Server:
- Build:              ()
- Build time:        Sep  6 2023 11:03:54
- Git Remote:        
- Version:           2.0.15
- UI Lang:           en (BrowserLang: en-US)
- UI Access:         default
- Avail Screen Cap.: framebuffer,qt
- Avail Video  Cap.: v4l2
- Avail Audio  Cap.: audio
- Avail Services:    boblight,cec,effectengine,forwarder,flatbuffer,protobuffer,mDNS,SSDP,borderdetection
- Config path:       /home/chris/.hyperion
- Database:          read/write

Hyperion Server OS:
- Distribution:      Arch Linux
- Architecture:      x86_64
- CPU Model:         AMD Ryzen 5 5500U with Radeon Graphics
- CPU Type:          104
- Kernel:            linux (6.5.1-arch1-1 (WS: 64))
- Root/Admin:        false
- Qt Version:        5.15.10
- Python Version:    3.11.5
- Browser:           Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/117.0
Lord-Grey commented 7 months ago

Hi @christian-heusel Just for my education… if I look at the FHS custom packages should go to /opt. Why are you not asking having Hyperion to be installed there?

christian-heusel commented 7 months ago

@Lord-Grey usually only really big bundled packages (i.e. Android Studio, Zoom), which also ship their own dependency in the bundle, go to /opt/ and package-manager installed things which also link against the dependencies in /usr/lib go into /usr/bin.

I also already tried to provide some reasoning in the initial issue 😊