diff options
| author | root <root@alpha.trunkmasters.com> | 2026-06-12 19:09:37 -0500 |
|---|---|---|
| committer | root <root@alpha.trunkmasters.com> | 2026-06-12 19:09:37 -0500 |
| commit | b590c8d7572b727d565cc0b8ff660d43569845de (patch) | |
| tree | 06f7a4102ea4e845df8b66660f252920d52952f9 /media-tv | |
| parent | 24f9cbfc4c34fdb6a6e03311674414e881ceab47 (diff) | |
| download | baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.tar.gz baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.tar.xz baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.zip | |
Adding metadata
Diffstat (limited to 'media-tv')
112 files changed, 7996 insertions, 0 deletions
diff --git a/media-tv/channeleditor/Manifest b/media-tv/channeleditor/Manifest new file mode 100644 index 000000000000..0da8d2b83835 --- /dev/null +++ b/media-tv/channeleditor/Manifest @@ -0,0 +1 @@ +DIST channeleditor_1.9.2.1_src.tar.gz 317608 BLAKE2B 26afc8d08a525f26c942fda20eb8ed63ff973bc112743edb80043ef9f2bd78f34dc4b2ef7ad60110b624dbfa6e2058a41e945b616d2ca587acffefe5b15b583e SHA512 84147868aa8b1aacf4ef31a7665822bc7ccd4f7372aaa040aacd8ee42581db1d67092b6b09cda6e447bae2c058fe4ceaab28f3e2a268a54dc5ac25452e64d7d9 diff --git a/media-tv/channeleditor/channeleditor-1.9.2.1-r4.ebuild b/media-tv/channeleditor/channeleditor-1.9.2.1-r4.ebuild new file mode 100644 index 000000000000..47ea0cf6035b --- /dev/null +++ b/media-tv/channeleditor/channeleditor-1.9.2.1-r4.ebuild @@ -0,0 +1,50 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +JAVA_PKG_IUSE="doc source" + +inherit desktop java-pkg-2 java-pkg-simple xdg + +DESCRIPTION="Editor for VDR channels.conf" +HOMEPAGE="https://sites.google.com/site/reniershomepage/channeleditor" +SRC_URI="https://downloads.sourceforge.net/project/channeleditor/channeleditor/$(ver_cut 1-3)/${P/-/_}_src.tar.gz" + +S="${WORKDIR}/${PN}" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="amd64 x86" + +RDEPEND=">=virtual/jre-1.8:*" +DEPEND=">=virtual/jdk-1.8:*" + +PATCHES=( + # include localisation changes + "${FILESDIR}"/${P}-messages.properties.patch + "${FILESDIR}"/${P}-messages_en.properties.patch +) + +JAVA_RESOURCE_DIRS="resources/src/java" +JAVA_SRC_DIR="src" + +src_prepare() { + default #780585 + java-pkg-2_src_prepare + + xdg_environment_reset + + JAVA_MAIN_CLASS="$(grep Main build/MANIFEST.MF | cut -d' ' -f2 | tr -cd [:print:])" + + # java-pkg-simple expects resources in JAVA_RESOURCE_DIRS + mkdir -p resources || die + find src -type f ! -name '*.java' \ + ! -name 'README' ! -name 'COPYRIGHT' \ + | xargs cp --parent -t resources || die +} + +src_install() { + java-pkg-simple_src_install + make_desktop_entry channeleditor Channeleditor "" "Utility" +} diff --git a/media-tv/channeleditor/files/channeleditor-1.9.2.1-messages.properties.patch b/media-tv/channeleditor/files/channeleditor-1.9.2.1-messages.properties.patch new file mode 100644 index 000000000000..9459b004cea7 --- /dev/null +++ b/media-tv/channeleditor/files/channeleditor-1.9.2.1-messages.properties.patch @@ -0,0 +1,377 @@ +--- trunk/src/java/de/renier/vdr/channel/editor/messages.properties 2008/06/18 07:43:28 10 ++++ trunk/src/java/de/renier/vdr/channel/editor/messages.properties 2008/06/23 07:01:09 12 +@@ -1,187 +1,187 @@ +-ChannelParkingPanel.0=Dient zur Ablage von Kan\u00E4len. +-ChannelParkingPanel.2=Parkplatz l\u00F6schen +-ChannelListingPanel.0=Leere Liste +-ChannelDeletedPanel.0=Liste gel\u00F6schter Kan\u00E4le, Dient zur Wiederherstellung. +-ChannelDeletedPanel.2=Eintr\u00E4ge in L\u00F6schliste endg\u00FCltig l\u00F6schen +-ChannelEditor.10=Markierte oder Alle Kan\u00E4le vom Parkplatz zum aktuel markierten Kanal im Baum verschieben +-ChannelEditor.11=Markierte Kan\u00E4le entfernen +-ChannelEditor.12=Neuen Kanal anlegen +-ChannelEditor.13=Neue Rubrik anlegen +-ChannelEditor.14=Mehrfaches Umbennen der Kanalnamen - Vorranstellen eines Textes +-ChannelEditor.15=Aktuelle Statistik +-ChannelEditor.16=\u00FCber diese Anwendung +-ChannelEditor.17=Parkplatz +-ChannelEditor.19=L\u00F6schliste +-ChannelEditor.21=Letze Dateien +-ChannelEditor.23=Tools +-ChannelEditor.24=Kanaleditor f\u00FCr VDR +-ChannelEditor.25=ChannelEditor +-ChannelPropertyPanel.0=Name: +-ChannelPropertyPanel.1=Frequenz: +-ChannelPropertyPanel.2=Quelle: +-ChannelPropertyPanel.3=Parameter: +-ChannelPropertyPanel.4=Symbolrate: +-ChannelPropertyPanel.5=jPanel +-ChannelPropertyPanel.6=VPID: +-ChannelPropertyPanel.7=APID: +-ChannelPropertyPanel.8=TPID: +-ChannelPropertyPanel.9=SID: +-ChannelListingPanel.10=Sortieren +-ChannelPropertyPanel.10=TID: +-ChannelPropertyPanel.11=CA-ID: +-ChannelPropertyPanel.12=NID: +-ChannelPropertyPanel.13=RID: +-ChannelPropertyPanel.14= +-ChannelPropertyPanel.15=Bouqet: +-ChannelPropertyPanel.16=Startnr. (@): +-ChannelPropertyPanel.17=Alias: +-ChannelPropertyPanel.18=Kann \u00FCber Menu exportiert werden. +-ChannelPropertyPanel.19=jPanel1 +-ChannelPropertyPanel.24=\u00C4nderungen \u00FCbernehmen +-ChannelSearchInputDialog.0=Kanalsuche +-ChannelSearchInputDialog.1=<html><body>Suchbegriff eingeben (Gesucht wird ein teil innerhalb des ausgew\u00E4hlten Feldes)<br>Die Suche startet vom zuletzt markierten Knoten und findet nur Kan\u00E4le die sich unterhalb dieses Knotens befinden.</body></html> +-ChannelSearchInputDialog.2=Suchbegriff: +-ChannelSearchInputDialog.3=<html><body><u>Suche in</u></body></html> +-ChannelSearchInputDialog.4=Frequenz: +-ChannelSearchInputDialog.5=Parameter: +-ChannelSearchInputDialog.6=Quelle: +-ChannelSearchInputDialog.7=Symbolrate: +-ChannelSearchInputDialog.8=Pidfelder: +-ChannelSearchInputDialog.9=Suchparameter +-ChannelSearchInputDialog.10=Name: +-ChannelSearchInputDialog.11=Bouqet: +-ChannelSearchInputDialog.12=Suchen +-ChannelSearchInputDialog.14=Suchbegriff darf nicht leer sein\! +-ChannelSearchInputDialog.15=Mindestens ein Suchbereich muss angegeben sein\! +-ChannelSearchInputDialog.16=Abbrechen +-PreferencesDialog.0=Lokale Einstellungen +-PreferencesDialog.1=Speichern +-PreferencesDialog.3=Abbrechen +-PreferencesDialog.5=Icon Layout: +-PreferencesDialog.6=Font gr\u00F6sse (Kan\u00E4le): +-PreferencesDialog.7=(0 = default) +-PreferencesDialog.8=Sprache: +-PreferencesAction.0=Einstellungen +-CreateChannelDialog.0=Neuen Kanal anlegen +-CreateChannelDialog.1=<html><body>Bitte geben sie alle notwendigen Kanalinformationen an.<br><u>ACHTUNG</u> \u00E4ltere VDR Versionen k\u00F6nnen keine doppelten Kan\u00E4le in der Liste einlesen\!</body></html> +-CreateChannelDialog.2=Kanal anlegen +-CreateChannelDialog.4=Es muss mindestens der Kanalname angegeben werden. +-CreateChannelDialog.5=Abbrechen +-CreateChannelAction.0=Neuen Kanal erzeugen +-CreateCategoryAction.0=Neue Rubrik erzeugen +-CreateCategoryAction.2=Bitte Name f\u00FCr neu zu erstellende Rubrik eingeben: +-CreateCategoryAction.3=Neue Rubrik +-ChannelEditor.0=Nichts selektiert +-ChannelEditor.1=File +-ChannelEditor.2=Info +-ChannelEditor.3=Anwendung beenden +-ChannelEditor.4=Kanalliste \u00F6ffnen +-ChannelEditor.5=Aktuelle Kanalliste speichern +-ChannelEditor.6=Aktuelle Kanalliste speichern unter.. +-ChannelEditor.7=\u00F6ffne Lokale Einstellungen +-ChannelEditor.8=Kanal suchen +-ChannelEditor.9=Markierte Kan\u00E4le auf den Parkplatz verschieben +-ImportAliasAction.0=Alias Importieren +-ImportAliasAction.2=Es wurden +-ImportAliasAction.3=\ alias Eintr\u00E4ge aus dem File ' +-ImportAliasAction.4=' gelesen.\n\n +-ImportAliasAction.5=\ konnten davon Kan\u00E4len zugeordnet werden.\n +-ImportAliasAction.6=Das angegebene File:\n\n +-ImportAliasAction.7=\n\nkonnte nicht ge\u00F6ffnet werden.\n\n\n +-SortNameAction.0=nach Namen +-SortTypeAction.0=nach TV +-SortTypeAction.1=nach TV Verschl\u00FCsselt +-SortTypeAction.2=nach Radio +-SortTypeAction.3=nach Radio Verschl\u00FCssellt +-SortTypeAction.4=nach Service +-SortTypeAction.5=nach Service Verschl\u00FCssellt +-SortTypeAction.6=not supported +-SortBouqetAction.0=nach Bouqet +-SortFrequenzAction.0=nach Frequenz +-OpenAction.0=\u00F6ffnen +-OpenAction.2=\u00C4nderungen wurden nicht gespeichert. Wirklich neues File \u00F6ffnen? +-OpenAction.3=Info +-OpenAction.5=Configuration Files +-OpenAction.6=Das angegebene File:\n\n +-OpenAction.7=\n\nkonnte nicht ge\u00F6ffnet werden.\n\n\n +-ParkAction.0=Parken +-SaveAsAction.0=Speichern unter +-SaveAsAction.3=Configuration Files +-SaveAsAction.4=File ' +-SaveAsAction.5=' existiert bereits.\nSoll die Liste trotzdem gespeichert werden (Datei wird \u00FCberschrieben)? +-SaveAsAction.6=Info +-SaveAsAction.7=Fehler beim Speichern unter: +-SaveAsAction.8= +-SaveAsAction.9=\nError message: +-SaveAction.0=Speichern +-SaveAction.2=Fehler beim Speichern nach: +-SaveAction.3=\nError message: +-SaveAction.4=Error +-SaveAsAction.10=Error +-StatisticAction.0=Statistik +-StatisticAction.4=<html><body> +-StatisticAction.5=<h1>Statistik der Kanalliste</h1> +-StatisticAction.6=<h3><u>Fileinformationen:</u></h3> +-StatisticAction.7=<table> +-StatisticAction.8=<tr><td><font color=green>Geladenes File</font></td><td><font color=blue> +-StatisticAction.9=</font></td></tr> +-StatisticAction.10=<tr><td><font color=green>Filepfad</font></td><td><font color=blue> +-StatisticAction.11=</font></td></tr> +-StatisticAction.12=<tr><td><font color=green>Filegr\u00F6sse</font></td><td><font color=blue> +-StatisticAction.13=\ Byte</font></td></tr> +-StatisticAction.14=</table> +-StatisticAction.15=<h3><u>Kanalinformationen:</u></h3> +-StatisticAction.16=<table> +-StatisticAction.17=<tr><td><font color=green>Anzahl Kan\u00E4le insgesamt</font></td><td><font color=blue> +-StatisticAction.18=</font></td></tr> +-StatisticAction.19=<tr><td><font color=green>davon Rubriken</font></td><td><font color=blue> +-StatisticAction.20=</font></td></tr> +-StatisticAction.21=<tr><td><font color=green>davon TV</font></td><td><font color=blue> +-StatisticAction.22=</font></td></tr> +-StatisticAction.23=<tr><td><font color=green>davon Radio</font></td><td><font color=blue> +-StatisticAction.24=</font></td></tr> +-StatisticAction.25=<tr><td><font color=green>davon Service</font></td><td><font color=blue> +-StatisticAction.26=</font></td></tr> +-StatisticAction.27=<tr><td><font color=green>Neue Filegr\u00F6sse</font></td><td><font color=blue> +-StatisticAction.28=\ Byte</font></td></tr> +-StatisticAction.29=</table> +-StatisticAction.30=</body></html> +-StatisticAction.31=Statistik +-UnparkAction.0=Entparken +-ExportAliasAction.0=Alias Exportieren +-ExportAliasAction.2=File ' +-ExportAliasAction.3=' existiert bereits.\nSoll die Aliasliste trotzdem gespeichert werden (Datei wird \u00FCberschrieben)? +-ExportAliasAction.4=Info +-ExportAliasAction.6=Es wurden +-ExportAliasAction.7=\ Alias Eintr\u00E4ge gespeichert. +-ExportAliasAction.8=Fehler beim Speichern unter: +-ExportAliasAction.10=\nError message: +-ExportAliasAction.11=Error +-DeleteChannelAction.0=Entfernen +-CloseAction.0=Beenden +-CloseAction.2=Ihr Parkplatz ist noch gef\u00FCllt\nDiese Inhalte gehen nach dem beenden verloren.\n\nMit dem beenden Vortfahren? +-CloseAction.3=Info +-CloseAction.4=\u00C4nderungen wurden nicht gespeichert. Wirklich beenden? +-CloseAction.5=Info +-SearchAction.0=Suchen +-SearchAction.2=Es konnte kein Kanal gefunden werden\!\nSuchbegriff: +-SearchAction.3=Suchergebnis +-AboutAction.0=\u00DCber +-AboutAction.2=<html><body> +-AboutAction.3=<h1>Kanaleditor f\u00FCr VDR Version 1.9.2.1</h1> +-AboutAction.4=<p>Editor f\u00FCr die VDR Channel Files.<br> +-AboutAction.5=F\u00FCr Datenverlust oder Besch\u00E4digung wird keinerlei Haftung \u00FCbernommen</p><br> +-AboutAction.6=<hr> +-AboutAction.7=<p>Copyright(C) 2007 by Renier Roth</p> +-AboutAction.8=<p>Released under the terms of the GNU General Public License version 2 or later.</p> +-AboutAction.11=<br><p><font size=-2>Icons Copyright(C) 1998 by Dean S. Jones dean@gallant.com www.gallant.com/icons.htm</font></p> +-AboutAction.12=</body></html> +-AboutAction.13=About +-MultiRenameAction.0=Kanalnamen umbenennen +-MultiRenameAction.2=Funktion zum vorranstellen eines Textes\nzu jedem Kanalnahmen innerhalb der zuletzt markierten Rubrik\n\nWird vom Hauptknoten ausgegangen werden alle Kan\u00E4le umbenannt.\n\nBitte Text eingeben, der vor dem Kanalnamen gestellt werden soll: +-MultiRenameAction.3=Mehrfach Umbenennung +-LocalProperties.5=Lokale Einstellungen +-LocalProperties.6=Lokale einstellungen konnten nicht geladen werden\! +-LocalProperties.10=ChannelEditor Property File +-LocalProperties.11=Lokale Einstellungen +-LocalProperties.12=Lokale Einstellungen k\u00F6nnen nicht gespeichert werden\! ++ChannelParkingPanel.0=Dient zur Ablage von Kan\u00E4len.
++ChannelParkingPanel.2=Parkplatz l\u00F6schen
++ChannelListingPanel.0=Leere Liste
++ChannelDeletedPanel.0=Liste gel\u00F6schter Kan\u00E4le. Dient zur Wiederherstellung.
++ChannelDeletedPanel.2=Eintr\u00E4ge in L\u00F6schliste endg\u00FCltig l\u00F6schen
++ChannelEditor.10=Markierte oder Alle Kan\u00E4le vom Parkplatz zum aktuell markierten Kanal im Baum verschieben
++ChannelEditor.11=Markierte Kan\u00E4le entfernen
++ChannelEditor.12=Neuen Kanal anlegen
++ChannelEditor.13=Neue Rubrik anlegen
++ChannelEditor.14=Mehrfaches Umbenennen der Kanalnamen - Vorranstellen eines Textes
++ChannelEditor.15=Aktuelle Statistik
++ChannelEditor.16=\u00DCber diese Anwendung
++ChannelEditor.17=Parkplatz
++ChannelEditor.19=L\u00F6schliste
++ChannelEditor.21=Letzte Dateien
++ChannelEditor.23=Werkzeuge
++ChannelEditor.24=Kanaleditor f\u00FCr VDR
++ChannelEditor.25=ChannelEditor
++ChannelPropertyPanel.0=Name:
++ChannelPropertyPanel.1=Frequenz:
++ChannelPropertyPanel.2=Quelle:
++ChannelPropertyPanel.3=Parameter:
++ChannelPropertyPanel.4=Symbolrate:
++ChannelPropertyPanel.5=jPanel
++ChannelPropertyPanel.6=VPID:
++ChannelPropertyPanel.7=APID:
++ChannelPropertyPanel.8=TPID:
++ChannelPropertyPanel.9=SID:
++ChannelListingPanel.10=Sortieren
++ChannelPropertyPanel.10=TID:
++ChannelPropertyPanel.11=CA-ID:
++ChannelPropertyPanel.12=NID:
++ChannelPropertyPanel.13=RID:
++ChannelPropertyPanel.14=
++ChannelPropertyPanel.15=Bouquet:
++ChannelPropertyPanel.16=Startnr. (@):
++ChannelPropertyPanel.17=Alias:
++ChannelPropertyPanel.18=Kann \u00FCber Menu exportiert werden.
++ChannelPropertyPanel.19=jPanel1
++ChannelPropertyPanel.24=\u00C4nderungen \u00FCbernehmen
++ChannelSearchInputDialog.0=Kanalsuche
++ChannelSearchInputDialog.1=<html><body>Suchbegriff eingeben (Gesucht wird ein Teil innerhalb des ausgew\u00E4hlten Feldes)<br>Die Suche startet vom zuletzt markierten Knoten und findet nur Kan\u00E4le die sich unterhalb dieses Knotens befinden.</body></html>
++ChannelSearchInputDialog.2=Suchbegriff:
++ChannelSearchInputDialog.3=<html><body><u>Suche in</u></body></html>
++ChannelSearchInputDialog.4=Frequenz:
++ChannelSearchInputDialog.5=Parameter:
++ChannelSearchInputDialog.6=Quelle:
++ChannelSearchInputDialog.7=Symbolrate:
++ChannelSearchInputDialog.8=Pidfelder:
++ChannelSearchInputDialog.9=Suchparameter
++ChannelSearchInputDialog.10=Name:
++ChannelSearchInputDialog.11=Bouquet:
++ChannelSearchInputDialog.12=Suchen
++ChannelSearchInputDialog.14=Suchbegriff darf nicht leer sein\!
++ChannelSearchInputDialog.15=Mindestens ein Suchbereich muss angegeben sein\!
++ChannelSearchInputDialog.16=Abbrechen
++PreferencesDialog.0=Lokale Einstellungen
++PreferencesDialog.1=Speichern
++PreferencesDialog.3=Abbrechen
++PreferencesDialog.5=Icon Layout:
++PreferencesDialog.6=Fontgr\u00F6sse (Kan\u00E4le):
++PreferencesDialog.7=(0 = default)
++PreferencesDialog.8=Sprache:
++PreferencesAction.0=Einstellungen
++CreateChannelDialog.0=Neuen Kanal anlegen
++CreateChannelDialog.1=<html><body>Bitte geben sie alle notwendigen Kanalinformationen an.<br><u>ACHTUNG</u> \u00E4ltere VDR Versionen k\u00F6nnen keine doppelten Kan\u00E4le einlesen\!</body></html>
++CreateChannelDialog.2=Kanal anlegen
++CreateChannelDialog.4=Es muss mindestens der Kanalname angegeben werden.
++CreateChannelDialog.5=Abbrechen
++CreateChannelAction.0=Neuen Kanal erzeugen
++CreateCategoryAction.0=Neue Rubrik erzeugen
++CreateCategoryAction.2=Bitte den Name f\u00FCr die neue Rubrik eingeben:
++CreateCategoryAction.3=Neue Rubrik
++ChannelEditor.0=Nichts selektiert
++ChannelEditor.1=Datei
++ChannelEditor.2=Info
++ChannelEditor.3=Anwendung beenden
++ChannelEditor.4=Kanalliste \u00F6ffnen
++ChannelEditor.5=Aktuelle Kanalliste speichern
++ChannelEditor.6=Aktuelle Kanalliste speichern unter..
++ChannelEditor.7=\u00D6ffne Lokale Einstellungen
++ChannelEditor.8=Kanal suchen
++ChannelEditor.9=Markierte Kan\u00E4le auf den Parkplatz verschieben
++ImportAliasAction.0=Alias Importieren
++ImportAliasAction.2=Es wurden
++ImportAliasAction.3=\ alias Eintr\u00E4ge aus dem File '
++ImportAliasAction.4=' gelesen.\n\n
++ImportAliasAction.5=\ konnten davon Kan\u00E4len zugeordnet werden.\n
++ImportAliasAction.6=Das angegebene File:\n\n
++ImportAliasAction.7=\n\nkonnte nicht ge\u00F6ffnet werden.\n\n\n
++SortNameAction.0=nach Namen
++SortTypeAction.0=nach TV
++SortTypeAction.1=nach TV Verschl\u00FCsselt
++SortTypeAction.2=nach Radio
++SortTypeAction.3=nach Radio Verschl\u00FCssellt
++SortTypeAction.4=nach Service
++SortTypeAction.5=nach Service Verschl\u00FCssellt
++SortTypeAction.6=not supported
++SortBouqetAction.0=nach Bouquet
++SortFrequenzAction.0=nach Frequenz
++OpenAction.0=\u00D6ffnen
++OpenAction.2=\u00C4nderungen wurden nicht gespeichert. Wirklich eine neue Datei \u00F6ffnen?
++OpenAction.3=Info
++OpenAction.5=Kanallisten
++OpenAction.6=Die angegebene Datei:\n\n
++OpenAction.7=\n\nkonnte nicht ge\u00F6ffnet werden.\n\n\n
++ParkAction.0=Parken
++SaveAsAction.0=Speichern unter
++SaveAsAction.3=Kanallisten
++SaveAsAction.4=Die Datei '
++SaveAsAction.5=' existiert bereits.\nSoll die Liste trotzdem gespeichert werden (Datei wird \u00FCberschrieben)?
++SaveAsAction.6=Info
++SaveAsAction.7=Fehler beim Speichern unter:
++SaveAsAction.8=
++SaveAsAction.9=\nError message:
++SaveAction.0=Speichern
++SaveAction.2=Fehler beim Speichern nach:
++SaveAction.3=\nError message:
++SaveAction.4=Error
++SaveAsAction.10=Error
++StatisticAction.0=Statistik
++StatisticAction.4=<html><body>
++StatisticAction.5=<h1>Statistik der Kanalliste</h1>
++StatisticAction.6=<h3><u>Dateiinformationen:</u></h3>
++StatisticAction.7=<table>
++StatisticAction.8=<tr><td><font color=green>Geladene Datei</font></td><td><font color=blue>
++StatisticAction.9=</font></td></tr>
++StatisticAction.10=<tr><td><font color=green>Dateipfad</font></td><td><font color=blue>
++StatisticAction.11=</font></td></tr>
++StatisticAction.12=<tr><td><font color=green>Dateigr\u00F6sse</font></td><td><font color=blue>
++StatisticAction.13=\ Byte</font></td></tr>
++StatisticAction.14=</table>
++StatisticAction.15=<h3><u>Kanalinformationen:</u></h3>
++StatisticAction.16=<table>
++StatisticAction.17=<tr><td><font color=green>Anzahl Kan\u00E4le</font></td><td><font color=blue>
++StatisticAction.18=</font></td></tr>
++StatisticAction.19=<tr><td><font color=green>davon Rubriken</font></td><td><font color=blue>
++StatisticAction.20=</font></td></tr>
++StatisticAction.21=<tr><td><font color=green>davon TV</font></td><td><font color=blue>
++StatisticAction.22=</font></td></tr>
++StatisticAction.23=<tr><td><font color=green>davon Radio</font></td><td><font color=blue>
++StatisticAction.24=</font></td></tr>
++StatisticAction.25=<tr><td><font color=green>davon Service</font></td><td><font color=blue>
++StatisticAction.26=</font></td></tr>
++StatisticAction.27=<tr><td><font color=green>Neue Dateigr\u00F6sse</font></td><td><font color=blue>
++StatisticAction.28=\ Byte</font></td></tr>
++StatisticAction.29=</table>
++StatisticAction.30=</body></html>
++StatisticAction.31=Statistik
++UnparkAction.0=Entparken
++ExportAliasAction.0=Alias Exportieren
++ExportAliasAction.2=Die Datei '
++ExportAliasAction.3=' existiert bereits.\nSoll die Aliasliste trotzdem gespeichert werden (Datei wird \u00FCberschrieben)?
++ExportAliasAction.4=Info
++ExportAliasAction.6=Es wurden
++ExportAliasAction.7=\ Alias Eintr\u00E4ge gespeichert.
++ExportAliasAction.8=Fehler beim Speichern unter:
++ExportAliasAction.10=\nError message:
++ExportAliasAction.11=Error
++DeleteChannelAction.0=Entfernen
++CloseAction.0=Beenden
++CloseAction.2=Ihr Parkplatz ist noch gef\u00FCllt!\nDiese Inhalte gehen nach dem Beenden verloren.\n\nMit dem Beenden Fortfahren?
++CloseAction.3=Info
++CloseAction.4=\u00C4nderungen wurden nicht gespeichert. Wirklich beenden?
++CloseAction.5=Info
++SearchAction.0=Suchen
++SearchAction.2=Es konnte kein Kanal gefunden werden\!\nSuchbegriff:
++SearchAction.3=Suchergebnis
++AboutAction.0=\u00DCber
++AboutAction.2=<html><body>
++AboutAction.3=<h1>Kanaleditor f\u00FCr VDR Version 1.9.2.1</h1>
++AboutAction.4=<p>Editor f\u00FCr die VDR Kanalliste.<br>
++AboutAction.5=F\u00FCr Datenverlust oder Besch\u00E4digung wird keinerlei Haftung \u00FCbernommen.</p><br>
++AboutAction.6=<hr>
++AboutAction.7=<p>Copyright(C) 2007 by Renier Roth</p>
++AboutAction.8=<p>Released under the terms of the GNU General Public License version 2 or later.</p>
++AboutAction.11=<br><p><font size=-2>Icons Copyright(C) 1998 by Dean S. Jones dean@gallant.com www.gallant.com/icons.htm</font></p>
++AboutAction.12=</body></html>
++AboutAction.13=About
++MultiRenameAction.0=Kanalnamen umbenennen
++MultiRenameAction.2=Funktion zum Vorranstellen eines Textes\nzu jedem Kanalnahmen innerhalb der zuletzt markierten Rubrik.\n\nWird vom Hauptknoten ausgegangen werden alle Kan\u00E4le umbenannt.\n\nBitte Text eingeben, der vor den Kanalnamen gestellt werden soll:
++MultiRenameAction.3=Mehrfachumbenennung
++LocalProperties.5=Lokale Einstellungen
++LocalProperties.6=Lokale Einstellungen konnten nicht geladen werden\!
++LocalProperties.10=ChannelEditor Property File
++LocalProperties.11=Lokale Einstellungen
++LocalProperties.12=Lokale Einstellungen k\u00F6nnen nicht gespeichert werden\!
diff --git a/media-tv/channeleditor/files/channeleditor-1.9.2.1-messages_en.properties.patch b/media-tv/channeleditor/files/channeleditor-1.9.2.1-messages_en.properties.patch new file mode 100644 index 000000000000..5a01dff9755b --- /dev/null +++ b/media-tv/channeleditor/files/channeleditor-1.9.2.1-messages_en.properties.patch @@ -0,0 +1,160 @@ +--- trunk/src/java/de/renier/vdr/channel/editor/messages_en.properties 2008/06/18 07:43:28 10 ++++ trunk/src/java/de/renier/vdr/channel/editor/messages_en.properties 2008/06/23 07:01:09 12 +@@ -4,15 +4,15 @@ + ChannelDeletedPanel.0=Deleted channels (for recovery)
+ ChannelDeletedPanel.2=Clear removed channels
+ ChannelEditor.10=Move selected or clipboard items to selected tree
+-ChannelEditor.11=Remove selectedMarkierte Kan\u00E4le entfernen
++ChannelEditor.11=Remove selected
+ ChannelEditor.12=Add new channel
+ ChannelEditor.13=Add new category
+ ChannelEditor.14=Multiple channel rename - Add a text in front
+-ChannelEditor.15=Current statistic
++ChannelEditor.15=Current statistics
+ ChannelEditor.16=About
+ ChannelEditor.17=Clipboard
+ ChannelEditor.19=Removed channels
+-ChannelEditor.21=Letze Dateien
++ChannelEditor.21=Recent files
+ ChannelEditor.23=Tools
+ ChannelEditor.24=Channeleditor for VDR
+ ChannelEditor.25=Channeleditor
+@@ -32,10 +32,10 @@ + ChannelPropertyPanel.12=NID:
+ ChannelPropertyPanel.13=RID:
+ ChannelPropertyPanel.14=
+-ChannelPropertyPanel.15=Bouqet:
+-ChannelPropertyPanel.16=Startnumber. (@):
++ChannelPropertyPanel.15=Bouquet:
++ChannelPropertyPanel.16=Start number. (@):
+ ChannelPropertyPanel.17=Alias:
+-ChannelPropertyPanel.18=can be exported through menu
++ChannelPropertyPanel.18=Can be exported through menu
+ ChannelPropertyPanel.19=jPanel1
+ ChannelPropertyPanel.24=Apply
+ ChannelSearchInputDialog.0=Channel search
+@@ -49,7 +49,7 @@ + ChannelSearchInputDialog.8=Pidfield:
+ ChannelSearchInputDialog.9=Search parameter:
+ ChannelSearchInputDialog.10=Name:
+-ChannelSearchInputDialog.11=Bouqet:
++ChannelSearchInputDialog.11=Bouquet:
+ ChannelSearchInputDialog.12=Search
+ ChannelSearchInputDialog.14=Search term cannot be empty\!
+ ChannelSearchInputDialog.15=Enter at least one serch term\!
+@@ -63,9 +63,9 @@ + PreferencesDialog.8=Language:
+ PreferencesAction.0=Settings
+ CreateChannelDialog.0=Add new Channel
+-CreateChannelDialog.1=<html><body>Bitte geben sie alle notwendigen Kanalinformationen an.<br><u>ACHTUNG</u> \u00E4ltere VDR Versionen k\u00F6nnen keine doppelten Kan\u00E4le in der Liste einlesen\!</body></html>
++CreateChannelDialog.1=<html><body>Please enter the complete channel data.<br><u>WARNING</u> older VDR versions are not able to read duplicate channels from the list\!</body></html>
+ CreateChannelDialog.2=Add channel
+-CreateChannelDialog.4=Es muss mindestens der Kanalname angegeben werden.
++CreateChannelDialog.4=Enter at least the channel name.
+ CreateChannelDialog.5=Abort
+ CreateChannelAction.0=Create new channel
+ CreateCategoryAction.0=Create new category
+@@ -88,25 +88,25 @@ + ImportAliasAction.5=\ entrys could be assigned.\n
+ ImportAliasAction.6=The selected file:\n\n
+ ImportAliasAction.7=\n\ncould not be opened.\n\n\n
+-SortNameAction.0=after Name
+-SortTypeAction.0=after TV
+-SortTypeAction.1=after TV encrypted
+-SortTypeAction.2=after Radio
+-SortTypeAction.3=after Radio encrypted
+-SortTypeAction.4=after Service
+-SortTypeAction.5=after Service encrypted
++SortNameAction.0=by Name
++SortTypeAction.0=by TV
++SortTypeAction.1=by TV encrypted
++SortTypeAction.2=by Radio
++SortTypeAction.3=by Radio encrypted
++SortTypeAction.4=by Service
++SortTypeAction.5=by Service encrypted
+ SortTypeAction.6=not supported
+-SortBouqetAction.0=after Bouqet
+-SortFrequenzAction.0=after Frequency
++SortBouqetAction.0=by Bouquet
++SortFrequenzAction.0=by Frequency
+ OpenAction.0=Open
+ OpenAction.2=Nothing has been saved. Do you really want to open a new file?
+ OpenAction.3=Info
+-OpenAction.5=Configuration Files
++OpenAction.5=Channel lists
+ OpenAction.6=The selected file:\n\n
+ OpenAction.7=\n\ncould not be opened.\n\n\n
+ ParkAction.0=Clipboard
+ SaveAsAction.0=Save as
+-SaveAsAction.3=Configuration Files
++SaveAsAction.3=Channel lists
+ SaveAsAction.4=File '
+ SaveAsAction.5=' already exists.\nSave anyway? (old file will be overwritten)?
+ SaveAsAction.6=Info
+@@ -118,9 +118,9 @@ + SaveAction.3=\nError message:
+ SaveAction.4=Error
+ SaveAsAction.10=Error
+-StatisticAction.0=Statistic
++StatisticAction.0=Statistics
+ StatisticAction.4=<html><body>
+-StatisticAction.5=<h1>Statistic</h1>
++StatisticAction.5=<h1>Statistics</h1>
+ StatisticAction.6=<h3><u>File information:</u></h3>
+ StatisticAction.7=<table>
+ StatisticAction.8=<tr><td><font color=green>Loaded file</font></td><td><font color=blue>
+@@ -130,11 +130,11 @@ + StatisticAction.12=<tr><td><font color=green>Filesize</font></td><td><font color=blue>
+ StatisticAction.13=\ Byte</font></td></tr>
+ StatisticAction.14=</table>
+-StatisticAction.15=<h3><u>Channelinformation:</u></h3>
++StatisticAction.15=<h3><u>Channel information:</u></h3>
+ StatisticAction.16=<table>
+ StatisticAction.17=<tr><td><font color=green>Number of channels</font></td><td><font color=blue>
+ StatisticAction.18=</font></td></tr>
+-StatisticAction.19=<tr><td><font color=green>Categorys</font></td><td><font color=blue>
++StatisticAction.19=<tr><td><font color=green>Categories</font></td><td><font color=blue>
+ StatisticAction.20=</font></td></tr>
+ StatisticAction.21=<tr><td><font color=green>TV</font></td><td><font color=blue>
+ StatisticAction.22=</font></td></tr>
+@@ -146,7 +146,7 @@ + StatisticAction.28=\ Byte</font></td></tr>
+ StatisticAction.29=</table>
+ StatisticAction.30=</body></html>
+-StatisticAction.31=Statistic
++StatisticAction.31=Statistics
+ UnparkAction.0=Remove
+ ExportAliasAction.0=Export alias
+ ExportAliasAction.2=File '
+@@ -161,15 +161,15 @@ + CloseAction.0=Quit
+ CloseAction.2=Clipboard not empty. Elements will be lost after quitting. Quit anyway?
+ CloseAction.3=Info
+-CloseAction.4=Changes unsaved. Do you really want to quit?
++CloseAction.4=Changes not saved. Do you really want to quit?
+ CloseAction.5=Info
+ SearchAction.0=Search
+-SearchAction.2=No Channel could be found\!\nSearch term:
++SearchAction.2=No Channel found\!\nSearch term:
+ SearchAction.3=Search result
+ AboutAction.0=About
+ AboutAction.2=<html><body>
+ AboutAction.3=<h1>Channeleditor for VDR Version 1.9.2.1</h1>
+-AboutAction.4=<p>Editor for channels.conf File.<br>
++AboutAction.4=<p>Editor for the VDR channels.conf File.<br>
+ AboutAction.5=Use at your own risk!</p><br>
+ AboutAction.6=<hr>
+ AboutAction.7=<p>Copyright(C) 2007 by Renier Roth</p>
+@@ -178,10 +178,10 @@ + AboutAction.12=</body></html>
+ AboutAction.13=About
+ MultiRenameAction.0=Rename channel
+-MultiRenameAction.2=Function to add a text\nzu in front of each channel name in the last selected category. Each channel name in the last selected category\n\nIf root is selected, every channel will be renamed.\n\nPlease enter the text, which should be added:
++MultiRenameAction.2=Function to add a text\nin front of each channel name in the last selected category.\n\nIf the root knot is selected, every channel will be renamed.\n\nPlease enter the text, which should be added:
+ MultiRenameAction.3=Multiple rename
+ LocalProperties.5=Local settings
+ LocalProperties.6=Unable to load local settings\!
+-LocalProperties.10=Channelrditor property file
++LocalProperties.10=Channeleditor property file
+ LocalProperties.11=Local Settings
+ LocalProperties.12=Unable to save local settings\!
diff --git a/media-tv/channeleditor/metadata.xml b/media-tv/channeleditor/metadata.xml new file mode 100644 index 000000000000..bf7ae5023756 --- /dev/null +++ b/media-tv/channeleditor/metadata.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>billie@gentoo.org</email> + <name>Daniel Pielmeier</name> + </maintainer> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/media-tv/dtv-scan-tables/Manifest b/media-tv/dtv-scan-tables/Manifest new file mode 100644 index 000000000000..c1f6d02d03a6 --- /dev/null +++ b/media-tv/dtv-scan-tables/Manifest @@ -0,0 +1 @@ +DIST dtv-scan-tables-2022-04-30-57ed29822750.tar.bz2 277444 BLAKE2B dd9d74f5daa1633262e44329d3122231123255ecba4f944c8afb2ed1120e7319b371960a719622608f4059085adcd18644fdaeb27b38d233d18ed35b1d4bde80 SHA512 2f5b76bca43f2749c452978143dec6e069aa4ea6283ac9ceac95bb950dbc589b4ed9cec2874b16d31408790b17e25d48e82aa958ac9c4440b26b0dbcde25f0cb diff --git a/media-tv/dtv-scan-tables/dtv-scan-tables-0_p20220430.ebuild b/media-tv/dtv-scan-tables/dtv-scan-tables-0_p20220430.ebuild new file mode 100644 index 000000000000..04ab2d346626 --- /dev/null +++ b/media-tv/dtv-scan-tables/dtv-scan-tables-0_p20220430.ebuild @@ -0,0 +1,32 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +if [[ ${PV#9999} != ${PV} ]]; then + inherit git-r3 + EGIT_REPO_URI="https://git.linuxtv.org/dtv-scan-tables.git" +else + COMMIT="57ed29822750" + SRC_URI="https://linuxtv.org/downloads/dtv-scan-tables/dtv-scan-tables-${PV:3:4}-${PV:7:2}-${PV:9:2}-${COMMIT}.tar.bz2" + KEYWORDS="amd64 arm arm64 ppc x86" + S="${WORKDIR}/usr/share/dvb" +fi + +DESCRIPTION="Digital TV scan tables in v3 and v5 format" +HOMEPAGE="https://linuxtv.org/" +LICENSE="GPL-2 LGPL-2.1" +SLOT="0" + +BDEPEND="media-libs/libv4l[dvb,utils(-)]" + +DOCS=( README ) + +src_compile() { + emake dvbv3 dvbv5 +} + +src_install() { + emake PREFIX="${ED}/usr" install install_v3 + einstalldocs +} diff --git a/media-tv/dtv-scan-tables/dtv-scan-tables-9999.ebuild b/media-tv/dtv-scan-tables/dtv-scan-tables-9999.ebuild new file mode 100644 index 000000000000..c93edd734d77 --- /dev/null +++ b/media-tv/dtv-scan-tables/dtv-scan-tables-9999.ebuild @@ -0,0 +1,32 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +if [[ ${PV#9999} != ${PV} ]]; then + inherit git-r3 + EGIT_REPO_URI="https://git.linuxtv.org/dtv-scan-tables.git" +else + COMMIT="f07bde777d4d" + SRC_URI="https://linuxtv.org/downloads/dtv-scan-tables/dtv-scan-tables-${PV:3:4}-${PV:7:2}-${PV:9:2}-${COMMIT}.tar.bz2" + KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86" + S="${WORKDIR}/usr/share/dvb" +fi + +DESCRIPTION="Digital TV scan tables in v3 and v5 format" +HOMEPAGE="https://linuxtv.org/" +LICENSE="GPL-2 LGPL-2.1" +SLOT="0" + +BDEPEND="media-libs/libv4l[dvb,utils(-)]" + +DOCS=( README ) + +src_compile() { + emake dvbv3 dvbv5 +} + +src_install() { + emake PREFIX="${ED}/usr" install install_v3 + einstalldocs +} diff --git a/media-tv/dtv-scan-tables/metadata.xml b/media-tv/dtv-scan-tables/metadata.xml new file mode 100644 index 000000000000..19136699369d --- /dev/null +++ b/media-tv/dtv-scan-tables/metadata.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>chewi@gentoo.org</email> + <name>James Le Cuirot</name> + </maintainer> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/media-tv/dvbstream/Manifest b/media-tv/dvbstream/Manifest new file mode 100644 index 000000000000..e42ddb94526a --- /dev/null +++ b/media-tv/dvbstream/Manifest @@ -0,0 +1 @@ +DIST dvbstream-0.8.2.tar.bz2 60542 BLAKE2B c2e57c9e94cf4b359025e1607e827a1e23330d2caa0ce0788b7366501df66781775a6e4cc3ac4ed670f619ce53b60cf970156257944c3baf1f344ee830ece307 SHA512 06d6fc6c62ee898726b240164a8f9cdd7f2a61dd148db052a6f37c3cf174ef9f3f886c1eafcc3e249fdc9fee057790efbc3baccf71dd6cad98b3fef06a2b7c9a diff --git a/media-tv/dvbstream/dvbstream-0.8.2.ebuild b/media-tv/dvbstream/dvbstream-0.8.2.ebuild new file mode 100644 index 000000000000..30868a4e4dea --- /dev/null +++ b/media-tv/dvbstream/dvbstream-0.8.2.ebuild @@ -0,0 +1,61 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit toolchain-funcs + +DESCRIPTION="RTP multicast stream server and other tools for DVB cards" +HOMEPAGE="https://www.orcas.net/dvbstream/" +SRC_URI="http://www.orcas.net/dvbstream/${P}.tar.bz2" +S=${WORKDIR}/${PN} + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="amd64 x86" + +RDEPEND="dev-lang/perl" +BDEPEND="sys-kernel/linux-headers" + +src_prepare() { + default + + sed -i Makefile \ + -e 's:$(CFLAGS):$(CFLAGS) $(CPPFLAGS):' \ + -e '/CFLAGS.*=.*-g -Wall -O2/s:-g -Wall -O2::' \ + -e '/CFLAGS.*=/s:CFLAGS:CPPFLAGS:' \ + -e 's:-I \.\./DVB/include:-I /usr/include:' \ + -e 's:$(CC):$(CC) $(LDFLAGS):g' \ + || die 'failed to fix flags in the Makefile' + + sed -e 's:\./svdrpsend.pl:dvbstream-send.pl:' \ + -i TELNET/*.sh \ + || die 'failed to rename the svdrpsend.pl command in scripts' + + # bug 919183 + sed -e '/#include "ringbuffy.h"/a #include <string.h>' \ + -i mpegtools/ringbuffy.c || die 'failed to fix ringbuffy.c' + + sed -e "s:-lcurses:$( $(tc-getPKG_CONFIG) --libs ncurses ):" \ + -i Makefile || die 'failed to fix ncurses linking in Makefile' + + sed -e 's:^DUMPRTP=.*$:DUMPRTP=dumprtp:' -i *.sh || die 'failed to set DUMPRTP and TS2ES in scripts' +} + +src_compile() { + emake CC="$(tc-getCC)" LDFLAGS="${LDFLAGS}" +} + +src_install() { + dobin dvbstream dumprtp rtpfeed ts_filter + newbin TELNET/svdrpsend.pl dvbstream-send.pl + + dodoc README* + newdoc TELNET/README README.telnet + + insinto "/usr/share/doc/${PF}/tune" + doins TELNET/*.sh + + insinto "/usr/share/doc/${PF}/multicast" + doins *.sh +} diff --git a/media-tv/dvbstream/metadata.xml b/media-tv/dvbstream/metadata.xml new file mode 100644 index 000000000000..5f33304011d5 --- /dev/null +++ b/media-tv/dvbstream/metadata.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/media-tv/dvbtune/Manifest b/media-tv/dvbtune/Manifest new file mode 100644 index 000000000000..9e1c236f8af4 --- /dev/null +++ b/media-tv/dvbtune/Manifest @@ -0,0 +1 @@ +DIST dvbtune-0.5.tar.gz 20601 BLAKE2B 6e788e44c0c228506599a6a32baf527050e09d0802692ece635bf5432a47cb81f738be49c0577ceb4597f9da7ced6607ea102a6d04dfcf991c24b5a1b3db7532 SHA512 0c6e8b8b4185b1b63638f0eff3e07b2c5e4b3bb9d95debb1625973cec2293315754487702ba9f7ed6bd6a0a518b09c8333d9ac4cd40b61f56c311c3d624fd365 diff --git a/media-tv/dvbtune/dvbtune-0.5-r3.ebuild b/media-tv/dvbtune/dvbtune-0.5-r3.ebuild new file mode 100644 index 000000000000..b68bedcce8fc --- /dev/null +++ b/media-tv/dvbtune/dvbtune-0.5-r3.ebuild @@ -0,0 +1,45 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit toolchain-funcs + +DESCRIPTION="simple tuning app for DVB cards" +HOMEPAGE="https://sourceforge.net/projects/dvbtools" +SRC_URI="https://downloads.sourceforge.net/dvbtools/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="amd64 x86" +IUSE="xml" + +RDEPEND="xml? ( dev-libs/libxml2:= )" +DEPEND="${RDEPEND} + sys-kernel/linux-headers" + +PATCHES=( + "${FILESDIR}"/${PN}-0.5-r1-gentoo.diff + "${FILESDIR}"/${PN}-0.5-stdint.patch + "${FILESDIR}"/${PN}-0.5-c23.patch +) + +src_prepare() { + default + + tc-export CC +} + +src_compile() { + emake dvbtune + + use xml && emake xml2vdr +} + +src_install() { + dobin dvbtune + + use xml && dobin xml2vdr + + dodoc README scripts/* +} diff --git a/media-tv/dvbtune/files/dvbtune-0.5-c23.patch b/media-tv/dvbtune/files/dvbtune-0.5-c23.patch new file mode 100644 index 000000000000..ec7d1c674ffd --- /dev/null +++ b/media-tv/dvbtune/files/dvbtune-0.5-c23.patch @@ -0,0 +1,30 @@ +https://bugs.gentoo.org/945283 + +From nicoslocalcvsclonerepo Mon Sep 17 00:00:00 2001 +From: Nico Roeser +Date: Sat, 13 Sep 2025 14:07:38 +0200 +Subject: [PATCH] Fix build by correcting arguments in a call + +Note: a future version (in the CVS repo) splits the function into a +separate compile unit and has it use an argument. This is not necessary +with the current code, as the transponders are available as global +object. +--- + dvbtune.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dvbtune.c b/dvbtune.c +--- a/dvbtune.c ++++ b/dvbtune.c +@@ -1337,7 +1337,7 @@ int main(int argc, char **argv) + printf("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n<satellite>\n"); + scan_nit(0x40); /* Get initial list of transponders */ + scan_nit(0x41); /* Get initial list of transponders */ +- while ((t=get_unscanned(transponders))!=NULL) { ++ while ((t=get_unscanned())!=NULL) { + free_pat_list(); + fprintf(stderr,"Scanning %d%c %d\n",t->freq,t->pol,t->srate); + tune_it(fd_frontend,fd_sec,t->freq,t->srate,t->pol,tone,specInv,0,modulation,HP_CodeRate,TransmissionMode,guardInterval,bandWidth); +-- +2.51.0 + diff --git a/media-tv/dvbtune/files/dvbtune-0.5-r1-gentoo.diff b/media-tv/dvbtune/files/dvbtune-0.5-r1-gentoo.diff new file mode 100644 index 000000000000..f1e097fd6d1b --- /dev/null +++ b/media-tv/dvbtune/files/dvbtune-0.5-r1-gentoo.diff @@ -0,0 +1,20 @@ +--- dvbtune-0.5/Makefile.orig 2006-01-06 13:01:11.973196250 +0100 ++++ dvbtune-0.5/Makefile 2006-01-06 13:01:46.667364500 +0100 +@@ -1,5 +1,5 @@ + INCS=-I /usr/include/libxml2 +-CFLAGS= -Wall $(INCS) +-CC=gcc ++CFLAGS ?= -Wall ++CFLAGS += $(INCS) + all: dvbtune + +@@ -33,7 +33,7 @@ + dvbtune: dvbtune.c tune.o + + xml2vdr: xml2vdr.c +- $(CC) $(CFLAGS) -o xml2vdr xml2vdr.c -lxml2 ++ $(CC) $(CFLAGS) -o xml2vdr xml2vdr.c -lxml2 $(LDFLAGS) + + clean: + rm -f *.o *~ dvbtune xml2vdr + diff --git a/media-tv/dvbtune/files/dvbtune-0.5-stdint.patch b/media-tv/dvbtune/files/dvbtune-0.5-stdint.patch new file mode 100644 index 000000000000..b87ed7cf6096 --- /dev/null +++ b/media-tv/dvbtune/files/dvbtune-0.5-stdint.patch @@ -0,0 +1,10 @@ +--- dvbtune-0.5/dvbtune.c 2017-12-03 12:24:12.222743908 +0100 ++++ dvbtune-0.5/dvbtune.c 2017-12-03 12:24:37.951429997 +0100 +@@ -37,6 +37,7 @@ + */ + + // Linux includes: ++#include <stdint.h> + #include <stdio.h> + #include <stdlib.h> + #include <string.h> diff --git a/media-tv/dvbtune/metadata.xml b/media-tv/dvbtune/metadata.xml new file mode 100644 index 000000000000..5f33304011d5 --- /dev/null +++ b/media-tv/dvbtune/metadata.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/media-tv/gentoo-vdr-scripts/Manifest b/media-tv/gentoo-vdr-scripts/Manifest new file mode 100644 index 000000000000..92e182128379 --- /dev/null +++ b/media-tv/gentoo-vdr-scripts/Manifest @@ -0,0 +1 @@ +DIST gentoo-vdr-scripts-3.0_rc2.tar.gz 59284 BLAKE2B 88666442e27646a06a1e7d4b7389a02196b48eee3a14c20c70281b5db862237cac8982e989628810e5c6721ebca32347fbf2a80f29e0ff2d839760f076d50d2a SHA512 d1ba41190565a129b6bd69aedd32590a5479a6390fb17a8d2a9e8926dd35260b3581b25b049da84e35e0d047b81c326512b67d45b488aa60ad10acafe93432d9 diff --git a/media-tv/gentoo-vdr-scripts/gentoo-vdr-scripts-3.0_rc2-r1.ebuild b/media-tv/gentoo-vdr-scripts/gentoo-vdr-scripts-3.0_rc2-r1.ebuild new file mode 100644 index 000000000000..267957a48b58 --- /dev/null +++ b/media-tv/gentoo-vdr-scripts/gentoo-vdr-scripts-3.0_rc2-r1.ebuild @@ -0,0 +1,63 @@ +# Copyright 2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit tmpfiles user-info + +DESCRIPTION="Scripts necessary for use of VDR as a set-top-box" +HOMEPAGE="https://gitweb.gentoo.org/proj/gentoo-vdr-scripts.git/about/" +SRC_URI="https://github.com/madmartin/gentoo-vdr-scripts/archive/refs/tags/${P}.tar.gz" +S="${WORKDIR}/${PN}-${P}" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="amd64 ~arm ~arm64 ~ppc x86" + +DEPEND=" + acct-group/vdr + acct-user/vdr" +RDEPEND="${DEPEND} + app-admin/sudo + sys-process/wait_on_pid" +BDEPEND="${DEPEND}" + +src_install() { + default + + local VDR_HOME="$(egethome vdr)" + einfo "VDR_HOME=${VDR_HOME}" + diropts -ovdr -gvdr + keepdir "${VDR_HOME}/shutdown-data" "${VDR_HOME}/merged-config-files" "${VDR_HOME}/dvd-images" +} + +pkg_postinst() { + tmpfiles_process "${PN}.conf" + + elog "${CATEGORY}/${PN} supports an init script" + elog "to start a X server" + elog "Please refer for detailed info to" + elog "/usr/share/doc/${PF}/README.x11-setup\n" + + elog "systemd is supported by ${CATEGORY}/${PN}" + elog "Read about it in /usr/share/doc/${PF}/README.systemd" + + elog "Plugins which should be used are configured in" + elog "the config-file /etc/conf.d/vdr.plugins" + elog "or enable/disable them with \"eselect vdr-plugin\".\n" + + if [[ -f "${EROOT}"/etc/conf.d/vdr.dvdswitch ]] && + grep -q ^DVDSWITCH_BURNSPEED= "${EROOT}"/etc/conf.d/vdr.dvdswitch + then + ewarn "You are setting DVDSWITCH_BURNSPEED in /etc/conf.d/vdr.dvdswitch" + ewarn "This no longer has any effect, please use" + ewarn "VDR_DVDBURNSPEED in /etc/conf.d/vdr.cd-dvd" + fi + + if grep -q /usr/share/vdr/bin/vdrshutdown-really.sh "${EROOT}"/etc/sudoers; then + ewarn "Please remove the following deprecated line from /etc/sudoers:" + ewarn " vdr ALL=NOPASSWD:/usr/share/vdr/bin/vdrshutdown-really.sh" + ewarn "sudoers handling is now supported by:" + ewarn "/etc/sudoers.d/vdr" + fi +} diff --git a/media-tv/gentoo-vdr-scripts/metadata.xml b/media-tv/gentoo-vdr-scripts/metadata.xml new file mode 100644 index 000000000000..a0235fdeb599 --- /dev/null +++ b/media-tv/gentoo-vdr-scripts/metadata.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person" proxied="yes"> + <email>martin.dummer@gmx.net</email> + <name>Martin Dummer</name> + </maintainer> + <maintainer type="project" proxied="proxy"> + <email>proxy-maint@gentoo.org</email> + <name>Proxy Maintainers</name> + </maintainer> + <maintainer type="project"> + <email>vdr@gentoo.org</email> + <name>Gentoo VDR Project</name> + </maintainer> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/media-tv/gtk-v4l/Manifest b/media-tv/gtk-v4l/Manifest new file mode 100644 index 000000000000..bcf7673b59e0 --- /dev/null +++ b/media-tv/gtk-v4l/Manifest @@ -0,0 +1 @@ +DIST gtk-v4l-0.4.tar.gz 328732 BLAKE2B b9040bb4be35d21998226e776f6844da12d75b4db51c8191ee658d9ef5701b27f8b400914eea07a39bb2ed0855f34a59c547bf412031c033212b9966fa1fe97e SHA512 ed0e1245d9b1cfce6612c91dacd09f26850a9420088d7de172c4bd582b70f4427820940e6cf98a831493edfe52d20fb02d6b2d62b695a24127097f50963df321 diff --git a/media-tv/gtk-v4l/files/gtk-v4l-0.4-device-remove-source-on-finalize.patch b/media-tv/gtk-v4l/files/gtk-v4l-0.4-device-remove-source-on-finalize.patch new file mode 100644 index 000000000000..301c6b152810 --- /dev/null +++ b/media-tv/gtk-v4l/files/gtk-v4l-0.4-device-remove-source-on-finalize.patch @@ -0,0 +1,53 @@ +From e7730e2eb0e148e94f6bba13a70ddf61ae94b313 Mon Sep 17 00:00:00 2001 +From: Hans de Goede <hdegoede@redhat.com> +Date: Wed, 9 May 2012 13:00:07 +0200 +Subject: [PATCH] gtk-v4l-device: remove source on finalize + +This fixes us from getting events from it, with a user_data argument +pointing to the finalized object, when the fd gets re-used if another device +gets plugged in later, and that device then generates ctrl events. + +Signed-off-by: Hans de Goede <hdegoede@redhat.com> +--- + lib/gtk-v4l-device.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/lib/gtk-v4l-device.c b/lib/gtk-v4l-device.c +index c4ce1e5..67e8ccc 100644 +--- a/lib/gtk-v4l-device.c ++++ b/lib/gtk-v4l-device.c +@@ -43,6 +43,7 @@ enum + struct _Gtkv4lDevicePrivate { + GList *controls; + GIOChannel *channel; ++ guint channel_source_id; + }; + + /* will create gtk_v4l_device_get_type and set gtk_v4l_device_parent_class */ +@@ -166,8 +167,10 @@ gtk_v4l_device_finalize (GObject *object) + g_list_foreach (self->priv->controls, gtk_v4l_device_free_control, NULL); + g_list_free (self->priv->controls); + +- if (self->priv->channel) ++ if (self->priv->channel) { ++ g_source_remove (self->priv->channel_source_id); + g_io_channel_unref (self->priv->channel); ++ } + + if (self->fd != -1) + close (self->fd); +@@ -303,8 +306,9 @@ gtk_v4l_device_new_control (Gtkv4lDevice *self, struct v4l2_queryctrl *query) + r = v4l2_ioctl(self->fd, VIDIOC_SUBSCRIBE_EVENT, &sub); + if (r >= 0 && !self->priv->channel) { + self->priv->channel = g_io_channel_unix_new (self->fd); +- g_io_add_watch (self->priv->channel, G_IO_PRI, gtk_v4l_device_ctrl_event, +- self); ++ self->priv->channel_source_id = ++ g_io_add_watch (self->priv->channel, G_IO_PRI, gtk_v4l_device_ctrl_event, ++ self); + } + } + +-- +1.7.10 + diff --git a/media-tv/gtk-v4l/gtk-v4l-0.4-r1.ebuild b/media-tv/gtk-v4l/gtk-v4l-0.4-r1.ebuild new file mode 100644 index 000000000000..ac48862a1722 --- /dev/null +++ b/media-tv/gtk-v4l/gtk-v4l-0.4-r1.ebuild @@ -0,0 +1,35 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="A GTK+ application for controlling V4L preferences of a web cam device" +HOMEPAGE="https://github.com/jwrdegoede/gtk-v4l/" +# No 0.4 release tag on GitHub so until 0.5 has been released, stick +# with the previously mirrored tarball from FedoraHosted. +SRC_URI="mirror://gentoo/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" + +RDEPEND=">=dev-libs/glib-2 + dev-libs/libgudev:= + >=media-libs/libv4l-0.6 + x11-libs/gtk+:3" +DEPEND="${RDEPEND}" +BDEPEND="virtual/pkgconfig" + +PATCHES=( + "${FILESDIR}"/${PN}-0.4-device-remove-source-on-finalize.patch +) + +src_prepare() { + default + sed -i -e '/^Categories/s:Application:GTK:' ${PN}.desktop.in || die +} + +src_install() { + default + find "${ED}" -name '*.la' -delete || die +} diff --git a/media-tv/gtk-v4l/metadata.xml b/media-tv/gtk-v4l/metadata.xml new file mode 100644 index 000000000000..5f33304011d5 --- /dev/null +++ b/media-tv/gtk-v4l/metadata.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/media-tv/ivtv-utils/Manifest b/media-tv/ivtv-utils/Manifest new file mode 100644 index 000000000000..e16e0a3fd01b --- /dev/null +++ b/media-tv/ivtv-utils/Manifest @@ -0,0 +1 @@ +DIST ivtv-utils-1.4.1.tar.gz 189918 BLAKE2B 7880b532ffb3a1ffa13c38b74b57f82a199486ba5bc8e310cb5447ad78d05a0380b51070a0dc67e4f1120d49c8c7d9a2b829e3922585484906efccc4f2b96fb5 SHA512 719c922fb819ba7f0ca3d4bbede571c416dc9f282bd8a7e2fbe7d9b4298541a104f8a848e113379eeec052206658b7a0a2e0eea1b7917e90f2aee37fe0010bed diff --git a/media-tv/ivtv-utils/files/ivtv-utils-1.4.0-gentoo.patch b/media-tv/ivtv-utils/files/ivtv-utils-1.4.0-gentoo.patch new file mode 100644 index 000000000000..5c03e6e737ee --- /dev/null +++ b/media-tv/ivtv-utils/files/ivtv-utils-1.4.0-gentoo.patch @@ -0,0 +1,99 @@ +Fixing multiple QA issues + * respect user {CC,CXX,LD}FLAGS + * fix linking order + * make job server for install phase + +Don't install ivtv-ctl (bug #333291) and v4l2-ctl (bug #278255) +Don't install duplicate kernel headers (bug #244584) + +https://bugs.gentoo.org/show_bug.cgi?id=321303 + +Patch written by Kacper Kowalik <xarthisius.kk@gmail.com> + +--- a/test/Makefile ++++ b/test/Makefile +@@ -7,13 +7,13 @@ + ivtv-osd-dma-test ivtv-fb-colormap-test \ + ivtv-fb-16-bit-test ps-analyzer + +-CFLAGS = -I../utils -D_GNU_SOURCE -O2 -Wall +-CXXFLAGS = $(CFLAGS) +-LDFLAGS = -lm ++CFLAGS += -I../utils -D_GNU_SOURCE -Wall ++CXXFLAGS += -I../utils -D_GNU_SOURCE -Wall ++LDLIBS = -lm + + all: $(EXES) + +-install: all ++install: + + clean: + rm -f *.o $(EXES) +--- a/utils/Makefile ++++ b/utils/Makefile +@@ -9,41 +9,39 @@ + X86_EXES := ivtvplay ivtv-mpegindex #ivtv-encoder + endif + +-EXES := v4l2-ctl ivtv-ctl ivtv-radio $(X86_EXES) ++EXES := ivtv-radio $(X86_EXES) + + BIN := $(EXES) ivtv-tune/ivtv-tune cx25840ctl/cx25840ctl + + + HEADERS := linux/ivtv.h linux/ivtvfb.h + +-CFLAGS = -D_GNU_SOURCE -O2 -Wall -g -I. +-CXXFLAGS = $(CFLAGS) ++CFLAGS += -D_GNU_SOURCE -Wall -I. ++CXXFLAGS += -D_GNU_SOURCE -Wall -I. + +-all:: $(EXES) +- $(MAKE) CFLAGS="$(CFLAGS)" -C ivtv-tune +- $(MAKE) CFLAGS="$(CFLAGS)" -C cx25840ctl ++all: $(EXES) ++ $(MAKE) $(MAKEOPTS) CFLAGS="$(CFLAGS)" -C ivtv-tune ++ $(MAKE) $(MAKEOPTS) CFLAGS="$(CFLAGS)" -C cx25840ctl + + ivtv-ctl: ivtv-ctl.o +- $(CC) -lm -o $@ $^ ++ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ -lm + + v4l2-ctl: v4l2-ctl.o +- $(CXX) -lm -o $@ $^ ++ $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $^ -lm + + v4l2-dbg: v4l2-dbg.o v4l2-driverids.o v4l2-chipids.o +- $(CXX) -lm -o $@ $^ ++ $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $^ -lm + + ivtvplay: ivtvplay.cc +- $(CXX) $(CXXFLAGS) -lm -lpthread -o $@ $^ ++ $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $^ -lm -lpthread + + encoder.o: encoder.c + $(CC) $(CFLAGS) -DVIDEO_PORT=0 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -c $^ + + ivtv-encoder: enc_mindex.o enc_chann.o encoder.o +- $(CC) -lpthread -o $@ $^ ++ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ -lpthread + +-install: all +- install -d $(DESTDIR)/$(HDRDIR) +- install -m 0644 $(HEADERS) $(DESTDIR)/$(HDRDIR) ++install: + install -d $(DESTDIR)/$(BINDIR) + install -m 0755 $(BIN) $(DESTDIR)/$(BINDIR) + +--- a/Makefile ++++ b/Makefile +@@ -1,6 +1,6 @@ + all clean install: +- make -C utils $@ +- make -C test $@ ++ $(MAKE) -C utils $@ ++ $(MAKE) -C test $@ + + distclean: clean + diff --git a/media-tv/ivtv-utils/files/ivtv-utils-1.4.1-overflow.patch b/media-tv/ivtv-utils/files/ivtv-utils-1.4.1-overflow.patch new file mode 100644 index 000000000000..24f24d41acaa --- /dev/null +++ b/media-tv/ivtv-utils/files/ivtv-utils-1.4.1-overflow.patch @@ -0,0 +1,71 @@ +http://bugs.gentoo.org/339405 + +--- a/utils/cx25840ctl/cx25840ctl.c ++++ b/utils/cx25840ctl/cx25840ctl.c +@@ -57,7 +57,7 @@ + return 0; + } + +- sprintf(device, "/dev/i2c-%s", opt.inputs[0]); ++ snprintf(device, sizeof(device), "/dev/i2c-%s", opt.inputs[0]); + + // open the device + if ((fd = open(device, O_RDWR)) < 0) +@@ -67,7 +67,7 @@ + exit(1); + } + +- sprintf(sysfile, "/sys/bus/i2c/devices/%s-%04x/name", opt.inputs[0], address); ++ snprintf(sysfile, sizeof(sysfile), "/sys/bus/i2c/devices/%s-%04x/name", opt.inputs[0], address); + if ((fp = fopen(sysfile, "r")) != NULL) + { + fgets(name, sizeof(name), fp); +--- a/utils/ivtv-ctl.c ++++ b/utils/ivtv-ctl.c +@@ -358,7 +358,7 @@ + __u32 reset = 0; + int new_debug_level, gdebug_level; + double timestamp; +- char ptsstr[64]; ++ char ptsstr[256]; + char short_options[26 * 2 * 2 + 1]; + + if (argc == 1) { +@@ -420,7 +420,7 @@ + static char newdev[20]; + char dev = device[0]; + +- sprintf(newdev, "/dev/video%c", dev); ++ snprintf(newdev, sizeof(newdev), "/dev/video%c", dev); + device = newdev; + } + break; +@@ -600,7 +600,7 @@ + char buf[20]; + new_debug_level = debug_level; + +- sprintf(buf, "%d", debug_level); ++ snprintf(buf, sizeof(buf), "%d", debug_level); + if (dowrite(buf, "/sys/module/ivtv/parameters/debug") == 0) { + printf(" set debug level: "); + print_debug_mask(new_debug_level); +--- a/utils/v4l2-ctl.cpp ++++ b/utils/v4l2-ctl.cpp +@@ -416,7 +416,7 @@ + { + char buf[10]; + +- sprintf(buf, "%08x", num); ++ snprintf(buf, sizeof(buf), "%08x", num); + return buf; + } + +@@ -1449,7 +1449,7 @@ + static char newdev[20]; + char dev = device[0]; + +- sprintf(newdev, "/dev/video%c", dev); ++ snprintf(newdev, sizeof(newdev), "/dev/video%c", dev); + device = newdev; + } + break; diff --git a/media-tv/ivtv-utils/files/ivtv-utils-1.4.1-redefine.patch b/media-tv/ivtv-utils/files/ivtv-utils-1.4.1-redefine.patch new file mode 100644 index 000000000000..70a1d0ed1745 --- /dev/null +++ b/media-tv/ivtv-utils/files/ivtv-utils-1.4.1-redefine.patch @@ -0,0 +1,12 @@ +This is already defined in linux/fb.h, and the int type is wrong anyway. + +diff -Naur a/utils/linux/ivtvfb.h b/utils/linux/ivtvfb.h +--- a/utils/linux/ivtvfb.h 2024-07-26 21:36:14.167005194 +0100 ++++ b/utils/linux/ivtvfb.h 2024-07-26 21:36:23.785286007 +0100 +@@ -32,6 +32,5 @@ + }; + + #define IVTVFB_IOC_DMA_FRAME _IOW('V', BASE_VIDIOC_PRIVATE+0, struct ivtvfb_dma_frame) +-#define FBIO_WAITFORVSYNC _IOW('F', 0x20, u_int32_t) + + #endif diff --git a/media-tv/ivtv-utils/ivtv-utils-1.4.1-r1.ebuild b/media-tv/ivtv-utils/ivtv-utils-1.4.1-r1.ebuild new file mode 100644 index 000000000000..d1f7bc8fbbe3 --- /dev/null +++ b/media-tv/ivtv-utils/ivtv-utils-1.4.1-r1.ebuild @@ -0,0 +1,48 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit flag-o-matic toolchain-funcs + +DESCRIPTION="IVTV utilities for Hauppauge PVR PCI cards" +HOMEPAGE="http://www.ivtvdriver.org/" +SRC_URI="http://dl.ivtvdriver.org/ivtv/archive/$(ver_cut 1-2).x/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="amd64 ~ppc x86" +IUSE="perl" + +RDEPEND=" + media-libs/libv4l[utils(-)] + perl? ( + dev-perl/Video-Frequencies + dev-perl/Video-ivtv + dev-perl/Config-IniFiles + dev-perl/Tk + virtual/perl-Getopt-Long + )" + +PATCHES=( + "${FILESDIR}"/${PN}-1.4.0-gentoo.patch + "${FILESDIR}"/${PN}-1.4.1-overflow.patch + "${FILESDIR}"/${PN}-1.4.1-redefine.patch +) + +src_configure() { + tc-export CC CXX + + # bug 907679 + use elibc_musl && append-flags -D_LARGEFILE64_SOURCE +} + +src_install() { + emake DESTDIR="${D}" PREFIX="/usr" install + dodoc -r ChangeLog README doc/. + + if use perl; then + dobin utils/perl/*.pl + dodoc utils/perl/README.ptune + fi +} diff --git a/media-tv/ivtv-utils/metadata.xml b/media-tv/ivtv-utils/metadata.xml new file mode 100644 index 000000000000..5f33304011d5 --- /dev/null +++ b/media-tv/ivtv-utils/metadata.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/media-tv/ivtvplayer/Manifest b/media-tv/ivtvplayer/Manifest new file mode 100644 index 000000000000..22056cf1d707 --- /dev/null +++ b/media-tv/ivtvplayer/Manifest @@ -0,0 +1 @@ +DIST ivtvplayer-0.1.3.tar.gz 24159 BLAKE2B c78c90e84a623eeefae7e05a5682a8b4f0c14e6016ea67e0a2ff65ae589fd8c69641e92c1806829d5e6e11a4d48c3a4b3fa34cf9fc360bfb47ef7f7d5a5d4993 SHA512 620502620ff1795145183249131f0d5e94e559ca367b7b0bc3a57b458d79d82424502b098e054207eac503ed97086fc04b2fd7b71a20f8c5f2bbb98541ba1e5f diff --git a/media-tv/ivtvplayer/ivtvplayer-0.1.3-r3.ebuild b/media-tv/ivtvplayer/ivtvplayer-0.1.3-r3.ebuild new file mode 100644 index 000000000000..b739f72e9d76 --- /dev/null +++ b/media-tv/ivtvplayer/ivtvplayer-0.1.3-r3.ebuild @@ -0,0 +1,38 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +DESCRIPTION="Simple IVTV command line TV and radio player with support of LIRC" +HOMEPAGE="https://sourceforge.net/projects/ivtvplayer/" +SRC_URI="https://downloads.sourceforge.net/${PN}/${P}.tar.gz" + +SLOT="0" +LICENSE="GPL-2" +KEYWORDS="~amd64 ~x86" +IUSE="gtk" + +RDEPEND="media-libs/libv4l[utils(-)] + || ( media-video/mplayer[v4l] + media-video/mplayer[dvb] ) + media-sound/alsa-utils + dev-perl/XML-Simple + gtk? ( dev-perl/Gtk2 ) + dev-perl/X-Osd + >=dev-perl/Lirc-Client-1.50" +DEPEND="${RDEPEND}" + +src_install() { + dobin bin/itv + dobin bin/iradio + use gtk && dobin bin/ictl + dodoc doc/README doc/CHANGES + dodoc -r conf +} + +pkg_postinst() { + einfo "" + einfo "Example of itv, iradio and its LIRC configuration file is located in" + einfo "directory /usr/share/doc/${PF}/." + einfo "" +} diff --git a/media-tv/ivtvplayer/metadata.xml b/media-tv/ivtvplayer/metadata.xml new file mode 100644 index 000000000000..5f33304011d5 --- /dev/null +++ b/media-tv/ivtvplayer/metadata.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/media-tv/kodi/Manifest b/media-tv/kodi/Manifest new file mode 100644 index 000000000000..fc4727e49247 --- /dev/null +++ b/media-tv/kodi/Manifest @@ -0,0 +1,16 @@ +DIST apache-groovy-binary-4.0.26.zip 30108372 BLAKE2B 00144777f88f5aea5c002ee3aa2a6b14749d150cc426218a49e0be06ace96f1a1de59a5ba59c3ea38f75098aa955fc543486b414624df3a4c6dd220746018f06 SHA512 60d1aea85008a438a9498178dc2137385653f1ea294e7e257959e9e0f94382e160e217e1090047c2a944e328cf46e8ebcfc4b015f7d0cb9f2fcf9d880c6c1344 +DIST apache-groovy-binary-4.0.30.zip 30344694 BLAKE2B 399b18b98376b82b4554302968eeef1862275913f325234b9171be3411677c9b639301d95a728a59566dd2e62fe33869f55d1707ea68872bd101d2cf49cf8d8d SHA512 789e956ecad3c302d545a16caccd45454357556b566ee83abfafe102371cf218f5ed5dc83d748595fbb2d465bde6c7306a498806e58b512cfc742abe5f5b101d +DIST commons-lang3-3.17.0-bin.tar.gz 9772415 BLAKE2B a54dfdeca71d3d25a69cd0b7a373791050b3fe039fdfeaee23cc08a5e05b9c7ab07b074595791d583000c726352503eb09c8e22a8b99ba79160252290cc6480f SHA512 8927a406a1bd084b548f89cf15fe4bc7567dcaa50ae8abae54e9c883c1574c648fcc8ad6c3abaa381dfbdf1801727ac5e6c4572063203a1dfac293d122282f05 +DIST commons-lang3-3.20.0-bin.tar.gz 18832112 BLAKE2B 69890c1ecbe2810c226282ff689f0b85c0bbe9bd107974b47857b404cf10e6996bd552cbf8c52cff3701796e6d9b17e418dafa01b31ac3d3bbf0924ed2de88e2 SHA512 eead2c04a85c85cfc83ef8a858f954e7abf668367d5a42e1152eb5d656eb8f4c1d5e7ad03f46859e99393e92b0d5fc69c927301c1a2ca466a3c49fb1f186ce89 +DIST commons-text-1.13.0-bin.tar.gz 3143054 BLAKE2B fbf83f9ade1dca7f781e0646b5c58efbce78136a70f00135194cefba04a47ec1f1a83c22e379777893800341168b2cd8c553669594ae6fe53bf4abd839007e0a SHA512 a51667463e88b2d017c3baebb9bbe42c4e50cba96ffe19c89680e82002a4db8b9007daff75f8dbf8bf3725be13a3f03f3c2bc4e1f11e8e02dcab4408abdb44a1 +DIST commons-text-1.15.0-bin.tar.gz 3193398 BLAKE2B c2323cfa7269f25464eb36ab7185aa4c0686132e9028b5ad64902acc1070aadacf60d6864c0243ab429be35134f1122cd94e5e896565ee795bd3cd85531ae1f4 SHA512 6d1fcbd85a85f38e95ea33c9ab7f58798723b0e6357077246a135c417e75c7b39e278ebdb77fcc8f9b56b52b1eeff113eea9463eaaaee8d38df9afdc149b6421 +DIST ffmpeg-6.0.1.tar.gz 15437409 BLAKE2B 6424e30c6d354abbbea8a807822ae61589413189e9c4ba7aa51c307179287506b9072626e9745861fe83753c0015b50d179f9b4f298fe9abf74bee13936639af SHA512 945e34840092dc0fd3824eb1af2be79868af2afb4fe13159b19a9bcfc464cc4d53243c13ff065199290e9393ddbf4b1c5c8abccf83a31a31d6c7490e499fd1fc +DIST ffmpeg-8.0.1.tar.xz 11388848 BLAKE2B fea49b663a3598d013969b22b34f7b0db677a90ef4bf27ff1ddf8b4e1d9c6eed598efa0f221baa50e4f0d9c877225b358b4192ecc9d2b725d853ef58e65379c9 SHA512 7af5cd1c7ba04f8d7ea1b54b64b9c235f2a606dc0c18d25cfdf20958bcad4851d3265b4894fc6ba5dd205c2309971c7e7fb890ee1d64e0a41a3faf159f77957f +DIST ffmpeg-8.0.tar.xz 11384428 BLAKE2B 8c45093665131e9aef07cc49726a2de008760728723cf9ee1833fe0697624ca2572c13eb319bd567b79fcb2db110b73fbbf0889237c10fc589d6f895a0e5aa88 SHA512 96f01fc3b881e208e8d35d858b2f60627f298b06103195e3e753b1c6429810d7a484d4daeebad6d0810172616383d103dfb5fcadc4512726c3719800d24a3fde +DIST ffmpeg-8.1.tar.xz 11702216 BLAKE2B 3710f8d3d60f89e404e837d238d089bdd7fd3be9404014aa1f3d4dd8983f10c7fefd7f4b27996fb8cb664f54aa3417da67f4ea02c896fe1026383198c45f5b26 SHA512 9deb30b93c27873564ec094693e72ff552f63a09af3175f9118672b88299a4e9495502aa0fb2dfbcd45857ba255f24b829bdd3c3c17d0f1eee75423302a9af8c +DIST kodi-21.3-Omega.tar.gz 41309420 BLAKE2B e7a58cb26633cffcfb687f75161e24c49aca8cab75318276d9140e74adc805c9ec48c76ab0118ac34daf26c540516d596d62a08742b52113744f5facb3719bf4 SHA512 4e344f7de95e7f47da413f7aeeef0656837befa89ef8924edf5409ac1c0c8c49e4023682ed236d19c3413e2ca5af8457899fdb13781f19a6208bfeddc69d7602 +DIST kodi-22.0a2-Piers.tar.gz 39895614 BLAKE2B f2c514ae1810d73177923dca0a1006faa421b6571951cf7be9067670a424a81a55f60e32466b1f3d898ca10610138973d746ba300d908eeb057e8e2ec7f82b6c SHA512 db958362f7f8cea584f7c243017ec8061456ed1c70fdfe51596d1fb60bfbceb3c2c69e2e01a588073832403338809c45ce1b3eaa32efa864ea62860d0cef8fad +DIST kodi-22.0a3-Piers.tar.gz 40268308 BLAKE2B 7d62805c8001d2b26926341c97dd55bbdfd9d038fbeaaf54367bff4ac417e8859583b0f695541aeb2b1b5f7e0862a1c008f2c9d0dd3527af66cde216e213a99c SHA512 cd0f8be2fc48cb1acaa2b3a9416ae9fcea062c58da7574121d64afa430c3bf4c598019315d7489945c461ec6278241d16895170cbe6c8517030a293dde3e0dc7 +DIST libdvdcss-1.4.3-Next-Nexus-Alpha2-2.tar.gz 102124 BLAKE2B 2f503d3ab767094958f7ec10b4ad11ffd02665deee571c8f3c739bef5fc7e2ff84babc5a3fdee638dc095f896b72fe3ce65e6b688674cb5f7b7b77190992688c SHA512 d3be3bfc13c5ea56d8db745c2aab090c99760684fe4c8f62a13d266feb319e9180ceeecf8116bfd2ed90d9accba2c11dbbf93b61ad00f69a40812ebf4eabcdda +DIST libdvdnav-6.1.1-Next-Nexus-Alpha2-2.tar.gz 128547 BLAKE2B db4d05836d8fbb3637ae50bdbfc0e4b612ee6b3be24addfea94ce772c3bf28d58b63a3f252d6f9f016f72f8cbb841cc1820b091226b136f4c4664385a32da73c SHA512 51e6fc033121241354a5f0b3fc9a430577ae3ff6bb7f31445aa548ef4893037fb80eea3b2c6774c81e9ebaf9c45e9b490c98c2c65eb38f9f7daba84b236f7e1d +DIST libdvdread-6.1.3-Next-Nexus-Alpha2-2.tar.gz 110513 BLAKE2B c94feb5a03a12efa5b7767965118d2500a088299ea36f3b82e46d157e45893e6b04503cb50f179ca681bac914457607fab26acfa6e304752b355c407578572d1 SHA512 629a41157d07b8ec0ea1fe89ae5ec48f63047472a862782b805c531ae31a0376fc4dc15175f8280c3ef91d7fa977bacebb1b51232640034a34bab2293210fc5e diff --git a/media-tv/kodi/files/ffmpeg-no-static-rpath.patch b/media-tv/kodi/files/ffmpeg-no-static-rpath.patch new file mode 100644 index 000000000000..116ed63f533b --- /dev/null +++ b/media-tv/kodi/files/ffmpeg-no-static-rpath.patch @@ -0,0 +1,23 @@ +From 95c45fca584f2e7d3f08bbcdba2ff544f99509eb Mon Sep 17 00:00:00 2001 +From: James Le Cuirot <chewi@gentoo.org> +Date: Sat, 4 Apr 2026 08:32:40 +0100 +Subject: [PATCH] ffbuild: Don't include rpath in static-only *-uninstalled.pc + files + +rpaths are unnecessary for static libraries and are likely to be +considered a security issue by distribution QA checks. + +Signed-off-by: James Le Cuirot <chewi@gentoo.org> +--- a/ffbuild/pkgconfig_generate.sh ++++ b/ffbuild/pkgconfig_generate.sh +@@ -57,6 +57,6 @@ Description: $comment + Version: $version + Requires: $requires + Conflicts: +-Libs: -L\${libdir} -Wl,-rpath,\${libdir} -l${fullname#lib} $($shared || echo $libs) ++Libs: -L\${libdir} $($shared && echo -Wl,-rpath,\${libdir}) -l${fullname#lib} $($shared || echo $libs) + Cflags: -I\${includedir} + EOF +-- +2.53.0 + diff --git a/media-tv/kodi/files/kodi-21-optional-ffmpeg-libx11.patch b/media-tv/kodi/files/kodi-21-optional-ffmpeg-libx11.patch new file mode 100644 index 000000000000..1d0805a3e574 --- /dev/null +++ b/media-tv/kodi/files/kodi-21-optional-ffmpeg-libx11.patch @@ -0,0 +1,14 @@ +--- a/tools/depends/target/ffmpeg/CMakeLists.txt ++++ b/tools/depends/target/ffmpeg/CMakeLists.txt +@@ -74,6 +74,11 @@ if(CORE_SYSTEM_NAME STREQUAL linux OR CORE_SYSTEM_NAME STREQUAL freebsd) + else() + list(APPEND ffmpeg_conf --disable-vdpau) + endif() ++ if ("x11" IN_LIST CORE_PLATFORM_NAME_LC) ++ list(APPEND ffmpeg_conf --enable-xlib) ++ else() ++ list(APPEND ffmpeg_conf --disable-xlib) ++ endif() + elseif(CORE_SYSTEM_NAME STREQUAL android) + list(APPEND ffmpeg_conf --target-os=android + --extra-libs=-liconv diff --git a/media-tv/kodi/files/kodi-21.1-silence-libdvdread-git.patch b/media-tv/kodi/files/kodi-21.1-silence-libdvdread-git.patch new file mode 100644 index 000000000000..83190d91e1db --- /dev/null +++ b/media-tv/kodi/files/kodi-21.1-silence-libdvdread-git.patch @@ -0,0 +1,36 @@ +From a193fae2ace4aa9086f9b73fa7008a016c30061e Mon Sep 17 00:00:00 2001 +From: Alfred Wingate <parona@protonmail.com> +Date: Wed, 21 Aug 2024 13:40:02 +0300 +Subject: [PATCH] Silence git "command not found" + +--- a/cmake/modules/FindLibDvdRead.cmake ++++ b/cmake/modules/FindLibDvdRead.cmake +@@ -39,6 +39,9 @@ if(NOT TARGET LibDvdRead::LibDvdRead) + + set(LIBDVDREAD_VERSION ${${MODULE}_VER}) + ++ set(patches "${CORE_SOURCE_DIR}/tools/depends/target/${MODULE_LC}/silence-git.patch") ++ generate_patchcommand("${patches}") ++ + set(HOST_ARCH ${ARCH}) + if(CORE_SYSTEM_NAME STREQUAL android) + if(ARCH STREQUAL arm) +--- /dev/null ++++ b/tools/depends/target/libdvdread/silence-git.patch +@@ -0,0 +1,13 @@ ++diff --git a/Makefile.am b/Makefile.am ++index f2849b8..7cee887 100644 ++--- a/Makefile.am +++++ b/Makefile.am ++@@ -2,7 +2,7 @@ ACLOCAL_AMFLAGS = -Im4 ++ ++ AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_builddir)/src/dvdread $(CSS_CFLAGS) ++ ++-dist_doc_DATA = AUTHORS ChangeLog COPYING NEWS README.md TODO +++dist_doc_DATA = AUTHORS COPYING NEWS README.md TODO ++ ++ MAINTAINERCLEANFILES = ChangeLog ++ +-- +2.46.0 + diff --git a/media-tv/kodi/files/kodi-22-fix-native-build.patch b/media-tv/kodi/files/kodi-22-fix-native-build.patch new file mode 100644 index 000000000000..787795273750 --- /dev/null +++ b/media-tv/kodi/files/kodi-22-fix-native-build.patch @@ -0,0 +1,49 @@ +https://github.com/xbmc/xbmc/pull/27545 + +From bb864e739bb7c9746ea6555858ad525c02e453d3 Mon Sep 17 00:00:00 2001 +From: James Le Cuirot <chewi@gentoo.org> +Date: Sun, 30 Nov 2025 22:10:11 +0000 +Subject: [PATCH] [cmake] Fix double installation of TexturePacker + +TexturePacker is being installed twice, but this is only noticeable when +installing Kodi with DESTDIR, which is common in distributions. The copy +installed by FindTexturePacker.cmake normally gets reinstalled in place, +but with DESTDIR applied, it lands under /path/to/destdir/path/to/build. + +There is no need for FindTexturePacker.cmake to install it anyway. This +change stubs the install command, runs TexturePacker from its build +location, and the wider Kodi installation sources it from there. +--- a/cmake/modules/buildtools/FindTexturePacker.cmake ++++ b/cmake/modules/buildtools/FindTexturePacker.cmake +@@ -82,8 +82,7 @@ if(NOT TARGET TexturePacker::TexturePacker::Executable) + "-DCMAKE_OBJDUMP=${CMAKE_OBJDUMP}" + "-DCMAKE_RANLIB=${CMAKE_RANLIB}" + "-DDEPENDS_PATH=${DEPENDS_PATH}" +- -DKODI_SOURCE_DIR=${CMAKE_SOURCE_DIR} +- -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/build) ++ -DKODI_SOURCE_DIR=${CMAKE_SOURCE_DIR}) + + # Create a list with an alternate separator e.g. pipe symbol + string(REPLACE ";" "|" string_ARCH_DEFINES "${ARCH_DEFINES}") +@@ -110,15 +109,14 @@ if(NOT TARGET TexturePacker::TexturePacker::Executable) + SOURCE_DIR ${CMAKE_SOURCE_DIR}/tools/depends/native/TexturePacker/src + PREFIX ${CORE_BUILD_DIR}/build-texturepacker + LIST_SEPARATOR | +- INSTALL_DIR ${CMAKE_BINARY_DIR}/build ++ INSTALL_COMMAND "" + CMAKE_ARGS ${CMAKE_ARGS} + BUILD_ALWAYS ON +- BUILD_BYPRODUCTS ${CMAKE_BINARY_DIR}/build/bin/TexturePacker) ++ BUILD_BYPRODUCTS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/build-texturepacker/src/buildtexturepacker-build/TexturePacker) + +- ExternalProject_Get_Property(buildtexturepacker INSTALL_DIR) + add_executable(TexturePacker IMPORTED) + set_target_properties(TexturePacker PROPERTIES +- IMPORTED_LOCATION "${INSTALL_DIR}/bin/TexturePacker") ++ IMPORTED_LOCATION "${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/build-texturepacker/src/buildtexturepacker-build/TexturePacker") + + add_dependencies(TexturePacker buildtexturepacker) + +-- +2.52.0 + diff --git a/media-tv/kodi/files/kodi-22-silence-libdvdread-git.patch b/media-tv/kodi/files/kodi-22-silence-libdvdread-git.patch new file mode 100644 index 000000000000..91c1a5e9305e --- /dev/null +++ b/media-tv/kodi/files/kodi-22-silence-libdvdread-git.patch @@ -0,0 +1,36 @@ +From a193fae2ace4aa9086f9b73fa7008a016c30061e Mon Sep 17 00:00:00 2001 +From: Alfred Wingate <parona@protonmail.com> +Date: Wed, 21 Aug 2024 13:40:02 +0300 +Subject: [PATCH] Silence git "command not found" + +--- a/cmake/modules/FindLibDvdRead.cmake ++++ b/cmake/modules/FindLibDvdRead.cmake +@@ -39,6 +39,9 @@ if(NOT TARGET LibDvdRead::LibDvdRead) + + set(LIBDVDREAD_VERSION ${${MODULE}_VER}) + ++ set(patches "${CORE_SOURCE_DIR}/tools/depends/target/${${CMAKE_FIND_PACKAGE_NAME}_MODULE_LC}/silence-git.patch") ++ generate_patchcommand("${patches}") ++ + set(HOST_ARCH ${ARCH}) + if(CORE_SYSTEM_NAME STREQUAL android) + if(ARCH STREQUAL arm) +--- /dev/null ++++ b/tools/depends/target/libdvdread/silence-git.patch +@@ -0,0 +1,13 @@ ++diff --git a/Makefile.am b/Makefile.am ++index f2849b8..7cee887 100644 ++--- a/Makefile.am +++++ b/Makefile.am ++@@ -2,7 +2,7 @@ ACLOCAL_AMFLAGS = -Im4 ++ ++ AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_builddir)/src/dvdread $(CSS_CFLAGS) ++ ++-dist_doc_DATA = AUTHORS ChangeLog COPYING NEWS README.md TODO +++dist_doc_DATA = AUTHORS COPYING NEWS README.md TODO ++ ++ MAINTAINERCLEANFILES = ChangeLog ++ +-- +2.46.0 + diff --git a/media-tv/kodi/files/kodi-22.0_alpha3-gcc16.patch b/media-tv/kodi/files/kodi-22.0_alpha3-gcc16.patch new file mode 100644 index 000000000000..0ba2397a8e65 --- /dev/null +++ b/media-tv/kodi/files/kodi-22.0_alpha3-gcc16.patch @@ -0,0 +1,37 @@ +https://github.com/xbmc/xbmc/pull/27993 + +From f6a9d3756d88b15867ce48178d1fe1c92442d1fa Mon Sep 17 00:00:00 2001 +From: Alfred Wingate <parona@protonmail.com> +Date: Thu, 12 Mar 2026 11:38:22 +0200 +Subject: [PATCH] [dbwrappers] add previously implicit include for + va_list/va_start/va_end +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +GCC-16 fails without the explicit include. + +xbmc/dbwrappers/test/TestVPrepare.cpp:28:3: error: there are no arguments to ‘va_start’ that depend on a template parameter, so a declaration of ‘va_start’ must be available [-Wtemplate-body] + 28 | va_start(args, sqlFormat); + | ^~~~~~~~ + +Signed-off-by: Alfred Wingate <parona@protonmail.com> +--- + xbmc/dbwrappers/dataset.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/xbmc/dbwrappers/dataset.h b/xbmc/dbwrappers/dataset.h +index d54fabf0fb..5b925df452 100644 +--- a/xbmc/dbwrappers/dataset.h ++++ b/xbmc/dbwrappers/dataset.h +@@ -14,6 +14,7 @@ + + #include "qry_dat.h" + ++#include <cstdarg> + #include <list> + #include <map> + #include <memory> +-- +2.53.0 + diff --git a/media-tv/kodi/kodi-21.3.ebuild b/media-tv/kodi/kodi-21.3.ebuild new file mode 100644 index 000000000000..5e94b912cb7a --- /dev/null +++ b/media-tv/kodi/kodi-21.3.ebuild @@ -0,0 +1,552 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CODENAME="Omega" + +# libdvd{css,read,nav} are not unbundlable without patching the buildsystem. + +# Versions for the forked projects that are bundled +# See tools/depends/target/<project>/<project>-VERSION +LIBDVDCSS_VERSION="1.4.3-Next-Nexus-Alpha2-2" +LIBDVDREAD_VERSION="6.1.3-Next-Nexus-Alpha2-2" +LIBDVDNAV_VERSION="6.1.1-Next-Nexus-Alpha2-2" +FFMPEG_VERSION="6.0.1" + +# Java bundles from xbmc/interfaces/swig/CMakeLists.txt +GROOVY_VERSION="4.0.26" +APACHE_COMMON_LANG_VERSION="3.17.0" +APACHE_COMMON_TEXT_VERSION="1.13.0" + +_JAVA_PKG_WANT_BUILD_VM=( {openjdk{,-jre},icedtea}{,-bin}-{8,11,17,21} ) +JAVA_PKG_WANT_BUILD_VM=${_JAVA_PKG_WANT_BUILD_VM[@]} +# Required to be set, but not used. +JAVA_PKG_WANT_SOURCE="21" +JAVA_PKG_WANT_TARGET="21" + +PYTHON_REQ_USE="sqlite,ssl" +PYTHON_COMPAT=( python3_{13..14} ) + +# See cmake/scripts/common/ArchSetup.cmake for available options +CPU_FLAGS="cpu_flags_x86_sse cpu_flags_x86_sse2 cpu_flags_x86_sse3 cpu_flags_x86_sse4_1 cpu_flags_x86_sse4_2 cpu_flags_x86_avx cpu_flags_x86_avx2 cpu_flags_arm_neon" + +inherit autotools cmake desktop ffmpeg-compat flag-o-matic java-pkg-2 libtool +inherit linux-info optfeature pax-utils python-single-r1 toolchain-funcs xdg + +DESCRIPTION="A free and open source media-player and entertainment hub" +HOMEPAGE="https://kodi.tv/" + +SRC_URI=" + https://github.com/xbmc/libdvdnav/archive/${LIBDVDNAV_VERSION}.tar.gz + -> libdvdnav-${LIBDVDNAV_VERSION}.tar.gz + https://github.com/xbmc/libdvdread/archive/${LIBDVDREAD_VERSION}.tar.gz + -> libdvdread-${LIBDVDREAD_VERSION}.tar.gz + https://mirrors.kodi.tv/build-deps/sources/apache-groovy-binary-${GROOVY_VERSION}.zip + https://mirrors.kodi.tv/build-deps/sources/commons-lang3-${APACHE_COMMON_LANG_VERSION}-bin.tar.gz + https://mirrors.kodi.tv/build-deps/sources/commons-text-${APACHE_COMMON_TEXT_VERSION}-bin.tar.gz + css? ( + https://github.com/xbmc/libdvdcss/archive/${LIBDVDCSS_VERSION}.tar.gz + -> libdvdcss-${LIBDVDCSS_VERSION}.tar.gz + ) + !system-ffmpeg? ( + https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.gz + ) +" +if [[ ${PV} == *9999 ]] ; then + EGIT_REPO_URI="https://github.com/xbmc/xbmc.git" + if [[ ${PV} != "9999" ]]; then + EGIT_BRANCH="${CODENAME}" + fi + inherit git-r3 +else + MY_PV=${PV/_p/_r} + MY_PV=${MY_PV/_alpha/a} + MY_PV=${MY_PV/_beta/b} + MY_PV=${MY_PV/_rc/rc} + MY_PV="${MY_PV}-${CODENAME}" + MY_P="${PN}-${MY_PV}" + SRC_URI+=" https://github.com/xbmc/xbmc/archive/${MY_PV}.tar.gz -> ${MY_P}.tar.gz" + KEYWORDS="amd64 ~arm arm64 ~riscv ~x86" + S=${WORKDIR}/xbmc-${MY_PV} +fi + +LICENSE="GPL-2+" +# vendored dependencies +# apache-groovy, common-lang3 and commons-text +LICENSE+=" Apache-2.0" +# libdvdnav, libdvdread and libdvdcss. +LICENSE+=" GPL-2+" +# ffmpeg built as USE="gpl" +LICENSE+=" !system-ffmpeg? ( GPL-2 )" + +SLOT="0" +# use flag is called libusb so that it doesn't fool people in thinking that +# it is _required_ for USB support. Otherwise they'll disable udev and +# that's going to be worse. +IUSE="airplay alsa bluetooth bluray caps cec +css dbus doc eventclients gbm gles lcms libusb lirc mariadb mysql nfs +optical pipewire pulseaudio samba soc +system-ffmpeg test udf udev upnp vaapi vdpau wayland webserver X +xslt zeroconf ${CPU_FLAGS}" +REQUIRED_USE=" + ${PYTHON_REQUIRED_USE} + || ( gbm wayland X ) + ?? ( mariadb mysql ) + bluray? ( udf ) + gbm? ( udev ) + soc? ( system-ffmpeg ) + udev? ( !libusb ) + vdpau? ( X !gles !gbm ) + zeroconf? ( dbus ) +" +RESTRICT="!test? ( test )" + +# dev-libs/libcec[-cubox] bug #818262 +COMMON_DEPEND=" + >=dev-libs/flatbuffers-23.3.3:= + >=dev-libs/lzo-2.04:2 + media-libs/giflib:= + >=media-libs/libjpeg-turbo-2.0.4:= + >=media-libs/libpng-1.6.26:0= + wayland? ( + dev-cpp/waylandpp:= + ) +" +COMMON_TARGET_DEPEND="${PYTHON_DEPS} + >=net-misc/curl-7.68.0[http2] + >=virtual/zlib-1.2.11:= + dev-db/sqlite:3 + dev-libs/crossguid + >=dev-libs/fribidi-1.0.5 + >=dev-libs/libcdio-2.1.0:=[cxx] + >=dev-libs/libfmt-6.1.2:= + dev-libs/libfstrcmp + dev-libs/libpcre[cxx] + >=dev-libs/openssl-1.1.1k:0= + >=dev-libs/spdlog-1.5.0:= + dev-libs/tinyxml[stl] + dev-libs/tinyxml2:= + media-fonts/roboto + media-libs/libglvnd[X?] + >=media-libs/freetype-2.10.1 + media-libs/harfbuzz:= + >=media-libs/libass-0.15.0:= + media-libs/mesa[opengl,wayland?,X?] + media-libs/taglib:= + sci-libs/kissfft + virtual/libiconv + virtual/ttf-fonts + x11-libs/libdrm + $(python_gen_cond_dep ' + dev-python/pillow[${PYTHON_USEDEP}] + dev-python/pycryptodome[${PYTHON_USEDEP}] + ') + airplay? ( + >=app-pda/libplist-2.0.0:= + net-libs/shairplay + ) + alsa? ( + >=media-libs/alsa-lib-1.1.4.1 + ) + bluetooth? ( + net-wireless/bluez:= + ) + bluray? ( + >=media-libs/libbluray-1.1.2:= + ) + caps? ( + sys-libs/libcap + ) + cec? ( + >=dev-libs/libcec-4.0[-cubox(-)] + ) + dbus? ( + sys-apps/dbus + ) + gbm? ( + >=dev-libs/libinput-1.10.5:= + media-libs/libdisplay-info:= + x11-libs/libxkbcommon + ) + !gles? ( + media-libs/glu + ) + lcms? ( + >=media-libs/lcms-2.10:2 + ) + libusb? ( + virtual/libusb:1 + ) + lirc? ( + app-misc/lirc + ) + mariadb? ( + dev-db/mariadb-connector-c:= + ) + mysql? ( + dev-db/mysql-connector-c:= + ) + nfs? ( + >=net-fs/libnfs-2.0.0:= + ) + pipewire? ( + >=media-video/pipewire-0.3.50:= + ) + pulseaudio? ( + media-libs/libpulse + ) + samba? ( + >=net-fs/samba-3.4.6[smbclient(+)] + ) + system-ffmpeg? ( + media-video/ffmpeg-compat:6=[encode(+),soc(-)?,postproc(-),vaapi?,vdpau?,X?] + ) + !system-ffmpeg? ( + app-arch/bzip2 + app-arch/xz-utils + media-libs/dav1d:= + net-libs/gnutls:= + ) + udf? ( + >=dev-libs/libudfread-1.0.0 + ) + udev? ( + virtual/libudev:= + ) + vaapi? ( + media-libs/libva:=[wayland?,X?] + ) + vdpau? ( + || ( + >=x11-libs/libvdpau-1.1 + >=x11-drivers/nvidia-drivers-180.51 + ) + ) + wayland? ( + >=x11-libs/libxkbcommon-0.4.1 + ) + webserver? ( + >=net-libs/libmicrohttpd-0.9.77:= + ) + X? ( + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXrandr + ) + xslt? ( + dev-libs/libxslt + >=dev-libs/libxml2-2.9.4:= + ) + zeroconf? ( + net-dns/avahi[dbus] + ) +" +RDEPEND=" + ${COMMON_DEPEND} + ${COMMON_TARGET_DEPEND} +" +DEPEND=" + ${COMMON_DEPEND} + ${COMMON_TARGET_DEPEND} + >=dev-libs/rapidjson-1.0.2 + test? ( + >=dev-cpp/gtest-1.10.0 + ) + wayland? ( + >=dev-libs/wayland-protocols-1.7 + ) + X? ( + x11-base/xorg-proto + x11-libs/libXrender + ) +" +BDEPEND=" + ${COMMON_DEPEND} + app-arch/unzip + dev-build/cmake + dev-lang/swig + virtual/pkgconfig + <=virtual/jre-21-r9999:* + doc? ( + app-text/doxygen + ) +" + +PATCHES=( + "${FILESDIR}"/kodi-21-optional-ffmpeg-libx11.patch + "${FILESDIR}"/kodi-21.1-silence-libdvdread-git.patch +) + +# bug #544020 +CONFIG_CHECK="~IP_MULTICAST" +ERROR_IP_MULTICAST=" +In some cases Kodi needs to access multicast addresses. +Please consider enabling IP_MULTICAST under Networking options. +" + +pkg_setup() { + check_extra_config + java-pkg-2_pkg_setup + python-single-r1_pkg_setup +} + +src_unpack() { + if [[ ${PV} == *9999 ]] ; then + git-r3_src_unpack + else + unpack ${MY_P}.tar.gz + fi + + unpack apache-groovy-binary-${GROOVY_VERSION}.zip + unpack commons-lang3-${APACHE_COMMON_LANG_VERSION}-bin.tar.gz + unpack commons-text-${APACHE_COMMON_TEXT_VERSION}-bin.tar.gz +} + +src_prepare() { + cmake_src_prepare + + # avoid long delays when powerkit isn't running #348580 + sed -i \ + -e '/dbus_connection_send_with_reply_and_block/s:-1:3000:' \ + xbmc/platform/linux/*.cpp || die + + # Add all possible names for kissfft libraries + for datatype in {float,int16,int32,simd}; do + sed -i \ + -e "s/\(find_library(KISSFFT_LIBRARY NAMES .*\)/\1 kissfft-${datatype} kissfft-${datatype}-openmp/" \ + cmake/modules/FindKissFFT.cmake || die + done + + if tc-is-cross-compiler; then + # These tools are automatically built with CMake during a native build + # but need to be built in advance using Autotools for a cross build. + NATIVE_TOOLS=( + TexturePacker + JsonSchemaBuilder + ) + + local t + for t in "${NATIVE_TOOLS[@]}" ; do + pushd "${S}/tools/depends/native/$t/src" >/dev/null || die + AT_NOELIBTOOLIZE="yes" AT_TOPLEVEL_EAUTORECONF="yes" eautoreconf + popd >/dev/null || die + done + elibtoolize + fi +} + +src_configure() { + local core_platform=( + $(usev gbm) + $(usev wayland) + $(usev X x11) + ) + + local mycmakeargs=( + -Wno-dev # less noise + + -DAPP_RENDER_SYSTEM=$(usex gles gles gl) + -DCORE_PLATFORM_NAME="${core_platform[*]}" + -Ddocdir="${EPREFIX}/usr/share/doc/${PF}" + -DENABLE_TESTING=$(usex test) + -DVERBOSE=ON + + # Enforce use of configured python interpeter + -DPYTHON_PATH=$(python_get_library_path) + -DPYTHON_VER=${EPYTHON##python} # wont work for pypy + + # Toolchain + -DENABLE_CCACHE=OFF + -DENABLE_CLANGFORMAT=OFF + -DENABLE_CLANGTIDY=OFF + -DENABLE_CPPCHECK=OFF + -DENABLE_INCLUDEWHATYOUUSE=OFF + # https://bugs.gentoo.org/show_bug.cgi?id=606124 + -DENABLE_GOLD=OFF + -DENABLE_LLD=OFF + -DENABLE_MOLD=OFF + -DUSE_LTO=OFF + + # Features + -DENABLE_AIRTUNES=$(usex airplay) + -DENABLE_ALSA=$(usex alsa) + -DENABLE_AVAHI=$(usex zeroconf) + -DENABLE_BLUETOOTH=$(usex bluetooth) + -DENABLE_BLURAY=$(usex bluray) + -DENABLE_CAP=$(usex caps) + -DENABLE_CEC=$(usex cec) + -DENABLE_DBUS=$(usex dbus) + -DENABLE_DVDCSS=$(usex css) + -DENABLE_EVENTCLIENTS=ON # alway enable to have 'kodi-send' and filter extra stuff in 'src_install()' + -DENABLE_ISO9660PP=$(usex optical) + -DENABLE_LCMS2=$(usex lcms) + -DENABLE_LIRCCLIENT=$(usex lirc) + -DENABLE_MARIADBCLIENT=$(usex mariadb) + -DENABLE_MDNS=OFF # used only on Android + -DENABLE_MICROHTTPD=$(usex webserver) + -DENABLE_MYSQLCLIENT=$(usex mysql) + -DENABLE_NFS=$(usex nfs) + -DENABLE_OPENGL=$(usex !gles) + -DENABLE_OPENGLES=$(usex gles) + -DENABLE_OPTICAL=$(usex optical) + -DENABLE_PIPEWIRE=$(usex pipewire) + -DENABLE_PLIST=$(usex airplay) + -DENABLE_PULSEAUDIO=$(usex pulseaudio) + -DENABLE_SMBCLIENT=$(usex samba) + -DENABLE_SNDIO=OFF + -DENABLE_UDEV=$(usex udev) + -DENABLE_UDFREAD=$(usex udf) + -DENABLE_UPNP=$(usex upnp) + -DENABLE_VAAPI=$(usex vaapi) + -DENABLE_VDPAU=$(usex vdpau) + -DENABLE_XSLT=$(usex xslt) + + -DWITH_FFMPEG=$(usex system-ffmpeg) + + #To bundle or not + -DENABLE_INTERNAL_CROSSGUID=OFF + -DENABLE_INTERNAL_DAV1D=OFF + -DENABLE_INTERNAL_FFMPEG="$(usex !system-ffmpeg)" + -DENABLE_INTERNAL_FLATBUFFERS=OFF + -DENABLE_INTERNAL_FMT=OFF + -DENABLE_INTERNAL_FSTRCMP=OFF + -DENABLE_INTERNAL_GTEST=OFF + -DENABLE_INTERNAL_KISSFFT=OFF + -DENABLE_INTERNAL_PCRE=OFF + -DENABLE_INTERNAL_RapidJSON=OFF + -DENABLE_INTERNAL_SPDLOG=OFF + -DENABLE_INTERNAL_TAGLIB=OFF + -DENABLE_INTERNAL_UDFREAD=OFF + + -DTARBALL_DIR="${DISTDIR}" + -Dlibdvdnav_URL="${DISTDIR}/libdvdnav-${LIBDVDNAV_VERSION}.tar.gz" + -Dlibdvdread_URL="${DISTDIR}/libdvdread-${LIBDVDREAD_VERSION}.tar.gz" + -Dgroovy_SOURCE_DIR="${WORKDIR}/groovy-${GROOVY_VERSION}" + -Dapache-commons-lang_SOURCE_DIR="${WORKDIR}/commons-lang3-${APACHE_COMMON_LANG_VERSION}" + -Dapache-commons-text_SOURCE_DIR="${WORKDIR}/commons-text-${APACHE_COMMON_TEXT_VERSION}" + ) + + # Separated to avoid "Manually-specified variables were not used by the project:" + use cec && mycmakeargs+=( -DENABLE_INTERNAL_CEC=OFF ) + use css && mycmakeargs+=( -Dlibdvdcss_URL="${DISTDIR}/libdvdcss-${LIBDVDCSS_VERSION}.tar.gz" ) + use nfs && mycmakeargs+=( -DENABLE_INTERNAL_NFS=OFF ) + use !system-ffmpeg && mycmakeargs+=( + -DFFMPEG_URL="${DISTDIR}/ffmpeg-${FFMPEG_VERSION}.tar.gz" + ) + use !udev && mycmakeargs+=( -DENABLE_LIBUSB=$(usex libusb) ) + use X && use !gles && mycmakeargs+=( -DENABLE_GLX=ON ) + + for flag in ${CPU_FLAGS[@]} ; do + local name=${flag#cpu_flags_*_} + mycmakeargs+=( -DENABLE_${name^^}=$(usex ${flag}) ) + done + + if use system-ffmpeg; then + # TODO: drop compat and allow using >=media-video/ffmpeg-7 + ffmpeg_compat_setup 6 + ffmpeg_compat_add_flags + mycmakeargs+=( -DFFMPEG_INCLUDE_DIRS="${SYSROOT}$(ffmpeg_compat_get_prefix 6)" ) + fi + + if ! is-flag -DNDEBUG && ! is-flag -D_DEBUG ; then + # Kodi requires one of the 'NDEBUG' or '_DEBUG' defines + append-cflags -DNDEBUG + append-cxxflags -DNDEBUG + fi + + # Violates ODR (bug #860984) and USE_LTO does spooky stuff + # https://github.com/xbmc/xbmc/commit/cb72a22d54a91845b1092c295f84eeb48328921e + filter-lto + + # bug #926076 + append-flags -fPIC + + # used by vendored libdvdread + tc-export PKG_CONFIG + + if tc-is-cross-compiler; then + for t in "${NATIVE_TOOLS[@]}" ; do + pushd "${S}/tools/depends/native/$t/src" >/dev/null || die + econf_build + install -m0755 /dev/null "$t" || die # Actually build later. + mycmakeargs+=( -DWITH_${t^^}="${PWD}/$t" ) + popd >/dev/null || die + done + fi + + cmake_src_configure +} + +src_compile() { + if tc-is-cross-compiler; then + for t in "${NATIVE_TOOLS[@]}" ; do + emake -C "${S}/tools/depends/native/$t/src" + done + fi + + cmake_src_compile all + use doc && cmake_build doc + use test && cmake_build kodi-test +} + +src_test() { + local -x CMAKE_SKIP_TESTS=( + # Known failing, unreliable test + # bug #743938 + TestCPUInfo.GetCPUFrequency + # Test failure stemming from sci-libs/kissfft + # The difference between output[2i] and (i==freq1?1.0:0.0) is inf, which exceeds 1e-7, where output[2i] + # evaluates to inf,(i==freq1?1.0:0.0) evaluates to 0, and 1e-7 evaluates to 9.9999999999999995e-08. + TestRFFT.SimpleSignal + # Tries to ping localhost, naturally breaking network-sandbox + TestNetwork.PingHost + ) + + if use arm || use x86; then + # bug #779184 + # https://github.com/xbmc/xbmc/issues/18594 + CMAKE_SKIP_TESTS+=( + TestDateTime.Reset + TestDateTime.SetDateTime + TestDateTime.SetFromDBTime + ) + fi + + # see https://github.com/xbmc/xbmc/issues/17860#issuecomment-630120213 + local -x KODI_HOME="${BUILD_DIR}" + + cmake_src_test +} + +src_install() { + cmake_src_install + + # bug #457588 + pax-mark Em "${ED}"/usr/$(get_libdir)/${PN}/${PN}.bin + + newicon media/icon48x48.png kodi.png + + rm "${ED}"/usr/share/kodi/addons/skin.estuary/fonts/Roboto-Thin.ttf || die + dosym ../../../../fonts/roboto/Roboto-Thin.ttf \ + usr/share/kodi/addons/skin.estuary/fonts/Roboto-Thin.ttf + + if use !eventclients ; then + rm -f "${ED}"/usr/bin/kodi-ps3remote || die + rm -f "${D}"$(python_get_sitedir)/kodi/ps3_remote.py || die + rm -rf "${D}"$(python_get_sitedir)/kodi/ps3 || die + rm -rf "${D}"$(python_get_sitedir)/kodi/bt || die + rm -rf "${ED}"/usr/share/doc/${PF}/kodi-eventclients-dev || die + fi + + python_optimize "${D}$(python_get_sitedir)" + + einstalldocs + use doc && dodoc -r "${S}"/docs/html/ +} + +pkg_postinst() { + xdg_pkg_postinst + + if use dbus ; then + optfeature "getting battery level and active power source" sys-power/upower + optfeature "control of shutdown, reboot, suspend, and hibernate" sys-auth/elogind sys-apps/systemd + optfeature "storage management support (automounting, volume monitoring, etc)" sys-fs/udisks:2 + fi +} diff --git a/media-tv/kodi/kodi-21.9999.ebuild b/media-tv/kodi/kodi-21.9999.ebuild new file mode 100644 index 000000000000..51055c566398 --- /dev/null +++ b/media-tv/kodi/kodi-21.9999.ebuild @@ -0,0 +1,552 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CODENAME="Omega" + +# libdvd{css,read,nav} are not unbundlable without patching the buildsystem. + +# Versions for the forked projects that are bundled +# See tools/depends/target/<project>/<project>-VERSION +LIBDVDCSS_VERSION="1.4.3-Next-Nexus-Alpha2-2" +LIBDVDREAD_VERSION="6.1.3-Next-Nexus-Alpha2-2" +LIBDVDNAV_VERSION="6.1.1-Next-Nexus-Alpha2-2" +FFMPEG_VERSION="6.0.1" + +# Java bundles from xbmc/interfaces/swig/CMakeLists.txt +GROOVY_VERSION="4.0.26" +APACHE_COMMON_LANG_VERSION="3.17.0" +APACHE_COMMON_TEXT_VERSION="1.13.0" + +_JAVA_PKG_WANT_BUILD_VM=( {openjdk{,-jre},icedtea}{,-bin}-{8,11,17,21} ) +JAVA_PKG_WANT_BUILD_VM=${_JAVA_PKG_WANT_BUILD_VM[@]} +# Required to be set, but not used. +JAVA_PKG_WANT_SOURCE="21" +JAVA_PKG_WANT_TARGET="21" + +PYTHON_REQ_USE="sqlite,ssl" +PYTHON_COMPAT=( python3_{13..14} ) + +# See cmake/scripts/common/ArchSetup.cmake for available options +CPU_FLAGS="cpu_flags_x86_sse cpu_flags_x86_sse2 cpu_flags_x86_sse3 cpu_flags_x86_sse4_1 cpu_flags_x86_sse4_2 cpu_flags_x86_avx cpu_flags_x86_avx2 cpu_flags_arm_neon" + +inherit autotools cmake desktop ffmpeg-compat flag-o-matic java-pkg-2 libtool +inherit linux-info optfeature pax-utils python-single-r1 toolchain-funcs xdg + +DESCRIPTION="A free and open source media-player and entertainment hub" +HOMEPAGE="https://kodi.tv/" + +SRC_URI=" + https://github.com/xbmc/libdvdnav/archive/${LIBDVDNAV_VERSION}.tar.gz + -> libdvdnav-${LIBDVDNAV_VERSION}.tar.gz + https://github.com/xbmc/libdvdread/archive/${LIBDVDREAD_VERSION}.tar.gz + -> libdvdread-${LIBDVDREAD_VERSION}.tar.gz + https://mirrors.kodi.tv/build-deps/sources/apache-groovy-binary-${GROOVY_VERSION}.zip + https://mirrors.kodi.tv/build-deps/sources/commons-lang3-${APACHE_COMMON_LANG_VERSION}-bin.tar.gz + https://mirrors.kodi.tv/build-deps/sources/commons-text-${APACHE_COMMON_TEXT_VERSION}-bin.tar.gz + css? ( + https://github.com/xbmc/libdvdcss/archive/${LIBDVDCSS_VERSION}.tar.gz + -> libdvdcss-${LIBDVDCSS_VERSION}.tar.gz + ) + !system-ffmpeg? ( + https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.gz + ) +" +if [[ ${PV} == *9999 ]] ; then + EGIT_REPO_URI="https://github.com/xbmc/xbmc.git" + if [[ ${PV} != "9999" ]]; then + EGIT_BRANCH="${CODENAME}" + fi + inherit git-r3 +else + MY_PV=${PV/_p/_r} + MY_PV=${MY_PV/_alpha/a} + MY_PV=${MY_PV/_beta/b} + MY_PV=${MY_PV/_rc/rc} + MY_PV="${MY_PV}-${CODENAME}" + MY_P="${PN}-${MY_PV}" + SRC_URI+=" https://github.com/xbmc/xbmc/archive/${MY_PV}.tar.gz -> ${MY_P}.tar.gz" + KEYWORDS="~amd64 ~arm64 ~riscv ~x86" + S=${WORKDIR}/xbmc-${MY_PV} +fi + +LICENSE="GPL-2+" +# vendored dependencies +# apache-groovy, common-lang3 and commons-text +LICENSE+=" Apache-2.0" +# libdvdnav, libdvdread and libdvdcss. +LICENSE+=" GPL-2+" +# ffmpeg built as USE="gpl" +LICENSE+=" !system-ffmpeg? ( GPL-2 )" + +SLOT="0" +# use flag is called libusb so that it doesn't fool people in thinking that +# it is _required_ for USB support. Otherwise they'll disable udev and +# that's going to be worse. +IUSE="airplay alsa bluetooth bluray caps cec +css dbus doc eventclients gbm gles lcms libusb lirc mariadb mysql nfs +optical pipewire pulseaudio samba soc +system-ffmpeg test udf udev upnp vaapi vdpau wayland webserver X +xslt zeroconf ${CPU_FLAGS}" +REQUIRED_USE=" + ${PYTHON_REQUIRED_USE} + || ( gbm wayland X ) + ?? ( mariadb mysql ) + bluray? ( udf ) + gbm? ( udev ) + soc? ( system-ffmpeg ) + udev? ( !libusb ) + vdpau? ( X !gles !gbm ) + zeroconf? ( dbus ) +" +RESTRICT="!test? ( test )" + +# dev-libs/libcec[-cubox] bug #818262 +COMMON_DEPEND=" + >=dev-libs/flatbuffers-23.3.3:= + >=dev-libs/lzo-2.04:2 + media-libs/giflib:= + >=media-libs/libjpeg-turbo-2.0.4:= + >=media-libs/libpng-1.6.26:0= + wayland? ( + dev-cpp/waylandpp:= + ) +" +COMMON_TARGET_DEPEND="${PYTHON_DEPS} + >=net-misc/curl-7.68.0[http2] + >=virtual/zlib-1.2.11:= + dev-db/sqlite:3 + dev-libs/crossguid + >=dev-libs/fribidi-1.0.5 + >=dev-libs/libcdio-2.1.0:=[cxx] + >=dev-libs/libfmt-6.1.2:= + dev-libs/libfstrcmp + dev-libs/libpcre[cxx] + >=dev-libs/openssl-1.1.1k:0= + >=dev-libs/spdlog-1.5.0:= + dev-libs/tinyxml[stl] + dev-libs/tinyxml2:= + media-fonts/roboto + media-libs/libglvnd[X?] + >=media-libs/freetype-2.10.1 + media-libs/harfbuzz:= + >=media-libs/libass-0.15.0:= + media-libs/mesa[opengl,wayland?,X?] + media-libs/taglib:= + sci-libs/kissfft + virtual/libiconv + virtual/ttf-fonts + x11-libs/libdrm + $(python_gen_cond_dep ' + dev-python/pillow[${PYTHON_USEDEP}] + dev-python/pycryptodome[${PYTHON_USEDEP}] + ') + airplay? ( + >=app-pda/libplist-2.0.0:= + net-libs/shairplay + ) + alsa? ( + >=media-libs/alsa-lib-1.1.4.1 + ) + bluetooth? ( + net-wireless/bluez:= + ) + bluray? ( + >=media-libs/libbluray-1.1.2:= + ) + caps? ( + sys-libs/libcap + ) + cec? ( + >=dev-libs/libcec-4.0[-cubox(-)] + ) + dbus? ( + sys-apps/dbus + ) + gbm? ( + >=dev-libs/libinput-1.10.5:= + media-libs/libdisplay-info:= + x11-libs/libxkbcommon + ) + !gles? ( + media-libs/glu + ) + lcms? ( + >=media-libs/lcms-2.10:2 + ) + libusb? ( + virtual/libusb:1 + ) + lirc? ( + app-misc/lirc + ) + mariadb? ( + dev-db/mariadb-connector-c:= + ) + mysql? ( + dev-db/mysql-connector-c:= + ) + nfs? ( + >=net-fs/libnfs-2.0.0:= + ) + pipewire? ( + >=media-video/pipewire-0.3.50:= + ) + pulseaudio? ( + media-libs/libpulse + ) + samba? ( + >=net-fs/samba-3.4.6[smbclient(+)] + ) + system-ffmpeg? ( + media-video/ffmpeg-compat:6=[encode(+),soc(-)?,postproc(-),vaapi?,vdpau?,X?] + ) + !system-ffmpeg? ( + app-arch/bzip2 + app-arch/xz-utils + media-libs/dav1d:= + net-libs/gnutls:= + ) + udf? ( + >=dev-libs/libudfread-1.0.0 + ) + udev? ( + virtual/libudev:= + ) + vaapi? ( + media-libs/libva:=[wayland?,X?] + ) + vdpau? ( + || ( + >=x11-libs/libvdpau-1.1 + >=x11-drivers/nvidia-drivers-180.51 + ) + ) + wayland? ( + >=x11-libs/libxkbcommon-0.4.1 + ) + webserver? ( + >=net-libs/libmicrohttpd-0.9.77:= + ) + X? ( + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXrandr + ) + xslt? ( + dev-libs/libxslt + >=dev-libs/libxml2-2.9.4:= + ) + zeroconf? ( + net-dns/avahi[dbus] + ) +" +RDEPEND=" + ${COMMON_DEPEND} + ${COMMON_TARGET_DEPEND} +" +DEPEND=" + ${COMMON_DEPEND} + ${COMMON_TARGET_DEPEND} + >=dev-libs/rapidjson-1.0.2 + test? ( + >=dev-cpp/gtest-1.10.0 + ) + wayland? ( + >=dev-libs/wayland-protocols-1.7 + ) + X? ( + x11-base/xorg-proto + x11-libs/libXrender + ) +" +BDEPEND=" + ${COMMON_DEPEND} + app-arch/unzip + dev-build/cmake + dev-lang/swig + virtual/pkgconfig + <=virtual/jre-21-r9999:* + doc? ( + app-text/doxygen + ) +" + +PATCHES=( + "${FILESDIR}"/kodi-21-optional-ffmpeg-libx11.patch + "${FILESDIR}"/kodi-21.1-silence-libdvdread-git.patch +) + +# bug #544020 +CONFIG_CHECK="~IP_MULTICAST" +ERROR_IP_MULTICAST=" +In some cases Kodi needs to access multicast addresses. +Please consider enabling IP_MULTICAST under Networking options. +" + +pkg_setup() { + check_extra_config + ROOT= java-pkg-2_pkg_setup + python-single-r1_pkg_setup +} + +src_unpack() { + if [[ ${PV} == *9999 ]] ; then + git-r3_src_unpack + else + unpack ${MY_P}.tar.gz + fi + + unpack apache-groovy-binary-${GROOVY_VERSION}.zip + unpack commons-lang3-${APACHE_COMMON_LANG_VERSION}-bin.tar.gz + unpack commons-text-${APACHE_COMMON_TEXT_VERSION}-bin.tar.gz +} + +src_prepare() { + cmake_src_prepare + + # avoid long delays when powerkit isn't running #348580 + sed -i \ + -e '/dbus_connection_send_with_reply_and_block/s:-1:3000:' \ + xbmc/platform/linux/*.cpp || die + + # Add all possible names for kissfft libraries + for datatype in {float,int16,int32,simd}; do + sed -i \ + -e "s/\(find_library(KISSFFT_LIBRARY NAMES .*\)/\1 kissfft-${datatype} kissfft-${datatype}-openmp/" \ + cmake/modules/FindKissFFT.cmake || die + done + + if tc-is-cross-compiler; then + # These tools are automatically built with CMake during a native build + # but need to be built in advance using Autotools for a cross build. + NATIVE_TOOLS=( + TexturePacker + JsonSchemaBuilder + ) + + local t + for t in "${NATIVE_TOOLS[@]}" ; do + pushd "${S}/tools/depends/native/$t/src" >/dev/null || die + AT_NOELIBTOOLIZE="yes" AT_TOPLEVEL_EAUTORECONF="yes" eautoreconf + popd >/dev/null || die + done + elibtoolize + fi +} + +src_configure() { + local core_platform=( + $(usev gbm) + $(usev wayland) + $(usev X x11) + ) + + local mycmakeargs=( + -Wno-dev # less noise + + -DAPP_RENDER_SYSTEM=$(usex gles gles gl) + -DCORE_PLATFORM_NAME="${core_platform[*]}" + -Ddocdir="${EPREFIX}/usr/share/doc/${PF}" + -DENABLE_TESTING=$(usex test) + -DVERBOSE=ON + + # Enforce use of configured python interpeter + -DPYTHON_PATH=$(python_get_library_path) + -DPYTHON_VER=${EPYTHON##python} # wont work for pypy + + # Toolchain + -DENABLE_CCACHE=OFF + -DENABLE_CLANGFORMAT=OFF + -DENABLE_CLANGTIDY=OFF + -DENABLE_CPPCHECK=OFF + -DENABLE_INCLUDEWHATYOUUSE=OFF + # https://bugs.gentoo.org/show_bug.cgi?id=606124 + -DENABLE_GOLD=OFF + -DENABLE_LLD=OFF + -DENABLE_MOLD=OFF + -DUSE_LTO=OFF + + # Features + -DENABLE_AIRTUNES=$(usex airplay) + -DENABLE_ALSA=$(usex alsa) + -DENABLE_AVAHI=$(usex zeroconf) + -DENABLE_BLUETOOTH=$(usex bluetooth) + -DENABLE_BLURAY=$(usex bluray) + -DENABLE_CAP=$(usex caps) + -DENABLE_CEC=$(usex cec) + -DENABLE_DBUS=$(usex dbus) + -DENABLE_DVDCSS=$(usex css) + -DENABLE_EVENTCLIENTS=ON # alway enable to have 'kodi-send' and filter extra stuff in 'src_install()' + -DENABLE_ISO9660PP=$(usex optical) + -DENABLE_LCMS2=$(usex lcms) + -DENABLE_LIRCCLIENT=$(usex lirc) + -DENABLE_MARIADBCLIENT=$(usex mariadb) + -DENABLE_MDNS=OFF # used only on Android + -DENABLE_MICROHTTPD=$(usex webserver) + -DENABLE_MYSQLCLIENT=$(usex mysql) + -DENABLE_NFS=$(usex nfs) + -DENABLE_OPENGL=$(usex !gles) + -DENABLE_OPENGLES=$(usex gles) + -DENABLE_OPTICAL=$(usex optical) + -DENABLE_PIPEWIRE=$(usex pipewire) + -DENABLE_PLIST=$(usex airplay) + -DENABLE_PULSEAUDIO=$(usex pulseaudio) + -DENABLE_SMBCLIENT=$(usex samba) + -DENABLE_SNDIO=OFF + -DENABLE_UDEV=$(usex udev) + -DENABLE_UDFREAD=$(usex udf) + -DENABLE_UPNP=$(usex upnp) + -DENABLE_VAAPI=$(usex vaapi) + -DENABLE_VDPAU=$(usex vdpau) + -DENABLE_XSLT=$(usex xslt) + + -DWITH_FFMPEG=$(usex system-ffmpeg) + + #To bundle or not + -DENABLE_INTERNAL_CROSSGUID=OFF + -DENABLE_INTERNAL_DAV1D=OFF + -DENABLE_INTERNAL_FFMPEG="$(usex !system-ffmpeg)" + -DENABLE_INTERNAL_FLATBUFFERS=OFF + -DENABLE_INTERNAL_FMT=OFF + -DENABLE_INTERNAL_FSTRCMP=OFF + -DENABLE_INTERNAL_GTEST=OFF + -DENABLE_INTERNAL_KISSFFT=OFF + -DENABLE_INTERNAL_PCRE=OFF + -DENABLE_INTERNAL_RapidJSON=OFF + -DENABLE_INTERNAL_SPDLOG=OFF + -DENABLE_INTERNAL_TAGLIB=OFF + -DENABLE_INTERNAL_UDFREAD=OFF + + -DTARBALL_DIR="${DISTDIR}" + -Dlibdvdnav_URL="${DISTDIR}/libdvdnav-${LIBDVDNAV_VERSION}.tar.gz" + -Dlibdvdread_URL="${DISTDIR}/libdvdread-${LIBDVDREAD_VERSION}.tar.gz" + -Dgroovy_SOURCE_DIR="${WORKDIR}/groovy-${GROOVY_VERSION}" + -Dapache-commons-lang_SOURCE_DIR="${WORKDIR}/commons-lang3-${APACHE_COMMON_LANG_VERSION}" + -Dapache-commons-text_SOURCE_DIR="${WORKDIR}/commons-text-${APACHE_COMMON_TEXT_VERSION}" + ) + + # Separated to avoid "Manually-specified variables were not used by the project:" + use cec && mycmakeargs+=( -DENABLE_INTERNAL_CEC=OFF ) + use css && mycmakeargs+=( -Dlibdvdcss_URL="${DISTDIR}/libdvdcss-${LIBDVDCSS_VERSION}.tar.gz" ) + use nfs && mycmakeargs+=( -DENABLE_INTERNAL_NFS=OFF ) + use !system-ffmpeg && mycmakeargs+=( + -DFFMPEG_URL="${DISTDIR}/ffmpeg-${FFMPEG_VERSION}.tar.gz" + ) + use !udev && mycmakeargs+=( -DENABLE_LIBUSB=$(usex libusb) ) + use X && use !gles && mycmakeargs+=( -DENABLE_GLX=ON ) + + for flag in ${CPU_FLAGS[@]} ; do + local name=${flag#cpu_flags_*_} + mycmakeargs+=( -DENABLE_${name^^}=$(usex ${flag}) ) + done + + if use system-ffmpeg; then + # TODO: drop compat and allow using >=media-video/ffmpeg-7 + ffmpeg_compat_setup 6 + ffmpeg_compat_add_flags + mycmakeargs+=( -DFFMPEG_INCLUDE_DIRS="${SYSROOT}$(ffmpeg_compat_get_prefix 6)" ) + fi + + if ! is-flag -DNDEBUG && ! is-flag -D_DEBUG ; then + # Kodi requires one of the 'NDEBUG' or '_DEBUG' defines + append-cflags -DNDEBUG + append-cxxflags -DNDEBUG + fi + + # Violates ODR (bug #860984) and USE_LTO does spooky stuff + # https://github.com/xbmc/xbmc/commit/cb72a22d54a91845b1092c295f84eeb48328921e + filter-lto + + # bug #926076 + append-flags -fPIC + + # used by vendored libdvdread + tc-export PKG_CONFIG + + if tc-is-cross-compiler; then + for t in "${NATIVE_TOOLS[@]}" ; do + pushd "${S}/tools/depends/native/$t/src" >/dev/null || die + econf_build + install -m0755 /dev/null "$t" || die # Actually build later. + mycmakeargs+=( -DWITH_${t^^}="${PWD}/$t" ) + popd >/dev/null || die + done + fi + + cmake_src_configure +} + +src_compile() { + if tc-is-cross-compiler; then + for t in "${NATIVE_TOOLS[@]}" ; do + emake -C "${S}/tools/depends/native/$t/src" + done + fi + + cmake_src_compile all + use doc && cmake_build doc + use test && cmake_build kodi-test +} + +src_test() { + local -x CMAKE_SKIP_TESTS=( + # Known failing, unreliable test + # bug #743938 + TestCPUInfo.GetCPUFrequency + # Test failure stemming from sci-libs/kissfft + # The difference between output[2i] and (i==freq1?1.0:0.0) is inf, which exceeds 1e-7, where output[2i] + # evaluates to inf,(i==freq1?1.0:0.0) evaluates to 0, and 1e-7 evaluates to 9.9999999999999995e-08. + TestRFFT.SimpleSignal + # Tries to ping localhost, naturally breaking network-sandbox + TestNetwork.PingHost + ) + + if use arm || use x86; then + # bug #779184 + # https://github.com/xbmc/xbmc/issues/18594 + CMAKE_SKIP_TESTS+=( + TestDateTime.Reset + TestDateTime.SetDateTime + TestDateTime.SetFromDBTime + ) + fi + + # see https://github.com/xbmc/xbmc/issues/17860#issuecomment-630120213 + local -x KODI_HOME="${BUILD_DIR}" + + cmake_src_test +} + +src_install() { + cmake_src_install + + # bug #457588 + pax-mark Em "${ED}"/usr/$(get_libdir)/${PN}/${PN}.bin + + newicon media/icon48x48.png kodi.png + + rm "${ED}"/usr/share/kodi/addons/skin.estuary/fonts/Roboto-Thin.ttf || die + dosym ../../../../fonts/roboto/Roboto-Thin.ttf \ + usr/share/kodi/addons/skin.estuary/fonts/Roboto-Thin.ttf + + if use !eventclients ; then + rm -f "${ED}"/usr/bin/kodi-ps3remote || die + rm -f "${D}"$(python_get_sitedir)/kodi/ps3_remote.py || die + rm -rf "${D}"$(python_get_sitedir)/kodi/ps3 || die + rm -rf "${D}"$(python_get_sitedir)/kodi/bt || die + rm -rf "${ED}"/usr/share/doc/${PF}/kodi-eventclients-dev || die + fi + + python_optimize "${D}$(python_get_sitedir)" + + einstalldocs + use doc && dodoc -r "${S}"/docs/html/ +} + +pkg_postinst() { + xdg_pkg_postinst + + if use dbus ; then + optfeature "getting battery level and active power source" sys-power/upower + optfeature "control of shutdown, reboot, suspend, and hibernate" sys-auth/elogind sys-apps/systemd + optfeature "storage management support (automounting, volume monitoring, etc)" sys-fs/udisks:2 + fi +} diff --git a/media-tv/kodi/kodi-22.0_alpha2.ebuild b/media-tv/kodi/kodi-22.0_alpha2.ebuild new file mode 100644 index 000000000000..fbb158b3ee15 --- /dev/null +++ b/media-tv/kodi/kodi-22.0_alpha2.ebuild @@ -0,0 +1,534 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CODENAME="Piers" + +# libdvd{css,read,nav} are not unbundlable without patching the buildsystem. + +# Versions for the forked projects that are bundled +# See tools/depends/target/<project>/<project>-VERSION +LIBDVDCSS_VERSION="1.4.3-Next-Nexus-Alpha2-2" +LIBDVDREAD_VERSION="6.1.3-Next-Nexus-Alpha2-2" +LIBDVDNAV_VERSION="6.1.1-Next-Nexus-Alpha2-2" +FFMPEG_VERSION="8.0" + +# Java bundles from xbmc/interfaces/swig/CMakeLists.txt +GROOVY_VERSION="4.0.26" +APACHE_COMMON_LANG_VERSION="3.17.0" +APACHE_COMMON_TEXT_VERSION="1.13.0" + +_JAVA_PKG_WANT_BUILD_VM=( {openjdk{,-jre},icedtea}{,-bin}-{8,11,17,21} ) +JAVA_PKG_WANT_BUILD_VM=${_JAVA_PKG_WANT_BUILD_VM[@]} +# Required to be set, but not used. +JAVA_PKG_WANT_SOURCE="21" +JAVA_PKG_WANT_TARGET="21" + +PYTHON_REQ_USE="sqlite,ssl" +PYTHON_COMPAT=( python3_{13..14} ) + +# See cmake/scripts/common/ArchSetup.cmake for available options +CPU_FLAGS="cpu_flags_x86_sse cpu_flags_x86_sse2 cpu_flags_x86_sse3 cpu_flags_x86_sse4_1 cpu_flags_x86_sse4_2 cpu_flags_x86_avx cpu_flags_x86_avx2 cpu_flags_arm_neon" + +inherit autotools cmake desktop flag-o-matic java-pkg-2 libtool linux-info optfeature pax-utils python-single-r1 \ + toolchain-funcs xdg + +DESCRIPTION="A free and open source media-player and entertainment hub" +HOMEPAGE="https://kodi.tv/" + +SRC_URI=" + https://github.com/xbmc/libdvdnav/archive/${LIBDVDNAV_VERSION}.tar.gz + -> libdvdnav-${LIBDVDNAV_VERSION}.tar.gz + https://github.com/xbmc/libdvdread/archive/${LIBDVDREAD_VERSION}.tar.gz + -> libdvdread-${LIBDVDREAD_VERSION}.tar.gz + https://mirrors.kodi.tv/build-deps/sources/apache-groovy-binary-${GROOVY_VERSION}.zip + https://mirrors.kodi.tv/build-deps/sources/commons-lang3-${APACHE_COMMON_LANG_VERSION}-bin.tar.gz + https://mirrors.kodi.tv/build-deps/sources/commons-text-${APACHE_COMMON_TEXT_VERSION}-bin.tar.gz + https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.xz + css? ( + https://github.com/xbmc/libdvdcss/archive/${LIBDVDCSS_VERSION}.tar.gz + -> libdvdcss-${LIBDVDCSS_VERSION}.tar.gz + ) +" +if [[ ${PV} == *9999 ]] ; then + EGIT_REPO_URI="https://github.com/xbmc/xbmc.git" + if [[ ${PV} != "9999" ]]; then + EGIT_BRANCH="${CODENAME}" + fi + inherit git-r3 +else + MY_PV=${PV/_p/_r} + MY_PV=${MY_PV/_alpha/a} + MY_PV=${MY_PV/_beta/b} + MY_PV=${MY_PV/_rc/rc} + MY_PV="${MY_PV}-${CODENAME}" + MY_P="${PN}-${MY_PV}" + SRC_URI+=" https://github.com/xbmc/xbmc/archive/${MY_PV}.tar.gz -> ${MY_P}.tar.gz" + # Dont keyword + if ! [[ ${PV} =~ _alpha ]] && ! [[ ${PV} =~ _beta ]] && ! [[ ${PV} =~ _rc ]]; then + KEYWORDS="~amd64 ~arm64 ~riscv ~x86" + fi + S=${WORKDIR}/xbmc-${MY_PV} +fi + +LICENSE="GPL-2+" +# vendored dependencies +# apache-groovy, common-lang3 and commons-text +LICENSE+=" Apache-2.0" +# libdvdnav, libdvdread and libdvdcss. +LICENSE+=" GPL-2+" +# ffmpeg built as USE="gpl" +LICENSE+=" GPL-2" + +SLOT="0" +# use flag is called libusb so that it doesn't fool people in thinking that +# it is _required_ for USB support. Otherwise they'll disable udev and +# that's going to be worse. +IUSE="airplay alsa bluetooth bluray caps cec +css dbus doc eventclients gbm gles lcms libusb lirc mariadb mysql nfs +optical pipewire pulseaudio samba +system-ffmpeg test udf udev upnp vaapi vdpau wayland webserver X +xslt zeroconf ${CPU_FLAGS}" +REQUIRED_USE=" + ${PYTHON_REQUIRED_USE} + || ( gbm wayland X ) + ?? ( mariadb mysql ) + bluray? ( udf ) + gbm? ( udev ) + udev? ( !libusb ) + vdpau? ( X !gles !gbm ) + zeroconf? ( dbus ) +" +RESTRICT="!test? ( test )" + +# dev-libs/libcec[-cubox] bug #818262 +COMMON_DEPEND=" + >=dev-libs/flatbuffers-23.3.3:= + >=dev-libs/lzo-2.04:2 + media-libs/giflib:= + >=media-libs/libjpeg-turbo-2.0.4:= + >=media-libs/libpng-1.6.26:0= + wayland? ( + dev-cpp/waylandpp:= + ) +" +COMMON_TARGET_DEPEND="${PYTHON_DEPS} + app-arch/bzip2 + app-arch/xz-utils + >=net-misc/curl-7.68.0[http2] + >=virtual/zlib-1.2.11:= + dev-db/sqlite:3 + dev-libs/crossguid + >=dev-libs/fribidi-1.0.5 + >=dev-libs/libcdio-2.1.0:=[cxx] + >=dev-libs/libfmt-6.1.2:= + dev-libs/libfstrcmp + dev-libs/libpcre2:= + >=dev-libs/openssl-1.1.1k:0= + >=dev-libs/spdlog-1.5.0:= + dev-libs/tinyxml[stl] + dev-libs/tinyxml2:= + media-fonts/roboto + media-gfx/exiv2:= + media-libs/dav1d:= + media-libs/libglvnd[X?] + >=media-libs/freetype-2.10.1 + media-libs/harfbuzz:= + >=media-libs/libass-0.15.0:= + media-libs/mesa[opengl,wayland?,X?] + media-libs/taglib:= + net-libs/gnutls:= + virtual/libiconv + virtual/ttf-fonts + x11-libs/libdrm + $(python_gen_cond_dep ' + dev-python/pillow[${PYTHON_USEDEP}] + dev-python/pycryptodome[${PYTHON_USEDEP}] + ') + airplay? ( + >=app-pda/libplist-2.0.0:= + net-libs/shairplay + ) + alsa? ( + >=media-libs/alsa-lib-1.1.4.1 + ) + bluetooth? ( + net-wireless/bluez:= + ) + bluray? ( + >=media-libs/libbluray-1.1.2:= + ) + caps? ( + sys-libs/libcap + ) + cec? ( + >=dev-libs/libcec-4.0[-cubox(-)] + ) + dbus? ( + sys-apps/dbus + ) + gbm? ( + >=dev-libs/libinput-1.10.5:= + media-libs/libdisplay-info:= + x11-libs/libxkbcommon + ) + !gles? ( + media-libs/glu + ) + lcms? ( + >=media-libs/lcms-2.10:2 + ) + libusb? ( + virtual/libusb:1 + ) + lirc? ( + app-misc/lirc + ) + mariadb? ( + dev-db/mariadb-connector-c:= + ) + mysql? ( + dev-db/mysql-connector-c:= + ) + nfs? ( + >=net-fs/libnfs-3.0.0:= + ) + pipewire? ( + >=media-video/pipewire-0.3.50:= + ) + pulseaudio? ( + >=media-libs/libpulse-11.0.0 + ) + samba? ( + >=net-fs/samba-3.4.6[smbclient(+)] + ) + udf? ( + >=dev-libs/libudfread-1.0.0 + ) + udev? ( + virtual/libudev:= + ) + vaapi? ( + media-libs/libva:=[wayland?,X?] + ) + vdpau? ( + || ( + >=x11-libs/libvdpau-1.1 + >=x11-drivers/nvidia-drivers-180.51 + ) + ) + wayland? ( + >=x11-libs/libxkbcommon-0.4.1 + ) + webserver? ( + >=net-libs/libmicrohttpd-0.9.77:= + ) + X? ( + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXrandr + ) + xslt? ( + dev-libs/libxslt + >=dev-libs/libxml2-2.9.4:= + ) + zeroconf? ( + net-dns/avahi[dbus] + ) +" +RDEPEND=" + ${COMMON_DEPEND} + ${COMMON_TARGET_DEPEND} +" +DEPEND=" + ${COMMON_DEPEND} + ${COMMON_TARGET_DEPEND} + >=dev-cpp/nlohmann_json-3.2.0 + test? ( + >=dev-cpp/gtest-1.10.0 + ) + wayland? ( + >=dev-libs/wayland-protocols-1.7 + ) + X? ( + x11-base/xorg-proto + x11-libs/libXrender + ) +" +BDEPEND=" + ${COMMON_DEPEND} + app-arch/unzip + dev-build/cmake + dev-lang/swig + virtual/pkgconfig + <=virtual/jre-21-r9999:* + doc? ( + app-text/doxygen + ) +" + +PATCHES=( + "${FILESDIR}"/kodi-21-optional-ffmpeg-libx11.patch + "${FILESDIR}"/kodi-22-silence-libdvdread-git.patch + "${FILESDIR}"/kodi-22-fix-native-build.patch +) + +# bug #544020 +CONFIG_CHECK="~IP_MULTICAST" +ERROR_IP_MULTICAST=" +In some cases Kodi needs to access multicast addresses. +Please consider enabling IP_MULTICAST under Networking options. +" + +pkg_setup() { + check_extra_config + ROOT= java-pkg-2_pkg_setup + python-single-r1_pkg_setup +} + +src_unpack() { + if [[ ${PV} == *9999 ]] ; then + git-r3_src_unpack + else + unpack ${MY_P}.tar.gz + fi + + unpack apache-groovy-binary-${GROOVY_VERSION}.zip + unpack commons-lang3-${APACHE_COMMON_LANG_VERSION}-bin.tar.gz + unpack commons-text-${APACHE_COMMON_TEXT_VERSION}-bin.tar.gz +} + +src_prepare() { + cmake_src_prepare + + # avoid long delays when powerkit isn't running #348580 + sed -i \ + -e '/dbus_connection_send_with_reply_and_block/s:-1:3000:' \ + xbmc/platform/linux/*.cpp || die + + if tc-is-cross-compiler; then + # These tools are automatically built with CMake during a native build + # but need to be built in advance using Autotools for a cross build. + NATIVE_TOOLS=( + TexturePacker + JsonSchemaBuilder + ) + + local t + for t in "${NATIVE_TOOLS[@]}" ; do + pushd "${S}/tools/depends/native/$t/src" >/dev/null || die + AT_NOELIBTOOLIZE="yes" AT_TOPLEVEL_EAUTORECONF="yes" eautoreconf + popd >/dev/null || die + done + elibtoolize + fi +} + +src_configure() { + local core_platform=( + $(usev gbm) + $(usev wayland) + $(usev X x11) + ) + + local mycmakeargs=( + -Wno-dev # less noise + + -DAPP_RENDER_SYSTEM=$(usex gles gles gl) + -DCORE_PLATFORM_NAME="${core_platform[*]}" + -Ddocdir="${EPREFIX}/usr/share/doc/${PF}" + -DENABLE_TESTING=$(usex test) + -DVERBOSE=ON + + # Enforce use of configured python interpeter + -DPYTHON_PATH=$(python_get_library_path) + -DPYTHON_VER=${EPYTHON##python} # wont work for pypy + + # Toolchain + -DENABLE_CCACHE=OFF + -DENABLE_CLANGFORMAT=OFF + -DENABLE_CLANGTIDY=OFF + -DENABLE_CPPCHECK=OFF + -DENABLE_INCLUDEWHATYOUUSE=OFF + # https://bugs.gentoo.org/show_bug.cgi?id=606124 + -DENABLE_GOLD=OFF + -DENABLE_LLD=OFF + -DENABLE_MOLD=OFF + + # Features + -DENABLE_AIRTUNES=$(usex airplay) + -DENABLE_ALSA=$(usex alsa) + -DENABLE_AVAHI=$(usex zeroconf) + -DENABLE_BLUETOOTH=$(usex bluetooth) + -DENABLE_BLURAY=$(usex bluray) + -DENABLE_CAP=$(usex caps) + -DENABLE_CEC=$(usex cec) + -DENABLE_DBUS=$(usex dbus) + -DENABLE_DVDCSS=$(usex css) + -DENABLE_EVENTCLIENTS=ON # alway enable to have 'kodi-send' and filter extra stuff in 'src_install()' + -DENABLE_ISO9660PP=$(usex optical) + -DENABLE_LCMS2=$(usex lcms) + -DENABLE_LIRCCLIENT=$(usex lirc) + -DENABLE_MARIADBCLIENT=$(usex mariadb) + -DENABLE_MDNS=OFF # used only on Android + -DENABLE_MICROHTTPD=$(usex webserver) + -DENABLE_MYSQLCLIENT=$(usex mysql) + -DENABLE_NFS=$(usex nfs) + -DENABLE_OPENGL=$(usex !gles) + -DENABLE_OPENGLES=$(usex gles) + -DENABLE_OPTICAL=$(usex optical) + -DENABLE_PIPEWIRE=$(usex pipewire) + -DENABLE_PLIST=$(usex airplay) + -DENABLE_PULSEAUDIO=$(usex pulseaudio) + -DENABLE_SMBCLIENT=$(usex samba) + -DENABLE_SNDIO=OFF + -DENABLE_UDEV=$(usex udev) + -DENABLE_UDFREAD=$(usex udf) + -DENABLE_UPNP=$(usex upnp) + -DENABLE_VAAPI=$(usex vaapi) + -DENABLE_VDPAU=$(usex vdpau) + -DENABLE_XSLT=$(usex xslt) + + # ffmpeg hasn't decided on if postproc is removed or not and kodi has chosen to patch it back + -DWITH_FFMPEG=OFF + + #To bundle or not + -DENABLE_INTERNAL_ASS=OFF + -DENABLE_INTERNAL_CURL=OFF + -DENABLE_INTERNAL_CROSSGUID=OFF + -DENABLE_INTERNAL_DAV1D=OFF + -DENABLE_INTERNAL_EXIV2=OFF + -DENABLE_INTERNAL_FFMPEG=ON + -DENABLE_INTERNAL_FLATBUFFERS=OFF + -DENABLE_INTERNAL_FMT=OFF + -DENABLE_INTERNAL_FSTRCMP=OFF + -DENABLE_INTERNAL_GTEST=OFF + -DENABLE_INTERNAL_PCRE2=OFF + -DENABLE_INTERNAL_NLOHMANNJSON=OFF + -DENABLE_INTERNAL_SPDLOG=OFF + -DENABLE_INTERNAL_TAGLIB=OFF + + -DTARBALL_DIR="${DISTDIR}" + -Dlibdvdnav_URL="${DISTDIR}/libdvdnav-${LIBDVDNAV_VERSION}.tar.gz" + -Dlibdvdread_URL="${DISTDIR}/libdvdread-${LIBDVDREAD_VERSION}.tar.gz" + -Dgroovy_SOURCE_DIR="${WORKDIR}/groovy-${GROOVY_VERSION}" + -Dapache-commons-lang_SOURCE_DIR="${WORKDIR}/commons-lang3-${APACHE_COMMON_LANG_VERSION}" + -Dapache-commons-text_SOURCE_DIR="${WORKDIR}/commons-text-${APACHE_COMMON_TEXT_VERSION}" + -DFFMPEG_URL="${DISTDIR}/ffmpeg-${FFMPEG_VERSION}.tar.xz" + ) + + # Separated to avoid "Manually-specified variables were not used by the project:" + use cec && mycmakeargs+=( -DENABLE_INTERNAL_CEC=OFF ) + use css && mycmakeargs+=( -Dlibdvdcss_URL="${DISTDIR}/libdvdcss-${LIBDVDCSS_VERSION}.tar.gz" ) + use nfs && mycmakeargs+=( -DENABLE_INTERNAL_NFS=OFF ) + use !udev && mycmakeargs+=( -DENABLE_LIBUSB=$(usex libusb) ) + use X && use !gles && mycmakeargs+=( -DENABLE_GLX=ON ) + + for flag in ${CPU_FLAGS[@]} ; do + local name=${flag#cpu_flags_*_} + mycmakeargs+=( -DENABLE_${name^^}=$(usex ${flag}) ) + done + + if ! is-flag -DNDEBUG && ! is-flag -D_DEBUG ; then + # Kodi requires one of the 'NDEBUG' or '_DEBUG' defines + append-cflags -DNDEBUG + append-cxxflags -DNDEBUG + fi + + if tc-is-lto ; then + mycmakeargs+=( -DUSE_LTO=ON ) + else + mycmakeargs+=( -DUSE_LTO=OFF ) + fi + + # bug #926076 + append-flags -fPIC + + # used by vendored libdvdread + tc-export PKG_CONFIG + + if tc-is-cross-compiler; then + for t in "${NATIVE_TOOLS[@]}" ; do + pushd "${S}/tools/depends/native/$t/src" >/dev/null || die + econf_build + install -m0755 /dev/null "$t" || die # Actually build later. + mycmakeargs+=( -DWITH_${t^^}="${PWD}/$t" ) + popd >/dev/null || die + done + fi + + cmake_src_configure +} + +src_compile() { + if tc-is-cross-compiler; then + for t in "${NATIVE_TOOLS[@]}" ; do + emake -C "${S}/tools/depends/native/$t/src" + done + fi + + cmake_src_compile all + use doc && cmake_build doc + use test && cmake_build kodi-test +} + +src_test() { + local -x CMAKE_SKIP_TESTS=( + # Known failing, unreliable test + # bug #743938 + TestCPUInfo.GetCPUFrequency + # Tries to ping localhost, naturally breaking network-sandbox + TestNetwork.PingHost + ) + + # Tests assumes bluray support is enabled + use !bluray && CMAKE_SKIP_TESTS+=( TestURIUtils.GetBasePath ) + + if use arm || use x86; then + # bug #779184 + # https://github.com/xbmc/xbmc/issues/18594 + CMAKE_SKIP_TESTS+=( + TestDateTime.Reset + TestDateTime.SetDateTime + TestDateTime.SetFromDBTime + ) + fi + + # see https://github.com/xbmc/xbmc/issues/17860#issuecomment-630120213 + local -x KODI_HOME="${BUILD_DIR}" + + cmake_src_test +} + +src_install() { + cmake_src_install + + # bug #457588 + pax-mark Em "${ED}"/usr/$(get_libdir)/${PN}/${PN}.bin + + newicon media/icon48x48.png kodi.png + + rm "${ED}"/usr/share/kodi/addons/skin.estuary/fonts/Roboto-Thin.ttf || die + dosym ../../../../fonts/roboto/Roboto-Thin.ttf \ + usr/share/kodi/addons/skin.estuary/fonts/Roboto-Thin.ttf + + if use !eventclients ; then + rm -f "${ED}"/usr/bin/kodi-ps3remote || die + rm -f "${D}"$(python_get_sitedir)/kodi/ps3_remote.py || die + rm -rf "${D}"$(python_get_sitedir)/kodi/ps3 || die + rm -rf "${D}"$(python_get_sitedir)/kodi/bt || die + rm -rf "${ED}"/usr/share/doc/${PF}/kodi-eventclients-dev || die + fi + + python_optimize "${D}$(python_get_sitedir)" + + einstalldocs + use doc && dodoc -r "${S}"/docs/html/ +} + +pkg_postinst() { + xdg_pkg_postinst + + if use dbus ; then + optfeature "getting battery level and active power source" sys-power/upower + optfeature "control of shutdown, reboot, suspend, and hibernate" sys-auth/elogind sys-apps/systemd + optfeature "storage management support (automounting, volume monitoring, etc)" sys-fs/udisks:2 + fi +} diff --git a/media-tv/kodi/kodi-22.0_alpha3.ebuild b/media-tv/kodi/kodi-22.0_alpha3.ebuild new file mode 100644 index 000000000000..71ee00b1d127 --- /dev/null +++ b/media-tv/kodi/kodi-22.0_alpha3.ebuild @@ -0,0 +1,614 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CODENAME="Piers" + +# libdvd{css,read,nav} are not unbundlable without patching the buildsystem. + +# Versions for the forked projects that are bundled +# See tools/depends/target/<project>/<project>-VERSION +LIBDVDCSS_VERSION="1.4.3-Next-Nexus-Alpha2-2" +LIBDVDREAD_VERSION="6.1.3-Next-Nexus-Alpha2-2" +LIBDVDNAV_VERSION="6.1.1-Next-Nexus-Alpha2-2" +FFMPEG_VERSION="8.0.1" + +# Java bundles from xbmc/interfaces/swig/CMakeLists.txt +GROOVY_VERSION="4.0.26" +APACHE_COMMON_LANG_VERSION="3.17.0" +APACHE_COMMON_TEXT_VERSION="1.13.0" + +_JAVA_PKG_WANT_BUILD_VM=( {openjdk{,-jre},icedtea}{,-bin}-{8,11,17,21,25} ) +JAVA_PKG_WANT_BUILD_VM=${_JAVA_PKG_WANT_BUILD_VM[@]} +# Required to be set, but not used. +JAVA_PKG_WANT_SOURCE="21" +JAVA_PKG_WANT_TARGET="21" + +PYTHON_REQ_USE="sqlite,ssl" +PYTHON_COMPAT=( python3_{13..14} ) + +# See cmake/scripts/common/ArchSetup.cmake for available options +CPU_FLAGS="cpu_flags_x86_sse cpu_flags_x86_sse2 cpu_flags_x86_sse3 cpu_flags_x86_sse4_1 cpu_flags_x86_sse4_2 cpu_flags_x86_avx cpu_flags_x86_avx2 cpu_flags_arm_neon" + +inherit autotools cmake desktop flag-o-matic java-pkg-2 libtool linux-info optfeature pax-utils python-single-r1 \ + toolchain-funcs xdg + +DESCRIPTION="A free and open source media-player and entertainment hub" +HOMEPAGE="https://kodi.tv/" + +SRC_URI=" + https://github.com/xbmc/libdvdnav/archive/${LIBDVDNAV_VERSION}.tar.gz + -> libdvdnav-${LIBDVDNAV_VERSION}.tar.gz + https://github.com/xbmc/libdvdread/archive/${LIBDVDREAD_VERSION}.tar.gz + -> libdvdread-${LIBDVDREAD_VERSION}.tar.gz + https://mirrors.kodi.tv/build-deps/sources/apache-groovy-binary-${GROOVY_VERSION}.zip + https://mirrors.kodi.tv/build-deps/sources/commons-lang3-${APACHE_COMMON_LANG_VERSION}-bin.tar.gz + https://mirrors.kodi.tv/build-deps/sources/commons-text-${APACHE_COMMON_TEXT_VERSION}-bin.tar.gz + css? ( + https://github.com/xbmc/libdvdcss/archive/${LIBDVDCSS_VERSION}.tar.gz + -> libdvdcss-${LIBDVDCSS_VERSION}.tar.gz + ) + !system-ffmpeg? ( + https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.xz + ) + system-ffmpeg? ( postproc? ( + https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.xz + ) ) +" +if [[ ${PV} == *9999 ]] ; then + EGIT_REPO_URI="https://github.com/xbmc/xbmc.git" + if [[ ${PV} != "9999" ]]; then + EGIT_BRANCH="${CODENAME}" + fi + inherit git-r3 +else + MY_PV=${PV/_p/_r} + MY_PV=${MY_PV/_alpha/a} + MY_PV=${MY_PV/_beta/b} + MY_PV=${MY_PV/_rc/rc} + MY_PV="${MY_PV}-${CODENAME}" + MY_P="${PN}-${MY_PV}" + SRC_URI+=" https://github.com/xbmc/xbmc/archive/${MY_PV}.tar.gz -> ${MY_P}.tar.gz" + # Dont keyword + if ! [[ ${PV} =~ _alpha ]] && ! [[ ${PV} =~ _beta ]] && ! [[ ${PV} =~ _rc ]]; then + KEYWORDS="~amd64 ~arm64 ~riscv ~x86" + fi + S=${WORKDIR}/xbmc-${MY_PV} +fi + +LICENSE="GPL-2+" +# vendored dependencies +# apache-groovy, common-lang3 and commons-text +LICENSE+=" Apache-2.0" +# libdvdnav, libdvdread and libdvdcss. +LICENSE+=" GPL-2+" +# ffmpeg built as USE="gpl" +LICENSE+=" !system-ffmpeg? ( GPL-2 )" + +SLOT="0" +# use flag is called libusb so that it doesn't fool people in thinking that +# it is _required_ for USB support. Otherwise they'll disable udev and +# that's going to be worse. +IUSE="airplay alsa bluetooth bluray caps cec +css dbus doc eventclients gbm gles lcms libusb lirc mariadb mysql nfs +optical pipewire postproc pulseaudio samba soc +system-ffmpeg test udf udev upnp vaapi vdpau wayland webserver X +xslt zeroconf ${CPU_FLAGS}" +REQUIRED_USE=" + ${PYTHON_REQUIRED_USE} + || ( gbm wayland X ) + ?? ( mariadb mysql ) + bluray? ( udf ) + gbm? ( udev ) + soc? ( system-ffmpeg ) + udev? ( !libusb ) + vdpau? ( X !gles !gbm ) + zeroconf? ( dbus ) +" +RESTRICT="!test? ( test )" + +# dev-libs/libcec[-cubox] bug #818262 +COMMON_DEPEND=" + >=dev-libs/flatbuffers-23.3.3:= + >=dev-libs/lzo-2.04:2 + media-libs/giflib:= + >=media-libs/libjpeg-turbo-2.0.4:= + >=media-libs/libpng-1.6.26:0= + wayland? ( + dev-cpp/waylandpp:= + ) +" +COMMON_TARGET_DEPEND="${PYTHON_DEPS} + >=net-misc/curl-7.68.0[http2] + >=virtual/zlib-1.2.11:= + dev-db/sqlite:3 + dev-libs/crossguid + >=dev-libs/fribidi-1.0.5 + >=dev-libs/libfmt-6.1.2:= + dev-libs/libfstrcmp + dev-libs/libpcre2:= + >=dev-libs/openssl-1.1.1k:0= + >=dev-libs/spdlog-1.5.0:= + dev-libs/tinyxml[stl] + dev-libs/tinyxml2:= + media-fonts/roboto + media-gfx/exiv2:= + media-libs/libglvnd[X?] + >=media-libs/freetype-2.10.1 + media-libs/harfbuzz:= + >=media-libs/libass-0.15.0:= + media-libs/mesa[opengl,wayland?,X?] + media-libs/taglib:= + virtual/libiconv + virtual/ttf-fonts + x11-libs/libdrm + $(python_gen_cond_dep ' + dev-python/pillow[${PYTHON_USEDEP}] + dev-python/pycryptodome[${PYTHON_USEDEP}] + ') + airplay? ( + >=app-pda/libplist-2.0.0:= + net-libs/shairplay + ) + alsa? ( + >=media-libs/alsa-lib-1.1.4.1 + ) + bluetooth? ( + net-wireless/bluez:= + ) + bluray? ( + >=media-libs/libbluray-1.1.2:= + ) + caps? ( + sys-libs/libcap + ) + cec? ( + >=dev-libs/libcec-4.0[-cubox(-)] + ) + dbus? ( + sys-apps/dbus + ) + gbm? ( + >=dev-libs/libinput-1.10.5:= + media-libs/libdisplay-info:= + x11-libs/libxkbcommon + ) + !gles? ( + media-libs/glu + ) + lcms? ( + >=media-libs/lcms-2.10:2 + ) + libusb? ( + virtual/libusb:1 + ) + lirc? ( + app-misc/lirc + ) + mariadb? ( + dev-db/mariadb-connector-c:= + ) + mysql? ( + dev-db/mysql-connector-c:= + ) + nfs? ( + >=net-fs/libnfs-3.0.0:= + ) + optical? ( + >=dev-libs/libcdio-2.1.0:=[cxx] + ) + pipewire? ( + >=media-video/pipewire-0.3.50:= + ) + pulseaudio? ( + >=media-libs/libpulse-11.0.0 + ) + samba? ( + >=net-fs/samba-3.4.6[smbclient(+)] + ) + system-ffmpeg? ( + postproc? ( =media-video/ffmpeg-$(ver_cut 1-2 ${FFMPEG_VERSION})*:=[encode(+),soc(-)?,vaapi?,vdpau?,X?] ) + !postproc? ( >=media-video/ffmpeg-7:=[encode(+),soc(-)?,vaapi?,vdpau?,X?] ) + ) + !system-ffmpeg? ( + app-arch/bzip2 + app-arch/xz-utils + media-libs/dav1d:= + net-libs/gnutls:= + ) + udf? ( + >=dev-libs/libudfread-1.0.0:= + ) + udev? ( + virtual/libudev:= + ) + vaapi? ( + media-libs/libva:=[wayland?,X?] + ) + vdpau? ( + || ( + >=x11-libs/libvdpau-1.1 + >=x11-drivers/nvidia-drivers-180.51 + ) + ) + wayland? ( + >=x11-libs/libxkbcommon-0.4.1 + ) + webserver? ( + >=net-libs/libmicrohttpd-0.9.77:= + ) + X? ( + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXrandr + ) + xslt? ( + dev-libs/libxslt + >=dev-libs/libxml2-2.9.4:= + ) + zeroconf? ( + net-dns/avahi[dbus] + ) +" +RDEPEND=" + ${COMMON_DEPEND} + ${COMMON_TARGET_DEPEND} +" +DEPEND=" + ${COMMON_DEPEND} + ${COMMON_TARGET_DEPEND} + >=dev-cpp/nlohmann_json-3.2.0 + test? ( + >=dev-cpp/gtest-1.10.0 + ) + wayland? ( + >=dev-libs/wayland-protocols-1.7 + ) + X? ( + x11-base/xorg-proto + x11-libs/libXrender + ) +" +BDEPEND=" + ${COMMON_DEPEND} + app-arch/unzip + dev-build/cmake + dev-lang/swig + virtual/pkgconfig + <=virtual/jre-25-r9999:* + doc? ( + app-text/doxygen + ) +" + +PATCHES=( + "${FILESDIR}"/kodi-21-optional-ffmpeg-libx11.patch + "${FILESDIR}"/kodi-22-silence-libdvdread-git.patch + "${FILESDIR}"/kodi-22.0_alpha3-gcc16.patch +) + +# bug #544020 +CONFIG_CHECK="~IP_MULTICAST" +ERROR_IP_MULTICAST=" +In some cases Kodi needs to access multicast addresses. +Please consider enabling IP_MULTICAST under Networking options. +" + +pkg_setup() { + check_extra_config + ROOT= java-pkg-2_pkg_setup + python-single-r1_pkg_setup +} + +src_unpack() { + if [[ ${PV} == *9999 ]] ; then + git-r3_src_unpack + else + unpack ${MY_P}.tar.gz + fi + + unpack apache-groovy-binary-${GROOVY_VERSION}.zip + unpack commons-lang3-${APACHE_COMMON_LANG_VERSION}-bin.tar.gz + unpack commons-text-${APACHE_COMMON_TEXT_VERSION}-bin.tar.gz + + if use system-ffmpeg && use postproc; then + unpack ffmpeg-${FFMPEG_VERSION}.tar.xz + fi +} + +src_prepare() { + cmake_src_prepare + + # avoid long delays when powerkit isn't running #348580 + sed -i \ + -e '/dbus_connection_send_with_reply_and_block/s:-1:3000:' \ + xbmc/platform/linux/*.cpp || die + + if tc-is-cross-compiler; then + # These tools are automatically built with CMake during a native build + # but need to be built in advance using Autotools for a cross build. + NATIVE_TOOLS=( + TexturePacker + JsonSchemaBuilder + ) + + local t + for t in "${NATIVE_TOOLS[@]}" ; do + pushd "${S}/tools/depends/native/$t/src" >/dev/null || die + AT_NOELIBTOOLIZE="yes" AT_TOPLEVEL_EAUTORECONF="yes" eautoreconf + popd >/dev/null || die + done + elibtoolize + fi + + if use system-ffmpeg && use postproc; then + pushd "${WORKDIR}/ffmpeg-${FFMPEG_VERSION}" >/dev/null || die + eapply "${S}"/tools/depends/target/ffmpeg/001-ffmpeg-all-libpostproc-plugin.patch + eapply "${FILESDIR}"/ffmpeg-no-static-rpath.patch + popd >/dev/null || die + fi +} + +src_configure() { + # used below and by vendored libdvdread + tc-export PKG_CONFIG + + local core_platform=( + $(usev gbm) + $(usev wayland) + $(usev X x11) + ) + + local mycmakeargs=( + -Wno-dev # less noise + + -DAPP_RENDER_SYSTEM=$(usex gles gles gl) + -DCORE_PLATFORM_NAME="${core_platform[*]}" + -Ddocdir="${EPREFIX}/usr/share/doc/${PF}" + -DENABLE_TESTING=$(usex test) + -DVERBOSE=ON + + # Enforce use of configured python interpeter + -DPYTHON_PATH=$(python_get_library_path) + -DPYTHON_VER=${EPYTHON##python} # wont work for pypy + + # Toolchain + -DENABLE_CCACHE=OFF + -DENABLE_CLANGFORMAT=OFF + -DENABLE_CLANGTIDY=OFF + -DENABLE_CPPCHECK=OFF + -DENABLE_INCLUDEWHATYOUUSE=OFF + # https://bugs.gentoo.org/show_bug.cgi?id=606124 + -DENABLE_GOLD=OFF + -DENABLE_LLD=OFF + -DENABLE_MOLD=OFF + + # This isn't normally necessary with CMake, but Kodi includes its own + # FindPkgConfig module that doesn't respect PKG_CONFIG. :( + -DPKG_CONFIG_EXECUTABLE=$(type -P "${PKG_CONFIG}") + + # Features + -DENABLE_AIRTUNES=$(usex airplay) + -DENABLE_ALSA=$(usex alsa) + -DENABLE_AVAHI=$(usex zeroconf) + -DENABLE_BLUETOOTH=$(usex bluetooth) + -DENABLE_BLURAY=$(usex bluray) + -DENABLE_CAP=$(usex caps) + -DENABLE_CEC=$(usex cec) + -DENABLE_DBUS=$(usex dbus) + -DENABLE_DVDCSS=$(usex css) + -DENABLE_EVENTCLIENTS=ON # alway enable to have 'kodi-send' and filter extra stuff in 'src_install()' + -DENABLE_ISO9660PP=$(usex optical) + -DENABLE_LCMS2=$(usex lcms) + -DENABLE_LIRCCLIENT=$(usex lirc) + -DENABLE_MARIADBCLIENT=$(usex mariadb) + -DENABLE_MDNS=OFF # used only on Android + -DENABLE_MICROHTTPD=$(usex webserver) + -DENABLE_MYSQLCLIENT=$(usex mysql) + -DENABLE_NFS=$(usex nfs) + -DENABLE_OPENGL=$(usex !gles) + -DENABLE_OPENGLES=$(usex gles) + -DENABLE_OPTICAL=$(usex optical) + -DENABLE_PIPEWIRE=$(usex pipewire) + -DENABLE_PLIST=$(usex airplay) + -DENABLE_PULSEAUDIO=$(usex pulseaudio) + -DENABLE_SMBCLIENT=$(usex samba) + -DENABLE_SNDIO=OFF + -DENABLE_UDEV=$(usex udev) + -DENABLE_UDFREAD=$(usex udf) + -DENABLE_UPNP=$(usex upnp) + -DENABLE_VAAPI=$(usex vaapi) + -DENABLE_VDPAU=$(usex vdpau) + -DENABLE_XSLT=$(usex xslt) + + -DWITH_FFMPEG=OFF + -DDISABLE_FFMPEG_SOURCE_PLUGINS=$(usex !postproc) + + #To bundle or not + -DENABLE_INTERNAL_ASS=OFF + -DENABLE_INTERNAL_CROSSGUID=OFF + -DENABLE_INTERNAL_CURL=OFF + -DENABLE_INTERNAL_EXIV2=OFF + -DENABLE_INTERNAL_FFMPEG="$(usex !system-ffmpeg)" + -DENABLE_INTERNAL_FLATBUFFERS=OFF + -DENABLE_INTERNAL_FMT=OFF + -DENABLE_INTERNAL_FSTRCMP=OFF + -DENABLE_INTERNAL_GTEST=OFF + -DENABLE_INTERNAL_LZO2=OFF + -DENABLE_INTERNAL_NLOHMANNJSON=OFF + -DENABLE_INTERNAL_PCRE2=OFF + -DENABLE_INTERNAL_SPDLOG=OFF + -DENABLE_INTERNAL_TAGLIB=OFF + + -DTARBALL_DIR="${DISTDIR}" + -Dlibdvdnav_URL="${DISTDIR}/libdvdnav-${LIBDVDNAV_VERSION}.tar.gz" + -Dlibdvdread_URL="${DISTDIR}/libdvdread-${LIBDVDREAD_VERSION}.tar.gz" + -Dgroovy_SOURCE_DIR="${WORKDIR}/groovy-${GROOVY_VERSION}" + -Dapache-commons-lang_SOURCE_DIR="${WORKDIR}/commons-lang3-${APACHE_COMMON_LANG_VERSION}" + -Dapache-commons-text_SOURCE_DIR="${WORKDIR}/commons-text-${APACHE_COMMON_TEXT_VERSION}" + ) + + # Separated to avoid "Manually-specified variables were not used by the project:" + use bluray && mycmakeargs+=( -DENABLE_INTERNAL_BLURAY=OFF ) + use cec && mycmakeargs+=( -DENABLE_INTERNAL_CEC=OFF ) + use css && mycmakeargs+=( -Dlibdvdcss_URL="${DISTDIR}/libdvdcss-${LIBDVDCSS_VERSION}.tar.gz" ) + use mariadb && mycmakeargs+=( -DENABLE_INTERNAL_MARIADBCLIENT=OFF ) + use !system-ffmpeg && mycmakeargs+=( + # Additional find_package on top of core_optional_deps for whatever reason + $(cmake_use_find_package vaapi VAAPI) + $(cmake_use_find_package vdpau VDPAU) + -DENABLE_INTERNAL_DAV1D=OFF + -DFFMPEG_URL="${DISTDIR}/ffmpeg-${FFMPEG_VERSION}.tar.xz" + ) + use nfs && mycmakeargs+=( -DENABLE_INTERNAL_NFS=OFF ) + use !udev && mycmakeargs+=( -DENABLE_LIBUSB=$(usex libusb) ) + use udf && mycmakeargs+=( -DENABLE_INTERNAL_UDFREAD=OFF ) + use webserver && mycmakeargs+=( -DENABLE_INTERNAL_LIBMICROHTTPD=OFF ) + use X && use !gles && mycmakeargs+=( -DENABLE_GLX=ON ) + use xslt && mycmakeargs+=( -DENABLE_INTERNAL_XSLT=OFF ) + + for flag in ${CPU_FLAGS[@]} ; do + local name=${flag#cpu_flags_*_} + mycmakeargs+=( -DENABLE_${name^^}=$(usex ${flag}) ) + done + + if ! is-flag -DNDEBUG && ! is-flag -D_DEBUG ; then + # Kodi requires one of the 'NDEBUG' or '_DEBUG' defines + append-cflags -DNDEBUG + append-cxxflags -DNDEBUG + fi + + if tc-is-lto ; then + mycmakeargs+=( -DUSE_LTO=ON ) + else + mycmakeargs+=( -DUSE_LTO=OFF ) + fi + + # bug #926076 + append-flags -fPIC + + if use system-ffmpeg && use postproc; then + pushd "${WORKDIR}/ffmpeg-${FFMPEG_VERSION}" >/dev/null || die + local ffconf=( + --disable-all + --enable-postproc + --enable-gpl + ) + if tc-is-cross-compiler; then + ffconf+=( + --enable-cross-compile + --arch="$(tc-arch-kernel)" + --cross-prefix="${CHOST}-" + --host-cc="$(tc-getBUILD_CC)" + --target-os=linux + ) + elif use arm; then + ffconf+=( --arch=arm ) + fi + ./configure "${ffconf[@]}" || die + touch libpostproc/libpostproc.a || die # Actually build later. + emake libpostproc/libpostproc.pc V=1 + export PKG_CONFIG_PATH="${PWD}/doc/examples/pc-uninstalled" + # Work around CMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY in eclass. It's a + # weird thing to do, but probably safer than setting that to BOTH. + [[ ${SYSROOT:-/} != / ]] && mycmakeargs+=( -DCMAKE_FIND_ROOT_PATH="${PWD}" ) + popd >/dev/null || die + fi + + if tc-is-cross-compiler; then + for t in "${NATIVE_TOOLS[@]}" ; do + pushd "${S}/tools/depends/native/$t/src" >/dev/null || die + econf_build + install -m0755 /dev/null "$t" || die # Actually build later. + mycmakeargs+=( -DWITH_${t^^}="${PWD}/$t" ) + popd >/dev/null || die + done + fi + + cmake_src_configure +} + +src_compile() { + if use system-ffmpeg && use postproc; then + pushd "${WORKDIR}/ffmpeg-${FFMPEG_VERSION}" >/dev/null || die + emake libpostproc/libpostproc.a V=1 + rm -r libav* libsw* || die + popd >/dev/null || die + fi + + if tc-is-cross-compiler; then + for t in "${NATIVE_TOOLS[@]}" ; do + emake -C "${S}/tools/depends/native/$t/src" + done + fi + + cmake_src_compile all + use doc && cmake_build doc + use test && cmake_build kodi-test +} + +src_test() { + local -x CMAKE_SKIP_TESTS=( + # Known failing, unreliable test + # bug #743938 + TestCPUInfo.GetCPUFrequency + # Tries to ping localhost, naturally breaking network-sandbox + TestNetwork.PingHost + ) + + # Tests assumes bluray support is enabled + if use !bluray; then + CMAKE_SKIP_TESTS+=( + TestStacks.TestMovieFilesStackFolderFilesDiscPart + TestURIUtils.GetBasePath + ) + fi + + if use arm || use x86; then + # bug #779184 + # https://github.com/xbmc/xbmc/issues/18594 + CMAKE_SKIP_TESTS+=( + TestDateTime.Reset + TestDateTime.SetDateTime + TestDateTime.SetFromDBTime + ) + fi + + # see https://github.com/xbmc/xbmc/issues/17860#issuecomment-630120213 + local -x KODI_HOME="${BUILD_DIR}" + + cmake_src_test +} + +src_install() { + cmake_src_install + + # bug #457588 + pax-mark Em "${ED}"/usr/$(get_libdir)/${PN}/${PN}.bin + + newicon media/icon48x48.png kodi.png + + rm "${ED}"/usr/share/kodi/addons/skin.estuary/fonts/Roboto-Thin.ttf || die + dosym ../../../../fonts/roboto/Roboto-Thin.ttf \ + usr/share/kodi/addons/skin.estuary/fonts/Roboto-Thin.ttf + + if use !eventclients ; then + rm -f "${ED}"/usr/bin/kodi-ps3remote || die + rm -f "${D}"$(python_get_sitedir)/kodi/ps3_remote.py || die + rm -rf "${D}"$(python_get_sitedir)/kodi/ps3 || die + rm -rf "${D}"$(python_get_sitedir)/kodi/bt || die + rm -rf "${ED}"/usr/share/doc/${PF}/kodi-eventclients-dev || die + fi + + python_optimize "${D}$(python_get_sitedir)" + + einstalldocs + use doc && dodoc -r "${S}"/docs/html/ +} + +pkg_postinst() { + xdg_pkg_postinst + + if use dbus ; then + optfeature "getting battery level and active power source" sys-power/upower + optfeature "control of shutdown, reboot, suspend, and hibernate" sys-auth/elogind sys-apps/systemd + optfeature "storage management support (automounting, volume monitoring, etc)" sys-fs/udisks:2 + fi +} diff --git a/media-tv/kodi/kodi-9999.ebuild b/media-tv/kodi/kodi-9999.ebuild new file mode 100644 index 000000000000..fa08e1e97193 --- /dev/null +++ b/media-tv/kodi/kodi-9999.ebuild @@ -0,0 +1,613 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CODENAME="Piers" + +# libdvd{css,read,nav} are not unbundlable without patching the buildsystem. + +# Versions for the forked projects that are bundled +# See tools/depends/target/<project>/<project>-VERSION +LIBDVDCSS_VERSION="1.4.3-Next-Nexus-Alpha2-2" +LIBDVDREAD_VERSION="6.1.3-Next-Nexus-Alpha2-2" +LIBDVDNAV_VERSION="6.1.1-Next-Nexus-Alpha2-2" +FFMPEG_VERSION="8.1" + +# Java bundles from xbmc/interfaces/swig/CMakeLists.txt +GROOVY_VERSION="4.0.30" +APACHE_COMMON_LANG_VERSION="3.20.0" +APACHE_COMMON_TEXT_VERSION="1.15.0" + +_JAVA_PKG_WANT_BUILD_VM=( {openjdk{,-jre},icedtea}{,-bin}-{8,11,17,21,25} ) +JAVA_PKG_WANT_BUILD_VM=${_JAVA_PKG_WANT_BUILD_VM[@]} +# Required to be set, but not used. +JAVA_PKG_WANT_SOURCE="21" +JAVA_PKG_WANT_TARGET="21" + +PYTHON_REQ_USE="sqlite,ssl" +PYTHON_COMPAT=( python3_{13..14} ) + +# See cmake/scripts/common/ArchSetup.cmake for available options +CPU_FLAGS="cpu_flags_x86_sse cpu_flags_x86_sse2 cpu_flags_x86_sse3 cpu_flags_x86_sse4_1 cpu_flags_x86_sse4_2 cpu_flags_x86_avx cpu_flags_x86_avx2 cpu_flags_arm_neon" + +inherit autotools cmake desktop flag-o-matic java-pkg-2 libtool linux-info optfeature pax-utils python-single-r1 \ + toolchain-funcs xdg + +DESCRIPTION="A free and open source media-player and entertainment hub" +HOMEPAGE="https://kodi.tv/" + +SRC_URI=" + https://github.com/xbmc/libdvdnav/archive/${LIBDVDNAV_VERSION}.tar.gz + -> libdvdnav-${LIBDVDNAV_VERSION}.tar.gz + https://github.com/xbmc/libdvdread/archive/${LIBDVDREAD_VERSION}.tar.gz + -> libdvdread-${LIBDVDREAD_VERSION}.tar.gz + https://mirrors.kodi.tv/build-deps/sources/apache-groovy-binary-${GROOVY_VERSION}.zip + https://mirrors.kodi.tv/build-deps/sources/commons-lang3-${APACHE_COMMON_LANG_VERSION}-bin.tar.gz + https://mirrors.kodi.tv/build-deps/sources/commons-text-${APACHE_COMMON_TEXT_VERSION}-bin.tar.gz + css? ( + https://github.com/xbmc/libdvdcss/archive/${LIBDVDCSS_VERSION}.tar.gz + -> libdvdcss-${LIBDVDCSS_VERSION}.tar.gz + ) + !system-ffmpeg? ( + https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.xz + ) + system-ffmpeg? ( postproc? ( + https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.xz + ) ) +" +if [[ ${PV} == *9999 ]] ; then + EGIT_REPO_URI="https://github.com/xbmc/xbmc.git" + if [[ ${PV} != "9999" ]]; then + EGIT_BRANCH="${CODENAME}" + fi + inherit git-r3 +else + MY_PV=${PV/_p/_r} + MY_PV=${MY_PV/_alpha/a} + MY_PV=${MY_PV/_beta/b} + MY_PV=${MY_PV/_rc/rc} + MY_PV="${MY_PV}-${CODENAME}" + MY_P="${PN}-${MY_PV}" + SRC_URI+=" https://github.com/xbmc/xbmc/archive/${MY_PV}.tar.gz -> ${MY_P}.tar.gz" + # Dont keyword + if ! [[ ${PV} =~ _alpha ]] && ! [[ ${PV} =~ _beta ]] && ! [[ ${PV} =~ _rc ]]; then + KEYWORDS="~amd64 ~arm64 ~riscv ~x86" + fi + S=${WORKDIR}/xbmc-${MY_PV} +fi + +LICENSE="GPL-2+" +# vendored dependencies +# apache-groovy, common-lang3 and commons-text +LICENSE+=" Apache-2.0" +# libdvdnav, libdvdread and libdvdcss. +LICENSE+=" GPL-2+" +# ffmpeg built as USE="gpl" +LICENSE+=" !system-ffmpeg? ( GPL-2 )" + +SLOT="0" +# use flag is called libusb so that it doesn't fool people in thinking that +# it is _required_ for USB support. Otherwise they'll disable udev and +# that's going to be worse. +IUSE="airplay alsa bluetooth bluray caps cec +css dbus doc eventclients gbm gles lcms libusb lirc mariadb mysql nfs +optical pipewire postproc pulseaudio samba soc +system-ffmpeg test udf udev upnp vaapi vdpau wayland webserver X +xslt zeroconf ${CPU_FLAGS}" +REQUIRED_USE=" + ${PYTHON_REQUIRED_USE} + || ( gbm wayland X ) + ?? ( mariadb mysql ) + bluray? ( udf ) + gbm? ( udev ) + soc? ( system-ffmpeg ) + udev? ( !libusb ) + vdpau? ( X !gles !gbm ) + zeroconf? ( dbus ) +" +RESTRICT="!test? ( test )" + +# dev-libs/libcec[-cubox] bug #818262 +COMMON_DEPEND=" + >=dev-libs/flatbuffers-23.3.3:= + >=dev-libs/lzo-2.04:2 + media-libs/giflib:= + >=media-libs/libjpeg-turbo-2.0.4:= + >=media-libs/libpng-1.6.26:0= + wayland? ( + dev-cpp/waylandpp:= + ) +" +COMMON_TARGET_DEPEND="${PYTHON_DEPS} + >=net-misc/curl-7.68.0[http2] + >=virtual/zlib-1.2.11:= + dev-db/sqlite:3 + dev-libs/crossguid + >=dev-libs/fribidi-1.0.5 + >=dev-libs/libfmt-6.1.2:= + dev-libs/libfstrcmp + dev-libs/libpcre2:= + >=dev-libs/openssl-1.1.1k:0= + >=dev-libs/spdlog-1.5.0:= + dev-libs/tinyxml[stl] + dev-libs/tinyxml2:= + media-fonts/roboto + media-gfx/exiv2:= + media-libs/libglvnd[X?] + >=media-libs/freetype-2.10.1 + media-libs/harfbuzz:= + >=media-libs/libass-0.15.0:= + media-libs/mesa[opengl,wayland?,X?] + media-libs/taglib:= + virtual/libiconv + virtual/ttf-fonts + x11-libs/libdrm + $(python_gen_cond_dep ' + dev-python/pillow[${PYTHON_USEDEP}] + dev-python/pycryptodome[${PYTHON_USEDEP}] + ') + airplay? ( + >=app-pda/libplist-2.0.0:= + net-libs/shairplay + ) + alsa? ( + >=media-libs/alsa-lib-1.1.4.1 + ) + bluetooth? ( + net-wireless/bluez:= + ) + bluray? ( + >=media-libs/libbluray-1.1.2:= + ) + caps? ( + sys-libs/libcap + ) + cec? ( + >=dev-libs/libcec-4.0[-cubox(-)] + ) + dbus? ( + sys-apps/dbus + ) + gbm? ( + >=dev-libs/libinput-1.10.5:= + media-libs/libdisplay-info:= + x11-libs/libxkbcommon + ) + !gles? ( + media-libs/glu + ) + lcms? ( + >=media-libs/lcms-2.10:2 + ) + libusb? ( + virtual/libusb:1 + ) + lirc? ( + app-misc/lirc + ) + mariadb? ( + dev-db/mariadb-connector-c:= + ) + mysql? ( + dev-db/mysql-connector-c:= + ) + nfs? ( + >=net-fs/libnfs-3.0.0:= + ) + optical? ( + >=dev-libs/libcdio-2.1.0:=[cxx] + ) + pipewire? ( + >=media-video/pipewire-0.3.50:= + ) + pulseaudio? ( + >=media-libs/libpulse-11.0.0 + ) + samba? ( + >=net-fs/samba-3.4.6[smbclient(+)] + ) + system-ffmpeg? ( + postproc? ( =media-video/ffmpeg-$(ver_cut 1-2 ${FFMPEG_VERSION})*:=[encode(+),soc(-)?,vaapi?,vdpau?,X?] ) + !postproc? ( >=media-video/ffmpeg-7:=[encode(+),soc(-)?,vaapi?,vdpau?,X?] ) + ) + !system-ffmpeg? ( + app-arch/bzip2 + app-arch/xz-utils + media-libs/dav1d:= + net-libs/gnutls:= + ) + udf? ( + >=dev-libs/libudfread-1.0.0:= + ) + udev? ( + virtual/libudev:= + ) + vaapi? ( + media-libs/libva:=[wayland?,X?] + ) + vdpau? ( + || ( + >=x11-libs/libvdpau-1.1 + >=x11-drivers/nvidia-drivers-180.51 + ) + ) + wayland? ( + >=x11-libs/libxkbcommon-0.4.1 + ) + webserver? ( + >=net-libs/libmicrohttpd-0.9.77:= + ) + X? ( + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXrandr + ) + xslt? ( + dev-libs/libxslt + >=dev-libs/libxml2-2.9.4:= + ) + zeroconf? ( + net-dns/avahi[dbus] + ) +" +RDEPEND=" + ${COMMON_DEPEND} + ${COMMON_TARGET_DEPEND} +" +DEPEND=" + ${COMMON_DEPEND} + ${COMMON_TARGET_DEPEND} + >=dev-cpp/nlohmann_json-3.2.0 + test? ( + >=dev-cpp/gtest-1.10.0 + ) + wayland? ( + >=dev-libs/wayland-protocols-1.7 + ) + X? ( + x11-base/xorg-proto + x11-libs/libXrender + ) +" +BDEPEND=" + ${COMMON_DEPEND} + app-arch/unzip + dev-build/cmake + dev-lang/swig + virtual/pkgconfig + <=virtual/jre-25-r9999:* + doc? ( + app-text/doxygen + ) +" + +PATCHES=( + "${FILESDIR}"/kodi-21-optional-ffmpeg-libx11.patch + "${FILESDIR}"/kodi-22-silence-libdvdread-git.patch +) + +# bug #544020 +CONFIG_CHECK="~IP_MULTICAST" +ERROR_IP_MULTICAST=" +In some cases Kodi needs to access multicast addresses. +Please consider enabling IP_MULTICAST under Networking options. +" + +pkg_setup() { + check_extra_config + ROOT= java-pkg-2_pkg_setup + python-single-r1_pkg_setup +} + +src_unpack() { + if [[ ${PV} == *9999 ]] ; then + git-r3_src_unpack + else + unpack ${MY_P}.tar.gz + fi + + unpack apache-groovy-binary-${GROOVY_VERSION}.zip + unpack commons-lang3-${APACHE_COMMON_LANG_VERSION}-bin.tar.gz + unpack commons-text-${APACHE_COMMON_TEXT_VERSION}-bin.tar.gz + + if use system-ffmpeg && use postproc; then + unpack ffmpeg-${FFMPEG_VERSION}.tar.xz + fi +} + +src_prepare() { + cmake_src_prepare + + # avoid long delays when powerkit isn't running #348580 + sed -i \ + -e '/dbus_connection_send_with_reply_and_block/s:-1:3000:' \ + xbmc/platform/linux/*.cpp || die + + if tc-is-cross-compiler; then + # These tools are automatically built with CMake during a native build + # but need to be built in advance using Autotools for a cross build. + NATIVE_TOOLS=( + TexturePacker + JsonSchemaBuilder + ) + + local t + for t in "${NATIVE_TOOLS[@]}" ; do + pushd "${S}/tools/depends/native/$t/src" >/dev/null || die + AT_NOELIBTOOLIZE="yes" AT_TOPLEVEL_EAUTORECONF="yes" eautoreconf + popd >/dev/null || die + done + elibtoolize + fi + + if use system-ffmpeg && use postproc; then + pushd "${WORKDIR}/ffmpeg-${FFMPEG_VERSION}" >/dev/null || die + eapply "${S}"/tools/depends/target/ffmpeg/001-ffmpeg-all-libpostproc-plugin.patch + eapply "${FILESDIR}"/ffmpeg-no-static-rpath.patch + popd >/dev/null || die + fi +} + +src_configure() { + # used below and by vendored libdvdread + tc-export PKG_CONFIG + + local core_platform=( + $(usev gbm) + $(usev wayland) + $(usev X x11) + ) + + local mycmakeargs=( + -Wno-dev # less noise + + -DAPP_RENDER_SYSTEM=$(usex gles gles gl) + -DCORE_PLATFORM_NAME="${core_platform[*]}" + -Ddocdir="${EPREFIX}/usr/share/doc/${PF}" + -DENABLE_TESTING=$(usex test) + -DVERBOSE=ON + + # Enforce use of configured python interpeter + -DPYTHON_PATH=$(python_get_library_path) + -DPYTHON_VER=${EPYTHON##python} # wont work for pypy + + # Toolchain + -DENABLE_CCACHE=OFF + -DENABLE_CLANGFORMAT=OFF + -DENABLE_CLANGTIDY=OFF + -DENABLE_CPPCHECK=OFF + -DENABLE_INCLUDEWHATYOUUSE=OFF + # https://bugs.gentoo.org/show_bug.cgi?id=606124 + -DENABLE_GOLD=OFF + -DENABLE_LLD=OFF + -DENABLE_MOLD=OFF + + # This isn't normally necessary with CMake, but Kodi includes its own + # FindPkgConfig module that doesn't respect PKG_CONFIG. :( + -DPKG_CONFIG_EXECUTABLE=$(type -P "${PKG_CONFIG}") + + # Features + -DENABLE_AIRTUNES=$(usex airplay) + -DENABLE_ALSA=$(usex alsa) + -DENABLE_AVAHI=$(usex zeroconf) + -DENABLE_BLUETOOTH=$(usex bluetooth) + -DENABLE_BLURAY=$(usex bluray) + -DENABLE_CAP=$(usex caps) + -DENABLE_CEC=$(usex cec) + -DENABLE_DBUS=$(usex dbus) + -DENABLE_DVDCSS=$(usex css) + -DENABLE_EVENTCLIENTS=ON # alway enable to have 'kodi-send' and filter extra stuff in 'src_install()' + -DENABLE_ISO9660PP=$(usex optical) + -DENABLE_LCMS2=$(usex lcms) + -DENABLE_LIRCCLIENT=$(usex lirc) + -DENABLE_MARIADBCLIENT=$(usex mariadb) + -DENABLE_MDNS=OFF # used only on Android + -DENABLE_MICROHTTPD=$(usex webserver) + -DENABLE_MYSQLCLIENT=$(usex mysql) + -DENABLE_NFS=$(usex nfs) + -DENABLE_OPENGL=$(usex !gles) + -DENABLE_OPENGLES=$(usex gles) + -DENABLE_OPTICAL=$(usex optical) + -DENABLE_PIPEWIRE=$(usex pipewire) + -DENABLE_PLIST=$(usex airplay) + -DENABLE_PULSEAUDIO=$(usex pulseaudio) + -DENABLE_SMBCLIENT=$(usex samba) + -DENABLE_SNDIO=OFF + -DENABLE_UDEV=$(usex udev) + -DENABLE_UDFREAD=$(usex udf) + -DENABLE_UPNP=$(usex upnp) + -DENABLE_VAAPI=$(usex vaapi) + -DENABLE_VDPAU=$(usex vdpau) + -DENABLE_XSLT=$(usex xslt) + + -DWITH_FFMPEG=OFF + -DDISABLE_FFMPEG_SOURCE_PLUGINS=$(usex !postproc) + + #To bundle or not + -DENABLE_INTERNAL_ASS=OFF + -DENABLE_INTERNAL_CROSSGUID=OFF + -DENABLE_INTERNAL_CURL=OFF + -DENABLE_INTERNAL_EXIV2=OFF + -DENABLE_INTERNAL_FFMPEG="$(usex !system-ffmpeg)" + -DENABLE_INTERNAL_FLATBUFFERS=OFF + -DENABLE_INTERNAL_FMT=OFF + -DENABLE_INTERNAL_FSTRCMP=OFF + -DENABLE_INTERNAL_GTEST=OFF + -DENABLE_INTERNAL_LZO2=OFF + -DENABLE_INTERNAL_NLOHMANNJSON=OFF + -DENABLE_INTERNAL_PCRE2=OFF + -DENABLE_INTERNAL_SPDLOG=OFF + -DENABLE_INTERNAL_TAGLIB=OFF + + -DTARBALL_DIR="${DISTDIR}" + -Dlibdvdnav_URL="${DISTDIR}/libdvdnav-${LIBDVDNAV_VERSION}.tar.gz" + -Dlibdvdread_URL="${DISTDIR}/libdvdread-${LIBDVDREAD_VERSION}.tar.gz" + -Dgroovy_SOURCE_DIR="${WORKDIR}/groovy-${GROOVY_VERSION}" + -Dapache-commons-lang_SOURCE_DIR="${WORKDIR}/commons-lang3-${APACHE_COMMON_LANG_VERSION}" + -Dapache-commons-text_SOURCE_DIR="${WORKDIR}/commons-text-${APACHE_COMMON_TEXT_VERSION}" + ) + + # Separated to avoid "Manually-specified variables were not used by the project:" + use bluray && mycmakeargs+=( -DENABLE_INTERNAL_BLURAY=OFF ) + use cec && mycmakeargs+=( -DENABLE_INTERNAL_CEC=OFF ) + use css && mycmakeargs+=( -Dlibdvdcss_URL="${DISTDIR}/libdvdcss-${LIBDVDCSS_VERSION}.tar.gz" ) + use mariadb && mycmakeargs+=( -DENABLE_INTERNAL_MARIADBCLIENT=OFF ) + use !system-ffmpeg && mycmakeargs+=( + # Additional find_package on top of core_optional_deps for whatever reason + $(cmake_use_find_package vaapi VAAPI) + $(cmake_use_find_package vdpau VDPAU) + -DENABLE_INTERNAL_DAV1D=OFF + -DFFMPEG_URL="${DISTDIR}/ffmpeg-${FFMPEG_VERSION}.tar.xz" + ) + use nfs && mycmakeargs+=( -DENABLE_INTERNAL_NFS=OFF ) + use !udev && mycmakeargs+=( -DENABLE_LIBUSB=$(usex libusb) ) + use udf && mycmakeargs+=( -DENABLE_INTERNAL_UDFREAD=OFF ) + use webserver && mycmakeargs+=( -DENABLE_INTERNAL_LIBMICROHTTPD=OFF ) + use X && use !gles && mycmakeargs+=( -DENABLE_GLX=ON ) + use xslt && mycmakeargs+=( -DENABLE_INTERNAL_XSLT=OFF ) + + for flag in ${CPU_FLAGS[@]} ; do + local name=${flag#cpu_flags_*_} + mycmakeargs+=( -DENABLE_${name^^}=$(usex ${flag}) ) + done + + if ! is-flag -DNDEBUG && ! is-flag -D_DEBUG ; then + # Kodi requires one of the 'NDEBUG' or '_DEBUG' defines + append-cflags -DNDEBUG + append-cxxflags -DNDEBUG + fi + + if tc-is-lto ; then + mycmakeargs+=( -DUSE_LTO=ON ) + else + mycmakeargs+=( -DUSE_LTO=OFF ) + fi + + # bug #926076 + append-flags -fPIC + + if use system-ffmpeg && use postproc; then + pushd "${WORKDIR}/ffmpeg-${FFMPEG_VERSION}" >/dev/null || die + local ffconf=( + --disable-all + --enable-postproc + --enable-gpl + ) + if tc-is-cross-compiler; then + ffconf+=( + --enable-cross-compile + --arch="$(tc-arch-kernel)" + --cross-prefix="${CHOST}-" + --host-cc="$(tc-getBUILD_CC)" + --target-os=linux + ) + elif use arm; then + ffconf+=( --arch=arm ) + fi + ./configure "${ffconf[@]}" || die + touch libpostproc/libpostproc.a || die # Actually build later. + emake libpostproc/libpostproc.pc V=1 + export PKG_CONFIG_PATH="${PWD}/doc/examples/pc-uninstalled" + # Work around CMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY in eclass. It's a + # weird thing to do, but probably safer than setting that to BOTH. + [[ ${SYSROOT:-/} != / ]] && mycmakeargs+=( -DCMAKE_FIND_ROOT_PATH="${PWD}" ) + popd >/dev/null || die + fi + + if tc-is-cross-compiler; then + for t in "${NATIVE_TOOLS[@]}" ; do + pushd "${S}/tools/depends/native/$t/src" >/dev/null || die + econf_build + install -m0755 /dev/null "$t" || die # Actually build later. + mycmakeargs+=( -DWITH_${t^^}="${PWD}/$t" ) + popd >/dev/null || die + done + fi + + cmake_src_configure +} + +src_compile() { + if use system-ffmpeg && use postproc; then + pushd "${WORKDIR}/ffmpeg-${FFMPEG_VERSION}" >/dev/null || die + emake libpostproc/libpostproc.a V=1 + rm -r libav* libsw* || die + popd >/dev/null || die + fi + + if tc-is-cross-compiler; then + for t in "${NATIVE_TOOLS[@]}" ; do + emake -C "${S}/tools/depends/native/$t/src" + done + fi + + cmake_src_compile all + use doc && cmake_build doc + use test && cmake_build kodi-test +} + +src_test() { + local -x CMAKE_SKIP_TESTS=( + # Known failing, unreliable test + # bug #743938 + TestCPUInfo.GetCPUFrequency + # Tries to ping localhost, naturally breaking network-sandbox + TestNetwork.PingHost + ) + + # Tests assumes bluray support is enabled + if use !bluray; then + CMAKE_SKIP_TESTS+=( + TestStacks.TestMovieFilesStackFolderFilesDiscPart + TestURIUtils.GetBasePath + ) + fi + + if use arm || use x86; then + # bug #779184 + # https://github.com/xbmc/xbmc/issues/18594 + CMAKE_SKIP_TESTS+=( + TestDateTime.Reset + TestDateTime.SetDateTime + TestDateTime.SetFromDBTime + ) + fi + + # see https://github.com/xbmc/xbmc/issues/17860#issuecomment-630120213 + local -x KODI_HOME="${BUILD_DIR}" + + cmake_src_test +} + +src_install() { + cmake_src_install + + # bug #457588 + pax-mark Em "${ED}"/usr/$(get_libdir)/${PN}/${PN}.bin + + newicon media/icon48x48.png kodi.png + + rm "${ED}"/usr/share/kodi/addons/skin.estuary/fonts/Roboto-Thin.ttf || die + dosym ../../../../fonts/roboto/Roboto-Thin.ttf \ + usr/share/kodi/addons/skin.estuary/fonts/Roboto-Thin.ttf + + if use !eventclients ; then + rm -f "${ED}"/usr/bin/kodi-ps3remote || die + rm -f "${D}"$(python_get_sitedir)/kodi/ps3_remote.py || die + rm -rf "${D}"$(python_get_sitedir)/kodi/ps3 || die + rm -rf "${D}"$(python_get_sitedir)/kodi/bt || die + rm -rf "${ED}"/usr/share/doc/${PF}/kodi-eventclients-dev || die + fi + + python_optimize "${D}$(python_get_sitedir)" + + einstalldocs + use doc && dodoc -r "${S}"/docs/html/ +} + +pkg_postinst() { + xdg_pkg_postinst + + if use dbus ; then + optfeature "getting battery level and active power source" sys-power/upower + optfeature "control of shutdown, reboot, suspend, and hibernate" sys-auth/elogind sys-apps/systemd + optfeature "storage management support (automounting, volume monitoring, etc)" sys-fs/udisks:2 + fi +} diff --git a/media-tv/kodi/metadata.xml b/media-tv/kodi/metadata.xml new file mode 100644 index 000000000000..6c142fb23148 --- /dev/null +++ b/media-tv/kodi/metadata.xml @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>candrews@gentoo.org</email> + <name>Craig Andrews</name> + </maintainer> + <use> + <flag name="airplay">enable AirPlay support</flag> + <flag name="bluray">Enable playback of Blu-ray filesystems</flag> + <flag name="bluetooth">Enable JSON-RPC over BT for remote control connected via bluetooth</flag> + <flag name="caps">Use <pkg>sys-libs/libcap</pkg> to bind to privileged ports as non-root</flag> + <flag name="cec">Enable support for HDMI-CEC devices via libcec</flag> + <flag name="eventclients">Install full set of Kodi python eventclients and eventclients examples</flag> + <flag name="gbm">Use the Graphics Buffer Manager for EGL on KMS.</flag> + <flag name="gles">Use simplified OpenGLES instead of full-scale OpenGL</flag> + <flag name="lirc">Enable support for IR remote controls using <pkg>app-misc/lirc</pkg> + </flag> + <flag name="mariadb">Enable support store of media library metadata on local or remote MariaDB</flag> + <flag name="mysql">Enable support store of media library metadata on local or remote MySQL</flag> + <flag name="nfs">Enable NFS client support</flag> + <flag name="optical">Enable Audio CD playback, optical disks detection and reading (CD-ROM, Video CD, and others), and ISO optical disk images direct reading. DVD disks may require additional 'udf' flag.</flag> + <flag name="pipewire">Enable pipewire support</flag> + <flag name="postproc">Use bundled libpostproc to postprocess and deinterlace video</flag> + <flag name="soc">Use additional <pkg>media-video/ffmpeg</pkg> patches for efficient playback on some SoCs (e.g. ARM, RISC-V)</flag> + <flag name="system-ffmpeg">Use system ffmpeg instead of the bundled one</flag> + <flag name="libusb">Use <pkg>virtual/libusb</pkg> for usb device hotplug support. This flag should only be enabled if you're running a non-Linux kernel or you don't want to use udev.</flag> + <flag name="udf">Enable UDF support. Required for playing blurays.</flag> + <flag name="udev">Use udev rules to handle devices' permissions and hotplug support. Unless you know what you're doing do not disable this flag on Linux kernels. This is provided as an option for completeness.</flag> + <flag name="webserver">Enable internal webserver</flag> + <flag name="xslt">Enable metadata XSLT scrapers support with <pkg>dev-libs/libxslt</pkg> + </flag> + </use> + <upstream> + <bugs-to>https://github.com/xbmc/xbmc/issues/</bugs-to> + <doc>https://kodi.wiki/</doc> + </upstream> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/media-tv/linuxtv-dvb-apps/Manifest b/media-tv/linuxtv-dvb-apps/Manifest new file mode 100644 index 000000000000..d33eeca545ea --- /dev/null +++ b/media-tv/linuxtv-dvb-apps/Manifest @@ -0,0 +1 @@ +DIST linuxtv-dvb-apps-1.1.1.20140321.tar.bz2 368759 BLAKE2B 5ef1bc4ee4f0ab167cda8d87a73c83566b40005e16fbaa79525af4fb0b117dec19a4883eedad8bcfedd269c2e295dd7f9e055f905dff5f39dffe1ff052e87547 SHA512 ceb057f760fa0b3902e6824e74b9392be9a7bd3318a1a83f206c99672da17904060ffdc35e84c89d3b8af60ac29d4427acad44e9ae16797baaeb5738e2ab1bf5 diff --git a/media-tv/linuxtv-dvb-apps/files/linuxtv-dvb-apps-1.1.1.20100223-alevt.patch b/media-tv/linuxtv-dvb-apps/files/linuxtv-dvb-apps-1.1.1.20100223-alevt.patch new file mode 100644 index 000000000000..d19ac7e4878f --- /dev/null +++ b/media-tv/linuxtv-dvb-apps/files/linuxtv-dvb-apps-1.1.1.20100223-alevt.patch @@ -0,0 +1,37 @@ +--- linuxtv-dvb-apps-1.1.1.20100223/util/alevt/exp-gfx.c ++++ linuxtv-dvb-apps-1.1.1.20100223/util/alevt/exp-gfx.c +@@ -137,6 +137,7 @@ + + #ifdef WITH_PNG + ++#include <zlib.h> + #include <png.h> + static int png_open(struct export *e); + static int png_option(struct export *e, int opt, char *arg); +--- linuxtv-dvb-apps-1.1.1.20100223/util/alevt/Makefile ++++ linuxtv-dvb-apps-1.1.1.20100223/util/alevt/Makefile +@@ -25,13 +25,13 @@ + all: alevt alevt-date alevt-cap alevt.1 alevt-date.1 alevt-cap.1 + + alevt: $(OBJS) +- $(CC) $(OPT) $(OBJS) -o alevt -L$(PREFIX)/lib -L$(PREFIX)/lib64 -lX11 $(EXPLIBS) ++ $(CC) $(OPT) $(OBJS) -o alevt -L$(PREFIX)/lib -L$(PREFIX)/lib64 -lX11 $(EXPLIBS) $(LDFLAGS) + + alevt-date: $(TOBJS) +- $(CC) $(OPT) $(TOBJS) -o alevt-date $(ZVBILIB) ++ $(CC) $(OPT) $(TOBJS) -o alevt-date $(ZVBILIB) $(LDFLAGS) + + alevt-cap: $(COBJS) +- $(CC) $(OPT) $(COBJS) -o alevt-cap $(EXPLIBS) ++ $(CC) $(OPT) $(COBJS) -o alevt-cap $(EXPLIBS) $(LDFLAGS) + + font.o: font1.xbm font2.xbm font3.xbm font4.xbm + fontsize.h: font1.xbm font2.xbm font3.xbm font4.xbm +@@ -73,7 +73,6 @@ + install -m 0644 alevt.1 $(DESTDIR)$(PREFIX)/share/man/man1 + install -m 0644 alevt-date.1 $(DESTDIR)$(PREFIX)/share/man/man1 + install -m 0644 alevt-cap.1 $(DESTDIR)$(PREFIX)/share/man/man1 +- install -m 0644 alevt.png $(DESTDIR)$(PREFIX)/share/pixmaps + install -m 0644 alevt.desktop $(DESTDIR)$(PREFIX)/share/applications + + uninstall: clean diff --git a/media-tv/linuxtv-dvb-apps/files/linuxtv-dvb-apps-1.1.1.20100223-ldflags.patch b/media-tv/linuxtv-dvb-apps/files/linuxtv-dvb-apps-1.1.1.20100223-ldflags.patch new file mode 100644 index 000000000000..063b4b6c479d --- /dev/null +++ b/media-tv/linuxtv-dvb-apps/files/linuxtv-dvb-apps-1.1.1.20100223-ldflags.patch @@ -0,0 +1,20 @@ +--- linuxtv-dvb-apps-1.1.1.20100223/Make.rules ++++ linuxtv-dvb-apps-1.1.1.20100223/Make.rules +@@ -46,7 +46,7 @@ + %: %.c + $(CC) $(CPPFLAGS) $(CFLAGS) -MMD $(LDFLAGS) -o $@ $< $(filter-out %.h %.c,$^) $(LOADLIBES) $(LDLIBS) + %.so: +- $(CC) -shared -o $@ $^ ++ $(CC) $(LDFLAGS) -Wl,-soname -Wl,$@ -shared -o $@ $^ + %.a: + $(AR) rcs $@ $^ + clean:: +@@ -76,7 +76,7 @@ + @$(CC) $(CPPFLAGS) $(CFLAGS) -MMD $(LDFLAGS) -o $@ $< $(filter-out %.h %.c,$^) $(LOADLIBES) $(LDLIBS) + %.so: + @echo CC $@ +- @$(CC) -shared -o $@ $^ ++ @$(CC) $(LDFLAGS) -Wl,-soname -Wl,$@ -shared -o $@ $^ + %.a: + @echo AR $@ + @$(AR) rcs $@ $^ diff --git a/media-tv/linuxtv-dvb-apps/files/linuxtv-dvb-apps-1.1.1.20100223-perl526.patch b/media-tv/linuxtv-dvb-apps/files/linuxtv-dvb-apps-1.1.1.20100223-perl526.patch new file mode 100644 index 000000000000..4db9ac3b5460 --- /dev/null +++ b/media-tv/linuxtv-dvb-apps/files/linuxtv-dvb-apps-1.1.1.20100223-perl526.patch @@ -0,0 +1,12 @@ +diff -ruN linuxtv-dvb-apps-1.1.1.20100223.orig/util/scan/section_generate.pl linuxtv-dvb-apps-1.1.1.20100223/util/scan/section_generate.pl +--- linuxtv-dvb-apps-1.1.1.20100223.orig/util/scan/section_generate.pl 2010-02-14 12:21:19.000000000 -0000 ++++ linuxtv-dvb-apps-1.1.1.20100223/util/scan/section_generate.pl 2017-08-06 08:35:19.625688435 -0000 +@@ -4,7 +4,7 @@ + + die "no section perl file given" unless @ARGV; + +-my $h = require($ARGV[0]); ++my $h = require("./".$ARGV[0]); + + our $basename; + our $debug = $ARGV[1]; diff --git a/media-tv/linuxtv-dvb-apps/files/linuxtv-dvb-apps-1.1.1.20140321-dvbdate.patch b/media-tv/linuxtv-dvb-apps/files/linuxtv-dvb-apps-1.1.1.20140321-dvbdate.patch new file mode 100644 index 000000000000..87d9a62ad9f5 --- /dev/null +++ b/media-tv/linuxtv-dvb-apps/files/linuxtv-dvb-apps-1.1.1.20140321-dvbdate.patch @@ -0,0 +1,11 @@ +--- a/util/dvbdate/dvbdate.c ++++ b/util/dvbdate/dvbdate.c +@@ -310,7 +310,7 @@ + int set_time(time_t * new_time) + { + struct timespec s = {0}; +- s.tv_sec = new_time; ++ s.tv_sec = *new_time; + + if (clock_settime(CLOCK_REALTIME, &s)) { + perror("Unable to set time"); diff --git a/media-tv/linuxtv-dvb-apps/files/linuxtv-dvb-apps-1.1.1.20140321-gcc10.patch b/media-tv/linuxtv-dvb-apps/files/linuxtv-dvb-apps-1.1.1.20140321-gcc10.patch new file mode 100644 index 000000000000..d218183be147 --- /dev/null +++ b/media-tv/linuxtv-dvb-apps/files/linuxtv-dvb-apps-1.1.1.20140321-gcc10.patch @@ -0,0 +1,11 @@ +https://723420.bugs.gentoo.org/attachment.cgi?id=639692 +--- a/util/alevt/vbi.c ++++ b/util/alevt/vbi.c +@@ -35,7 +35,6 @@ + + static u8 *rawbuf; // one common buffer for raw vbi data + static int rawbuf_size; // its current size +-u_int16_t sid; + static char *vbi_names[] + = { "/dev/vbi", "/dev/vbi0", "/dev/video0", "/dev/dvb/adapter0/demux0", + NULL }; // default device names if none was given at the command line diff --git a/media-tv/linuxtv-dvb-apps/files/linuxtv-dvb-apps-glibc-2.31.patch b/media-tv/linuxtv-dvb-apps/files/linuxtv-dvb-apps-glibc-2.31.patch new file mode 100644 index 000000000000..d404212b5e38 --- /dev/null +++ b/media-tv/linuxtv-dvb-apps/files/linuxtv-dvb-apps-glibc-2.31.patch @@ -0,0 +1,14 @@ +--- a/util/dvbdate/dvbdate.c ++++ b/util/dvbdate/dvbdate.c +@@ -309,7 +309,10 @@ + */ + int set_time(time_t * new_time) + { +- if (stime(new_time)) { ++ struct timespec s = {0}; ++ s.tv_sec = new_time; ++ ++ if (clock_settime(CLOCK_REALTIME, &s)) { + perror("Unable to set time"); + return -1; + } diff --git a/media-tv/linuxtv-dvb-apps/files/linuxtv-dvb-apps-no-ca_set_pid.patch b/media-tv/linuxtv-dvb-apps/files/linuxtv-dvb-apps-no-ca_set_pid.patch new file mode 100644 index 000000000000..05d886cf0ad6 --- /dev/null +++ b/media-tv/linuxtv-dvb-apps/files/linuxtv-dvb-apps-no-ca_set_pid.patch @@ -0,0 +1,41 @@ +diff -ruN a/include/ca.h b/include/ca.h +--- a/include/ca.h ++++ b/include/ca.h +@@ -85,6 +85,5 @@ + #define CA_GET_MSG _IOR('o', 132, ca_msg_t) + #define CA_SEND_MSG _IOW('o', 133, ca_msg_t) + #define CA_SET_DESCR _IOW('o', 134, ca_descr_t) +-#define CA_SET_PID _IOW('o', 135, ca_pid_t) + + #endif +diff -ruN a/util/dst-utils/dst_test.c b/util/dst-utils/dst_test.c +--- a/util/dst-utils/dst_test.c ++++ b/util/dst-utils/dst_test.c +@@ -111,16 +111,6 @@ + return 0; + } + +-static int dst_set_pid(int cafd) +-{ +- if ((ioctl(cafd, CA_SET_PID)) < 0) { +- printf("%s: ioctl failed ..\n", __FUNCTION__); +- return -1; +- } +- +- return 0; +-} +- + static int dst_get_descr(int cafd) + { + if ((ioctl(cafd, CA_GET_DESCR_INFO)) < 0) { +@@ -229,10 +219,6 @@ + printf("%s: Reset\n", __FUNCTION__); + dst_reset(cafd); + break; +- case 'p': +- printf("%s: PID\n", __FUNCTION__); +- dst_set_pid(cafd); +- break; + case 'g': + printf("%s: Get Desc\n", __FUNCTION__); + dst_get_descr(cafd); diff --git a/media-tv/linuxtv-dvb-apps/linuxtv-dvb-apps-1.1.1.20140321-r2.ebuild b/media-tv/linuxtv-dvb-apps/linuxtv-dvb-apps-1.1.1.20140321-r2.ebuild new file mode 100644 index 000000000000..527198cd0098 --- /dev/null +++ b/media-tv/linuxtv-dvb-apps/linuxtv-dvb-apps-1.1.1.20140321-r2.ebuild @@ -0,0 +1,96 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit toolchain-funcs vcs-snapshot + +HOMEPAGE="https://www.linuxtv.org/" +DESCRIPTION="Small utils for DVB to scan, zap, view signal strength" +SRC_URI="https://www.linuxtv.org/hg/dvb-apps/archive/3d43b280298c.tar.bz2 -> ${P}.tar.bz2" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="amd64 arm arm64 ppc x86" +IUSE="alevt usb" + +RDEPEND=" + alevt? ( + !media-video/alevt + media-libs/libpng:0= + media-libs/zvbi[v4l] + virtual/zlib:= + x11-libs/libX11 + ) + usb? ( virtual/libusb:0 ) +" +DEPEND="${RDEPEND} + dev-lang/perl + sys-kernel/linux-headers + dev-libs/libusb-compat +" +RDEPEND+=" + media-tv/dtv-scan-tables +" + +PATCHES=( + "${FILESDIR}"/${PN}-1.1.1.20100223-ldflags.patch + "${FILESDIR}"/${PN}-1.1.1.20100223-alevt.patch + "${FILESDIR}"/${PN}-1.1.1.20100223-perl526.patch + "${FILESDIR}"/${PN}-no-ca_set_pid.patch + "${FILESDIR}"/${PN}-glibc-2.31.patch + "${FILESDIR}"/${PN}-1.1.1.20140321-gcc10.patch + "${FILESDIR}"/${PN}-1.1.1.20140321-dvbdate.patch +) + +src_prepare() { + default + + # do not compile test-progs, incompatible with videodev2.h + sed -i '/-C test/d' Makefile || die + + # remove copy of header-files + rm -rv "${S}"/include/ || die +} + +src_compile() { + emake V=1 CC="$(tc-getCC)" $(usex usb "ttusb_dec_reset=1" "") + use alevt && emake -C util/alevt CC="$(tc-getCC)" OPT="${CFLAGS}" +} + +src_install() { + emake V=1 prefix="${EPREFIX}/usr" libdir="${EPREFIX}/usr/$(get_libdir)" \ + $(usex usb "ttusb_dec_reset=1" "") \ + DESTDIR="${D}" INSTDIR="${T}" install + + if use alevt ; then + dodir /usr/share/{applications,man/man1} + emake -C util/alevt DESTDIR="${D}" install + fi + + # rename scan to scan-dvb + mv "${ED}"/usr/bin/scan{,-dvb} || die + + # install zap-files + local dir="" + for dir in dvb-{s,c,t} atsc ; do + insinto /usr/share/dvb/zap/${dir} + doins "${S}"/util/szap/channels-conf/${dir}/* + done + + # install remote-key files + insinto /usr/share/dvb/av7110_loadkeys + doins util/av7110_loadkeys/*.rc* + + # install Documentation + dodoc README + newdoc util/scan/README README.scan-dvb + newdoc util/szap/README README.zap + newdoc util/av7110_loadkeys/README README.av7110_loadkeys + + use usb && newdoc util/ttusb_dec_reset/README README.ttusb_dec_reset +} + +pkg_postinst() { + elog "${EPREFIX}/usr/bin/scan has been installed as scan-dvb." +} diff --git a/media-tv/linuxtv-dvb-apps/metadata.xml b/media-tv/linuxtv-dvb-apps/metadata.xml new file mode 100644 index 000000000000..bbca26cf5e98 --- /dev/null +++ b/media-tv/linuxtv-dvb-apps/metadata.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <use> + <flag name="alevt">Build videotext decoder</flag> + </use> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/media-tv/metadata.xml b/media-tv/metadata.xml new file mode 100644 index 000000000000..47196cad61b7 --- /dev/null +++ b/media-tv/metadata.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE catmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<catmetadata> + <longdescription lang="en"> + The media-tv category contains television-related applications. + </longdescription> + <longdescription lang="de"> + Die Kategorie media-tc enthält TV-Applikationen. + </longdescription> + <longdescription lang="es"> + La categoría media-tv contiene aplicaciones relacionadas con la + televisión. + </longdescription> + <longdescription lang="ja"> + media-tvカテゴリーにはテレビジョン関連のアプリケーションが含まれています。 + </longdescription> + <longdescription lang="nl"> + De media-tv categorie bevat TV-applicaties. + </longdescription> + <longdescription lang="vi"> + Nhóm media-tv chứa các ứng dụng liên quan đến truyền hình - TV. + </longdescription> + <longdescription lang="it"> + La categoria media-tv contiene applicazioni per la TV. + </longdescription> + <longdescription lang="pt"> + A categoria media-tv contém aplicações relacionadas com + televisão. + </longdescription> + <longdescription lang="pl"> + Kategoria media-tv zawiera programy związane z telewizją. + </longdescription> +</catmetadata> diff --git a/media-tv/mythtv-status/Manifest b/media-tv/mythtv-status/Manifest new file mode 100644 index 000000000000..c657aa1b31e4 --- /dev/null +++ b/media-tv/mythtv-status/Manifest @@ -0,0 +1 @@ +DIST mythtv-status-1.1.0.tar.gz 47393 BLAKE2B b444ac83c2c6d6d3dbcd28485de974201510e14d4d773be5fbe867ddcc25fec20369d40f52b3d87a72cfb2b04ffd8c61861dcf4e013d70974053bf732165fc4f SHA512 4a0fd49cb36624d0da677f901ae48ae7c2971e3d18e0a2669cbfe137ed540321373fe9118aa603ef6fcf0397c4af0ee5a5086d20481cdcedc47b5881ff8da3f5 diff --git a/media-tv/mythtv-status/files/mythtv-status-1.0.1.man b/media-tv/mythtv-status/files/mythtv-status-1.0.1.man new file mode 100644 index 000000000000..9c15d44393a8 --- /dev/null +++ b/media-tv/mythtv-status/files/mythtv-status-1.0.1.man @@ -0,0 +1,304 @@ +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.42) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "MYTHTV-STATUS 1" +.TH MYTHTV-STATUS 1 "2019-01-28" "perl v5.34.0" "User Contributed Perl Documentation" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +mythtv\-status \- Display the status of a MythTV backend +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +.Vb 1 +\& mythtv\-status [options] +.Ve +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +This script queries a MythTV backend and reports on the status of it, +any upcoming recordings and any which are happening right now. +.PP +The intention is to warn you if there is a program being recorded or +about to be recorded. +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\fB\-c, \-\-colour\fR" 4 +.IX Item "-c, --colour" +Use colour when showing the status of the encoder(s). +.IP "\fB\-\-date\fR" 4 +.IX Item "--date" +Set the date to run as, used for debugging purposes. +.IP "\fB\-d, \-\-description\fR" 4 +.IX Item "-d, --description" +Display the description for the scheduled recordings. +.IP "\fB\-\-disk\-space\-warn\fR" 4 +.IX Item "--disk-space-warn" +The threshold (in percent) of used disk space that we should show +the disk space in red (if using colour) or send an email if we're +in email mode with email only on warnings. +.IP "\fB\-\-encoder\-details\fR" 4 +.IX Item "--encoder-details" +Display the input \s-1ID\s0 and channel name against the recording details. +.IP "\fB\-\-encoder\-skip\-idle\fR" 4 +.IX Item "--encoder-skip-idle" +Suppress displaying idle encoders in the Encoders block. +.IP "\fB\-\-encoder\-warn\-non\-idle\fR" 4 +.IX Item "--encoder-warn-non-idle" +Display warnings if an encoder is not idle. This is the default, it allows +you to know if an encoder or the MythTV system is busy. To disable, use +\&\fB\-\-no\-encoder\-warn\-non\-idle\fR. +.IP "\fB\-e, \-\-episode\fR" 4 +.IX Item "-e, --episode" +Display the episode (subtitle) for the scheduled recordings. +.IP "\fB\-\-email <address>[ \-\-email <address> ...]\fR" 4 +.IX Item "--email <address>[ --email <address> ...]" +Send the output to the listed email addresses. By default the encoder status, +currently recording shows and time till next recording is suppressed from +the email. +.Sp +To turn the additional blocks on you can use \fB\-\-encoders\fR, \fB\-\-recording\-now\fR +and/or \fB\-\-next\-recording\fR. +.Sp +By default highlight is turned on, to disable it use \fB\-\-nohighlight\fR. +.IP "\fB\-\-email\-only\-on\-alert\fR" 4 +.IX Item "--email-only-on-alert" +Only send an email out (if \-\-email is present) if there is an alert +(i.e., schedule conflict or low disk space). +.IP "\fB\-?, \-\-help\fR" 4 +.IX Item "-?, --help" +Display help. +.IP "\fB\-\-file <file>\fR" 4 +.IX Item "--file <file>" +Load \s-1XML\s0 from the file specified instead of querying a MythTV backend. +Handy for debugging things. +.IP "\fB\-\-save\-file <file>\fR" 4 +.IX Item "--save-file <file>" +Save the \s-1XML\s0 we received from the MythTV backend. +Handy for debugging things. +.IP "\fB\-\-guide\-days\-warn <days>\fR" 4 +.IX Item "--guide-days-warn <days>" +Warn if the number of days of guide data present is equal to or below +this level. Default is 2 days. +.IP "\fB\-h \s-1HOST,\s0 \-\-host=HOST\fR" 4 +.IX Item "-h HOST, --host=HOST" +The host to check, defaults to localhost. +.IP "\fB\-\-highlight\fR" 4 +.IX Item "--highlight" +Surround any items that are considered a warning with asterisks. This helps +to highlight an issue if colour mode is disabled. +.IP "\fB\-\-nostatus\fR, \fB\-\-noencoders\fR, \fB\-\-norecording\-now\fR, \fB\-\-noscheduled\-recordings\fR, \fB\-\-noschedule\-conflicts\fR, \fB\-\-nonext\-recording\fR, \fB\-\-nototal\-disk\-space\fR, \fB\-\-nodisk\-space\fR, \fB\-\-noguide\-data\fR, \fB\-\-noauto\-expire\fR" 4 +.IX Item "--nostatus, --noencoders, --norecording-now, --noscheduled-recordings, --noschedule-conflicts, --nonext-recording, --nototal-disk-space, --nodisk-space, --noguide-data, --noauto-expire" +Suppress displaying blocks of the output if they would normally be displayed. +.IP "\fB\-p \s-1PORT,\s0 \-\-port=PORT\fR" 4 +.IX Item "-p PORT, --port=PORT" +The port to use when connecting to MythTV, defaults to 6544. +.IP "\fB\-\-oneliner\-bullets\fR" 4 +.IX Item "--oneliner-bullets" +Insert asterisks (*) before each of the oneliners to stop some +email clients from thinking the oneliner block is a paragraph and +trying to word wrap them. +.IP "\fB\-\-auto\-expire\fR" 4 +.IX Item "--auto-expire" +Display the shows due to auto expire (output is normally suppressed). +.IP "\fB\-\-auto\-expire\-count\fR" 4 +.IX Item "--auto-expire-count" +How many of the auto expire shows to display, defaults to 10. +.IP "\fB\-\-recording\-in\-warn\fR" 4 +.IX Item "--recording-in-warn" +If the \*(L"Next Recording In\*(R" time is less than this amount, display it +in red. This in seconds, and defaults to 3600 (1 hour). +.IP "\fB\-\-verbose\fR" 4 +.IX Item "--verbose" +Have slightly more verbose output. This includes any warnings that might +be generated while parsing the \s-1XML.\s0 +.IP "\fB\-v, \-\-version\fR" 4 +.IX Item "-v, --version" +Show the version of mythtv-status and then exit. +.SH "OUTPUT" +.IX Header "OUTPUT" +The output of this script is broken up into several chunks they are: +.IP "Status" 4 +.IX Item "Status" +Some general info about the backend, currently just the timestamp of when +this program was run. +.IP "Guide Data" 4 +.IX Item "Guide Data" +The number of days of guide data is present. By default it is only shown +if the number of days is below the warning level. To show it regardless +of the warning level use \-\-guide\-data. +.IP "Encoders" 4 +.IX Item "Encoders" +Each encoder that the backend knows about are listed, with the hostname +they are on, the encoder \s-1ID\s0 (in brackets) and the current status. +.IP "Recording Now" 4 +.IX Item "Recording Now" +Any programs which are being recorded right now. +.IP "Scheduled Recordings" 4 +.IX Item "Scheduled Recordings" +Up to 10 programs which are scheduled to be recorded today and tomorrow. +.IP "Schedule Conflicts" 4 +.IX Item "Schedule Conflicts" +Any upcoming schedule conflicts (not just limited to today or tomorrow). +.IP "Shows due to Auto Expire" 4 +.IX Item "Shows due to Auto Expire" +The shows which will be deleted and the order they'll be deleted if the +auto expirer kicks in. +.IP "Total Disk Space" 4 +.IX Item "Total Disk Space" +The amount of disk space in total, and used by MythTV. +.IP "Next Recording In" 4 +.IX Item "Next Recording In" +If there are no recordings currently happening, then the amount of time until +the next recording is displayed. +.IP "Disk Space" 4 +.IX Item "Disk Space" +Details about each storage group that MythTV knows about. By default this +only shows storage groups that are above the warning level. Use +\&\fB\-\-disk\-space\fR to turn on display of all storage groups. +.SH "RETURN CODES" +.IX Header "RETURN CODES" +mythtv-status provides some return codes. +.IP "0" 4 +Standard return code +.IP "1" 4 +.IX Item "1" +A warning is generated +.SH "AUTHOR" +.IX Header "AUTHOR" +Andrew Ruthven, andrew@etc.gen.nz +.SH "LICENSE" +.IX Header "LICENSE" +Copyright (c) 2007\-2018 Andrew Ruthven <andrew@etc.gen.nz> +This code is hereby licensed for public consumption under the \s-1GNU GPL\s0 v3. diff --git a/media-tv/mythtv-status/metadata.xml b/media-tv/mythtv-status/metadata.xml new file mode 100644 index 000000000000..5f33304011d5 --- /dev/null +++ b/media-tv/mythtv-status/metadata.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/media-tv/mythtv-status/mythtv-status-1.1.0.ebuild b/media-tv/mythtv-status/mythtv-status-1.1.0.ebuild new file mode 100644 index 000000000000..8bae575f0074 --- /dev/null +++ b/media-tv/mythtv-status/mythtv-status-1.1.0.ebuild @@ -0,0 +1,34 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="Displays the current status of MythTV at the command prompt" +HOMEPAGE="http://www.etc.gen.nz/projects/mythtv/mythtv-status.html" +SRC_URI="http://www.etc.gen.nz/projects/mythtv/tarballs/${P}.tar.gz" +#SRC_URI="mirror://debian/pool/main/${PN:0:1}/${PN}/${PN}_${PV}.orig.tar.gz -> ${P}.tar.gz" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64 ~x86" + +RDEPEND=" + dev-perl/libwww-perl + dev-perl/XML-LibXML + dev-perl/Date-Manip + dev-perl/MIME-tools + dev-perl/Sys-SigAction + dev-perl/Config-Auto + media-tv/mythtv[perl]" + +src_compile() { :; } + +src_install() { + dobin bin/${PN} + newman "${FILESDIR}"/${PN}-1.0.1.man ${PN}.1 + dodoc README FAQ ChangeLog THANKS +} + +src_test() { + emake test +} diff --git a/media-tv/mythtv/Manifest b/media-tv/mythtv/Manifest new file mode 100644 index 000000000000..637ddee549e9 --- /dev/null +++ b/media-tv/mythtv/Manifest @@ -0,0 +1 @@ +DIST mythtv-35.0_p20251230.tar.gz 120232263 BLAKE2B ce6e9ce3cfbcb18f38e45708e8d9d434c352bbf3f7987e55c047214af10db9090593d374ee2d7fa3f4afc8567c715dadbd6c7fd41f448e605fcb8f527dc9591a SHA512 a8bcf4667f8a190f19a9fe22a10cc37a93e23704bcf19c7b3cdb156cc86890fce225e4118c5bcb2810a29306c34215dd8fe18ad69c310770963c79d7a51afeec diff --git a/media-tv/mythtv/files/README.gentoo b/media-tv/mythtv/files/README.gentoo new file mode 100644 index 000000000000..cd116011d11f --- /dev/null +++ b/media-tv/mythtv/files/README.gentoo @@ -0,0 +1,43 @@ +Support for metadata lookup changes is added. User configuration required. +Details at: https://www.mythtv.org/wiki/Metadata_Lookup_Changes_March_2021 + +Support for Python 2.7 is removed. + +If a MYSQL server is installed, a mythtv MySQL user and mythconverg database +is created if it does not already exist. +You will be prompted for your MySQL root password. + +A mythtv user is maintained by acct-user/mythtv. An existing mythtv user +may be modified to the configuration defined by acct-user/mythtv. +The mythtv user's primary group is now mythtv. (formerly video) +An existing mythtv user may be changed which may alter some functionality. +If it breaks mythtv you may need to (choose one): + * Restore the original mythtv user + * Create custom acct-user/mythtv overlay for your system + * Fix you system to use mythtv as daemon only (recommended) +Failure to emerge acct-user/mythtv indicates that the existing mythtv user +is customized and not changed. Corrective action (choose one): + * Ignore emerge failure + * Create custom acct-user/mythtv overlay for your system + * Fix you system to use mythtv as daemon only + * Delete existing user and try again (dangerous) + +Mythtv is updated to use correct FHS/Gentoo policy paths. +Updating mythtv installations may report: + * mythtv is in use, cannot update home + * There was an error when attempting to update the home directory for mythtv + * Please update it manually on your system (as root): + * usermod -d "/var/lib/mythtv" "mythtv" +This can be ignored. The previous default was "/home/mythtv". +Use caution if you change the home directory. + +To have this machine operate as recording host for MythTV, +mythbackend must be running. Run the following: +rc-update add mythbackend default + +Your recordings folder must be owned 'mythtv'. e.g. +chown -R mythtv /var/lib/mythtv + +Want mythfrontend to start automatically? +Set USE=autostart. Details can be found at: +https://dev.gentoo.org/~cardoe/mythtv/autostart.html diff --git a/media-tv/mythtv/files/bash_profile b/media-tv/mythtv/files/bash_profile new file mode 100644 index 000000000000..5de354bccae9 --- /dev/null +++ b/media-tv/mythtv/files/bash_profile @@ -0,0 +1,4 @@ +# .bash_profile +case "`tty`" in + *tty8) startx; logout ;; +esac diff --git a/media-tv/mythtv/files/mythbackend.conf-r1 b/media-tv/mythtv/files/mythbackend.conf-r1 new file mode 100644 index 000000000000..f7709c439b10 --- /dev/null +++ b/media-tv/mythtv/files/mythbackend.conf-r1 @@ -0,0 +1,18 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +# Accepts any valid combination of logging options to mythbackend +# To get a valid list run: /usr/bin/mythbackend -v help +#MYTHBACKEND_VERBOSE="general" + +# Configures where mythbackend logs +# Valid values: +# * files - logs each individual daemon in /var/log/mythtv (default) +# * database - logs into the database +# * syslog FACILITY - logs to syslog using FACILITY (see syslog(3)) +# * console - logs only to the console (no mythlogserver) +#MYTHBACKEND_LOGGING="files" + +# Allows you to pass specific startup options to mythbackend +# e.g. --noupnp +#MYTHBACKEND_OPTS="" diff --git a/media-tv/mythtv/files/mythbackend.init-r4 b/media-tv/mythtv/files/mythbackend.init-r4 new file mode 100644 index 000000000000..c64190151e3a --- /dev/null +++ b/media-tv/mythtv/files/mythbackend.init-r4 @@ -0,0 +1,73 @@ +#!/sbin/openrc-run +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +description="MythTV backend recording daemon" +extra_started_commands="resched upnprebuild" +description_resched="Forces the recording scheduler to update" +description_upnprebuild="Rebuilds the UPnP media cache" + +MYTHBACKEND_OPTS=${MYTHBACKEND_OPTS:-"${MYTHBACKEND_OPTS}"} +MYTHBACKEND_VERBOSE=${MYTHBACKEND_VERBOSE:-"general"} +MYTHBACKEND_LOGGING=${MYTHBACKEND_LOGGING:-"files"} + +name="MythTV backend" +command="/usr/bin/mythbackend" +command_user="${command_user:-"mythtv:mythtv"}" +pidfile="/run/mythtv/mythbackend.pid" +start_stop_daemon_args="--pidfile ${pidfile} --user ${command_user}" +command_args="--daemon --pidfile ${pidfile} --verbose ${MYTHBACKEND_VERBOSE} ${MYTHBACKEND_OPTS}" + +depend() { + # mythbackend doesn't need to run on the same machine that + # mysql runs on. so its use for that reason + use logger net.lo mysql LCDd +} + +start_pre() { + case "${MYTHBACKEND_LOGGING}" in + database) logging="--enable-dblog" ;; + syslog\ *) logging="--${MYTHBACKEND_LOGGING}" ;; + files) logging="--logpath /var/log/mythtv" ;; + console) logging="--nologserver" ;; + *) + eerror "Invalid MYTHBACKEND_LOGGING value" + exit 1 + ;; + esac + + #fixes for bug #101308 + unset DISPLAY + unset SESSION_MANAGER + + # Work around any strange permissions that may be on these files. + [ "x${MYTHBACKEND_LOGGING}" = "xfiles" ] && \ + checkpath --directory --owner ${command_user} --mode 0755 /var/log/mythtv + checkpath --directory --owner ${command_user} --mode 0775 "{$HOME}" + checkpath --directory --owner ${command_user} --mode 0750 /run/mythtv +} + +start() { + ebegin "Starting ${name}" + start-stop-daemon --start ${start_stop_daemon_args} --exec ${command} \ + -- ${command_args} ${logging} + eend $? +} + +stop() { + ebegin "Stopping ${name}" + start-stop-daemon --stop --retry 10 --progress --pidfile ${pidfile} + eend $? +} + +resched() { + ebegin "Updating the recording scheduler" + ${command} --resched + eend $? +} + +upnprebuild() { + ebegin "Rebuilding UPnP media cache" + ${command} --upnprebuild + eend $? +} diff --git a/media-tv/mythtv/files/mythbackend.service-28 b/media-tv/mythtv/files/mythbackend.service-28 new file mode 100644 index 000000000000..3ab4c9b19ded --- /dev/null +++ b/media-tv/mythtv/files/mythbackend.service-28 @@ -0,0 +1,66 @@ +# Do not edit this file, it will be replaced on update +# If you need to make modifications to this unit file first make a copy in # /etc/systemd/system + +# This file is part of the packaging of MythTV # +# MythTV is free software; view http://www.mythtv.org for more information. +# +# It is sometimes necessary to wait for a capture device to finish (hot)plug +# initialization before the backend starts. If this is necessary, +# create a Wants and After entry for all the capture devices that +# one wishes to wait to be created before the backend starts using the systemd +# device name mangling names (/dev/some/thing turns +# into dev-some-thing.device). These normally should be udev persistent +# filename rules to avoid confusion. +# See the MythTV wiki for udev persistent filename # discussions found at: +# http://www.mythtv.org/wiki/Device_Filenames_and_udev +# +# In order to insure that systemd will create a device unit for the +# capture device, one must insure that udev will have the tag "systemd" +# (i.e. add TAG+="systemd" to the udev rule). +# +# The MythTV package ships with a default udev rule file located in: +# /lib/udev/rules.d/99-mythbackend.rules + +[Unit] +Description=MythTV backend service +After=network.target mysqld.service +# Uncomment the following line if you will be using the mythweb plugin on the +# same system as mythbackend. +#Wants=httpd.service + +[Service] +Type=notify + +Environment=MYTHCONFDIR=/etc/mythtv +# Default setting assumes a system wide install. Otherwise it should be set to +# the folder containing the .mythtv subfolder containing the config.xml file +# Such as +#Environment=HOME=/usr/share/mythtv +# or +Environment=HOME=/~/.mythtv + +# systemd changes execution from the calling user (possibly root) to this user +# if you have permissions problems or obscure errors try logging in as mythtv +# See notes below +User=mythtv + +# Uncomment one of the following... +# Use sysloging rather than separate logging: +#ExecStart=/usr/bin/mythbackend --syslog local7 + +# If Type=forking you must specify the --daemon and --pidfile options: +#ExecStart=/usr/bin/mythbackend --daemon --logpath /var/log/mythtv --loglevel crit --pidfile /run/mythtv/mythbackend.pid +#PIDFILE=/run/mythtv/mythbackend.pid + +# Systemd sends stdout to syslog, and mythbackend has console logging enabled without --daemon. +# Send stdout to /dev/null so console logging doesn't go to syslog +#StandardOutput=null +# Default setting for Type=simple. +#ExecStart=/usr/bin/mythbackend --logpath /var/log/mythtv --loglevel crit +ExecStart=/usr/bin/mythbackend --loglevel notice + +# Whether systemd will continue over-watch and restart on any halt +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/media-tv/mythtv/files/mythfrontend.conf b/media-tv/mythtv/files/mythfrontend.conf new file mode 100644 index 000000000000..5dad284705ab --- /dev/null +++ b/media-tv/mythtv/files/mythfrontend.conf @@ -0,0 +1,12 @@ +# Copyright 1999-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +# Should 'mythfrontend' really execute mythwelcome instead? +# Default: false +MYTHWELCOME=false + +# Options to pass to mythfrontend or mythwelcome based on the above setting +# Note: If you have mythwelcome enabled, it does not pass arguments to +# mythfrontend. You must configure this inside mythwelcome +# Default: --syslog local7 +MYTHFRONTEND_OPTS="--syslog local7" diff --git a/media-tv/mythtv/files/mythfrontend.wrapper b/media-tv/mythtv/files/mythfrontend.wrapper new file mode 100644 index 000000000000..ce3608ec1f9a --- /dev/null +++ b/media-tv/mythtv/files/mythfrontend.wrapper @@ -0,0 +1,29 @@ +#!/bin/sh +# Based on Mythbuntu's script + +# Check if the frontend is already running, +# if it is bring it to the foreground. +# This is to prevent multiple frontends from running +/usr/bin/pgrep mythfrontend.real 2>&1 > /dev/null && \ + /usr/bin/wmctrl -a "MythTV Frontend" 2> /dev/null && \ + exit 0 + +# Check if you're part of the video group +if [ -n "$(groups | grep -v video)" ]; then + echo "'$USER' is not part of the 'video' group." >&2 + echo "For best results add '$USER' to the 'video' group." >&2 +fi + +if [ -e /etc/conf.d/mythfrontend ]; then + . /etc/conf.d/mythfrontend +fi + +if [ "x${MYTHWELCOME}" = "xtrue" ]; then + exec /usr/bin/mythwelcome ${MYTHFRONTEND_OPTS} "$@" + RET=$? +else + exec /usr/bin/mythfrontend.real ${MYTHFRONTEND_OPTS} "$@" + RET=$? +fi + +exit ${RET} diff --git a/media-tv/mythtv/files/mythtv-33.1-libva.patch b/media-tv/mythtv/files/mythtv-33.1-libva.patch new file mode 100644 index 000000000000..1a80f9f90a07 --- /dev/null +++ b/media-tv/mythtv/files/mythtv-33.1-libva.patch @@ -0,0 +1,101 @@ +https://bugs.gentoo.org/904437 +https://github.com/MythTV/mythtv/pull/760 +--- a/libs/libmythtv/libmythtv.pro ++++ b/libs/libmythtv/libmythtv.pro +@@ -538,7 +538,7 @@ using_frontend { + DEFINES += USING_VAAPI + HEADERS += decoders/mythvaapicontext.h + SOURCES += decoders/mythvaapicontext.cpp +- LIBS += -lva -lva-x11 -lva-glx -lva-drm ++ LIBS += -lva -lva-drm + } + + using_nvdec { +@@ -605,10 +605,9 @@ using_frontend { + SOURCES += opengl/mythopengltonemap.cpp + SOURCES += visualisations/videovisualcircles.cpp + +- + using_vaapi { +- HEADERS += opengl/mythvaapiinterop.h opengl/mythvaapiglxinterop.h +- SOURCES += opengl/mythvaapiinterop.cpp opengl/mythvaapiglxinterop.cpp ++ HEADERS += opengl/mythvaapiinterop.h ++ SOURCES += opengl/mythvaapiinterop.cpp + } + + using_vdpau:using_x11 { +@@ -649,6 +648,12 @@ using_frontend { + HEADERS += opengl/mythvaapidrminterop.h + SOURCES += opengl/mythvaapidrminterop.cpp + } ++ } else { ++ using_vaapi { ++ HEADERS += opengl/mythvaapiglxinterop.h ++ SOURCES += opengl/mythvaapiglxinterop.cpp ++ LIBS += -lva-x11 -lva-glx ++ } + } + + !win32-msvc* { +--- a/libs/libmythtv/opengl/mythvaapiinterop.cpp ++++ b/libs/libmythtv/opengl/mythvaapiinterop.cpp +@@ -8,8 +8,12 @@ + #include "mythvideocolourspace.h" + #include "fourcc.h" + #include "mythvaapiinterop.h" ++ ++#ifdef USING_EGL + #include "mythvaapidrminterop.h" ++#else + #include "mythvaapiglxinterop.h" ++#endif + + extern "C" { + #include "libavfilter/buffersrc.h" +@@ -57,14 +61,14 @@ void MythVAAPIInterop::GetVAAPITypes(MythRenderOpenGL* Context, MythInteropGPU:: + // zero copy + if (egl && MythVAAPIInteropDRM::IsSupported(Context)) + vaapitypes.emplace_back(GL_VAAPIEGLDRM); +-#endif ++#else + // 1x copy + if (!egl && !wayland && MythVAAPIInteropGLXPixmap::IsSupported(Context)) + vaapitypes.emplace_back(GL_VAAPIGLXPIX); + // 2x copy + if (!egl && !opengles && !wayland) + vaapitypes.emplace_back(GL_VAAPIGLXCOPY); +- ++#endif + if (!vaapitypes.empty()) + Types[FMT_VAAPI] = vaapitypes; + } +@@ -82,11 +86,12 @@ MythVAAPIInterop* MythVAAPIInterop::CreateVAAPI(MythPlayerUI *Player, MythRender + #ifdef USING_EGL + if ((type == GL_VAAPIEGLDRM) || (type == DRM_DRMPRIME)) + return new MythVAAPIInteropDRM(Player, Context, type); +-#endif ++#else + if (type == GL_VAAPIGLXPIX) + return new MythVAAPIInteropGLXPixmap(Player, Context); + if (type == GL_VAAPIGLXCOPY) + return new MythVAAPIInteropGLXCopy(Player, Context); ++#endif + } + } + return nullptr; +--- a/libs/libmythtv/opengl/mythvaapiinterop.h ++++ b/libs/libmythtv/opengl/mythvaapiinterop.h +@@ -25,9 +25,12 @@ struct AVFilterContext; + #undef None // X11/X.h defines this. Causes compile failure in Qt6. + #undef Cursor + #undef pointer +-#include "va/va_glx.h" ++#ifdef USING_EGL + #include "va/va_drm.h" + #include "va/va_drmcommon.h" ++#else ++#include "va/va_glx.h" ++#endif + #undef Bool // Interferes with cmake moc file compilation + + #ifndef VA_FOURCC_I420 diff --git a/media-tv/mythtv/files/mythtv-35.freemheg-update-visibility-of-MHCreateEngine-MHSetLo.patch b/media-tv/mythtv/files/mythtv-35.freemheg-update-visibility-of-MHCreateEngine-MHSetLo.patch new file mode 100644 index 000000000000..d98e5704d4ae --- /dev/null +++ b/media-tv/mythtv/files/mythtv-35.freemheg-update-visibility-of-MHCreateEngine-MHSetLo.patch @@ -0,0 +1,46 @@ +https://github.com/MythTV/mythtv/pull/1153 + +From c6dad722f966b71ac8dbcea34c45401f12518a14 Mon Sep 17 00:00:00 2001 +From: "Z. Liu" <zhixu.liu@gmail.com> +Date: Tue, 22 Jul 2025 23:22:23 +0800 +Subject: [PATCH] freemheg: update visibility of MHCreateEngine & MHSetLogging + +-lmythfreemheg-35 is used when build libmythtv.35.so, so the visibility +of MHCreateEngine & MHSetLogging should be different depends on "-DMTV_API", +otherwise build is failed with: + +> /usr/bin/x86_64-pc-linux-gnu-ld.bfd: obj/mhi.o: in function MHIContext:: MHIContext(InteractiveTV*)': +> /var/tmp/portage/media-tv/mythtv-35.0-r1/work/mythtv-35.0/mythtv/libs/libmythtv/mheg/mhi.cpp: 80:(.text+0xec): undefined reference to MHCreateEngine(MHContext*)' +> /usr/bin/x86_64-pc-linux-gnu-ld.bfd: obj/interactivetv.o: in function InteractiveTV::InteractiveTV(MythPlayerCaptionsUI*)': +> /var/tmp/portage/media-tv/mythtv-35.0-r1/work/mythtv-35.0/mythtv/libs/libmythtv/mheg/interactivetv.cpp: (.text+0x17b): undefined reference to MHSetLogging(_IO_FILE*, unsigned int)' +> /usr/bin/x86_64-pc-linux-gnu-ld.bfd: libmythtv-35.so.35.0.0: protected symbol _Z12MHSetLoggingP8_IO_FILEj' isn't defined +> /usr/bin/x86_64-pc-linux-gnu-ld.bfd: final link failed: bad value + +Signed-off-by: Z. Liu <zhixu.liu@gmail.com> + +diff --git a/libs/libmythfreemheg/freemheg.h b/libs/libmythfreemheg/freemheg.h +index 16bc85eb0b..1565c2d8b9 100644 +--- a/libs/libmythfreemheg/freemheg.h ++++ b/libs/libmythfreemheg/freemheg.h +@@ -45,10 +45,16 @@ class MHContext; + class MHEG; + class MHStream; + ++#ifdef MTV_API ++# define MHEG_PUBLIC Q_DECL_IMPORT ++#else ++# define MHEG_PUBLIC Q_DECL_EXPORT ++#endif ++ + // Called to create a new instance of the module. +-extern Q_DECL_EXPORT MHEG *MHCreateEngine(MHContext *context); ++extern MHEG_PUBLIC MHEG *MHCreateEngine(MHContext *context); + // Set the logging stream and options. +-extern Q_DECL_EXPORT void MHSetLogging(FILE *logStream, unsigned int logLevel); ++extern MHEG_PUBLIC void MHSetLogging(FILE *logStream, unsigned int logLevel); + + // This abstract class is implemented by the MHEG Engine. + class MHEG +-- +2.45.2 + diff --git a/media-tv/mythtv/files/mythtv-35.no-ant-java-required-if-use-system-libblur.patch b/media-tv/mythtv/files/mythtv-35.no-ant-java-required-if-use-system-libblur.patch new file mode 100644 index 000000000000..70c0f063f353 --- /dev/null +++ b/media-tv/mythtv/files/mythtv-35.no-ant-java-required-if-use-system-libblur.patch @@ -0,0 +1,28 @@ +https://github.com/MythTV/mythtv/pull/1089 + +From 674f2c9474b5a2bede1b3ef4c6e77fc46be408b8 Mon Sep 17 00:00:00 2001 +From: "Z. Liu" <zhixu.liu@gmail.com> +Date: Tue, 13 May 2025 00:09:20 +0800 +Subject: [PATCH] configure: no ant & java required if use system libbluray + +* mythtv/external/libmythbluray/ won't be built +* java is required at runtime only + +Signed-off-by: Z. Liu <zhixu.liu@gmail.com> + +diff --git a/configure b/configure +index 2168fae294..5765f74833 100755 +--- a/configure ++++ b/configure +@@ -5207,7 +5207,7 @@ fi + + antbin="" + java_code_version="" +-if enabled bdjava; then ++if enabled bdjava && ! enabled system_libbluray; then + enabled x86_64 && java_arch=amd64 + enabled x86_32 && java_arch=i386 + enabled arm && java_arch=arm +-- +2.45.2 + diff --git a/media-tv/mythtv/files/mythtv.logrotate.d-r4 b/media-tv/mythtv/files/mythtv.logrotate.d-r4 new file mode 100644 index 000000000000..28e3ce62bfdb --- /dev/null +++ b/media-tv/mythtv/files/mythtv.logrotate.d-r4 @@ -0,0 +1,14 @@ +/var/log/mythtv/*.log { + weekly + rotate 8 + missingok + ifempty + nocreate + nocompress + sharedscripts + olddir /var/log/mythtv/old + lastaction + killall -HUP mythlogserver + find /var/log/mythtv/old -type f -mtime +30 -delete + endscript +} diff --git a/media-tv/mythtv/files/xinitrc-r1 b/media-tv/mythtv/files/xinitrc-r1 new file mode 100644 index 000000000000..c366fe487a84 --- /dev/null +++ b/media-tv/mythtv/files/xinitrc-r1 @@ -0,0 +1,8 @@ +# .xinitrc +[ -x /usr/bin/nvidia-settings ] && /usr/bin/nvidia-settings -l +/usr/bin/xset s noblank +/usr/bin/xset s off +/usr/bin/xset -dpms +/usr/bin/evilwm & +# Configure arguments via /etc/conf.d/mythfrontend +exec /usr/bin/mythfrontend diff --git a/media-tv/mythtv/metadata.xml b/media-tv/mythtv/metadata.xml new file mode 100644 index 000000000000..12df0fed838a --- /dev/null +++ b/media-tv/mythtv/metadata.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person" proxied="yes"> + <email>thebitpit@austincustomerrands.com</email> + <name>Wilson Michaels</name> + </maintainer> + <maintainer type="project" proxied="proxy"> + <email>proxy-maint@gentoo.org</email> + <name>Proxy Maintainers</name> + </maintainer> + <use> + <flag name="alsa">Allows MythTV to directly output sound to ALSA devices</flag> + <flag name="asi">Support for DVEO ASI recorder</flag> + <flag name="autostart">Use a custom autostart configuration</flag> + <flag name="cec">Allows control of CEC enabled TVs via HDMI</flag> + <flag name="ceton">Ceton InfiniTV 4 a CableCARD-enabled tuner support</flag> + <flag name="debug">Instructs Qt to use the 'debug' target</flag> + <flag name="hdhomerun">Silicondust USA Inc.network-attached tuner support</flag> + <flag name="ieee1394">Firewire enabled Cable boxe support</flag> + <flag name="jack">Allows MythTV to use JACK as your sound output device</flag> + <flag name="java">BD-J support for Blu-ray discs</flag> + <flag name="lcd">Enable use of <pkg>app-misc/lcdproc</pkg> data display</flag> + <flag name="lirc">LIRC remote control device support</flag> + <flag name="nvdec">Enable NVDEC (NVCUVID) hardware accelerated video decoding</flag> + <flag name="perl">Build the perl bindings for MythTV</flag> + <flag name="vbox">V@Box Communications network-attached tuner devices support</flag> + <flag name="wrapper">Use Ubuntu mythtfrontend wrapper</flag> + <flag name="x265">Enable h265 encoding using x265</flag> + <flag name="xmltv">Support <pkg>media-tv/xmltv</pkg> TV listing - not used by Schedules Direct]</flag> + </use> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/media-tv/mythtv/mythtv-35.0_p20251230.ebuild b/media-tv/mythtv/mythtv-35.0_p20251230.ebuild new file mode 100644 index 000000000000..a65a5da3ea7f --- /dev/null +++ b/media-tv/mythtv/mythtv-35.0_p20251230.ebuild @@ -0,0 +1,396 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISABLE_AUTOFORMATTING="yes" +PYTHON_COMPAT=( python3_{13..14} ) + +inherit edo flag-o-matic python-any-r1 +inherit qmake-utils readme.gentoo-r1 systemd toolchain-funcs user-info + +DESCRIPTION="Open Source DVR and media center hub" +HOMEPAGE="https://www.mythtv.org https://github.com/MythTV/mythtv" +if [[ ${PV} == *_p* ]] ; then + # https://github.com/MythTV/mythtv/tree/fixes/35 + MY_COMMIT="805e05b76a9ab760169f901fd1149276fa17ccfb" + SRC_URI="https://github.com/MythTV/mythtv/archive/${MY_COMMIT}.tar.gz -> ${P}.tar.gz" + # mythtv and mythplugins are separate builds in the github MythTV project + S="${WORKDIR}/mythtv-${MY_COMMIT}/mythtv" +else + SRC_URI="https://github.com/MythTV/mythtv/archive/v${PV}.tar.gz -> ${P}.tar.gz" + # mythtv and mythplugins are separate builds in the github mythtv project + S="${WORKDIR}/${P}/mythtv" +fi + +LICENSE="GPL-2+" +SLOT="0" +KEYWORDS="~amd64 ~x86" + +IUSE_INPUT_DEVICES="input_devices_joystick" +IUSE_VIDEO_CAPTURE_DEVICES="v4l ieee1394 hdhomerun vbox ceton" +IUSE="alsa asi autostart cdda cdr cec cpu_flags_ppc_altivec debug dvd dvb exif jack java" +IUSE+=" +lame lcd libass lirc nvdec +opengl oss perl pulseaudio python raw systemd vaapi vdpau vpx" +IUSE+=" +wrapper x264 x265 +xml xmltv +xvid +X zeroconf" +IUSE+=" ${IUSE_INPUT_DEVICES} ${IUSE_VIDEO_CAPTURE_DEVICES}" +REQUIRED_USE=" + cdr? ( cdda ) +" + +RDEPEND=" + acct-user/mythtv + dev-libs/glib:2 + dev-libs/lzo:2 + dev-libs/libzip:= + dev-qt/qtbase:6[dbus,gui,mysql,network,sql,xml,widgets] + media-fonts/corefonts + media-fonts/dejavu + media-fonts/liberation-fonts + media-fonts/tex-gyre + media-gfx/exiv2:= + media-libs/freetype:2 + media-libs/libbluray:=[java?] + media-libs/libsamplerate + media-libs/libsoundtouch:= + media-libs/taglib:= + virtual/zlib:= + alsa? ( media-libs/alsa-lib ) + autostart? ( + net-dialup/mingetty + x11-apps/xset + x11-wm/evilwm + ) + cec? ( dev-libs/libcec ) + dvd? ( + dev-libs/libcdio:= + media-libs/libdvdcss + sys-fs/udisks:2 + ) + hdhomerun? ( media-libs/libhdhomerun ) + ieee1394? ( + media-libs/libiec61883 + sys-libs/libavc1394 + sys-libs/libraw1394 + ) + jack? ( virtual/jack ) + lame? ( media-sound/lame ) + lcd? ( app-misc/lcdproc ) + libass? ( media-libs/libass:= ) + lirc? ( app-misc/lirc ) + nvdec? ( x11-drivers/nvidia-drivers ) + opengl? ( dev-qt/qtbase:6[opengl] ) + pulseaudio? ( media-libs/libpulse ) + systemd? ( sys-apps/systemd:= ) + vaapi? ( media-libs/libva:=[X] ) + vdpau? ( x11-libs/libvdpau ) + vpx? ( media-libs/libvpx:= ) + x264? ( media-libs/x264:= ) + X? ( + x11-apps/xinit + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXrandr + x11-libs/libXv + x11-libs/libXxf86vm:= + x11-misc/wmctrl:= + ) + x265? ( media-libs/x265 ) + xml? ( dev-libs/libxml2:2 ) + xmltv? ( + dev-perl/XML-LibXML + media-tv/xmltv + ) + xvid? ( media-libs/xvid ) + zeroconf? ( + dev-libs/openssl:= + net-dns/avahi[mdnsresponder-compat] + ) +" +DEPEND=" + ${RDEPEND} + dev-lang/yasm + sys-kernel/linux-headers + x11-base/xorg-proto + perl? ( + dev-perl/DBD-mysql + dev-perl/DBI + dev-perl/HTTP-Message + dev-perl/IO-Socket-INET6 + dev-perl/LWP-Protocol-https + dev-perl/Net-UPnP + dev-perl/XML-Simple + ) +" +BDEPEND=" + virtual/pkgconfig + opengl? ( virtual/opengl ) + python? ( + ${PYTHON_DEPS} + $(python_gen_any_dep ' + dev-python/python-dateutil[${PYTHON_USEDEP}] + dev-python/lxml[${PYTHON_USEDEP}] + dev-python/mysqlclient[${PYTHON_USEDEP}] + dev-python/pip[${PYTHON_USEDEP}] + dev-python/requests-cache[${PYTHON_USEDEP}] + dev-python/wheel[${PYTHON_USEDEP}] + ') + ) +" + +PATCHES=( + "${FILESDIR}"/${PN}-33.1-libva.patch + "${FILESDIR}"/${PN}-35.no-ant-java-required-if-use-system-libblur.patch + "${FILESDIR}"/${PN}-35.freemheg-update-visibility-of-MHCreateEngine-MHSetLo.patch +) + +python_check_deps() { + use python || return 0 + python_has_version "dev-python/python-dateutil[${PYTHON_USEDEP}]" && + python_has_version "dev-python/lxml[${PYTHON_USEDEP}]" && + python_has_version "dev-python/mysqlclient[${PYTHON_USEDEP}]" && + python_has_version "dev-python/requests-cache[${PYTHON_USEDEP}]" && + python_has_version "dev-python/pip[${PYTHON_USEDEP}]" && + python_has_version "dev-python/wheel[${PYTHON_USEDEP}]" +} + +pkg_pretend() { + if use autostart; then + local HOME_MYTHTV=$(egethome mythtv) + if [[ ! -z "${HOME_MYTHTV}" && ! -d "${HOME_MYTHTV}" ]] ; then + eerror "Home path '${HOME_MYTHTV}' for user 'mythtv' exists" \ + "but is not a directory" + die + fi + fi +} + +pkg_setup() { + use python && python-any-r1_pkg_setup +} + +src_prepare() { + default + + # Perl bits need to go into vendor_perl and not site_perl + sed -e "s:pure_install:pure_install INSTALLDIRS=vendor:" \ + -i "${S}"/bindings/perl/Makefile || die "Cannot convert site_perl to vendor_perl!" +} + +src_configure() { + use elibc_musl && append-flags -D_LARGEFILE64_SOURCE # 924347 + + local -a myconf=() + + # Setup paths + myconf+=( --prefix="${EPREFIX}"/usr ) + myconf+=( --libdir="${EPREFIX}"/usr/$(get_libdir) ) + myconf+=( --libdir-name=$(get_libdir) ) + myconf+=( --mandir="${EPREFIX}"/usr/share/man ) + + if use debug; then + myconf+=( --compile-type=debug ) + myconf+=( --enable-valgrind ) # disables timeouts for valgrind memory debugging + else + myconf+=( --compile-type=release ) + fi + + # Build boosters + has ccache "${FEATURES}" || myconf+=( --disable-ccache ) + has distcc "${FEATURES}" || myconf+=( --disable-distcc ) + + # CPU settings + # Mythtv's configure is borrowed from ffmpeg, + # Bug #172723 + # Try to get cpu type based on CFLAGS. + # We need to do this so that features of that CPU will be better used + # If they contain an unknown CPU it will not hurt since ffmpeg's configure + # will just ignore it. + local i + for i in $(get-flag march) $(get-flag mcpu) $(get-flag mtune) ; do + [[ "${i}" == "native" ]] && i="host" # bug #273421 + myconf+=( --cpu="${i}" ) + break + done + myconf+=( $(use_enable cpu_flags_ppc_altivec altivec) ) + + # Sound Output Support + myconf+=( + $(use_enable oss audio-oss) + + $(use_enable alsa audio-alsa) + $(use_enable jack audio-jack) + $(use_enable pulseaudio audio-pulseoutput) + ) + + # Input Support + myconf+=( + $(use_enable lirc) + $(use_enable input_devices_joystick joystick-menu) + $(use_enable cec libcec) + $(use_enable ieee1394 firewire) + $(use_enable hdhomerun) + $(use_enable vbox) + $(use_enable ceton) + $(use_enable v4l v4l2) + $(use_enable dvb) + $(use_enable asi) + ) + + # Video Output Support + myconf+=( + $(use_enable X x11) + ) + + # Hardware accelerators + myconf+=( + $(use_enable nvdec) + $(use_enable vaapi) + $(use_enable vdpau) + $(use_enable opengl) + $(use_enable opengl egl) + $(use_enable libass) + ) + + # System tools + myconf+=( + $(use_enable systemd systemd_notify) + $(use_enable systemd systemd_journal) + $(use_enable xml libxml2) + $(use_enable zeroconf libdns-sd) + ) + + # Bindings + if use perl && use python; then + myconf+=( --with-bindings=perl,python ) + elif use perl; then + myconf+=( --without-bindings=python ) + myconf+=( --with-bindings=perl ) + elif use python; then + myconf+=( --without-bindings=perl ) + myconf+=( --with-bindings=python ) + else + myconf+=( --without-bindings=perl,python ) + fi + use python && myconf+=( --python="${EPYTHON}" ) + myconf+=( $(use_enable java bdjava) ) + + # External codec library options (used for mythffmpeg and streaming transcode) + # lame is required for some broadcasts for silence detection of commercials + # default enable in IUSE with +lame + myconf+=( + $(use_enable lame libmp3lame) + $(use_enable xvid libxvid) + $(use_enable x264 libx264) + $(use_enable x265 libx265) + $(use_enable vpx libvpx) + ) + + # Clean up DSO load times and other compiler bits + myconf+=( --enable-symbol-visibility ) + myconf+=( --enable-pic ) + + # libavformat/format.c:37:22: error: type of 'ff_mythtv_mpegtsraw_demuxer' does not match original declaration [-Werror=lto-type-mismatch] + # libavformat/mpegts-mythtv.c:3731:21: note: type 'const struct FFInputFormat' should match type 'struct AVInputFormat' + filter-lto + + # Needed just like ffmpeg (bug #860987) + tc-is-lto && myconf+=( --enable-lto ) + + if tc-is-cross-compiler ; then + myconf+=( --enable-cross-compile --arch=$(tc-arch-kernel) ) + myconf+=( --cross-prefix="${CHOST}"- ) + fi + + # econf sets these options that are not handled by configure: + # --build --host --infodir --localstatedir --sysconfdir + + edo ./configure \ + --prefix="${EPREFIX}/usr" \ + --cc="$(tc-getCC)" \ + --cxx="$(tc-getCXX)" \ + --ar="$(tc-getAR)" \ + --nm="$(tc-getNM)" \ + --optflags="${CFLAGS}" \ + --extra-cflags="${CFLAGS}" \ + --extra-cxxflags="${CXXFLAGS}" \ + --extra-ldflags="${LDFLAGS}" \ + --qmake="$(qt6_get_bindir)"/qmake \ + "${myconf[@]}" +} + +src_compile() { + emake V=1 +} + +src_install() { + emake V=1 STRIP="true" INSTALL_ROOT="${D}" install + use python && python_optimize # does all packages by default + dodoc AUTHORS README + readme.gentoo_create_doc + + insinto /usr/share/mythtv/database + doins database/* + + newinitd "${FILESDIR}"/mythbackend.init-r4 mythbackend + newconfd "${FILESDIR}"/mythbackend.conf-r1 mythbackend + if use systemd; then + systemd_newunit "${FILESDIR}"/mythbackend.service-28 mythbackend.service + fi + + # The acct-user/mythtv package creates/manages the user 'mythtv' + keepdir /etc/mythtv + fowners -R mythtv /etc/mythtv + keepdir /var/log/mythtv + fowners -R mythtv /var/log/mythtv + + insinto /etc/logrotate.d + newins "${FILESDIR}"/mythtv.logrotate.d-r4 mythtv + + insinto /usr/share/mythtv/contrib + # Ensure we don't install scripts needing the perl bindings (bug #516968) Finding none is OK. + if ! use perl; then + find contrib/ -name '*.pl' -exec rm {} \; + fi + # Ensure we don't install scripts needing the python bindings (bug #516968) Finding none is OK. + if ! use python; then + find contrib/ -name '*.py' -exec rm {} \; + fi + doins -r contrib/* + + # Install our mythfrontend wrapper which is similar to Mythbuntu's + if use wrapper; then + mv "${ED}/usr/bin/mythfrontend" "${ED}/usr/bin/mythfrontend.real" || die "Failed to install mythfrontend.real" + newbin "${FILESDIR}"/mythfrontend.wrapper mythfrontend + newconfd "${FILESDIR}"/mythfrontend.conf mythfrontend + fi + + if use autostart; then + newenvd - 95mythtv <<- _EOF_ + CONFIG_PROTECT=\"$(egethome mythtv)\" + _EOF_ + insinto $(egethome mythtv) + newins "${FILESDIR}"/bash_profile .bash_profile + newins "${FILESDIR}"/xinitrc-r1 .xinitrc + fi + + # Make Python files executable but not files named "__init__.py" + find "${ED}/usr/share/mythtv" -type f -name '*.py' -exec expr \( {} : '.*__init__.py' \) = 0 \; \ + -exec chmod a+x {} \; || die "Failed to make python file $(basename ${file}) executable" + + # Ensure that Python scripts are executed by Python 2 + use python && python_fix_shebang "${ED}/usr/share/mythtv" + + # Make shell & perl scripts executable + find "${ED}" -type f \( -name '*.sh' -o -name '*.pl' \) -exec chmod a+x {} \; \ + || die "Failed to make script executable" +} + +pkg_postinst() { + readme.gentoo_print_elog +} + +pkg_config() { + if [[ -e "${EROOT}"/usr/bin/mysql ]]; then + "${EROOT}"/usr/bin/mysql -u root -p < "${EROOT}"/usr/share/mythtv/database/mc.sql + fi +} diff --git a/media-tv/plex-media-server/Manifest b/media-tv/plex-media-server/Manifest new file mode 100644 index 000000000000..c123557c744e --- /dev/null +++ b/media-tv/plex-media-server/Manifest @@ -0,0 +1,9 @@ +DIST plex-media-server-1.43.1.10611-InRelease 4069 BLAKE2B 7978c79071e8a429ec555351cd1e71f9ec7891e1eee480b939550fbd18acc588b0a5ee8ccd887addc0eb46a9610b017a2b82e51273203064ea4e84cb3c844f47 SHA512 03e88827062951333b21869ae5fcf52ba563521f87cba2f3007bd8a8835b31126dfe52bd162d2ca86637160779c66bca4af0364881c1bf1be2e4c040d09ba27b +DIST plex-media-server-1.43.1.10611-Packages.amd64 557 BLAKE2B cf2faaf7e1d24f51931ef64476c65c354cb84644fbe3a97ddfbc503385b2f3a72cec1ebee15616e801ebd7e4a54b47c98cd29eaec0bafad06d56de133e613670 SHA512 ae783eaeea86aef905f0093c7ea414711c6a4b6392c7b9b8ecbe789b82c708b9c9eaa961884cb35ef9fc7441b85f542164fdf23a2bdc1472df418cee8d91de77 +DIST plex-media-server-1.43.1.10611-Packages.arm 557 BLAKE2B 470ceed6e072393b23f45f5a576fd89cd987ff17be20abdb59e3a367a27bee5c85b8eaf1a737b1257ea6ae997fbaf3f49bd86139b84f24bc72d6d23797c586f6 SHA512 bb0e26708e619b097a8d2ec3a73ac1cc42dcf1f6e6cc7b724a9e8fc512821584184bcf72f3c4b88e88aca1325b6c466ae5283e65f28a621ce555c90ed44ebe8b +DIST plex-media-server-1.43.1.10611-Packages.arm64 557 BLAKE2B ddafc50cb800c445b93a9fc305ad2584b8c889b2628f678016bdc08e9de3a4d39d7be2b54b0f281e8d30a0e6d622934a06842c177f8f27461f7cd77b40272134 SHA512 aa5dcb64bc73d3c3c4d3f74b02dba97d09cef0f44c6f44e028637897dc6817ecf053da59437934591d1fe20929631c1c2466afdbc711623f791af31c99bf346d +DIST plex-media-server-1.43.1.10611-Packages.x86 555 BLAKE2B de3e5b30f9dd8276f34982a7d47425d7419dbc8aee7889f9b055186f991a3cd523a94cc0ff5c06ebe765b6c9bbabdb58d7a4e98d27e229f389b04a68a98c4bda SHA512 b223444726584d75b32374f61658a594d65ad3ba329b69b043478eefb64a058238d513d556368a4cd77734d805a551f865c4b666b716c99a6b970ad58c6c4c83 +DIST plexmediaserver_1.43.1.10611-1e34174b1_amd64.deb 84325106 BLAKE2B 56ea2439912283b7199988a1ab8193357bf38639a39f1b9ee7c2babfc36654218371beb7ad878b5cb4772f30bc2d0e1d5de89a565b8b78b9193caa233b2ce210 SHA512 ebc53e3a31e53ccf1d6d4260b329ecd7fceaff6b6e5dcfd87a034fecc7b3c80e7fd755b0e50cb90bccf5af82a3db5959ae89f7fd9ca1ad367c75d22d6a0e573b +DIST plexmediaserver_1.43.1.10611-1e34174b1_arm64.deb 76215254 BLAKE2B 530501c867571460cdf4d06bab640e766981face4b7cc36a8c130aae0b6daa54d2301fe55c1b8c4827248ec6096c151b65231cbefc3cfabb418f5109a85aaa1f SHA512 fbdad72f4f5cdc9c98ce123e77d0c887cfdadc02fbcb26f8c3f429437ca4c750114861c53c2dd3d767bcf28b39fdb67a5eac201ba5ce77d4e262e9a524d779d0 +DIST plexmediaserver_1.43.1.10611-1e34174b1_armhf.deb 76245614 BLAKE2B 303543911e656e2b3907e8d56acdc0b6e3b4accacbd9d917c9e0cfbfa975a6f9928fb7be12647f577de84d8331edc16cf715e8bdfbc232f7f94fa02d20d92cd6 SHA512 1b8c1a626ea7924c70a069242a9f9acdd67416c01e0e92c8f88ac8999bc326ecbd43501f9e21a3c28be7c605cc43cd9fcd086101bf1be78c4648607f11cd9c74 +DIST plexmediaserver_1.43.1.10611-1e34174b1_i386.deb 77432430 BLAKE2B c0bd687e68e99394698555c9db92aae69c2cff6d0a7665abf6049e356f9131ae240f7e2a3ee9b3c776e422a4e147fb48acd8baddecd36daa39b199ee2433d0ea SHA512 00583d11b475354ed7e80fe1c87a0d332d44014bb722996925851e9a7442961e84fbc390c8ef6390268a83b653934fc640a757d754961d06c69e532e9db43512 diff --git a/media-tv/plex-media-server/files/80plexmediaserver b/media-tv/plex-media-server/files/80plexmediaserver new file mode 100644 index 000000000000..54fe49b09fd2 --- /dev/null +++ b/media-tv/plex-media-server/files/80plexmediaserver @@ -0,0 +1 @@ +SEARCH_DIRS_MASK="/usr/lib/plexmediaserver/lib /usr/lib/plexmediaserver/Resources/Python/lib/python2.7/lib-dynload /usr/lib/plexmediaserver/Resources/Python/lib/python2.7/site-packages/lxml" diff --git a/media-tv/plex-media-server/files/README.gentoo b/media-tv/plex-media-server/files/README.gentoo new file mode 100644 index 000000000000..3cb1378a2970 --- /dev/null +++ b/media-tv/plex-media-server/files/README.gentoo @@ -0,0 +1,14 @@ +Plex Media Server is now installed. Please check the configuration file. +It can be found in /etc/plex/plexmediaserver to verify the default settings. +Adjust thread counts and memory usage limits for best performance. + +To start the Plex Server, run 'rc-config start plex-media-server' +You will then be able to access your library at http://localhost:32400/manage + +If installing on a remote host you will need to use a ssh tunnel eg, +'ssh ip.address.of.server -L 8888:localhost:32400' then open the folowing in +a local browser 'http://localhost:8888/web' to claim the remote server. + +Finally, please note usage of the plex-media-server is governed by a license +grant detailed in their terms of service which can be reviewed at: +https://www.plex.tv/about/privacy-legal/plex-terms-of-service/ diff --git a/media-tv/plex-media-server/files/plex-media-server.conf.d b/media-tv/plex-media-server/files/plex-media-server.conf.d new file mode 100644 index 000000000000..bd683b0063b9 --- /dev/null +++ b/media-tv/plex-media-server/files/plex-media-server.conf.d @@ -0,0 +1,8 @@ +# Config file for /etc/init.d/plex-media-server + +PLEX_PIDFILE="/var/run/plex-media-server.pid" +PLEX_OUTLOG="/var/log/pms/out.log" +PLEX_ERRLOG="/var/log/pms/err.log" +PLEX_USER="plex" +# PLEX_SCRIPT="/usr/sbin/start_pms" +PLEX_SCRIPT="/usr/lib/plexmediaserver/Plex Media Server" diff --git a/media-tv/plex-media-server/files/plex-media-server.init.d b/media-tv/plex-media-server/files/plex-media-server.init.d new file mode 100644 index 000000000000..26f3941a3b0e --- /dev/null +++ b/media-tv/plex-media-server/files/plex-media-server.init.d @@ -0,0 +1,16 @@ +#!/sbin/openrc-run + +start() { + ebegin "Starting Plex Media Server" + start-stop-daemon -S -m -p ${PLEX_PIDFILE} -1 ${PLEX_OUTLOG} -2 ${PLEX_ERRLOG} --quiet -u ${PLEX_USER} -N -5 -b --exec "${PLEX_SCRIPT}" + eend $? +} + +stop() { + ebegin "Stopping Plex Media Server" + kill -- -`cat ${PLEX_PIDFILE}` + + # Remove stale pid file since this is a dirty solution + rm ${PLEX_PIDFILE} + eend $? +} diff --git a/media-tv/plex-media-server/files/plex-media-server.service.patch b/media-tv/plex-media-server/files/plex-media-server.service.patch new file mode 100644 index 000000000000..a2bf14ed30cd --- /dev/null +++ b/media-tv/plex-media-server/files/plex-media-server.service.patch @@ -0,0 +1,10 @@ +--- ./usr/lib/plexmediaserver/lib/plexmediaserver.service.old 2020-11-22 18:18:21.258165393 +0100 ++++ ./usr/lib/plexmediaserver/lib/plexmediaserver.service 2020-11-22 18:18:35.864602444 +0100 +@@ -27,5 +27,6 @@ + export PLEX_MEDIA_SERVER_INFO_VENDOR="$(grep ^NAME= /etc/os-release | awk -F= "{print \\$2}" | tr -d \\" )"; \ + export PLEX_MEDIA_SERVER_INFO_DEVICE="PC"; \ + export PLEX_MEDIA_SERVER_INFO_MODEL="$(uname -m)"; \ +-export PLEX_MEDIA_SERVER_INFO_PLATFORM_VERSION="$(grep ^VERSION= /etc/os-release | awk -F= "{print \\$2}" | tr -d \\" )"; \ ++export GENTOO_PROFILE="`readlink /etc/portage/make.profile`"; \ ++export PLEX_MEDIA_SERVER_INFO_PLATFORM_VERSION="$${GENTOO_PROFILE#.*/profiles/}"; \ + exec "/usr/lib/plexmediaserver/Plex Media Server"' diff --git a/media-tv/plex-media-server/metadata.xml b/media-tv/plex-media-server/metadata.xml new file mode 100644 index 000000000000..80d223c09593 --- /dev/null +++ b/media-tv/plex-media-server/metadata.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person" proxied="yes"> + <email>joe@wt.gd</email> + <name>Joe Kappus</name> + </maintainer> + <maintainer type="project" proxied="proxy"> + <email>proxy-maint@gentoo.org</email> + <name>Proxy Maintainers</name> + </maintainer> + <upstream> + <changelog>https://forums.plex.tv/t/plex-media-server/30447/</changelog> + <doc>https://support.plex.tv/articles/200264746-quick-start-step-by-step-guides/</doc> + </upstream> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/media-tv/plex-media-server/plex-media-server-1.43.1.10611.ebuild b/media-tv/plex-media-server/plex-media-server-1.43.1.10611.ebuild new file mode 100644 index 000000000000..f10a6ceae98c --- /dev/null +++ b/media-tv/plex-media-server/plex-media-server-1.43.1.10611.ebuild @@ -0,0 +1,125 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/plexmediaserver.asc + +inherit eapi9-pipestatus readme.gentoo-r1 systemd unpacker pax-utils verify-sig + +MY_PV="${PV}-1e34174b1" +MY_URI="https://downloads.plex.tv/plex-media-server-new" + +DESCRIPTION="Free media library that is intended for use with a plex client" +HOMEPAGE="https://www.plex.tv/" +SRC_URI=" + amd64? ( ${MY_URI}/${MY_PV}/debian/plexmediaserver_${MY_PV}_amd64.deb ) + arm? ( ${MY_URI}/${MY_PV}/debian/plexmediaserver_${MY_PV}_armhf.deb ) + arm64? ( ${MY_URI}/${MY_PV}/debian/plexmediaserver_${MY_PV}_arm64.deb ) + x86? ( ${MY_URI}/${MY_PV}/debian/plexmediaserver_${MY_PV}_i386.deb ) + verify-sig? ( + https://repo.plex.tv/deb/dists/public/InRelease -> ${P}-InRelease + amd64? ( https://repo.plex.tv/deb/dists/public/main/binary-amd64/Packages -> ${P}-Packages.amd64 ) + arm? ( https://repo.plex.tv/deb/dists/public/main/binary-armhf/Packages -> ${P}-Packages.arm ) + arm64? ( https://repo.plex.tv/deb/dists/public/main/binary-arm64/Packages -> ${P}-Packages.arm64 ) + x86? ( https://repo.plex.tv/deb/dists/public/main/binary-i386/Packages -> ${P}-Packages.x86 ) + ) +" +S="${WORKDIR}" + +LICENSE="all-rights-reserved" +SLOT="0" +KEYWORDS="-* amd64 ~arm arm64 ~x86" +IUSE="verify-sig" +RESTRICT="bindist" + +DEPEND=" + acct-group/plex + acct-user/plex" +RDEPEND="${DEPEND}" +BDEPEND=" + verify-sig? ( >=sec-keys/openpgp-keys-plexmediaserver-20240120 ) +" + +PATCHES=( + "${FILESDIR}/${PN}.service.patch" +) + +QA_DESKTOP_FILE="usr/share/applications/plexmediamanager.desktop" +QA_PREBUILT="*" +QA_MULTILIB_PATHS=( + "usr/lib/plexmediaserver/lib/.*" + "usr/lib/plexmediaserver/Resources/Python/lib/python2.7/.*" + "usr/lib/plexmediaserver/Resources/Python/lib/python2.7/lib-dynload/_hashlib.so" +) + +src_unpack() { + if use verify-sig; then + local deb_arch=${ARCH} + [[ ${ARCH} == arm ]] && deb_arch=armhf + [[ ${ARCH} == x86 ]] && deb_arch=i386 + + cd "${DISTDIR}" > /dev/null || die + + # Verify APT chain of trust: + # InRelease (signed) -> Packages (checksum) -> .deb (checksum) + verify-sig_verify_message ${P}-InRelease - \ + | sed "s,[0-9]\+ main/binary-${deb_arch}/Packages$,${P}-Packages.${ARCH}," \ + | verify-sig_verify_unsigned_checksums - sha256 ${P}-Packages.${ARCH} + pipestatus || die + + sed -n "/^Version: ${MY_PV}/,/^SHA256:/p" \ + ${P}-Packages.${ARCH} \ + | sed "s,^SHA256: \(.*\),\1 plexmediaserver_${MY_PV}_${deb_arch}.deb," \ + | verify-sig_verify_unsigned_checksums - sha256 plexmediaserver_${MY_PV}_${deb_arch}.deb + pipestatus || die + + cd "${WORKDIR}" > /dev/null || die + fi + + unpacker_src_unpack +} + +src_install() { + # Remove Debian specific files + rm -r "usr/share/doc" || die + + # Copy main files over to image and preserve permissions so it is portable + cp -rp usr/ "${ED}" || die + + # Make sure the logging directory is created + keepdir /var/log/pms + fowners plex:plex /var/log/pms + + keepdir /var/lib/plexmediaserver + fowners plex:plex /var/lib/plexmediaserver + + # Install the OpenRC init/conf files + newinitd "${FILESDIR}/${PN}.init.d" ${PN} + newconfd "${FILESDIR}/${PN}.conf.d" ${PN} + + # Install systemd service file + systemd_newunit "${ED}"/usr/lib/plexmediaserver/lib/plexmediaserver.service "${PN}.service" + + # Add pax markings to some binaries so that they work on hardened setup + BINS_TO_PAX_MARK=( + "${ED}/usr/lib/plexmediaserver/Plex Script Host" + "${ED}/usr/lib/plexmediaserver/Plex Media Scanner" + ) + + local f + for f in "${BINS_TO_PAX_MARK[@]}"; do + pax-mark m "${f}" + done + + # Adds the precompiled plex libraries to the revdep-rebuild's mask list + # so it doesn't try to rebuild libraries that can't be rebuilt. + insinto /etc/revdep-rebuild + doins "${FILESDIR}"/80plexmediaserver + + readme.gentoo_create_doc +} + +pkg_postinst() { + readme.gentoo_print_elog +} diff --git a/media-tv/shoutcast2vdr/Manifest b/media-tv/shoutcast2vdr/Manifest new file mode 100644 index 000000000000..ec066017b6ce --- /dev/null +++ b/media-tv/shoutcast2vdr/Manifest @@ -0,0 +1 @@ +DIST shoutcast2vdr-0.0.8.gz 3538 BLAKE2B ca09d53488354316af12a0e192c835a29313a07096f534e049ad975dbc55f36f71cbac754e75ad14362b9bae60ab6a513d04bd4a4b2fa89e7a4909310c29aa3d SHA512 ae5ce60c993ff85b3ac9ab3567be55a22ad1929b98a035b323583fa6166b21a96bd7e7017917865d4a339790e7d6c1113820d7230787225d97c68e2174f02c37 diff --git a/media-tv/shoutcast2vdr/metadata.xml b/media-tv/shoutcast2vdr/metadata.xml new file mode 100644 index 000000000000..8021b51587c6 --- /dev/null +++ b/media-tv/shoutcast2vdr/metadata.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>vdr@gentoo.org</email> + <name>Gentoo VDR Project</name> + </maintainer> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/media-tv/shoutcast2vdr/shoutcast2vdr-0.0.8-r1.ebuild b/media-tv/shoutcast2vdr/shoutcast2vdr-0.0.8-r1.ebuild new file mode 100644 index 000000000000..cda850ecea3b --- /dev/null +++ b/media-tv/shoutcast2vdr/shoutcast2vdr-0.0.8-r1.ebuild @@ -0,0 +1,30 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="VDR script: generate shoutcast playlists" +HOMEPAGE="http://www.vdr-portal.de/board/thread.php?threadid=19478" +SRC_URI="http://www.kost.sh/vdr/${P}.gz" +S="${WORKDIR}" + +SLOT="0" +LICENSE="GPL-2" +KEYWORDS="amd64 x86" + +RDEPEND="media-video/vdr" + +PLAYLIST_DIR="/var/cache/vdr/music/playlists" + +src_prepare() { + default + sed -i shoutcast2vdr-0.0.8 -e "s:outputdir=/home/volker/vdr/radio:outputdir=${PLAYLIST_DIR}:" || die + + # wrt bug 520624 + sed -i shoutcast2vdr-0.0.8 -e "s:mkdir:mkdir -p:" || die +} + +src_install() { + exeinto /usr/share/vdr/shoutcast2vdr + newexe shoutcast2vdr-0.0.8 shoutcast2vdr +} diff --git a/media-tv/tvbrowser-bin/Manifest b/media-tv/tvbrowser-bin/Manifest new file mode 100644 index 000000000000..0bdc3f35ca45 --- /dev/null +++ b/media-tv/tvbrowser-bin/Manifest @@ -0,0 +1 @@ +DIST tvbrowser-bin-4.2.7.tar.gz 5678714 BLAKE2B 22af4810641943db990d9fc5290e1c64b0b6921efba0bb72aeba674850fa07a6f0cae678557df74c973712058dbf1ac3480edbc470c4fd05b95a422e9594a296 SHA512 922db2dbae2a4278abb8a818ac23eba38de20b0c3b273b5b7d4fbb57085136500f8cf6cc1daf2ad6765d9b8b1b8e8b8351463397a8ed5ab3025ae6faed8c37ae diff --git a/media-tv/tvbrowser-bin/files/tvbrowser b/media-tv/tvbrowser-bin/files/tvbrowser new file mode 100644 index 000000000000..5222bd3b8147 --- /dev/null +++ b/media-tv/tvbrowser-bin/files/tvbrowser @@ -0,0 +1,28 @@ +#!/bin/bash + +# These variables are induced by the ebuild during the build process +P= +JAVA_SLOT= + +POSSIBLE_JAVA_PROGRAM_DIRS=( + /usr/lib*/openjdk-${JAVA_SLOT} + /opt/openjdk-bin-${JAVA_SLOT} + /opt/openjdk-jre-bin-${JAVA_SLOT} +) + +for POSSIBLE_DIR in ${POSSIBLE_JAVA_PROGRAM_DIRS[@]}; do + if [[ -x ${POSSIBLE_DIR}/bin/java ]]; then + export JAVA_PROGRAM_DIR="${POSSIBLE_DIR}/bin/" + break + fi +done + +if [ -z "$JAVA_PROGRAM_DIR" ]; then + echo "Could not find a suitable Java ${JAVA_SLOT} installation!" + exit 1 +fi + +cd "/opt/${P}" +echo ${JAVA_PROGRAM_DIR}java -Xms16m -Xmx1G --module-path="lib:tvbrowser.jar" -Djava.library.path="./" -splash:imgs/splash.png -Dpropertiesfile=linux.properties -m tvbrowser/tvbrowser.TVBrowser "$@" +${JAVA_PROGRAM_DIR}java -Xms16m -Xmx1G --module-path="lib:tvbrowser.jar" -Djava.library.path="./" -splash:imgs/splash.png -Dpropertiesfile=linux.properties -m tvbrowser/tvbrowser.TVBrowser "$@" + diff --git a/media-tv/tvbrowser-bin/metadata.xml b/media-tv/tvbrowser-bin/metadata.xml new file mode 100644 index 000000000000..9266ef85aa51 --- /dev/null +++ b/media-tv/tvbrowser-bin/metadata.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person" proxied="yes"> + <email>h.judt@gmx.at</email> + <name>Harald Judt</name> + </maintainer> + <maintainer type="project" proxied="proxy"> + <email>proxy-maint@gentoo.org</email> + <name>Proxy Maintainers</name> + </maintainer> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/media-tv/tvbrowser-bin/tvbrowser-bin-4.2.7.ebuild b/media-tv/tvbrowser-bin/tvbrowser-bin-4.2.7.ebuild new file mode 100644 index 000000000000..0e2ced4a33ce --- /dev/null +++ b/media-tv/tvbrowser-bin/tvbrowser-bin-4.2.7.ebuild @@ -0,0 +1,39 @@ +# Copyright 2020-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +inherit desktop + +DESCRIPTION="Themeable and easy to use TV Guide - written in Java" +HOMEPAGE="https://www.tvbrowser.org" +MY_PN="tvbrowser" +SRC_URI="https://sourceforge.net/projects/tvbrowser/files/TV-Browser%20Releases%20%28Java%2011%20and%20higher%29/${PV}/${MY_PN}_${PV}_bin.tar.gz/download -> ${P}.tar.gz" +S="${WORKDIR}"/"${MY_PN}-${PV}" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64" + +JAVA_SLOT=11 +RDEPEND="|| ( dev-java/openjdk:${JAVA_SLOT} + dev-java/openjdk-bin:${JAVA_SLOT} + dev-java/openjdk-jre-bin:${JAVA_SLOT} )" + +src_install() { + # Copy files and directories + insinto /opt/"${P}" + doins -r * + + # Generate launcher + exeinto /opt/bin + sed -e "s/^P=.*\$/P=${P}/" \ + -e "s/^JAVA_SLOT=.*\$/JAVA_SLOT=${JAVA_SLOT}/" \ + "${FILESDIR}"/tvbrowser | \ + newexe - tvbrowser || die + + # Generate desktop entry + make_desktop_entry tvbrowser "TV-Browser" \ + /opt/"${P}"/imgs/tvbrowser128.png \ + "AudioVideo;TV;Video" +} diff --git a/media-tv/tvheadend/Manifest b/media-tv/tvheadend/Manifest new file mode 100644 index 000000000000..79c075ebb7ad --- /dev/null +++ b/media-tv/tvheadend/Manifest @@ -0,0 +1,2 @@ +DIST tvheadend-4.3_p20240618.tar.gz 22578849 BLAKE2B 49941eef965bdc5483116ba591ec92d1a2bd903df3a4fe610cfb77e5d1b90eb6328a2aff344bd1be0ed2b1a4299e3f3d7fd566035a649482f4b0f67f54b5218b SHA512 1fc2b5f7323ef5b919999fbb9c6ca86a12ff45c0fce10c86dc063070b62a9899b7320356153bd86cbd9b988a634a74b65737789006ff0b5928486f08a1869b46 +DIST tvheadend-4.3_p20260516.tar.gz 22758364 BLAKE2B 825f5b4dcb566f72108a2f3a9be0770d911155c4418192d107df1a7ca6834e163e091c4eebc3732155044b4b2443260f6bf0338c53e6c5a6d4ba9e1971a541d4 SHA512 6ef1cf090b9d1fe366c0a9279406831559d4d2c298b84814bee74da6c635845b4ce18385bbde856cdb60683c2654ff395a9e5ad5b03344db1ecbf389da24f334 diff --git a/media-tv/tvheadend/files/tvheadend-4.0.9-use_system_queue.patch b/media-tv/tvheadend/files/tvheadend-4.0.9-use_system_queue.patch new file mode 100644 index 000000000000..13ac3573ed27 --- /dev/null +++ b/media-tv/tvheadend/files/tvheadend-4.0.9-use_system_queue.patch @@ -0,0 +1,12 @@ +diff -up ./src/queue.h.orig ./src/queue.h +--- ./src/queue.h.orig 2016-03-14 10:10:57.000000000 +0100 ++++ ./src/queue.h 2016-07-04 17:47:22.480252171 +0200 +@@ -5,7 +5,7 @@ + #ifndef HTSQ_H + #define HTSQ_H + +-#include "../vendor/include/sys/queue.h" ++#include <sys/queue.h> + + /* + * Extra LIST-ops diff --git a/media-tv/tvheadend/files/tvheadend-4.2.2-dtv_scan_tables.patch b/media-tv/tvheadend/files/tvheadend-4.2.2-dtv_scan_tables.patch new file mode 100644 index 000000000000..513102628716 --- /dev/null +++ b/media-tv/tvheadend/files/tvheadend-4.2.2-dtv_scan_tables.patch @@ -0,0 +1,12 @@ +diff -up ./src/input/mpegts/scanfile.c.orig ./src/input/mpegts/scanfile.c +--- ./src/input/mpegts/scanfile.c.orig 2017-05-16 13:15:24.000000000 +0200 ++++ ./src/input/mpegts/scanfile.c 2017-06-01 22:30:29.150834135 +0200 +@@ -903,7 +903,7 @@ scanfile_init ( const char *muxconf_path + #elif defined(PLATFORM_FREEBSD) + path = "/usr/local/share/dtv-scan-tables"; + #else +- path = "/usr/share/dvb"; ++ path = "/usr/share/dvbv5"; + #endif + + if (!initialized) { diff --git a/media-tv/tvheadend/files/tvheadend-4.2.7-python3.patch b/media-tv/tvheadend/files/tvheadend-4.2.7-python3.patch new file mode 100644 index 000000000000..752b17ba08fb --- /dev/null +++ b/media-tv/tvheadend/files/tvheadend-4.2.7-python3.patch @@ -0,0 +1,91 @@ +diff -up ./lib/py/tvh/tsreader.py.orig ./lib/py/tvh/tsreader.py +--- ./lib/py/tvh/tsreader.py.orig 2018-10-08 14:37:05.000000000 +0200 ++++ ./lib/py/tvh/tsreader.py 2018-10-15 11:53:53.766850060 +0200 +@@ -31,7 +31,7 @@ def encode_utf8(c): + + def conv_8859(tnum, data): + r = u'' +- print 'TBL %d' % tnum ++ print('TBL %d' % tnum) + tbl = conv_8859_table[tnum] + for c in data: + if ord(c) <= 0x7f: +@@ -46,8 +46,8 @@ def conv_8859(tnum, data): + + + def dvb_convert_string(data, conv): +- print 'convert(%d)' % conv +- print repr(data) ++ print('convert(%d)' % conv) ++ print(repr(data)) + if not conv: + return data + return conv_8859(conv, data) +@@ -83,8 +83,8 @@ class TsSection(object): + # print self.tid, self.len, len(data) + + def process(self): +- print 'TS Section:' +- print self.tid, self.len, len(self.data) ++ print('TS Section:') ++ print(self.tid, self.len, len(self.data)) + # print str2hex(self.data, 16) + # print self.data + +@@ -112,7 +112,7 @@ class TsSection(object): + if l + 1 > dlen: + return (None, -1) + c = ord(data[1]) +- print c ++ print(c) + conv = None + if c == 0: + return (None, -1) +@@ -162,14 +162,14 @@ class TsSection(object): + eid = (hdr[0] << 8) + hdr[1] + start = dvb_convert_date(hdr[2:]) + +- print 'process event (%d):' % dllen +- print ' EID : %d' % eid +- print ' START : %d' % start ++ print('process event (%d):' % dllen) ++ print(' EID : %d' % eid) ++ print(' START : %d' % start) + + while dllen > 2: + dtag = ord(data[0]) + dlen = ord(data[1]) +- print 'dtag = 0x%02x, dlen = %d' % (dtag, dlen) ++ print('dtag = 0x%02x, dlen = %d' % (dtag, dlen)) + + dllen = dllen - 2 + data = data[2:] +@@ -178,8 +178,8 @@ class TsSection(object): + + if dtag == 0x4d: + (title, summary) = self.short_event(data, dlen) +- print ' TITLE : %s' % title +- print ' SUMMARY : %s' % summary ++ print(' TITLE : %s' % title) ++ print(' SUMMARY : %s' % summary) + + dllen = dllen - dlen + data = data[dlen:] +@@ -216,7 +216,7 @@ if __name__ == '__main__': + # Complete? + if cur: + if len(cur.data) >= cur.len: +- print 'Process Section:' ++ print('Process Section:') + # try: + cur.process() + # except: pass +@@ -224,7 +224,7 @@ if __name__ == '__main__': + print + sys.exit(0) + else: +- print 'waiting for %d bytes' % (cur.len - len(cur.data)) ++ print('waiting for %d bytes' % (cur.len - len(cur.data))) + + # Next + if nxt: diff --git a/media-tv/tvheadend/files/tvheadend-4.3-hdhomerun.patch b/media-tv/tvheadend/files/tvheadend-4.3-hdhomerun.patch new file mode 100644 index 000000000000..1689c2e4051f --- /dev/null +++ b/media-tv/tvheadend/files/tvheadend-4.3-hdhomerun.patch @@ -0,0 +1,36 @@ +diff -Naur a/configure b/configure +--- a/configure 2019-01-20 21:12:12.634450200 +0000 ++++ b/configure 2019-01-20 21:12:52.502298542 +0000 +@@ -411,7 +411,7 @@ + else + + if enabled_or_auto hdhomerun_client; then +- if check_cc_header 'libhdhomerun/hdhomerun' libhdhomerun; then ++ if check_cc_header 'hdhomerun/hdhomerun' libhdhomerun; then + enable hdhomerun_client + LDFLAGS="$LDFLAGS -lhdhomerun" + fi +diff -Naur a/src/input/mpegts/tvhdhomerun/tvhdhomerun.c b/src/input/mpegts/tvhdhomerun/tvhdhomerun.c +--- a/src/input/mpegts/tvhdhomerun/tvhdhomerun.c 2019-01-20 21:12:12.707451725 +0000 ++++ b/src/input/mpegts/tvhdhomerun/tvhdhomerun.c 2019-01-20 21:12:35.990947079 +0000 +@@ -17,7 +17,7 @@ + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +-#include "libhdhomerun/hdhomerun.h" ++#include <hdhomerun/hdhomerun.h> + + #include "tvheadend.h" + #include "input.h" +diff -Naur a/src/input/mpegts/tvhdhomerun/tvhdhomerun_frontend.c b/src/input/mpegts/tvhdhomerun/tvhdhomerun_frontend.c +--- a/src/input/mpegts/tvhdhomerun/tvhdhomerun_frontend.c 2019-01-20 21:12:12.707451725 +0000 ++++ b/src/input/mpegts/tvhdhomerun/tvhdhomerun_frontend.c 2019-01-20 21:12:35.991947101 +0000 +@@ -17,7 +17,7 @@ + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +-#include "libhdhomerun/hdhomerun.h" ++#include <hdhomerun/hdhomerun.h> + + #include <fcntl.h> + #include "tvheadend.h" diff --git a/media-tv/tvheadend/files/tvheadend.confd b/media-tv/tvheadend/files/tvheadend.confd new file mode 100644 index 000000000000..bac19ece3ac1 --- /dev/null +++ b/media-tv/tvheadend/files/tvheadend.confd @@ -0,0 +1,14 @@ +# /etc/conf.d/tvheadend: config file for /etc/init.d/tvheadend +# See the tvheadend(1) manpage for more info. + +# Run Tvheadend as this user. +TVHEADEND_USER="tvheadend" + +# Run Tvheadend as this group. +TVHEADEND_GROUP="video" + +# Path to Tvheadend config. +TVHEADEND_CONFIG="/var/lib/tvheadend" + +# Other options you want to pass to Tvheadend. +TVHEADEND_OPTIONS="" diff --git a/media-tv/tvheadend/files/tvheadend.initd b/media-tv/tvheadend/files/tvheadend.initd new file mode 100644 index 000000000000..dc3bed76f299 --- /dev/null +++ b/media-tv/tvheadend/files/tvheadend.initd @@ -0,0 +1,19 @@ +#!/sbin/openrc-run + +depend() { + use net +} + +start() { + ebegin "Starting Tvheadend" + start-stop-daemon --start --quiet --exec /usr/bin/tvheadend \ + -- -f -C -u ${TVHEADEND_USER} -g ${TVHEADEND_GROUP} \ + -c ${TVHEADEND_CONFIG} ${TVHEADEND_OPTIONS} + eend $? +} + +stop() { + ebegin "Stopping Tvheadend" + start-stop-daemon --stop --quiet --pidfile /var/run/tvheadend.pid + eend $? +} diff --git a/media-tv/tvheadend/files/tvheadend.service b/media-tv/tvheadend/files/tvheadend.service new file mode 100644 index 000000000000..778786b7c1b7 --- /dev/null +++ b/media-tv/tvheadend/files/tvheadend.service @@ -0,0 +1,25 @@ +[Unit] +Description=tvheadend +After=network.target + +[Service] +Type=simple +User=tvheadend +Group=video +RuntimeDirectory=tvheadend +EnvironmentFile=/etc/conf.d/tvheadend +ExecStart=/usr/bin/tvheadend -c ${TVHEADEND_CONFIG} $TVHEADEND_OPTIONS +TimeoutStartSec=1m +TimeoutStopSec=20s +Restart=always +RestartSec=5s +DevicePolicy=closed +DeviceAllow=char-DVB rw +DeviceAllow=char-drm rw +RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX +ProtectSystem=yes +ProtectHome=yes +NoNewPrivileges=yes + +[Install] +WantedBy=multi-user.target diff --git a/media-tv/tvheadend/metadata.xml b/media-tv/tvheadend/metadata.xml new file mode 100644 index 000000000000..c384f4ee6700 --- /dev/null +++ b/media-tv/tvheadend/metadata.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>chewi@gentoo.org</email> + <name>James Le Cuirot</name> + </maintainer> + <use> + <flag name="ddci">Enable support for DDCI hardware</flag> + <flag name="dvbcsa">Enable decryption of the DVB Common Scrambling Algorithm</flag> + <flag name="hdhomerun">Enable support for the HDHomeRun device</flag> + <flag name="imagecache">Enable support for image caching</flag> + <flag name="iptv">Enable support for Internet Protocol TV</flag> + <flag name="satip">Enable support for IP-based Satellite TV</flag> + <flag name="timeshift">Enable TimeShift support</flag> + <flag name="uriparser">Use <pkg>dev-libs/uriparser</pkg> + </flag> + <flag name="vpx">Enable transcoding with the VP8/VP9 video codecs</flag> + <flag name="x264">Enable transcoding with the H.264 video codec</flag> + <flag name="x265">Enable transcoding with the HEVC video codec</flag> + <flag name="xmltv">Use <pkg>media-tv/xmltv</pkg> + </flag> + </use> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/media-tv/tvheadend/tvheadend-4.3_p20240618-r1.ebuild b/media-tv/tvheadend/tvheadend-4.3_p20240618-r1.ebuild new file mode 100644 index 000000000000..7e998682acea --- /dev/null +++ b/media-tv/tvheadend/tvheadend-4.3_p20240618-r1.ebuild @@ -0,0 +1,174 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +COMMIT="e855f62e6697cf756ad2eed2ed03b8d06ba2019b" +PYTHON_COMPAT=( python3_{13..14} ) + +inherit ffmpeg-compat flag-o-matic linux-info python-single-r1 systemd toolchain-funcs + +DESCRIPTION="Tvheadend is a TV streaming server and digital video recorder" +HOMEPAGE="https://tvheadend.org/" +SRC_URI="https://github.com/tvheadend/tvheadend/archive/${COMMIT}.tar.gz -> ${P}.tar.gz" +S="${WORKDIR}/${PN}-${COMMIT}" +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="amd64 arm arm64 x86" +IUSE="dbus debug +ddci dvbcsa +dvb +ffmpeg hdhomerun +imagecache +inotify iptv opus satip systemd +timeshift uriparser vpx x264 x265 xmltv zeroconf zlib" + +REQUIRED_USE=" + ${PYTHON_REQUIRED_USE} + ddci? ( dvb ) +" + +BDEPEND=" + ${PYTHON_DEPS} + sys-devel/gettext + virtual/pkgconfig +" + +RDEPEND=" + ${PYTHON_DEPS} + acct-user/tvheadend + virtual/libiconv + dbus? ( sys-apps/dbus ) + dvbcsa? ( media-libs/libdvbcsa ) + ffmpeg? ( media-video/ffmpeg-compat:6=[opus?,vpx?,x264?,x265?] ) + hdhomerun? ( media-libs/libhdhomerun ) + dev-libs/openssl:0= + uriparser? ( dev-libs/uriparser ) + zeroconf? ( net-dns/avahi ) + zlib? ( virtual/zlib:= ) +" + +# ffmpeg sub-dependencies needed for headers only. Check under +# src/transcoding/codec/codecs/libs for include statements. + +DEPEND=" + ${RDEPEND} + dvb? ( sys-kernel/linux-headers ) + ffmpeg? ( + opus? ( media-libs/opus ) + vpx? ( media-libs/libvpx ) + x264? ( media-libs/x264 ) + x265? ( media-libs/x265 ) + ) +" + +RDEPEND+=" + $(python_gen_cond_dep ' + dev-python/requests[${PYTHON_USEDEP}] + ') + dvb? ( media-tv/dtv-scan-tables ) + xmltv? ( media-tv/xmltv ) +" + +# Some patches from: +# https://github.com/rpmfusion/tvheadend + +PATCHES=( + "${FILESDIR}"/${PN}-4.0.9-use_system_queue.patch + "${FILESDIR}"/${PN}-4.3-hdhomerun.patch + "${FILESDIR}"/${PN}-4.2.2-dtv_scan_tables.patch + "${FILESDIR}"/${PN}-4.2.7-python3.patch +) + +DOCS=( README.md ) + +pkg_setup() { + python-single-r1_pkg_setup + + use inotify && + CONFIG_CHECK="~INOTIFY_USER" linux-info_pkg_setup +} + +# We unconditionally enable codecs that do not require additional +# dependencies when building tvheadend. If support is missing from +# ffmpeg at runtime then tvheadend will simply disable these codecs. + +# It is not necessary to specific all the --disable-*-static options as +# most of them only take effect when --enable-ffmpeg_static is given. + +src_configure() { + # TODO: fix with >=ffmpeg-7 then drop compat (bug #954780) + use ffmpeg && ffmpeg_compat_setup 6 + + # -Werror=lto-type-mismatch + # https://bugs.gentoo.org/932794 + # https://github.com/tvheadend/tvheadend/issues/1732 + filter-lto + + CC="$(tc-getCC)" \ + PKG_CONFIG="$(tc-getPKG_CONFIG)" \ + econf \ + --disable-bundle \ + --disable-ccache \ + --disable-dvbscan \ + --disable-ffmpeg_static \ + --disable-hdhomerun_static \ + --enable-libfdkaac \ + --enable-libtheora \ + --enable-libvorbis \ + --nowerror \ + $(use_enable dbus dbus_1) \ + $(use_enable debug trace) \ + $(use_enable ddci) \ + $(use_enable dvb linuxdvb) \ + $(use_enable dvbcsa) \ + $(use_enable dvbcsa capmt) \ + $(use_enable dvbcsa cccam) \ + $(use_enable dvbcsa constcw) \ + $(use_enable dvbcsa cwc) \ + $(use_enable ffmpeg libav) \ + $(use_enable hdhomerun hdhomerun_client) \ + $(use_enable imagecache) \ + $(use_enable inotify) \ + $(use_enable iptv) \ + $(use_enable opus libopus) \ + $(use_enable satip satip_server) \ + $(use_enable satip satip_client) \ + $(use_enable systemd libsystemd_daemon) \ + $(use_enable timeshift) \ + $(use_enable uriparser) \ + $(use_enable vpx libvpx) \ + $(use_enable x264 libx264) \ + $(use_enable x265 libx265) \ + $(use_enable zeroconf avahi) \ + $(use_enable zlib) +} + +src_compile() { + emake CC="$(tc-getCC)" +} + +src_install() { + default + python_fix_shebang "${ED}"/usr/bin/ + + newinitd "${FILESDIR}"/tvheadend.initd tvheadend + newconfd "${FILESDIR}"/tvheadend.confd tvheadend + + use systemd && + systemd_dounit "${FILESDIR}"/tvheadend.service +} + +pkg_postinst() { + elog "The Tvheadend web interface can be reached at:" + elog "http://localhost:9981/" + elog + elog "Make sure that you change the default username" + elog "and password via the Configuration / Access control" + elog "tab in the web interface." + + . "${EROOT}"/etc/conf.d/tvheadend &>/dev/null + + if [[ ${TVHEADEND_CONFIG} = ${EPREFIX}/etc/tvheadend ]]; then + echo + ewarn "The HOME directory for the tvheadend user has changed from" + ewarn "${EPREFIX}/etc/tvheadend to ${EPREFIX}/var/lib/tvheadend. The daemon will continue" + ewarn "to use the old location until you update TVHEADEND_CONFIG in" + ewarn "${EPREFIX}/etc/conf.d/tvheadend. Please manually move your existing files" + ewarn "before you do so." + fi +} diff --git a/media-tv/tvheadend/tvheadend-4.3_p20260516.ebuild b/media-tv/tvheadend/tvheadend-4.3_p20260516.ebuild new file mode 100644 index 000000000000..f602ddbd44ce --- /dev/null +++ b/media-tv/tvheadend/tvheadend-4.3_p20260516.ebuild @@ -0,0 +1,181 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{13..14} ) + +inherit flag-o-matic linux-info python-single-r1 systemd toolchain-funcs + +if [[ ${PV} == *9999* ]]; then + EGIT_REPO_URI="https://github.com/${PN}/${PN}.git" + inherit git-r3 +else + COMMIT="ca9a085a24b2517652e4ff8a91763aba907a6463" + SRC_URI="https://github.com/tvheadend/tvheadend/archive/${COMMIT}.tar.gz -> ${P}.tar.gz" + S="${WORKDIR}/${PN}-${COMMIT}" + KEYWORDS="~amd64 ~arm ~arm64 ~x86" +fi + +DESCRIPTION="Tvheadend is a TV streaming server and digital video recorder" +HOMEPAGE="https://tvheadend.org/" + +LICENSE="GPL-3" +SLOT="0" +IUSE="dbus debug +ddci dvbcsa +dvb +ffmpeg hdhomerun +imagecache +inotify iptv opus satip systemd +timeshift uriparser vaapi vpx x264 x265 xmltv zeroconf zlib" + +REQUIRED_USE=" + ${PYTHON_REQUIRED_USE} + ddci? ( dvb ) + vaapi? ( ffmpeg ) +" + +BDEPEND=" + ${PYTHON_DEPS} + sys-devel/gettext + virtual/pkgconfig +" + +RDEPEND=" + ${PYTHON_DEPS} + acct-user/tvheadend + virtual/libiconv + dbus? ( sys-apps/dbus ) + dvbcsa? ( media-libs/libdvbcsa ) + ffmpeg? ( media-video/ffmpeg:=[opus?,vpx?,x264?,x265?] ) + hdhomerun? ( media-libs/libhdhomerun ) + dev-libs/openssl:0= + uriparser? ( dev-libs/uriparser ) + zeroconf? ( net-dns/avahi ) + zlib? ( virtual/zlib:= ) +" + +# ffmpeg sub-dependencies needed for headers only. Check under +# src/transcoding/codec/codecs/libs for include statements. + +DEPEND=" + ${RDEPEND} + dvb? ( sys-kernel/linux-headers ) + ffmpeg? ( + opus? ( media-libs/opus ) + vpx? ( media-libs/libvpx ) + x264? ( media-libs/x264 ) + x265? ( media-libs/x265 ) + ) + vaapi? ( media-libs/libva:= ) +" + +RDEPEND+=" + $(python_gen_cond_dep ' + dev-python/requests[${PYTHON_USEDEP}] + ') + dvb? ( media-tv/dtv-scan-tables ) + xmltv? ( media-tv/xmltv ) +" + +# Some patches from: +# https://github.com/rpmfusion/tvheadend + +PATCHES=( + "${FILESDIR}"/${PN}-4.0.9-use_system_queue.patch + "${FILESDIR}"/${PN}-4.3-hdhomerun.patch + "${FILESDIR}"/${PN}-4.2.2-dtv_scan_tables.patch + "${FILESDIR}"/${PN}-4.2.7-python3.patch +) + +DOCS=( README.md ) + +pkg_setup() { + python-single-r1_pkg_setup + + use inotify && + CONFIG_CHECK="~INOTIFY_USER" linux-info_pkg_setup +} + +# We unconditionally enable codecs that do not require additional +# dependencies when building tvheadend. If support is missing from +# ffmpeg at runtime then tvheadend will simply disable these codecs. + +# It is not necessary to specific all the --disable-*-static options as +# most of them only take effect when --enable-ffmpeg_static is given. + +src_configure() { + # -Werror=lto-type-mismatch + # https://bugs.gentoo.org/932794 + # https://github.com/tvheadend/tvheadend/issues/1732 + filter-lto + + CC="$(tc-getCC)" \ + PKG_CONFIG="$(tc-getPKG_CONFIG)" \ + econf \ + --disable-bundle \ + --disable-ccache \ + --disable-dvbscan \ + --disable-ffmpeg_static \ + --disable-hdhomerun_static \ + --enable-libfdkaac \ + --enable-libtheora \ + --enable-libvorbis \ + --nowerror \ + $(use_enable dbus dbus_1) \ + $(use_enable debug trace) \ + $(use_enable ddci) \ + $(use_enable dvb linuxdvb) \ + $(use_enable dvbcsa) \ + $(use_enable dvbcsa capmt) \ + $(use_enable dvbcsa cccam) \ + $(use_enable dvbcsa constcw) \ + $(use_enable dvbcsa cwc) \ + $(use_enable ffmpeg libav) \ + $(use_enable hdhomerun hdhomerun_client) \ + $(use_enable imagecache) \ + $(use_enable inotify) \ + $(use_enable iptv) \ + $(use_enable opus libopus) \ + $(use_enable satip satip_server) \ + $(use_enable satip satip_client) \ + $(use_enable systemd libsystemd_daemon) \ + $(use_enable timeshift) \ + $(use_enable uriparser) \ + $(use_enable vaapi) \ + $(use_enable vpx libvpx) \ + $(use_enable x264 libx264) \ + $(use_enable x265 libx265) \ + $(use_enable zeroconf avahi) \ + $(use_enable zlib) +} + +src_compile() { + emake CC="$(tc-getCC)" +} + +src_install() { + default + python_fix_shebang "${ED}"/usr/bin/ + + newinitd "${FILESDIR}"/tvheadend.initd tvheadend + newconfd "${FILESDIR}"/tvheadend.confd tvheadend + + use systemd && + systemd_dounit "${FILESDIR}"/tvheadend.service +} + +pkg_postinst() { + elog "The Tvheadend web interface can be reached at:" + elog "http://localhost:9981/" + elog + elog "Make sure that you change the default username" + elog "and password via the Configuration / Access control" + elog "tab in the web interface." + + . "${EROOT}"/etc/conf.d/tvheadend &>/dev/null + + if [[ ${TVHEADEND_CONFIG} = ${EPREFIX}/etc/tvheadend ]]; then + echo + ewarn "The HOME directory for the tvheadend user has changed from" + ewarn "${EPREFIX}/etc/tvheadend to ${EPREFIX}/var/lib/tvheadend. The daemon will continue" + ewarn "to use the old location until you update TVHEADEND_CONFIG in" + ewarn "${EPREFIX}/etc/conf.d/tvheadend. Please manually move your existing files" + ewarn "before you do so." + fi +} diff --git a/media-tv/tvheadend/tvheadend-9999.ebuild b/media-tv/tvheadend/tvheadend-9999.ebuild new file mode 100644 index 000000000000..7b1e3790bbba --- /dev/null +++ b/media-tv/tvheadend/tvheadend-9999.ebuild @@ -0,0 +1,181 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{13..14} ) + +inherit flag-o-matic linux-info python-single-r1 systemd toolchain-funcs + +if [[ ${PV} == *9999* ]]; then + EGIT_REPO_URI="https://github.com/${PN}/${PN}.git" + inherit git-r3 +else + COMMIT="" + SRC_URI="https://github.com/tvheadend/tvheadend/archive/${COMMIT}.tar.gz -> ${P}.tar.gz" + S="${WORKDIR}/${PN}-${COMMIT}" + KEYWORDS="~amd64 ~arm ~arm64 ~x86" +fi + +DESCRIPTION="Tvheadend is a TV streaming server and digital video recorder" +HOMEPAGE="https://tvheadend.org/" + +LICENSE="GPL-3" +SLOT="0" +IUSE="dbus debug +ddci dvbcsa +dvb +ffmpeg hdhomerun +imagecache +inotify iptv opus satip systemd +timeshift uriparser vaapi vpx x264 x265 xmltv zeroconf zlib" + +REQUIRED_USE=" + ${PYTHON_REQUIRED_USE} + ddci? ( dvb ) + vaapi? ( ffmpeg ) +" + +BDEPEND=" + ${PYTHON_DEPS} + sys-devel/gettext + virtual/pkgconfig +" + +RDEPEND=" + ${PYTHON_DEPS} + acct-user/tvheadend + virtual/libiconv + dbus? ( sys-apps/dbus ) + dvbcsa? ( media-libs/libdvbcsa ) + ffmpeg? ( media-video/ffmpeg:=[opus?,vpx?,x264?,x265?] ) + hdhomerun? ( media-libs/libhdhomerun ) + dev-libs/openssl:0= + uriparser? ( dev-libs/uriparser ) + zeroconf? ( net-dns/avahi ) + zlib? ( virtual/zlib:= ) +" + +# ffmpeg sub-dependencies needed for headers only. Check under +# src/transcoding/codec/codecs/libs for include statements. + +DEPEND=" + ${RDEPEND} + dvb? ( sys-kernel/linux-headers ) + ffmpeg? ( + opus? ( media-libs/opus ) + vpx? ( media-libs/libvpx ) + x264? ( media-libs/x264 ) + x265? ( media-libs/x265 ) + ) + vaapi? ( media-libs/libva:= ) +" + +RDEPEND+=" + $(python_gen_cond_dep ' + dev-python/requests[${PYTHON_USEDEP}] + ') + dvb? ( media-tv/dtv-scan-tables ) + xmltv? ( media-tv/xmltv ) +" + +# Some patches from: +# https://github.com/rpmfusion/tvheadend + +PATCHES=( + "${FILESDIR}"/${PN}-4.0.9-use_system_queue.patch + "${FILESDIR}"/${PN}-4.3-hdhomerun.patch + "${FILESDIR}"/${PN}-4.2.2-dtv_scan_tables.patch + "${FILESDIR}"/${PN}-4.2.7-python3.patch +) + +DOCS=( README.md ) + +pkg_setup() { + python-single-r1_pkg_setup + + use inotify && + CONFIG_CHECK="~INOTIFY_USER" linux-info_pkg_setup +} + +# We unconditionally enable codecs that do not require additional +# dependencies when building tvheadend. If support is missing from +# ffmpeg at runtime then tvheadend will simply disable these codecs. + +# It is not necessary to specific all the --disable-*-static options as +# most of them only take effect when --enable-ffmpeg_static is given. + +src_configure() { + # -Werror=lto-type-mismatch + # https://bugs.gentoo.org/932794 + # https://github.com/tvheadend/tvheadend/issues/1732 + filter-lto + + CC="$(tc-getCC)" \ + PKG_CONFIG="$(tc-getPKG_CONFIG)" \ + econf \ + --disable-bundle \ + --disable-ccache \ + --disable-dvbscan \ + --disable-ffmpeg_static \ + --disable-hdhomerun_static \ + --enable-libfdkaac \ + --enable-libtheora \ + --enable-libvorbis \ + --nowerror \ + $(use_enable dbus dbus_1) \ + $(use_enable debug trace) \ + $(use_enable ddci) \ + $(use_enable dvb linuxdvb) \ + $(use_enable dvbcsa) \ + $(use_enable dvbcsa capmt) \ + $(use_enable dvbcsa cccam) \ + $(use_enable dvbcsa constcw) \ + $(use_enable dvbcsa cwc) \ + $(use_enable ffmpeg libav) \ + $(use_enable hdhomerun hdhomerun_client) \ + $(use_enable imagecache) \ + $(use_enable inotify) \ + $(use_enable iptv) \ + $(use_enable opus libopus) \ + $(use_enable satip satip_server) \ + $(use_enable satip satip_client) \ + $(use_enable systemd libsystemd_daemon) \ + $(use_enable timeshift) \ + $(use_enable uriparser) \ + $(use_enable vaapi) \ + $(use_enable vpx libvpx) \ + $(use_enable x264 libx264) \ + $(use_enable x265 libx265) \ + $(use_enable zeroconf avahi) \ + $(use_enable zlib) +} + +src_compile() { + emake CC="$(tc-getCC)" +} + +src_install() { + default + python_fix_shebang "${ED}"/usr/bin/ + + newinitd "${FILESDIR}"/tvheadend.initd tvheadend + newconfd "${FILESDIR}"/tvheadend.confd tvheadend + + use systemd && + systemd_dounit "${FILESDIR}"/tvheadend.service +} + +pkg_postinst() { + elog "The Tvheadend web interface can be reached at:" + elog "http://localhost:9981/" + elog + elog "Make sure that you change the default username" + elog "and password via the Configuration / Access control" + elog "tab in the web interface." + + . "${EROOT}"/etc/conf.d/tvheadend &>/dev/null + + if [[ ${TVHEADEND_CONFIG} = ${EPREFIX}/etc/tvheadend ]]; then + echo + ewarn "The HOME directory for the tvheadend user has changed from" + ewarn "${EPREFIX}/etc/tvheadend to ${EPREFIX}/var/lib/tvheadend. The daemon will continue" + ewarn "to use the old location until you update TVHEADEND_CONFIG in" + ewarn "${EPREFIX}/etc/conf.d/tvheadend. Please manually move your existing files" + ewarn "before you do so." + fi +} diff --git a/media-tv/v4l-dvb-saa716x/Manifest b/media-tv/v4l-dvb-saa716x/Manifest new file mode 100644 index 000000000000..c7e634919b31 --- /dev/null +++ b/media-tv/v4l-dvb-saa716x/Manifest @@ -0,0 +1 @@ +DIST v4l-dvb-saa716x-0.0.1_p20160322.tar.bz2 4070134 BLAKE2B 2c03d11ecd1f527ad066b2b14fcd2539e50fd07cefe2060be1bce96fd932d9ae83529f65b658ac550886f0c1f2b69a64d910011c80746353ffaed062865f1d6f SHA512 2ffb2acf00818b61af37a557e3b95a96b129b34ef80d24084483adfa35c0bb853b0abb626dbbf68bd9aa443c7436034542666274246fd47a603642a8e75ec83e diff --git a/media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-5.18-fix-compile.patch b/media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-5.18-fix-compile.patch new file mode 100644 index 000000000000..3e0ad5b7cc30 --- /dev/null +++ b/media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-5.18-fix-compile.patch @@ -0,0 +1,84 @@ +--- powARman-v4l-dvb-saa716x-83f3bfd93a95/linux/drivers/media/common/saa716x/saa716x_budget.c.orig 2024-02-04 09:44:55.817082316 +0100 ++++ powARman-v4l-dvb-saa716x-83f3bfd93a95/linux/drivers/media/common/saa716x/saa716x_budget.c 2024-02-04 10:00:19.630031631 +0100 +@@ -268,10 +268,10 @@ + do { + u8 *data = (u8 *)fgpi_entry->dma_buf[fgpi_entry->read_index].mem_virt; + +- pci_dma_sync_sg_for_cpu(saa716x->pdev, ++ dma_sync_sg_for_cpu(&saa716x->pdev->dev, + fgpi_entry->dma_buf[fgpi_entry->read_index].sg_list, + fgpi_entry->dma_buf[fgpi_entry->read_index].list_len, +- PCI_DMA_FROMDEVICE); ++ DMA_FROM_DEVICE); + + dvb_dmx_swfilter(demux, data, 348 * 188); + +--- powARman-v4l-dvb-saa716x-83f3bfd93a95/linux/drivers/media/common/saa716x/saa716x_hybrid.c.orig 2024-02-04 09:54:31.756421321 +0100 ++++ powARman-v4l-dvb-saa716x-83f3bfd93a95/linux/drivers/media/common/saa716x/saa716x_hybrid.c 2024-02-04 09:59:49.043925659 +0100 +@@ -283,10 +283,10 @@ + do { + u8 *data = (u8 *)fgpi_entry->dma_buf[fgpi_entry->read_index].mem_virt; + +- pci_dma_sync_sg_for_cpu(saa716x->pdev, ++ dma_sync_sg_for_cpu(&saa716x->pdev->dev, + fgpi_entry->dma_buf[fgpi_entry->read_index].sg_list, + fgpi_entry->dma_buf[fgpi_entry->read_index].list_len, +- PCI_DMA_FROMDEVICE); ++ DMA_FROM_DEVICE); + + dvb_dmx_swfilter(demux, data, 348 * 188); + +--- powARman-v4l-dvb-saa716x-83f3bfd93a95/linux/drivers/media/common/saa716x/saa716x_pci.c.orig 2024-02-04 09:27:44.356023812 +0100 ++++ powARman-v4l-dvb-saa716x-83f3bfd93a95/linux/drivers/media/common/saa716x/saa716x_pci.c 2024-02-04 09:35:33.867498244 +0100 +@@ -149,14 +149,14 @@ + goto fail0; + } + +- if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) { ++ if (!dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64))) { + use_dac = 1; +- err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)); ++ err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64)); + if (err) { + dprintk(SAA716x_ERROR, 1, "Unable to obtain 64bit DMA"); + goto fail1; + } +- } else if ((err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32))) != 0) { ++ } else if ((err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32))) != 0) { + dprintk(SAA716x_ERROR, 1, "Unable to obtain 32bit DMA"); + goto fail1; + } +--- powARman-v4l-dvb-saa716x-83f3bfd93a95/linux/drivers/media/common/saa716x/saa716x_ff_main.c.orig 2024-02-04 09:46:17.092236435 +0100 ++++ powARman-v4l-dvb-saa716x-83f3bfd93a95/linux/drivers/media/common/saa716x/saa716x_ff_main.c 2024-02-04 10:01:59.274872910 +0100 +@@ -624,15 +624,15 @@ + } + + do { +- pci_dma_sync_sg_for_cpu(saa716x->pdev, ++ dma_sync_sg_for_cpu(&saa716x->pdev->dev, + vip_entry->dma_buf[0][vip_entry->read_index].sg_list, + vip_entry->dma_buf[0][vip_entry->read_index].list_len, +- PCI_DMA_FROMDEVICE); ++ DMA_FROM_DEVICE); + if (vip_entry->dual_channel) { +- pci_dma_sync_sg_for_cpu(saa716x->pdev, ++ dma_sync_sg_for_cpu(&saa716x->pdev->dev, + vip_entry->dma_buf[1][vip_entry->read_index].sg_list, + vip_entry->dma_buf[1][vip_entry->read_index].list_len, +- PCI_DMA_FROMDEVICE); ++ DMA_FROM_DEVICE); + } + + vip_entry->read_index = (vip_entry->read_index + 1) & 7; +@@ -1321,10 +1321,10 @@ + do { + u8 *data = (u8 *)fgpi_entry->dma_buf[fgpi_entry->read_index].mem_virt; + +- pci_dma_sync_sg_for_cpu(saa716x->pdev, ++ dma_sync_sg_for_cpu(&saa716x->pdev->dev, + fgpi_entry->dma_buf[fgpi_entry->read_index].sg_list, + fgpi_entry->dma_buf[fgpi_entry->read_index].list_len, +- PCI_DMA_FROMDEVICE); ++ DMA_FROM_DEVICE); + + dvb_dmx_swfilter(demux, data, 348 * 188); diff --git a/media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-up-to-5.6.patch b/media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-up-to-5.6.patch new file mode 100644 index 000000000000..94441988affa --- /dev/null +++ b/media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-up-to-5.6.patch @@ -0,0 +1,560 @@ +# file OSD_RAW_CMD_patch_2.diff +--- a/linux/drivers/media/common/saa716x/saa716x_ff_cmd.h.orig ++++ b/linux/drivers/media/common/saa716x/saa716x_ff_cmd.h +@@ -1,6 +1,24 @@ + #ifndef __SAA716x_FF_CMD_H + #define __SAA716x_FF_CMD_H + ++#if !defined OSD_RAW_CMD ++typedef struct osd_raw_cmd_s { ++ const void *cmd_data; ++ int cmd_len; ++ void *result_data; ++ int result_len; ++} osd_raw_cmd_t; ++ ++typedef struct osd_raw_data_s { ++ const void *data_buffer; ++ int data_length; ++ int data_handle; ++} osd_raw_data_t; ++ ++#define OSD_RAW_CMD _IOWR('o', 162, osd_raw_cmd_t) ++#define OSD_RAW_DATA _IOWR('o', 163, osd_raw_data_t) ++#endif ++ + extern int sti7109_cmd_init(struct sti7109_dev *sti7109); + extern int sti7109_raw_cmd(struct sti7109_dev * sti7109, + osd_raw_cmd_t * cmd); + +# file v4l-dvb-saa716x-Makefilepatch-2.diff +--- a/linux/drivers/media/common/saa716x/Makefile ++++ b/linux/drivers/media/common/saa716x/Makefile +@@ -24,3 +24,5 @@ + obj-$(CONFIG_DVB_SAA716X_FF) += saa716x_ff.o + + EXTRA_CFLAGS = -Idrivers/media/dvb/dvb-core/ -Idrivers/media/dvb/frontends/ -Idrivers/media/dvb-core/ -Idrivers/media/dvb-frontends/ ++EXTRA_CFLAGS += -Idrivers/media/common/tuners/ # up to kernel 3.6 ++EXTRA_CFLAGS += -Idrivers/media/tuners/ # kernel 3.7+ + + +# file v4l-dvb-saa716x-3.19-set_gpio.patch +--- a/linux/drivers/media/common/saa716x/saa716x_budget.c ++++ b/linux/drivers/media/common/saa716x/saa716x_budget.c +@@ -497,10 +497,10 @@ + break; + } + +- err = stv090x_set_gpio(fe, 2, 0, en, 0); ++ err = skystar2_stv090x_config.set_gpio(fe, 2, 0, en, 0); + if (err < 0) + goto exit; +- err = stv090x_set_gpio(fe, 3, 0, sel, 0); ++ err = skystar2_stv090x_config.set_gpio(fe, 3, 0, sel, 0); + if (err < 0) + goto exit; + +@@ -519,7 +519,7 @@ + else + value = 0; + +- err = stv090x_set_gpio(fe, 4, 0, value, 0); ++ err = skystar2_stv090x_config.set_gpio(fe, 4, 0, value, 0); + if (err < 0) + goto exit; + +# file v4l-dvb-saa716x-4.2-fix-compile.patch +--- a/linux/drivers/media/common/saa716x/saa716x_budget.c ++++ b/linux/drivers/media/common/saa716x/saa716x_budget.c +@@ -306,7 +306,7 @@ + #define SAA716x_MODEL_TWINHAN_VP1028 "Twinhan/Azurewave VP-1028" + #define SAA716x_DEV_TWINHAN_VP1028 "DVB-S" + +-static int vp1028_dvbs_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage) ++static int vp1028_dvbs_set_voltage(struct dvb_frontend *fe, enum fe_sec_voltage voltage) + { + struct saa716x_dev *saa716x = fe->dvb->priv; + +--- a/linux/drivers/media/common/saa716x/saa716x_hybrid.c ++++ b/linux/drivers/media/common/saa716x/saa716x_hybrid.c +@@ -321,7 +321,7 @@ + .request_firmware = tda1004x_vp6090_request_firmware, + }; + +-static int vp6090_dvbs_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage) ++static int vp6090_dvbs_set_voltage(struct dvb_frontend *fe, enum fe_sec_voltage voltage) + { + struct saa716x_dev *saa716x = fe->dvb->priv; + +--- a/linux/drivers/media/common/saa716x/saa716x_pci.c ++++ b/linux/drivers/media/common/saa716x/saa716x_pci.c +@@ -1,3 +1,5 @@ ++#include <asm/atomic.h> ++#include <linux/spinlock_types.h> + #include <asm/io.h> + #include <asm/pgtable.h> + #include <asm/page.h> + +# file v4l-dvb-saa716x-4.5.2-fix-compile.patch +fix compile with kernel >= 4.5.2 +wrt bug 581450 +Signed-of-by: Joerg Bornkessel <hd_brummy@gentoo.org> 2016/05/05 +--- a/linux/drivers/media/common/saa716x/saa716x_pci.c ++++ b/linux/drivers/media/common/saa716x/saa716x_pci.c +@@ -1,6 +1,7 @@ + #include <asm/atomic.h> + #include <linux/spinlock_types.h> + #include <asm/io.h> ++#include <asm/processor.h> + #include <asm/pgtable.h> + #include <asm/page.h> + #include <linux/kmod.h> + + + +# file v4l-dvb-saa716x-4.6.0-fix-compile.patch +--- a/linux/drivers/media/common/saa716x/saa716x_pci.c ++++ b/linux/drivers/media/common/saa716x/saa716x_pci.c +@@ -1,9 +1,6 @@ + #include <asm/atomic.h> + #include <linux/spinlock_types.h> +-#include <asm/io.h> + #include <asm/processor.h> +-#include <asm/pgtable.h> +-#include <asm/page.h> + #include <linux/kmod.h> + #include <linux/vmalloc.h> + #include <linux/init.h> +@@ -20,11 +17,6 @@ + + #define DRIVER_NAME "SAA716x Core" + +-static irqreturn_t saa716x_msi_handler(int irq, void *dev_id) +-{ +- return IRQ_HANDLED; +-} +- + static int saa716x_enable_msi(struct saa716x_dev *saa716x) + { + struct pci_dev *pdev = saa716x->pdev; + + + +# file v4l-dvb-saa716x-4.9-fix-warnings.patch +--- a/linux/drivers/media/common/saa716x/saa716x_rom.c ++++ a/linux/drivers/media/common/saa716x/saa716x_rom.c +@@ -113,7 +113,7 @@ + memcpy(rom_header, &buf[*offset], sizeof (struct saa716x_romhdr)); + if (rom_header->header_size != sizeof (struct saa716x_romhdr)) { + dprintk(SAA716x_ERROR, 1, +- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d", ++ "ERROR: Header size mismatch! Read size=%zd bytes, Expected=%d", + sizeof (struct saa716x_romhdr), + rom_header->header_size); + +@@ -237,7 +237,7 @@ + saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data); + if (header.size != sizeof (struct saa716x_decoder_hdr)) { + dprintk(SAA716x_ERROR, 1, +- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d", ++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd", + header.size, + sizeof (struct saa716x_decoder_hdr)); + +@@ -268,7 +268,7 @@ + saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data); + if (header.size != sizeof (struct saa716x_gpio_hdr)) { + dprintk(SAA716x_ERROR, 1, +- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d", ++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd", + header.size, + sizeof (struct saa716x_gpio_hdr)); + +@@ -305,7 +305,7 @@ + saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data); + if (header.size != sizeof (struct saa716x_video_decoder_hdr)) { + dprintk(SAA716x_ERROR, 1, +- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d", ++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd", + header.size, + sizeof (struct saa716x_video_decoder_hdr)); + +@@ -386,7 +386,7 @@ + saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data); + if (header.size != sizeof (struct saa716x_audio_decoder_hdr)) { + dprintk(SAA716x_ERROR, 1, +- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d", ++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd", + header.size, + sizeof (struct saa716x_audio_decoder_hdr)); + +@@ -417,7 +417,7 @@ + saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data); + if (header.size != sizeof (struct saa716x_evsrc_hdr)) { + dprintk(SAA716x_ERROR, 1, +- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d", ++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd", + header.size, + sizeof (struct saa716x_evsrc_hdr)); + +@@ -448,7 +448,7 @@ + saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data); + if (header.size != sizeof (struct saa716x_xbar_hdr)) { + dprintk(SAA716x_ERROR, 1, +- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d", ++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd", + header.size, + sizeof (struct saa716x_xbar_hdr)); + +@@ -486,7 +486,7 @@ + saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data); + if (header.size != sizeof (struct saa716x_tuner_hdr)) { + dprintk(SAA716x_ERROR, 1, +- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d", ++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd", + header.size, + sizeof (struct saa716x_tuner_hdr)); + +@@ -516,7 +516,7 @@ + saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data); + if (header.size != sizeof (struct saa716x_pll_hdr)) { + dprintk(SAA716x_ERROR, 1, +- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d", ++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd", + header.size, + sizeof (struct saa716x_pll_hdr)); + +@@ -546,7 +546,7 @@ + saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data); + if (header.size != sizeof (struct saa716x_channel_decoder_hdr)) { + dprintk(SAA716x_ERROR, 1, +- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d", ++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd", + header.size, + sizeof (struct saa716x_channel_decoder_hdr)); + +@@ -576,7 +576,7 @@ + saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data); + if (header.size != sizeof (struct saa716x_encoder_hdr)) { + dprintk(SAA716x_ERROR, 1, +- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d", ++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd", + header.size, + sizeof (struct saa716x_encoder_hdr)); + +@@ -606,7 +606,7 @@ + saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data); + if (header.size != sizeof (struct saa716x_ir_hdr)) { + dprintk(SAA716x_ERROR, 1, +- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d", ++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd", + header.size, + sizeof (struct saa716x_ir_hdr)); + +@@ -637,7 +637,7 @@ + saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data); + if (header.size != sizeof (struct saa716x_eeprom_hdr)) { + dprintk(SAA716x_ERROR, 1, +- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d", ++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd", + header.size, + sizeof (struct saa716x_eeprom_hdr)); + +@@ -668,7 +668,7 @@ + saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data); + if (header.size != sizeof (struct saa716x_filter_hdr)) { + dprintk(SAA716x_ERROR, 1, +- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d", ++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd", + header.size, + sizeof (struct saa716x_filter_hdr)); + +@@ -699,7 +699,7 @@ + saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data); + if (header.size != sizeof (struct saa716x_streamdev_hdr)) { + dprintk(SAA716x_ERROR, 1, +- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d", ++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd", + header.size, + sizeof (struct saa716x_streamdev_hdr)); + +@@ -789,7 +789,7 @@ + + memcpy(device, &buf[*offset], sizeof (struct saa716x_devinfo)); + if (device->struct_size != sizeof (struct saa716x_devinfo)) { +- dprintk(SAA716x_ERROR, 1, "ERROR: Device size mismatch! Read=%d bytes, expected=%d bytes", ++ dprintk(SAA716x_ERROR, 1, "ERROR: Device size mismatch! Read=%d bytes, expected=%zd bytes", + device->struct_size, + sizeof (struct saa716x_devinfo)); + +# file v4l-dvb-saa716x-4.10-fix-compile.patch +--- a/linux/drivers/media/common/saa716x/saa716x_ff.h ++++ b/linux/drivers/media/common/saa716x/saa716x_ff.h +@@ -1,7 +1,6 @@ + #ifndef __SAA716x_FF_H + #define __SAA716x_FF_H + +-#include "dvb_filter.h" + #include "dvb_ringbuffer.h" + #include <linux/version.h> + #include <linux/workqueue.h> +@@ -95,6 +94,7 @@ + #define MAX_RESULT_LEN 256 + #define MAX_DATA_LEN (1024 * 1024) + ++#define TS_SIZE 188 + #define TSOUT_LEN (1024 * TS_SIZE) + #define TSOUT_LEVEL_FILL (350 * TS_SIZE) + #define TSOUT_LEVEL_HIGH (30 * TS_SIZE) + +# file v4l-dvb-saa716x-4.14.0-fix-compile.patch +--- a/linux/drivers/media/common/saa716x/saa716x_pci.c ++++ b/linux/drivers/media/common/saa716x/saa716x_pci.c +@@ -39,7 +39,7 @@ + for (i = 0; i < SAA716x_MSI_MAX_VECTORS; i++) + saa716x->msix_entries[i].entry = i; + +- ret = pci_enable_msix(pdev, saa716x->msix_entries, SAA716x_MSI_MAX_VECTORS); ++ ret = pci_enable_msix_range(pdev, saa716x->msix_entries, SAA716x_MSI_MAX_VECTORS, SAA716x_MSI_MAX_VECTORS); + if (ret < 0) + dprintk(SAA716x_ERROR, 1, "MSI-X request failed <%d>", ret); + if (ret > 0) +# file v4l-dvb-saa716x-4.15-fix-autorepeat.patch + +# Source: https://github.com/s-moch/linux-saa716x/commit/0b2276ee2e6383ad577fce5c694f8c4062d5334b.patch + +From 0b2276ee2e6383ad577fce5c694f8c4062d5334b Mon Sep 17 00:00:00 2001 +From: Soeren Moch <smoch@web.de> +Date: Sat, 2 Dec 2017 20:51:10 +0100 +Subject: [PATCH] saa716x_ff: Remove autorepeat handling + +Let the input layer handle autorepeat for the IR remote. +So no repeat_key timer is required anymore. + +Signed-off-by: Soeren Moch <smoch@web.de> +--- +--- a/linux/drivers/media/common/saa716x/saa716x_ff_ir.c ++++ b/linux/drivers/media/common/saa716x/saa716x_ff_ir.c +@@ -40,7 +40,7 @@ struct infrared { + u8 protocol; + u16 last_key; + u16 last_toggle; +- bool delay_timer_finished; ++ bool key_pressed; + }; + + #define IR_RC5 0 +@@ -52,11 +52,12 @@ static void ir_emit_keyup(unsigned long parm) + { + struct infrared *ir = (struct infrared *) parm; + +- if (!ir || !test_bit(ir->last_key, ir->input_dev->key)) ++ if (!ir || !ir->key_pressed) + return; + + input_report_key(ir->input_dev, ir->last_key, 0); + input_sync(ir->input_dev); ++ ir->key_pressed = false; + } + + +@@ -114,28 +115,18 @@ static void ir_emit_key(unsigned long parm) + return; + } + +- if (timer_pending(&ir->keyup_timer)) { +- del_timer(&ir->keyup_timer); +- if (ir->last_key != keycode || toggle != ir->last_toggle) { +- ir->delay_timer_finished = false; +- input_event(ir->input_dev, EV_KEY, ir->last_key, 0); +- input_event(ir->input_dev, EV_KEY, keycode, 1); +- input_sync(ir->input_dev); +- } else if (ir->delay_timer_finished) { +- input_event(ir->input_dev, EV_KEY, keycode, 2); +- input_sync(ir->input_dev); +- } +- } else { +- ir->delay_timer_finished = false; +- input_event(ir->input_dev, EV_KEY, keycode, 1); +- input_sync(ir->input_dev); +- } ++ if (ir->key_pressed && ++ (ir->last_key != keycode || toggle != ir->last_toggle)) ++ input_event(ir->input_dev, EV_KEY, ir->last_key, 0); + ++ input_event(ir->input_dev, EV_KEY, keycode, 1); ++ input_sync(ir->input_dev); ++ ++ ir->key_pressed = true; + ir->last_key = keycode; + ir->last_toggle = toggle; + +- ir->keyup_timer.expires = jiffies + UP_TIMEOUT; +- add_timer(&ir->keyup_timer); ++ mod_timer(&ir->keyup_timer, jiffies + UP_TIMEOUT); + + } + +@@ -166,16 +157,6 @@ static void ir_register_keys(struct infrared *ir) + ir->input_dev->keycodemax = ARRAY_SIZE(ir->key_map); + } + +- +-/* called by the input driver after rep[REP_DELAY] ms */ +-static void ir_repeat_key(unsigned long parm) +-{ +- struct infrared *ir = (struct infrared *) parm; +- +- ir->delay_timer_finished = true; +-} +- +- + /* interrupt handler */ + void saa716x_ir_handler(struct saa716x_dev *saa716x, u32 ir_cmd) + { +@@ -236,9 +217,7 @@ int saa716x_ir_init(struct saa716x_dev *saa716x) + ir->key_map[i] = i+1; + ir_register_keys(ir); + +- /* override repeat timer */ +- input_dev->timer.function = ir_repeat_key; +- input_dev->timer.data = (unsigned long) ir; ++ input_enable_softrepeat(input_dev, 800, 200); + + tasklet_init(&ir->tasklet, ir_emit_key, (unsigned long) saa716x); + saa716x->ir_priv = ir; + +# file v4l-dvb-saa716x-4.15-fix-timers.patch +# Source: https://github.com/s-moch/linux-saa716x/commit/1002d79c4ba60de0dbeacba0f289119556d7450d.patch + +From 1002d79c4ba60de0dbeacba0f289119556d7450d Mon Sep 17 00:00:00 2001 +From: Soeren Moch <smoch@web.de> +Date: Sat, 2 Dec 2017 21:23:34 +0100 +Subject: [PATCH] saa716x_ff: Convert to new timer API + +Convert to new timer API in linux-4.15. + +Signed-off-by: Soeren Moch <smoch@web.de> +--- +--- a/linux/drivers/media/common/saa716x/saa716x_ff_ir.c ++++ b/linux/drivers/media/common/saa716x/saa716x_ff_ir.c +@@ -48,9 +48,9 @@ struct infrared { + + + /* key-up timer */ +-static void ir_emit_keyup(unsigned long parm) ++static void ir_emit_keyup(struct timer_list *t) + { +- struct infrared *ir = (struct infrared *) parm; ++ struct infrared *ir = from_timer(ir, t, keyup_timer); + + if (!ir || !ir->key_pressed) + return; +@@ -184,9 +184,7 @@ int saa716x_ir_init(struct saa716x_dev *saa716x) + if (!ir) + return -ENOMEM; + +- init_timer(&ir->keyup_timer); +- ir->keyup_timer.function = ir_emit_keyup; +- ir->keyup_timer.data = (unsigned long) ir; ++ timer_setup(&ir->keyup_timer, ir_emit_keyup, 0); + + input_dev = input_allocate_device(); + if (!input_dev) + +# file v4l-dvb-saa716x-4.16-fix-compile.patch +--- a/linux/drivers/media/common/saa716x/saa716x_adap.c ++++ b/linux/drivers/media/common/saa716x/saa716x_adap.c +@@ -1,9 +1,9 @@ + #include <linux/bitops.h> + +-#include "dmxdev.h" +-#include "dvbdev.h" +-#include "dvb_demux.h" +-#include "dvb_frontend.h" ++#include <media/dmxdev.h> ++#include <media/dvbdev.h> ++#include <media/dvb_demux.h> ++#include <media/dvb_frontend.h> + + #include "saa716x_mod.h" + #include "saa716x_spi.h" +--- a/linux/drivers/media/common/saa716x/saa716x_ff.h ++++ b/linux/drivers/media/common/saa716x/saa716x_ff.h +@@ -1,7 +1,7 @@ + #ifndef __SAA716x_FF_H + #define __SAA716x_FF_H + +-#include "dvb_ringbuffer.h" ++#include <media/dvb_ringbuffer.h> + #include <linux/version.h> + #include <linux/workqueue.h> + +--- a/linux/drivers/media/common/saa716x/saa716x_priv.h ++++ b/linux/drivers/media/common/saa716x/saa716x_priv.h +@@ -18,11 +18,11 @@ + #include "saa716x_spi.h" + #include "saa716x_vip.h" + +-#include "dvbdev.h" +-#include "dvb_demux.h" +-#include "dmxdev.h" +-#include "dvb_frontend.h" +-#include "dvb_net.h" ++#include <media/dvbdev.h> ++#include <media/dvb_demux.h> ++#include <media/dmxdev.h> ++#include <media/dvb_frontend.h> ++#include <media/dvb_net.h> + + #define SAA716x_ERROR 0 + #define SAA716x_NOTICE 1 + +# file v4l-dvb-saa716x-4.17-define-AUDIO_GET_PTS.patch +--- a/linux/drivers/media/common/saa716x/saa716x_ff.h ++++ b/linux/drivers/media/common/saa716x/saa716x_ff.h +@@ -108,6 +108,9 @@ + #define VIDEO_CAPTURE_OFF 0 + #define VIDEO_CAPTURE_ONE_SHOT 1 + ++#ifndef AUDIO_GET_PTS ++#define AUDIO_GET_PTS _IOR('o', 19, __u64) ++#endif + + /* place to store all the necessary device information */ + struct sti7109_dev { +--- a/linux/drivers/media/common/saa716x/saa716x_ff_phi.c ++++ b/linux/drivers/media/common/saa716x/saa716x_ff_phi.c +@@ -41,7 +41,7 @@ + } + + /* skip first PHI window as it is already mapped */ +- sti7109->mmio_uc = ioremap_nocache(phi1_start + 0x10000, 0x30000); ++ sti7109->mmio_uc = ioremap(phi1_start + 0x10000, 0x30000); + if (!sti7109->mmio_uc) { + dprintk(SAA716x_ERROR, 1, "Mem PHI1 remap failed"); + err = -ENODEV; +--- a/linux/drivers/media/common/saa716x/saa716x_pci.c ++++ b/linux/drivers/media/common/saa716x/saa716x_pci.c +@@ -185,7 +185,7 @@ + goto fail2; + } + +- saa716x->mmio = ioremap_nocache(pci_resource_start(pdev, 0), 0x30000); ++ saa716x->mmio = ioremap(pci_resource_start(pdev, 0), 0x30000); + if (!saa716x->mmio) { + dprintk(SAA716x_ERROR, 1, "Mem 0 remap failed"); + ret = -ENODEV; +--- a/v4l/compat.h ++++ b/v4l/compat.h +@@ -571,8 +571,8 @@ + + #ifdef NEED_PCI_IOREMAP_BAR + #define pci_ioremap_bar(pdev, bar) \ +- ioremap_nocache(pci_resource_start(pdev, bar), \ +- pci_resource_len(pdev, bar)) ++ ioremap(pci_resource_start(pdev, bar), \ ++ pci_resource_len(pdev, bar)) + #endif + + #ifdef NEED_POLL_SCHEDULE diff --git a/media-tv/v4l-dvb-saa716x/metadata.xml b/media-tv/v4l-dvb-saa716x/metadata.xml new file mode 100644 index 000000000000..eb31f8e31d6f --- /dev/null +++ b/media-tv/v4l-dvb-saa716x/metadata.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person" proxied="yes"> + <email>martin.dummer@gmx.net</email> + <name>Martin Dummer</name> + </maintainer> + <maintainer type="project" proxied="proxy"> + <email>proxy-maint@gentoo.org</email> + <name>Proxy Maintainers</name> + </maintainer> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/media-tv/v4l-dvb-saa716x/v4l-dvb-saa716x-0.0.1_p20170225-r6.ebuild b/media-tv/v4l-dvb-saa716x/v4l-dvb-saa716x-0.0.1_p20170225-r6.ebuild new file mode 100644 index 000000000000..1b4fe67a81d7 --- /dev/null +++ b/media-tv/v4l-dvb-saa716x/v4l-dvb-saa716x-0.0.1_p20170225-r6.ebuild @@ -0,0 +1,45 @@ +# Copyright 2022-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit linux-mod-r1 +DESCRIPTION="driver for saa716x based dvb cards like TT S2-6400 or Skystar 2 eXpress HD" +HOMEPAGE="https://bitbucket.org/powARman/v4l-dvb-saa716x" +REVISION="83f3bfd93a95" +REVISION_DATE="20160322" +SRC_URI="https://bitbucket.org/powARman/v4l-dvb-saa716x/get/${REVISION}.tar.bz2 +-> ${PN}-0.0.1_p${REVISION_DATE}.tar.bz2" +S="${WORKDIR}/powARman-v4l-dvb-saa716x-${REVISION}" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="amd64 ~x86" + +RDEPEND="sys-firmware/tt-s2-6400-firmware" + +CONFIG_CHECK="DVB_CORE DVB_STV6110x DVB_STV090x" + +src_prepare() { + default + + eapply "${FILESDIR}/v4l-dvb-saa716x-up-to-5.6.patch" + kernel_is ge 5 18 0 && eapply "${FILESDIR}/v4l-dvb-saa716x-5.18-fix-compile.patch" +} + +src_compile() { + local modlist=( + saa716x_core=misc:/usr/src/linux:./linux/drivers/media/common/saa716x + saa716x_ff=misc:/usr/src/linux:./linux/drivers/media/common/saa716x + saa716x_budget=misc:/usr/src/linux:./linux/drivers/media/common/saa716x + saa716x_hybrid=misc:/usr/src/linux:./linux/drivers/media/common/saa716x + ) + local modargs=( + M="${S}/linux/drivers/media/common/saa716x" + CONFIG_SAA716X_CORE=m + CONFIG_DVB_SAA716X_FF=m + CONFIG_DVB_SAA716X_BUDGET=m + CONFIG_DVB_SAA716X_HYBRID=m + ) + linux-mod-r1_src_compile +} diff --git a/media-tv/xmltv/Manifest b/media-tv/xmltv/Manifest new file mode 100644 index 000000000000..c9a14625296c --- /dev/null +++ b/media-tv/xmltv/Manifest @@ -0,0 +1 @@ +DIST xmltv-1.0.0.tar.gz 780014 BLAKE2B dd39f77ebbaf321450db525b0c58401728ac1fece8e31e71a3d917fc72b914fbf9a471c2a77258f46a72913b2f86a84164576878dc28b38d3a77bdb9dab03494 SHA512 72df61cbcdfa7ba31d899b37e7f5308e845d263d8b9402c067bbd5761a7502ad7d272604a1d132337041a4d6bb2afa58a93b324239879294431108c1ac0ef09b diff --git a/media-tv/xmltv/metadata.xml b/media-tv/xmltv/metadata.xml new file mode 100644 index 000000000000..691daa6c84bc --- /dev/null +++ b/media-tv/xmltv/metadata.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person" proxied="yes"> + <email>thebitpit@austincustomerrands.com</email> + <name>Wilson Michaels</name> + </maintainer> + <maintainer type="project" proxied="proxy"> + <email>proxy-maint@gentoo.org</email> + <name>Proxy Maintainers</name> + </maintainer> + <use> + <flag name="ar">Argentina tv listing grabber</flag> + <flag name="ch-search">Grabber for Switzerland</flag> + <flag name="eu-epgdata">include fanart URLs for some European countries.</flag> + <flag name="eu-xmltvse">Grabbber for Europe [replaces eu-dotmedia and se-tvzon]</flag> + <flag name="fi">Finland tv listing grabber (0.6.1 add ampparit telsu)</flag> + <flag name="fi-sv">Grabber for Finland (Swedish)</flag> + <flag name="fr">France tv listing grabber</flag> + <flag name="huro">Hungarian tv listing grabber</flag> + <flag name="is">Iceland tv listing grabber</flag> + <flag name="it">Italy tv listing grabber (RUV)</flag> + <flag name="it-dvb">Italy tv listing grabber</flag> + <flag name="na-dd">North America tv listing grabber</flag> + <flag name="na-dtv">North America Direct TV grabber</flag> + <flag name="na-tvmedia">Grabber for North America (TVMedia)</flag> + <flag name="pt-vodafone">Grabber for Portugal (Vodafone)</flag> + <flag name="tr">Turkey (Digiturk) tv listing grabber</flag> + <flag name="tv-check">enable GUI checking</flag> + <flag name="tv-combiner">enable grabbers combiner</flag> + <flag name="tv-pick-cgi">enable CGI support</flag> + <flag name="uk-tvguide">UK and Ireland tv listing grabber using TV Guide website</flag> + <flag name="zz-sdjson">Grabber for schedulesDirect.org SD-JSON service (many countries)</flag> + <flag name="zz-sdjson-sqlite">Grabber for schedulesDirect.org SD-JSON service (sqlite DB)</flag> + </use> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/media-tv/xmltv/xmltv-1.0.0-r1.ebuild b/media-tv/xmltv/xmltv-1.0.0-r1.ebuild new file mode 100644 index 000000000000..1423cde25f34 --- /dev/null +++ b/media-tv/xmltv/xmltv-1.0.0-r1.ebuild @@ -0,0 +1,243 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit perl-module + +DESCRIPTION="Set of utilities to manage TV listings stored in the XMLTV format" +HOMEPAGE="http://wiki.xmltv.org/index.php/XMLTVProject https://github.com/XMLTV/xmltv" +SRC_URI="https://github.com/XMLTV/xmltv/archive/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="amd64 arm arm64 ~ppc x86" + +IUSE="ar ch-search eu-epgdata eu-xmltvse fi fi-sv fr +huro is it it-dvb na-dd na-dtv na-tvmedia pt-vodafone tr +tv-check tv-combiner tv-pick-cgi uk-tvguide zz-sdjson zz-sdjson-sqlite" + +RDEPEND=" + dev-perl/Date-Manip + dev-perl/File-Slurp + dev-perl/JSON + dev-perl/Lingua-Preferred + dev-perl/LWP-Online + dev-perl/PerlIO-gzip + dev-perl/Term-ProgressBar + dev-perl/TermReadKey + dev-perl/XML-LibXML + dev-perl/XML-Parser + dev-perl/XML-TreePP + dev-perl/XML-Twig + dev-perl/XML-Writer + dev-perl/Unicode-String + virtual/perl-Storable + virtual/perl-IO-Compress + ar? ( + dev-perl/DateTime + dev-perl/HTML-Parser + dev-perl/HTML-Tree + dev-perl/HTTP-Cookies + ) + ch-search? ( + dev-perl/HTML-Tree + dev-perl/HTML-Parser + dev-perl/HTTP-Cookies + dev-perl/URI + ) + eu-epgdata? ( + dev-perl/Archive-Zip + dev-perl/DateTime + dev-perl/DateTime-Format-Strptime + dev-perl/HTML-Parser + dev-perl/HTTP-Message + ) + eu-xmltvse? ( + dev-perl/HTTP-Cache-Transparent + dev-perl/IO-stringy + ) + fi? ( + dev-perl/HTML-Tree + dev-perl/LWP-Protocol-https + dev-perl/URI + ) + fi-sv? ( + dev-perl/DateTime + dev-perl/HTML-Tree + dev-perl/IO-stringy + ) + fr? ( + dev-perl/DateTime + dev-perl/DateTime-TimeZone + dev-perl/HTML-Parser + dev-perl/HTML-Tree + ) + huro? ( + dev-perl/HTML-Parser + dev-perl/HTML-Tree + ) + is? ( + dev-perl/HTML-Parser + dev-perl/HTML-Tree + dev-perl/URI + dev-perl/XML-DOM + dev-perl/XML-LibXSLT + ) + it? ( + dev-perl/HTML-Parser + dev-perl/HTML-Tree + dev-perl/URI + ) + it-dvb? ( + virtual/perl-Data-Dumper + ) + na-dd? ( + dev-perl/HTTP-Daemon + dev-perl/SOAP-Lite + ) + na-dtv? ( + dev-perl/DateTime + dev-perl/HTTP-Cookies + dev-perl/URI + ) + pt-vodafone? ( + dev-perl/DateTime + dev-perl/URI + ) + tr? ( + dev-perl/DateTime + dev-perl/HTTP-Cache-Transparent + dev-perl/HTTP-Cookies + dev-perl/URI + ) + uk-tvguide? ( + dev-perl/DateTime + dev-perl/HTML-Tree + dev-perl/HTTP-Cache-Transparent + dev-perl/HTTP-Cookies + dev-perl/URI + ) + zz-sdjson? ( + dev-lang/perl + dev-perl/DateTime + virtual/perl-Digest-SHA + dev-perl/HTTP-Message + dev-perl/LWP-Protocol-https + dev-perl/Try-Tiny + ) + zz-sdjson-sqlite? ( + dev-lang/perl + dev-perl/DateTime + dev-perl/DateTime-Format-ISO8601 + dev-perl/DateTime-Format-SQLite + dev-perl/DateTime-TimeZone + dev-perl/DBD-SQLite + dev-perl/DBI + virtual/perl-Digest-SHA + dev-perl/File-HomeDir + dev-perl/File-Which + dev-perl/List-MoreUtils + dev-perl/LWP-UserAgent-Determined + ) + tv-check? ( + dev-perl/Tk + dev-perl/Tk-TableMatrix + ) + tv-pick-cgi? ( dev-perl/CGI ) +" + +PREFIX="/usr" + +pkg_setup() { + # Uses Data::Manip in various places which can fail + # if TZ is still set to Factory as it is in stock gentoo + # install media + export TZ=UTC +} + +src_prepare() { + default + # Add revision number to version info. + # Remove the doc/COPYING file from documentation. + sed -i \ + -e "s:\$VERSION = '${PV}':\$VERSION = '${PVR}':" \ + -e "/^@docs/s:doc/COPYING ::" \ + Makefile.PL || die +} + +src_configure() { + # Must match the order of elements in @opt_components in Makefile.PL + make_config() { + # Never accept default configuration + echo "no" + + # Enable Agentina + usex ar + # Enable Switzerland Search + usex ch-search + # Enable EU epgdata.com including fanart + usex eu-epgdata + # Enable Europe (xmltv.se / xmltvse) + usex eu-xmltvse + # Enable Finland + usex fi + # Enable Swedish listings in Finland + usex fi-sv + # Enable France + usex fr + # Enable Hungary Romania Slovakia Czechia + usex huro + # Enable Iceland + usex is + # Enable Italy + usex it + # Enable Italy from DVB-S stream + usex it-dvb + # Enable North America - schedulesdirect.org + usex na-dd + # Enable North America (DirecTV) + usex na-dtv + # Enable North America (TVMedia) + usex na-tvmedia + # Enable Portugal (Vodafone) + usex pt-vodafone + # Enable Turkey (Digiturk) + usex tr + # Enable UK/Ireland - TV Guide Website + usex uk-tvguide + # Enable Schedules Direct JSON + usex zz-sdjson + # Enable Schedules Direct JSON (SQLite version) + usex zz-sdjson-sqlite + # rules to improve episode numbering + usex tv-check + # Enable combiner + usex tv-combiner + # Enable CGI program to filter listings (to install manually) + usex tv-pick-cgi + } + + pm_echovar=`make_config` + perl-module_src_configure +} + +src_install() { + perl-module_src_install + + if use tv-pick-cgi; then + dobin choose/tv_pick/tv_pick_cgi + fi +} + +pkg_postinst() { + if use tv-pick-cgi; then + elog "To use tv_pick_cgi, please link it from /usr/bin/tv_pick_cgi" + elog "to where the ScriptAlias directive is configured." + fi + + if use it-dvb; then + elog "The perl module Linux::DVB must be manually installed." + elog "A slightly out of date Linux::DVB is in CPAN, but not in portage." + fi +} |
