From 76a857c71b5cc4c329645474ba1095da2a048652 Mon Sep 17 00:00:00 2001 From: Bernardo Meurer Date: Wed, 9 Nov 2022 11:18:38 -0500 Subject: [PATCH] hqplayerd: 4.32.4 -> 4.33.0 --- ...d-option-for-installation-sysconfdir.patch | 35 ++++++ pkgs/servers/hqplayerd/default.nix | 24 ++-- pkgs/servers/hqplayerd/rygel.nix | 108 ++++++++++++++++++ 3 files changed, 160 insertions(+), 7 deletions(-) create mode 100644 pkgs/servers/hqplayerd/add-option-for-installation-sysconfdir.patch create mode 100644 pkgs/servers/hqplayerd/rygel.nix diff --git a/pkgs/servers/hqplayerd/add-option-for-installation-sysconfdir.patch b/pkgs/servers/hqplayerd/add-option-for-installation-sysconfdir.patch new file mode 100644 index 00000000000..d2319ec13ed --- /dev/null +++ b/pkgs/servers/hqplayerd/add-option-for-installation-sysconfdir.patch @@ -0,0 +1,35 @@ +diff --git a/meson.build b/meson.build +index 8af2fcf9..0e318307 100644 +--- a/meson.build ++++ b/meson.build +@@ -22,7 +22,11 @@ if not get_option('uninstalled') + rygel_datadir = join_paths(get_option('prefix'), get_option('datadir'), 'rygel') + rygel_libexecdir = join_paths(get_option('prefix'), get_option('libexecdir'), + 'rygel') +- rygel_sysconfdir = join_paths(get_option('prefix'), get_option('sysconfdir')) ++ if get_option('sysconfdir_install') != '' ++ rygel_sysconfdir = join_paths(get_option('prefix'), get_option('sysconfdir_install')) ++ else ++ rygel_sysconfdir = join_paths(get_option('prefix'), get_option('sysconfdir')) ++ endif + rygel_plugindir = join_paths(rygel_libdir, 'rygel-2.6', 'plugins') + rygel_enginedir = join_paths(rygel_libdir, 'rygel-2.6', 'engines') + rygel_presetdir = join_paths(rygel_datadir, 'presets') +@@ -57,7 +61,7 @@ conf.set_quoted('DATA_DIR', rygel_datadir) + conf.set_quoted('PLUGIN_DIR', rygel_plugindir) + conf.set_quoted('BIG_ICON_DIR', rygel_bigicondir) + conf.set_quoted('SMALL_ICON_DIR', rygel_smallicondir) +-conf.set_quoted('SYS_CONFIG_DIR', rygel_sysconfdir) ++conf.set_quoted('SYS_CONFIG_DIR', get_option('sysconfdir')) + conf.set_quoted('LOCALEDIR', join_paths(get_option('prefix'), get_option('localedir'))) + conf.set_quoted('MX_EXTRACT_PATH', join_paths(rygel_libexecdir, 'mx-extract')) + conf.set_quoted('DESKTOP_DIR', join_paths(get_option('prefix'), get_option('datadir'), 'applications')) +diff --git a/meson_options.txt b/meson_options.txt +index fd04776a..3dee43ba 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -1,3 +1,4 @@ ++option('sysconfdir_install', type: 'string', value: '', description: 'sysconfdir to use during installation') + option('uninstalled', type: 'boolean', value: 'false', description: 'Run Rygel from build directory only') + option('api-docs', type: 'boolean', value: 'false', description: 'Build the API documentation') + option('man_pages', type: 'boolean', value: 'true', description: 'Build the man pages') diff --git a/pkgs/servers/hqplayerd/default.nix b/pkgs/servers/hqplayerd/default.nix index 37b60ce56aa..1b312218aed 100644 --- a/pkgs/servers/hqplayerd/default.nix +++ b/pkgs/servers/hqplayerd/default.nix @@ -6,27 +6,33 @@ , fetchurl , flac , gcc12 -, gnome , gssdp , gupnp , gupnp-av , lame , libgmpris , libusb-compat-0_1 -, llvmPackages_10 +, llvmPackages_14 , meson , mpg123 , ninja , rpmextract , wavpack -}: + +, callPackage +, rygel ? null +}@inputs: +let + # FIXME: Replace with gnome.rygel once hqplayerd releases a new version. + rygel-hqplayerd = inputs.rygel or (callPackage ./rygel.nix { }); +in stdenv.mkDerivation rec { pname = "hqplayerd"; - version = "4.32.4-94sse42"; + version = "4.33.0-96sse42"; src = fetchurl { url = "https://www.signalyst.eu/bins/${pname}/fc36/${pname}-${version}.fc36.x86_64.rpm"; - hash = "sha256-hTckJdZzD/Sx/uV30dlGiT46QvzIGp6BQdNNRlQ/Mgw="; + hash = "sha256-4gPK31XMd5JUp2+il1Qa7r0EaXVGEvKoYLNGSD2dLUs="; }; unpackPhase = '' @@ -40,14 +46,14 @@ stdenv.mkDerivation rec { cairo flac gcc12.cc.lib - gnome.rygel + rygel-hqplayerd gssdp gupnp gupnp-av lame libgmpris libusb-compat-0_1 - llvmPackages_10.openmp + llvmPackages_14.openmp mpg123 wavpack ]; @@ -106,6 +112,10 @@ stdenv.mkDerivation rec { $out/bin/hqplayerd --version ''; + passthru = { + rygel = rygel-hqplayerd; + }; + meta = with lib; { homepage = "https://www.signalyst.com/custom.html"; description = "High-end upsampling multichannel software embedded HD-audio player"; diff --git a/pkgs/servers/hqplayerd/rygel.nix b/pkgs/servers/hqplayerd/rygel.nix new file mode 100644 index 00000000000..c09fb5450f3 --- /dev/null +++ b/pkgs/servers/hqplayerd/rygel.nix @@ -0,0 +1,108 @@ +{ lib, stdenv +, fetchurl +, meson +, ninja +, pkg-config +, vala +, gettext +, libxml2 +, gobject-introspection +, wrapGAppsHook +, python3 +, glib +, gssdp +, gupnp +, gupnp-av +, gupnp-dlna +, gst_all_1 +, libgee +, libsoup +, gtk3 +, libmediaart +, sqlite +, systemd +, tracker +, shared-mime-info +, gnome +}: + +stdenv.mkDerivation rec { + pname = "rygel"; + version = "0.40.4"; + + # TODO: split out lib + outputs = [ "out" "dev" ]; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "c22K2+hhX2y8j8//mEXcmF/RDhZinaI2tLUtvt8KNIs="; + }; + + patches = [ + ./add-option-for-installation-sysconfdir.patch + ]; + + nativeBuildInputs = [ + meson + ninja + pkg-config + vala + gettext + libxml2 + gobject-introspection + wrapGAppsHook + python3 + ]; + + buildInputs = [ + glib + gssdp + gupnp + gupnp-av + gupnp-dlna + libgee + libsoup + gtk3 + libmediaart + sqlite + systemd + tracker + shared-mime-info + ] ++ (with gst_all_1; [ + gstreamer + gst-editing-services + gst-plugins-base + gst-plugins-good + gst-plugins-bad + gst-plugins-ugly + ]); + + mesonFlags = [ + "-Dsystemd-user-units-dir=${placeholder "out"}/lib/systemd/user" + "-Dapi-docs=false" + "--sysconfdir=/etc" + "-Dsysconfdir_install=${placeholder "out"}/etc" + ]; + + doCheck = true; + + postPatch = '' + patchShebangs data/xml/process-xml.py + ''; + + passthru = { + updateScript = gnome.updateScript { + packageName = pname; + attrPath = "gnome.${pname}"; + versionPolicy = "odd-unstable"; + }; + }; + + meta = with lib; { + description = "A home media solution (UPnP AV MediaServer) that allows you to easily share audio, video and pictures to other devices"; + homepage = "https://wiki.gnome.org/Projects/Rygel"; + license = licenses.lgpl21Plus; + maintainers = teams.gnome.members; + platforms = platforms.linux; + }; +}