R

Radiotray-ng Gentoo ebuild

📻 Radiotray-ng Gentoo ebuild

Ebuild для Gentoo Linux интернет-радиоплеера Radiotray-ng

🖼️ Скриншот

Radiotray-ng в системном трее


📋 Доступные версии

Ebuild Описание
radiotray-ng-0.2.10.1.ebuild Оригинальный ebuild (r0)
radiotray-ng-0.2.10.1-r1.ebuild Первая ревизия
radiotray-ng-0.2.10.1-r3.ebuild Рефакторинг: cmake+xdg, ncurses, PATCHES
radiotray-ng-0.2.10.1-r4.ebuild L10N, GCC 15/glibmm-2.88 совместимость
radiotray-ng-0.2.10.1-r5.ebuild +дефолтные закладки Jungle
radiotray-ng-0.2.10.1-r6.ebuild playbin fallback (playbin → playbin3)
radiotray-ng-0.2.10.1-r7.ebuild 🔥 Рекомендуемая — buffering fix + souphttpsrc timeout=0
radiotray-ng-9999.ebuild Live-сборка из git (dev-образ)

🚀 Установка

# С локализацией (рекомендуется)
echo 'L10N="ru"' >> /etc/portage/make.conf
USE="appindicator ncurses l10n_ru" emerge media-sound/radiotray-ng

# Без локализации
USE="appindicator" emerge media-sound/radiotray-ng

# Только ncurses (без трея)
USE="ncurses" emerge media-sound/radiotray-ng

# Live-версия из git
USE="appindicator ncurses l10n_ru" emerge media-sound/radiotray-ng::p01ymer-tank

⚙️ USE-флаги (r7/9999)

Флаг По умолч. Описание
appindicator ✅ Вкл Трей через libayatana-appindicator
ncurses ❌ Выкл Консольный интерфейс (без трея)
test ❌ Выкл Модульные тесты (gtest)
l10n_ru ❌ Выкл 🌐 Русская локализация

Требуется хотя бы один из appindicator / ncurses.


🌐 Русская локализация (r5)

  • gettext — основной интерфейс (GTK appindicator + ncurses)
  • wxLocale — редактор закладок (wxWidgets)
  • po/ru.po — 87 строк, полный перевод
  • Переведены: .desktop, .appdata.xml

Включение:

echo 'L10N="ru"' >> /etc/portage/make.conf   # если не указано
echo 'media-sound/radiotray-ng l10n_ru' >> /etc/portage/package.use

🔧 Исправления QA (r5)

Проблема Решение
Pre-stripped binaries (-s флаг) Убран из CMAKE_CXX_FLAGS_RELEASE
Неправильный doc-path Убран install из package/CMakeLists.txt
Debian changelog Убран из установки

📻 Исправления livestream (r7)

Два патча, решающие проблему зависания и перезапуска интернет-радио:

buffering-fix.patch

Оригинальный radiotray-ng при GST_MESSAGE_BUFFERING < 100% ставит pipeline на PAUSE и ждёт 100%. Livestream редко достигает 100% буферизации → пайплайн зависает в PAUSE → 10-секундный таймер срабатывает → перезапуск → цикл.

Исправление: на первом BUFFERING pipeline сразу переводится в GST_STATE_PLAYING. Любой висящий таймер перезапуска отменяется.

iradio-mode.patch

Встроенный souphttpsrc GStreamer имеет timeout=15 секунд для блокирующего I/O. Когда стрим живёт дольше 15 секунд, элемент пытается переподключиться, отправляя Range HTTP-заголовок. Серверы радиостанций (DNBRadio, drumbase.space) его не поддерживают → GST_RESOURCE_ERROR_SEEK → dropped connection.

Исправление: через сигнал source-setup на playbin выставляется timeout=0 на внутреннем souphttpsrc, отключая I/O-таймаут.

Проверено: DNBRadio и drumbase.space играют без ошибок 2+ минут.

🛠️ Совместимость с GCC 15 и glibmm-2.68/2.88

Начиная с GCC 15 и glibmm-2.68/giomm-2.88 исходный код radiotray-ng требует исправлений:

Проблема Причина Решение
error: 'bind2nd' is not a member of 'std' bind2nd/not1 удалены в C++17 Патч: C++14 → C++17
Новые предупреждения становятся ошибками GCC 15 строже Патч: убран -Werror
#include <glibmm.h> не найден glibmm 2.68 требует модульные инклюды Патч: заменён на <glibmm/…>
BUS_TYPE_SESSION is not a member of BusType giomm 2.68 переименовал enum values sed в src_prepare()

📦 Зависимости (r7/9999)

appindicator? ( dev-libs/libayatana-appindicator )
!appindicator? ( sys-libs/ncurses:0= )

RDEPEND:
  dev-cpp/glibmm
  dev-libs/boost
  dev-libs/jsoncpp:=
  dev-libs/libbsd
  dev-libs/libxdg-basedir
  media-libs/gstreamer:1.0
  media-libs/gst-plugins-base:1.0
  net-misc/curl
  sys-apps/dbus
  x11-libs/gtk+:3
  x11-libs/libnotify
  x11-libs/wxGTK:3.2-gtk3[X]

DEPEND:
  virtual/libintl
  test? ( dev-cpp/gtest )

BDEPEND:
  dev-build/cmake
  virtual/pkgconfig
  sys-devel/gettext

📜 История изменений

Полный changelog: CHANGELOG.md

Версия Дата Изменения
r7 2026-07-15 🔥 buffering fix + souphttpsrc timeout=0 (livestream стабильность)
r6 2026-07-15 playbin fallback (playbin3 → playbin)
r5 2026-07-14 +дефолтные закладки Jungle
r4 2026-07-14 L10N, GCC 15/glibmm-2.88 совместимость
r3 — Рефакторинг, ncurses, PATCHES
r1 — Первая ревизия
r0 — Оригинальный ebuild

🔗 Ссылки