From 1a9433861ed896f0866b492fa384359eba4014b5 Mon Sep 17 00:00:00 2001 From: Paulchen-Panther Date: Sat, 19 Jan 2019 18:35:40 +0100 Subject: [PATCH] Cleanup - .deb work - update package creation - added hyperion package icon - remove V4L2 warning for OSX build --- .gitignore | 1 - CompileHowto.md | 12 +---- bin/service/hyperion.systemd.RO | 2 +- cmake/FindDebBuilder.cmake | 23 ++++++++ cmake/FindRpmBuilder.cmake | 23 ++++++++ cmake/debian/postinst | 8 +++ cmake/debian/prerm | 7 +++ cmake/desktop/hyperiond.desktop | 11 ++++ cmake/desktop/hyperiond_128.png | Bin 0 -> 18766 bytes cmake/packages.cmake | 31 ++++++++--- cmake/rpm/postinst | 9 ++++ cmake/rpm/preinst | 61 ++++++++++++++++++++++ cmake/rpm/prerm | 50 ++++++++++++++++++ libsrc/flatbufserver/FlatBufferServer.cpp | 2 +- src/hyperiond/CMakeLists.txt | 8 ++- src/hyperiond/hyperiond.cpp | 4 +- 16 files changed, 228 insertions(+), 24 deletions(-) create mode 100644 cmake/FindDebBuilder.cmake create mode 100644 cmake/FindRpmBuilder.cmake create mode 100644 cmake/desktop/hyperiond.desktop create mode 100644 cmake/desktop/hyperiond_128.png create mode 100644 cmake/rpm/preinst create mode 100644 cmake/rpm/prerm diff --git a/.gitignore b/.gitignore index 3cffde1c..ab0e4ad3 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,6 @@ CMakeFiles/ __/ # Ignoring autogenerated files -*.cmake Makefile qrc_*.cpp *.qrc.depends diff --git a/CompileHowto.md b/CompileHowto.md index b0c49cb0..205f9a47 100644 --- a/CompileHowto.md +++ b/CompileHowto.md @@ -81,17 +81,9 @@ bin/hyperiond ### Download Creates hyperion directory and checkout the code from github -You might want to add `--depth 1` to the `git` command if you only want to compile the current source and have no need for the entire git repository - ``` export HYPERION_DIR="hyperion" -git clone --recursive https://github.com/hyperion-project/hyperion.ng.git "$HYPERION_DIR" -``` - -**Note:** If you forget the --recursive in above statement or you are updating an existing clone you need to clone the flatbuffers submodule by runnning the follwing two statements: -``` -git submodule init -git submodule update +git clone --recursive --depth 1 https://github.com/hyperion-project/hyperion.ng.git "$HYPERION_DIR" ``` ### Preparations @@ -113,7 +105,7 @@ cmake -DCMAKE_BUILD_TYPE=Release .. *Developers on x86* linux should use: ``` -cmake -DPLATFORM=x86-dev -DCMAKE_BUILD_TYPE=Release .. +cmake -DPLATFORM=x11-dev -DCMAKE_BUILD_TYPE=Release .. ``` To use framebuffer instead of dispmanx (for example on the *cubox-i*): diff --git a/bin/service/hyperion.systemd.RO b/bin/service/hyperion.systemd.RO index b763a107..179871c6 100644 --- a/bin/service/hyperion.systemd.RO +++ b/bin/service/hyperion.systemd.RO @@ -9,7 +9,7 @@ Environment=LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. ExecStart=./hyperiond /storage/.config/hyperion/hyperion.config.json TimeoutStopSec=5 KillMode=mixed -Restart=always +Restart=on-failure RestartSec=2 [Install] diff --git a/cmake/FindDebBuilder.cmake b/cmake/FindDebBuilder.cmake new file mode 100644 index 00000000..e2f2c9ac --- /dev/null +++ b/cmake/FindDebBuilder.cmake @@ -0,0 +1,23 @@ +# - Find package for .deb building +# Find the .deb building executable and extract the version number +# +# OUTPUT Variables +# +# DEB_BUILDER_FOUND +# True if the deb builder package was found +# DEB_BUILDER_EXECUTABLE +# The deb builder executable location +# DEB_BUILDER_VERSION +# A string denoting the version of deb builder that has been found + +find_program ( DEB_BUILDER_EXECUTABLE dpkg-deb ) + +if ( DEB_BUILDER_EXECUTABLE ) + SET( DEB_BUILDER_FOUND TRUE ) + execute_process ( COMMAND ${DEB_BUILDER_EXECUTABLE} --version OUTPUT_VARIABLE DEB_VERSION_RAW ERROR_QUIET ) + if (DEB_VERSION_RAW) + string ( REGEX REPLACE "^RPM-Version ([0-9]+.[0-9]+.[0-9]+),.*" "\\1" DEB_BUILDER_VERSION ${DEB_VERSION_RAW}) + else () + set ( DEB_BUILDER_VERSION "unknown" ) + endif() +endif () diff --git a/cmake/FindRpmBuilder.cmake b/cmake/FindRpmBuilder.cmake new file mode 100644 index 00000000..07a22468 --- /dev/null +++ b/cmake/FindRpmBuilder.cmake @@ -0,0 +1,23 @@ +# - Find package for .rpm building +# Find the .rpm building executable and extract the version number +# +# OUTPUT Variables +# +# RPM_BUILDER_FOUND +# True if the rpm package was found +# RPM_BUILDER_EXECUTABLE +# The rpm executable location +# RPM_BUILDER_VERSION +# A string denoting the version of rpm that has been found + +find_program ( RPM_BUILDER_EXECUTABLE rpm ) + +if ( RPM_BUILDER_EXECUTABLE ) + SET( RPM_BUILDER_FOUND TRUE ) + execute_process ( COMMAND ${RPM_BUILDER_EXECUTABLE} --version OUTPUT_VARIABLE RPM_VERSION_RAW ERROR_QUIET ) + if (RPM_VERSION_RAW) + string ( REGEX REPLACE "^RPM-Version ([0-9]+.[0-9]+.[0-9]+),.*" "\\1" RPM_BUILDER_VERSION ${RPM_VERSION_RAW}) + else () + set ( RPM_BUILDER_VERSION "unknown" ) + endif() +endif () diff --git a/cmake/debian/postinst b/cmake/debian/postinst index 862610d5..eb9fa7ec 100644 --- a/cmake/debian/postinst +++ b/cmake/debian/postinst @@ -91,6 +91,14 @@ ln -fs $BINSP/hyperion-x11 $BINTP/hyperion-x11 2>/dev/null ln -fs $BINSP/hyperion-aml $BINTP/hyperion-aml 2>/dev/null ln -fs $BINSP/hyperion-qt $BINTP/hyperion-qt 2>/dev/null +# install desktop icons +echo "---> Install Hyperion desktop icons" +mkdir /usr/share/pixmaps/hyperion 2>/dev/null +cp /usr/share/hyperion/desktop/*.png /usr/share/pixmaps/hyperion 2>/dev/null +desktop-file-install /usr/share/hyperion/desktop/hyperiond.desktop 2>/dev/null + +# cleanup desktop icons +rm -r /usr/share/hyperion/desktop 2>/dev/null #Check, if dtparam=spi=on is in place if [ $CPU_RPI -eq 1 ]; then diff --git a/cmake/debian/prerm b/cmake/debian/prerm index 19b099b1..388c79ae 100644 --- a/cmake/debian/prerm +++ b/cmake/debian/prerm @@ -40,4 +40,11 @@ fi # In case we don't use a service kill all instances killall hyperiond 2> /dev/null +# delete desktop icons; desktop-file-edit is a workaround to hide the entry and delete it afterwards manual. +# TODO Better way for deletion and keep the desktop in sync without logout/login or desktop dependend cmds? +echo "---> Delete Hyperion desktop icons" +desktop-file-edit --set-key=NoDisplay --set-value=true /usr/share/applications/hyperiond.desktop 2>/dev/null +rm -v /usr/share/applications/hyperion* 2>/dev/null +rm -rv /usr/share/pixmaps/hyperion 2>/dev/null + exit 0 diff --git a/cmake/desktop/hyperiond.desktop b/cmake/desktop/hyperiond.desktop new file mode 100644 index 00000000..d47a38d3 --- /dev/null +++ b/cmake/desktop/hyperiond.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Name=Hyperion +GenericName=Hyperion Ambient Lighting +Comment=Hyperion mimics the well known Ambilight from Philips +Icon=/usr/share/pixmaps/hyperion/hyperiond_128.png +Terminal=false +TryExec=hyperiond +Exec=hyperiond +Type=Application +StartupNotify=false +Categories=Application; diff --git a/cmake/desktop/hyperiond_128.png b/cmake/desktop/hyperiond_128.png new file mode 100644 index 0000000000000000000000000000000000000000..8da3dd1787a0404a24d8afcaff9f01ff4f2d3d9a GIT binary patch literal 18766 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 JPDHLkV1mC9IRpRz literal 0 HcmV?d00001 diff --git a/cmake/packages.cmake b/cmake/packages.cmake index 21b63a74..6eb6be82 100644 --- a/cmake/packages.cmake +++ b/cmake/packages.cmake @@ -1,15 +1,28 @@ # cmake file for generating distribution packages +# default packages to build IF (APPLE) SET ( CPACK_GENERATOR "TGZ" "Bundle") ELSEIF (UNIX) - SET ( CPACK_GENERATOR "DEB" "TGZ" "STGZ") # "RPM" + SET ( CPACK_GENERATOR "TGZ" "STGZ") ELSEIF (WIN32) - SET ( CPACK_GENERATOR "ZIP" "NSIS") + SET ( CPACK_GENERATOR "ZIP") +ENDIF() + +# Determine packages by found generator executables +find_package(RpmBuilder) +find_package(DebBuilder) +IF(RPM_BUILDER_FOUND) + message("CPACK: Found RPM builder") + SET ( CPACK_GENERATOR ${CPACK_GENERATOR} "RPM") +ENDIF() +IF(DEB_BUILDER_FOUND) + message("CPACK: Found DEB builder") + SET ( CPACK_GENERATOR ${CPACK_GENERATOR} "DEB") ENDIF() # Apply to all packages, some of these can be overwritten with generator specific content -# https://cmake.org/cmake/help/v3.0/module/CPack.html +# https://cmake.org/cmake/help/v3.5/module/CPack.html SET ( CPACK_PACKAGE_NAME "Hyperion" ) SET ( CPACK_PACKAGE_DESCRIPTION_SUMMARY "Hyperion is an open source ambient light implementation" ) @@ -27,18 +40,22 @@ SET ( CPACK_CREATE_DESKTOP_LINKS "hyperiond;Hyperion" ) # Specific CPack Package Generators # https://cmake.org/Wiki/CMake:CPackPackageGenerators -# .deb files for dpkg +# .deb files for apt SET ( CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/cmake/debian/preinst;${CMAKE_CURRENT_SOURCE_DIR}/cmake/debian/postinst;${CMAKE_CURRENT_SOURCE_DIR}/cmake/debian/prerm" ) SET ( CPACK_DEBIAN_PACKAGE_DEPENDS "libqt5core5a (>= 5.5.0), libqt5network5 (>= 5.5.0), libqt5gui5 (>= 5.5.0), libqt5serialport5 (>= 5.5.0), libqt5sql5 (>= 5.5.0), libqt5sql5-sqlite (>= 5.5.0), libavahi-core7 (>= 0.6.31), libavahi-compat-libdnssd1 (>= 0.6.31), libusb-1.0-0, libpython3.5, libc6" ) SET ( CPACK_DEBIAN_PACKAGE_SECTION "Miscellaneous" ) # .rpm for rpm +https://cmake.org/cmake/help/v3.5/module/CPackRPM.html SET ( CPACK_RPM_PACKAGE_RELEASE 1) -SET ( CPACK_RPM_PACKAGE_LICENSE "unknown") -SET ( CPACK_RPM_PACKAGE_GROUP "unknown") -SET ( CPACK_RPM_PACKAGE_REQUIRES "libqt5core5a >= 5.5.0, libqt5network5 >= 5.5.0, libqt5gui5 >= 5.5.0, libqt5serialport5 >= 5.5.0, libqt5sql5 >= 5.5.0, libqt5sql5-sqlite >= 5.5.0, libavahi-core7 >= 0.6.31, libavahi-compat-libdnssd1 >= 0.6.31, libusb-1.0-0, libpython3.5, libc6") +SET ( CPACK_RPM_PACKAGE_LICENSE "MIT") +SET ( CPACK_RPM_PACKAGE_GROUP "Applications") +SET ( CPACK_RPM_PACKAGE_REQUIRES "qt5-qtbase >= 5.5.0, qt5-qtbase-gui >= 5.5.0, qt5-qtserialport >= 5.5.0, avahi-libs >= 0.6.31, avahi-compat-libdns_sd >= 0.6.31, libusbx, python35 >= 3.5.0") +# Notes: This is a dependency list for Fedora 27, different .rpm OSes use different names for their deps +SET ( CPACK_RPM_PRE_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/rpm/preinst" ) SET ( CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/rpm/postinst" ) +SET ( CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/rpm/prerm" ) # OSX "Bundle" generator TODO Add more osx generators # https://cmake.org/cmake/help/v3.10/module/CPackBundle.html diff --git a/cmake/rpm/postinst b/cmake/rpm/postinst index 0a4f066f..eb9fa7ec 100644 --- a/cmake/rpm/postinst +++ b/cmake/rpm/postinst @@ -91,6 +91,15 @@ ln -fs $BINSP/hyperion-x11 $BINTP/hyperion-x11 2>/dev/null ln -fs $BINSP/hyperion-aml $BINTP/hyperion-aml 2>/dev/null ln -fs $BINSP/hyperion-qt $BINTP/hyperion-qt 2>/dev/null +# install desktop icons +echo "---> Install Hyperion desktop icons" +mkdir /usr/share/pixmaps/hyperion 2>/dev/null +cp /usr/share/hyperion/desktop/*.png /usr/share/pixmaps/hyperion 2>/dev/null +desktop-file-install /usr/share/hyperion/desktop/hyperiond.desktop 2>/dev/null + +# cleanup desktop icons +rm -r /usr/share/hyperion/desktop 2>/dev/null + #Check, if dtparam=spi=on is in place if [ $CPU_RPI -eq 1 ]; then BOOT_DIR="/boot" diff --git a/cmake/rpm/preinst b/cmake/rpm/preinst new file mode 100644 index 00000000..3dbfdd2f --- /dev/null +++ b/cmake/rpm/preinst @@ -0,0 +1,61 @@ +#!/bin/sh + +echo "---Hyperion ambient light preinst ---" + +# search for users in system, returns first entry +FOUND_USR=`who | grep -o '^\w*\b'` || "root" + +# stop running daemon before we install +if pgrep hyperiond > /dev/null 2>&1 +then + if grep -m1 systemd /proc/1/comm > /dev/null + then + echo "--> stop init deamon: systemd" + # systemd + systemctl stop hyperiond"@${FOUND_USR}" 2> /dev/null + + elif [ -e /sbin/initctl ] + then + echo "--> stop init deamon: upstart" + # upstart + initctl stop hyperiond + + else + echo "--> stop init deamon: sysV" + # sysV + service hyperiond stop 2>/dev/null + fi +fi + +# In case we don't use a service kill all instances +killall hyperiond 2> /dev/null + +exit 0 + + +#$USR=hyperionIS; + +#addToGroup() +##{ +# getent group $1 && adduser $USR $1; +#} + +#check if user exists +#if id $USR >/dev/null 2>&1; then +# echo "--> hyperion user exists, skip creation"; +#else + ## create user +# echo "--> Create Hyperion user"; +# adduser --system --group $USR; +#fi + +# add user to groups if required +## secondary user groups that are required to access system things +#addToGroup(dialout); +#addToGroup(video); +#addToGroup(audio); +#addToGroup(systemd-journal); +# platform specific groups +#addToGroup(i2c); +#addToGroup(spi); +#addToGroup(gpio); diff --git a/cmake/rpm/prerm b/cmake/rpm/prerm new file mode 100644 index 00000000..388c79ae --- /dev/null +++ b/cmake/rpm/prerm @@ -0,0 +1,50 @@ +#!/bin/sh + +echo "---Hyperion ambient light prerm ---" + +# search for users in system, returns first entry +FOUND_USR=`who | grep -o '^\w*\b'` || "root" + +# stop running daemon before we delete it +HYPERION_RUNNING=false +pgrep hyperiond > /dev/null 2>&1 && HYPERION_RUNNING=true + +if grep -m1 systemd /proc/1/comm > /dev/null +then + echo "---> stop init deamon: systemd" + # systemd + $HYPERION_RUNNING && systemctl stop hyperiond"@${FOUND_USR}" 2> /dev/null + # disable user specific symlink + echo "---> Disable service and remove entry" + systemctl -q disable hyperiond"@${FOUND_USR}" + rm -v /etc/systemd/system/hyperiond@.service 2>/dev/null + +elif [ -e /sbin/initctl ] +then + echo "---> stop init deamon: upstart" + # upstart + $HYPERION_RUNNING && initctl stop hyperiond + echo "---> Remove upstart service" + rm -v /etc/init/hyperion* 2>/dev/null + initctl reload-configuration + +else + echo "---> stop init deamon: sysV" + # sysV + $HYPERION_RUNNING && service hyperiond stop 2>/dev/null + echo "---> Remove sysV service" + update-rc.d -f hyperion remove + rm /etc/init.d/hyperion* 2>/dev/null +fi + +# In case we don't use a service kill all instances +killall hyperiond 2> /dev/null + +# delete desktop icons; desktop-file-edit is a workaround to hide the entry and delete it afterwards manual. +# TODO Better way for deletion and keep the desktop in sync without logout/login or desktop dependend cmds? +echo "---> Delete Hyperion desktop icons" +desktop-file-edit --set-key=NoDisplay --set-value=true /usr/share/applications/hyperiond.desktop 2>/dev/null +rm -v /usr/share/applications/hyperion* 2>/dev/null +rm -rv /usr/share/pixmaps/hyperion 2>/dev/null + +exit 0 diff --git a/libsrc/flatbufserver/FlatBufferServer.cpp b/libsrc/flatbufserver/FlatBufferServer.cpp index 5522588a..a84b3537 100644 --- a/libsrc/flatbufserver/FlatBufferServer.cpp +++ b/libsrc/flatbufserver/FlatBufferServer.cpp @@ -97,7 +97,7 @@ void FlatBufferServer::stopServer() if(_server->isListening()) { // close client connections - for(auto client : _openConnections) + for(const auto& client : _openConnections) { client->forceClose(); } diff --git a/src/hyperiond/CMakeLists.txt b/src/hyperiond/CMakeLists.txt index ec849602..6c9689f6 100644 --- a/src/hyperiond/CMakeLists.txt +++ b/src/hyperiond/CMakeLists.txt @@ -52,11 +52,11 @@ if (ENABLE_AMLOGIC) endif () if (ENABLE_X11) - target_link_libraries(hyperiond x11-grabber ) + target_link_libraries(hyperiond x11-grabber) endif () if (ENABLE_QT) - target_link_libraries(hyperiond qt-grabber ) + target_link_libraries(hyperiond qt-grabber) endif () install ( TARGETS hyperiond DESTINATION "share/hyperion/bin/" COMPONENT "${PLATFORM}" ) @@ -64,6 +64,10 @@ install ( DIRECTORY ${CMAKE_SOURCE_DIR}/bin/service DESTINATION "share/hyperion/ install ( FILES ${CMAKE_SOURCE_DIR}/effects/readme.txt DESTINATION "share/hyperion/effects" COMPONENT "${PLATFORM}" ) install ( FILES ${CMAKE_SOURCE_DIR}/resources/icons/hyperion-icon-32px.png DESTINATION "share/hyperion/icons" COMPONENT "${PLATFORM}" ) +# Desktop file for hyperiond +install ( FILES ${CMAKE_SOURCE_DIR}/cmake/desktop/hyperiond_128.png DESTINATION "share/hyperion/desktop" COMPONENT "${PLATFORM}" ) +install ( FILES ${CMAKE_SOURCE_DIR}/cmake/desktop/hyperiond.desktop DESTINATION "share/hyperion/desktop" COMPONENT "${PLATFORM}" ) + if(CMAKE_HOST_UNIX) install(CODE "EXECUTE_PROCESS(COMMAND ln -sf \"../share/hyperion/bin/hyperiond\" \"${CMAKE_BINARY_DIR}/symlink_hyperiond\" )" COMPONENT "${PLATFORM}" ) install(FILES ${CMAKE_BINARY_DIR}/symlink_hyperiond DESTINATION "bin" RENAME hyperiond COMPONENT "${PLATFORM}" ) diff --git a/src/hyperiond/hyperiond.cpp b/src/hyperiond/hyperiond.cpp index e01c9a40..9b8a8a7a 100644 --- a/src/hyperiond/hyperiond.cpp +++ b/src/hyperiond/hyperiond.cpp @@ -371,10 +371,10 @@ void HyperionDaemon::handleSettingsUpdate(const settings::type& type, const QJso const QJsonArray & v4lArray = config.array(); for ( signed idx=0; idx