mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
refactor apt/dnf repo
This commit is contained in:
6
rpmbuild/hyperion.repo.in
Normal file
6
rpmbuild/hyperion.repo.in
Normal file
@@ -0,0 +1,6 @@
|
||||
[hyperion]
|
||||
name=Hyperion - @ARCH@ - @CHANNEL@ Release
|
||||
baseurl=https://dnf.releases.hyperion-project.org/@DIST@/$releasever/$basearch/
|
||||
enabled=1
|
||||
gpgcheck=1
|
||||
gpgkey=https://releases.hyperion-project.org/hyperion.pub.key
|
268
rpmbuild/hyperion.spec.in
Normal file
268
rpmbuild/hyperion.spec.in
Normal file
@@ -0,0 +1,268 @@
|
||||
# disable debuginfo subpackage generation
|
||||
%define debug_package %{nil}
|
||||
|
||||
# disable build-id symlinks
|
||||
%define _build_id_links none
|
||||
|
||||
# don't use changelog date
|
||||
%global source_date_epoch_from_changelog 0
|
||||
|
||||
Name: hyperion
|
||||
Version: %{_version}
|
||||
Release: 0%{?dist}
|
||||
Summary: The successor to Hyperion aka Hyperion Next Generation
|
||||
|
||||
License: MIT
|
||||
URL: https://github.com/hyperion-project/%{name}.ng
|
||||
Source: %{name}.ng.tar.gz
|
||||
|
||||
BuildRoot: %{_tmppath}/%{name}.ng-build
|
||||
Vendor: Hyperion Project
|
||||
Packager: Hyperion-Project <admin@hyperion-project.org>
|
||||
|
||||
# common build dependencies
|
||||
BuildRequires: desktop-file-utils
|
||||
BuildRequires: libappstream-glib
|
||||
BuildRequires: qt5-qtbase-devel qt5-qtserialport-devel qt5-qtx11extras-devel
|
||||
BuildRequires: python3-devel
|
||||
BuildRequires: turbojpeg-devel libjpeg-turbo-devel
|
||||
BuildRequires: protobuf-devel protobuf-compiler
|
||||
BuildRequires: flatbuffers-devel flatbuffers-compiler
|
||||
BuildRequires: mbedtls-devel
|
||||
BuildRequires: libcec-devel
|
||||
BuildRequires: openssl-devel
|
||||
BuildRequires: libusb1-devel
|
||||
BuildRequires: avahi-libs avahi-compat-libdns_sd-devel
|
||||
BuildRequires: libXrandr-devel
|
||||
BuildRequires: xcb-util-image-devel xcb-util-devel
|
||||
BuildRequires: dbus-devel
|
||||
BuildRequires: alsa-lib-devel
|
||||
BuildRequires: systemd
|
||||
|
||||
%if 0%{?suse_version} >= 1210
|
||||
BuildRequires: systemd-rpm-macros
|
||||
%endif
|
||||
|
||||
Requires: desktop-file-utils
|
||||
Requires: qt5-qtbase qt5-qtserialport qt5-qtx11extras
|
||||
Requires: python3-libs
|
||||
Requires: turbojpeg
|
||||
Requires: libusb
|
||||
Requires: avahi-libs
|
||||
Requires: dbus-libs
|
||||
Requires: libXrandr
|
||||
Requires: openssl
|
||||
Requires: protobuf
|
||||
Requires: flatbuffers
|
||||
Requires: mbedtls
|
||||
Requires: libcec
|
||||
Requires: alsa-lib
|
||||
Requires: firewalld
|
||||
|
||||
BuildArch: %(uname -m)
|
||||
|
||||
%description
|
||||
Hyperion is an opensource Bias or Ambient Lighting implementation
|
||||
which you might know from TV manufacturers.
|
||||
It supports many LED devices and video grabbers.
|
||||
|
||||
%prep
|
||||
%setup -qn %{name}.ng
|
||||
|
||||
%build
|
||||
cmake \
|
||||
-S . -B build \
|
||||
-DUSE_SYSTEM_PROTO_LIBS=ON \
|
||||
-DUSE_SYSTEM_FLATBUFFERS_LIBS=ON \
|
||||
-DUSE_SYSTEM_MBEDTLS_LIBS=ON \
|
||||
-DENABLE_DEPLOY_DEPENDENCIES=OFF \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_PREFIX:PATH=%{_prefix}
|
||||
|
||||
make -C build -j 4
|
||||
|
||||
%install
|
||||
%make_install -C build
|
||||
|
||||
# remove user entry (line 12) from systemd file (also in description)
|
||||
# sed -i '12d' %{buildroot}%{_datadir}/%{name}/service/%{name}.systemd
|
||||
# sed -i 's/ for user \%i//g' %{buildroot}%{_datadir}/%{name}/service/%{name}.systemd
|
||||
|
||||
%check
|
||||
# check Desktop/AppStream file
|
||||
desktop-file-validate %{buildroot}%{_datadir}/%{name}/desktop/%{name}.desktop
|
||||
appstream-util validate-relax --nonet %{buildroot}%{_datadir}/%{name}/desktop/%{name}.metainfo.xml
|
||||
|
||||
%pre
|
||||
# stop running daemon before we install/upgrade
|
||||
%if 0%{?fedora} || 0%{?rhel} >= 8
|
||||
if %{_bindir}/pgrep 'hyperiond' &>/dev/null; then
|
||||
CURRENT_SERVICE=$(systemctl --type service | { grep -o "hyperion.*\.service" || true; });
|
||||
if [ ! -z "${CURRENT_SERVICE}" ]; then
|
||||
systemctl stop ${CURRENT_SERVICE} &>/dev/null || :
|
||||
else
|
||||
killall hyperiond &>/dev/null || :
|
||||
fi
|
||||
fi
|
||||
# else TODO SUSE
|
||||
%endif
|
||||
|
||||
%post
|
||||
# initial installation (postun is run when updating)
|
||||
if [ $1 -eq 1 ]; then
|
||||
echo "-----------------------------------------------------------------------------"
|
||||
|
||||
# service registration if no GUI OS is present
|
||||
if [ -z "${DISPLAY}" ] && [ -z "${WAYLAND_DISPLAY}" ] && [ -z "${XDG_CURRENT_DESKTOP}" ]; then
|
||||
%__install -D -m 644 %{_datadir}/%{name}/service/%{name}.systemd %{_unitdir}/%{name}@.service
|
||||
|
||||
%if 0%{?fedora} || 0%{?rhel} >= 8
|
||||
USERNAME=$(logname)
|
||||
%systemd_post %{name}@.service
|
||||
systemctl -q enable %{name}@${USERNAME}.service &>/dev/null || :
|
||||
systemctl start %{name}@${USERNAME} &>/dev/null || :
|
||||
|
||||
if [[ "$(type firewall-cmd &>/dev/null; echo $?)" -eq 0 && "$(systemctl is-active firewalld)" == "active" ]]; then
|
||||
ZONE=$(firewall-cmd --get-default-zone)
|
||||
firewall-cmd --permanent --zone=${ZONE} --new-service-from-file=%{_datadir}/%{name}/service/%{name}.xml --add-service=%{name} &>/dev/null || :
|
||||
firewall-cmd --permanent --zone=${ZONE} --add-service=%{name} &>/dev/null || :
|
||||
firewall-cmd --complete-reload &>/dev/null || :
|
||||
fi
|
||||
%endif
|
||||
|
||||
%if 0%{?suse_version}
|
||||
%service_add_post %{name}.service
|
||||
%endif
|
||||
|
||||
echo "---> Hyperion has been installed as service, it will start on each system startup"
|
||||
|
||||
else
|
||||
if test -d /usr/share/icons/hicolor; then
|
||||
# copy Hyperion icons to the proper freedesktop location
|
||||
mkdir -p %{_datadir}/icons/hicolor/
|
||||
cp -rp %{_datadir}/%{name}/icons/* %{_datadir}/icons/hicolor/
|
||||
|
||||
# update icon-cache
|
||||
%if 0%{?suse_version}
|
||||
%icon_theme_cache_post
|
||||
%else
|
||||
# touch it, just in case we cannot find the binary...
|
||||
touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
|
||||
if hash gtk-update-icon-cache 2>/dev/null; then
|
||||
gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
|
||||
fi
|
||||
%endif
|
||||
fi
|
||||
|
||||
if hash desktop-file-install 2>/dev/null ; then
|
||||
# install Desktop/AppStream file
|
||||
%__install -D -m 644 %{_datadir}/%{name}/desktop/%{name}.metainfo.xml %{_metainfodir}/%{name}.metainfo.xml
|
||||
desktop-file-install --dir=%{_datadir}/applications %{_datadir}/%{name}/desktop/%{name}.desktop
|
||||
|
||||
%if 0%{?suse_version}
|
||||
%desktop_database_post
|
||||
%endif
|
||||
fi
|
||||
|
||||
echo "---> You can start Hyperion from your menu now"
|
||||
fi
|
||||
fi
|
||||
|
||||
%preun
|
||||
# package uninstall
|
||||
if [ $1 -eq 0 ]; then
|
||||
if [ -z "${DISPLAY}" ] && [ -z "${WAYLAND_DISPLAY}" ] && [ -z "${XDG_CURRENT_DESKTOP}" ]; then
|
||||
%if 0%{?fedora} || 0%{?rhel} >= 8
|
||||
CURRENT_SERVICE=$(systemctl --type service | { grep -o "hyperion.*\.service" || true; });
|
||||
if [ ! -z "${CURRENT_SERVICE}" ]; then
|
||||
%systemd_preun ${CURRENT_SERVICE}
|
||||
fi
|
||||
|
||||
rm -v %{_unitdir}/%{name}@.service &>/dev/null || :
|
||||
systemctl daemon-reload &>/dev/null
|
||||
|
||||
if [[ "$(type firewall-cmd &>/dev/null; echo $?)" -eq 0 && "$(systemctl is-active firewalld)" == "active" ]]; then
|
||||
ZONE=$(firewall-cmd --get-default-zone)
|
||||
firewall-cmd --permanent --zone=${ZONE} --remove-service=%{name} &>/dev/null || :
|
||||
rm -v /etc/firewalld/services/%{name}.xml &>/dev/null || :
|
||||
firewall-cmd --complete-reload &>/dev/null || :
|
||||
fi
|
||||
%endif
|
||||
|
||||
%if 0%{?suse_version}
|
||||
%service_del_preun %{name}.service
|
||||
%endif
|
||||
|
||||
else
|
||||
if test -d /usr/share/icons/hicolor; then
|
||||
# remove Hyperion icons
|
||||
for i in 16x16 22x22 24x24 32x32 36x36 48x48 64x64 72x72 96x96 128x128 192x192 256x256 512x512; do
|
||||
rm -v %{_datadir}/icons/hicolor/${i}/apps/%{name}.png &>/dev/null || :
|
||||
done
|
||||
|
||||
# update icon-cache
|
||||
%if 0%{?suse_version}
|
||||
%icon_theme_cache_post
|
||||
%else
|
||||
# touch it, just in case we cannot find the binary...
|
||||
touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
|
||||
if hash gtk-update-icon-cache 2>/dev/null; then
|
||||
gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
|
||||
fi
|
||||
%endif
|
||||
fi
|
||||
|
||||
if hash desktop-file-install 2>/dev/null ; then
|
||||
# remove desktop/appstream file
|
||||
rm -v /usr/share/applications/%{name}* &>/dev/null || :
|
||||
rm -v /usr/share/metainfo/%{name}* &>/dev/null || :
|
||||
|
||||
# update desktop-database
|
||||
%if 0%{?suse_version}
|
||||
%desktop_database_post
|
||||
%else
|
||||
if [ -x /usr/bin/update-desktop-database ]; then
|
||||
update-desktop-database -q /usr/share/applications &>/dev/null || :
|
||||
fi
|
||||
%endif
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
%postun
|
||||
# package upgrade
|
||||
if [ $1 -ge 1 ] ; then
|
||||
if [ -z "${DISPLAY}" ] && [ -z "${WAYLAND_DISPLAY}" ] && [ -z "${XDG_CURRENT_DESKTOP}" ]; then
|
||||
%if 0%{?fedora} || 0%{?rhel} >= 8
|
||||
CURRENT_SERVICE=$(systemctl --type service | { grep -o "hyperion.*\.service" || true; });
|
||||
if [ ! -z "${CURRENT_SERVICE}" ]; then
|
||||
%systemd_postun_with_restart ${CURRENT_SERVICE}
|
||||
fi
|
||||
%endif
|
||||
|
||||
%if 0%{?suse_version}
|
||||
%service_del_postun %{name}.service
|
||||
%endif
|
||||
fi
|
||||
fi
|
||||
|
||||
%posttrans
|
||||
# get current system ip
|
||||
NET_IP="$( hostname -I | cut -d " " -f1 )"
|
||||
|
||||
echo "---> For configuration, visit with your browser: ${NET_IP}:8090"
|
||||
echo "---> or if already used by another service try: ${NET_IP}:8091"
|
||||
echo "-----------------------------------------------------------------------------"
|
||||
echo "Webpage: www.hyperion-project.org"
|
||||
echo "Forum: www.hyperion-project.org"
|
||||
echo "Documentation: docs.hyperion-project.org"
|
||||
echo "-----------------------------------------------------------------------------"
|
||||
|
||||
%files
|
||||
%defattr(-,-,root)
|
||||
%{_bindir}/*
|
||||
%{_datadir}/%{name}/
|
||||
%exclude %{_datadir}/%{name}/service/%{name}.init
|
||||
%exclude %{_datadir}/%{name}/service/%{name}.initctl
|
||||
|
||||
%changelog
|
Reference in New Issue
Block a user