* [Buildroot] [PATCH v8] xbmc: new package
@ 2014-02-23 12:29 Maxime Hadjinlian
2014-03-01 16:17 ` Martin Bark
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Maxime Hadjinlian @ 2014-02-23 12:29 UTC (permalink / raw)
To: buildroot
XBMC is an award-winning free and open source (GPL) software media player and
entertainment hub for digital media.
This package was originally found at : https://github.com/huceke/buildroot-rbp
By gimli <ebsi4711@gmail.com>
Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
Cc: gimli <ebsi4711@gmail.com>
---
Changes v7 -> v8:
- Fix comments and dependencies on components (Thomas Petazzoni)
- Change name for options (Thomas Petazzoni)
- Remove depends on external toolchain (Martin Bark)
- Fix various indent issues (Thomas Petazzoni)
- Fix hook placement (Thomas Petazzoni)
- Add host-gperf (Martin Bark)
Changes v6 -> v7:
- Fix various capitalization issue (Thomas De Schampheleire)
- Changes depends on !uclibc to a depends on glibc (Thomas De Schampheleire)
- Remove TIFF being selected twice (Jerzy Grzegorek)
Changes v5 -> v6:
- Fix missing depends on OpenGL (Yann E. Morin)
- Remove LIBCEC_RBP Config option (Yann E. Morin)
- Fix dependency that were, in the end, not optionnal (Martin Bark)
- Fix OpenGL check (Martin Bark)
- Uses BR2_HOST_NEEDS_JAVA (Martin Bark)
Changes v4 -> v5:
- Remove MAKE1, seems to work fine with parallel build.
Changes v3 -> v4:
- Rework init script
- Add systemd startup service
Changes v2 -> v3:
- Fix indent
- Change librtmp to rtmpdump
Changes v1 -> v2:
- Fix header (Yann E. Morin)
- Fix comment on toolchain option (Peter Korsgaard)
---
package/Config.in | 1 +
package/xbmc/Config.in | 191 +++++++++++++++++++++
package/xbmc/S50xbmc | 41 +++++
package/xbmc/xbmc-0001-Fixup-include-path.patch | 81 +++++++++
.../xbmc-0002-RaspberryPi-Default-Settings.patch | 168 ++++++++++++++++++
package/xbmc/xbmc.mk | 163 ++++++++++++++++++
package/xbmc/xbmc.service | 12 ++
7 files changed, 657 insertions(+)
create mode 100644 package/xbmc/Config.in
create mode 100755 package/xbmc/S50xbmc
create mode 100644 package/xbmc/xbmc-0001-Fixup-include-path.patch
create mode 100644 package/xbmc/xbmc-0002-RaspberryPi-Default-Settings.patch
create mode 100644 package/xbmc/xbmc.mk
create mode 100644 package/xbmc/xbmc.service
diff --git a/package/Config.in b/package/Config.in
index 087e5f4..69db17c 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -26,6 +26,7 @@ source "package/tstools/Config.in"
source "package/vlc/Config.in"
source "package/vorbis-tools/Config.in"
source "package/wavpack/Config.in"
+source "package/xbmc/Config.in"
source "package/yavta/Config.in"
endmenu
diff --git a/package/xbmc/Config.in b/package/xbmc/Config.in
new file mode 100644
index 0000000..c38f82b
--- /dev/null
+++ b/package/xbmc/Config.in
@@ -0,0 +1,191 @@
+comment "xbmc requires an OpenGL ES and EGL backend"
+ depends on !(BR2_PACKAGE_HAS_OPENGL_EGL && BR2_PACKAGE_HAS_OPENGL_ES)
+
+comment "xbmc needs an (e)glibc toolchain w/ C++"
+ depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_INSTALL_LIBSTDCPP
+
+menuconfig BR2_PACKAGE_XBMC
+ bool "xbmc"
+ select BR2_HOST_NEEDS_JAVA
+ select BR2_PACKAGE_BOOST
+ select BR2_PACKAGE_BOOST_THREAD
+ select BR2_PACKAGE_BZIP2
+ select BR2_PACKAGE_EXPAT
+ select BR2_PACKAGE_FLAC
+ select BR2_PACKAGE_FONTCONFIG
+ select BR2_PACKAGE_FREETYPE
+ select BR2_PACKAGE_JASPER
+ select BR2_PACKAGE_JPEG
+ select BR2_PACKAGE_LIBASS
+ select BR2_PACKAGE_LIBCDIO
+ select BR2_PACKAGE_LIBCURL
+ select BR2_PACKAGE_LIBFRIBIDI
+ select BR2_PACKAGE_LIBGCRYPT
+ select BR2_PACKAGE_LIBID3TAG
+ select BR2_PACKAGE_LIBMAD
+ select BR2_PACKAGE_LIBMODPLUG
+ select BR2_PACKAGE_LIBMPEG2
+ select BR2_PACKAGE_LIBOGG
+ select BR2_PACKAGE_LIBPLIST
+ select BR2_PACKAGE_LIBPNG
+ select BR2_PACKAGE_LIBSAMPLERATE
+ select BR2_PACKAGE_LIBUNGIF
+ select BR2_PACKAGE_LIBVORBIS
+ select BR2_PACKAGE_LIBXML2
+ select BR2_PACKAGE_LZO
+ select BR2_PACKAGE_NCURSES
+ select BR2_PACKAGE_OPENSSL
+ select BR2_PACKAGE_PCRE
+ select BR2_PACKAGE_PYTHON
+ select BR2_PACKAGE_PYTHON_BSDDB
+ select BR2_PACKAGE_PYTHON_BZIP2
+ select BR2_PACKAGE_PYTHON_CURSES
+ select BR2_PACKAGE_PYTHON_PYEXPAT
+ select BR2_PACKAGE_PYTHON_READLINE
+ select BR2_PACKAGE_PYTHON_SQLITE
+ select BR2_PACKAGE_PYTHON_SSL
+ select BR2_PACKAGE_PYTHON_UNICODEDATA
+ select BR2_PACKAGE_PYTHON_ZLIB
+ select BR2_PACKAGE_READLINE
+ select BR2_PACKAGE_SQLITE
+ select BR2_PACKAGE_TAGLIB
+ select BR2_PACKAGE_TIFF
+ select BR2_PACKAGE_TINYXML
+ select BR2_PACKAGE_YAJL
+ select BR2_PACKAGE_ZLIB
+ depends on BR2_TOOLCHAIN_USES_GLIBC && BR2_INSTALL_LIBSTDCPP
+ depends on BR2_PACKAGE_HAS_OPENGL_EGL || BR2_PACKAGE_HAS_OPENGL_ES
+ help
+ XBMC is an award-winning free and open source (GPL) software
+ media player and entertainment hub for digital media.
+
+ http://xbmc.org
+
+if BR2_PACKAGE_XBMC
+
+config BR2_PACKAGE_XBMC_AVAHI
+ bool "avahi"
+ # libdaemon uses fork()
+ depends on BR2_USE_MMU
+ depends on BR2_TOOLCHAIN_HAS_THREADS
+ select BR2_PACKAGE_AVAHI
+ select BR2_PACKAGE_AVAHI_DAEMON
+ help
+ Enable Avahi support.
+ Select this if you want XBMC to support Bonjour protocol.
+
+comment "avahi needs a toolchain w/ threads"
+ depends on BR2_USE_MMU
+ depends on !BR2_TOOLCHAIN_HAS_THREADS
+
+config BR2_PACKAGE_XBMC_DBUS
+ bool "dbus"
+ depends on BR2_TOOLCHAIN_HAS_THREADS
+ # uses fork()
+ depends on BR2_USE_MMU
+ select BR2_PACKAGE_DBUS
+ help
+ Enable D-Bus support
+
+comment "dbus needs a toolchain w/ threads"
+ depends on BR2_USE_MMU
+ depends on !BR2_TOOLCHAIN_HAS_THREADS
+
+config BR2_PACKAGE_XBMC_LIBBLURAY
+ bool "blu-ray"
+ depends on BR2_TOOLCHAIN_HAS_THREADS
+ select BR2_PACKAGE_LIBBLURAY
+ help
+ Enable Blu-ray input support.
+ Select this if you want to play back Blu-ray content.
+
+comment "libbluray needs a toolchain w/ threads"
+ depends on !BR2_TOOLCHAIN_HAS_THREADS
+
+config BR2_PACKAGE_XBMC_LIBCEC
+ bool "hdmi cec"
+ select BR2_PACKAGE_LIBCEC
+ depends on BR2_INSTALL_LIBSTDCPP
+ depends on BR2_TOOLCHAIN_HAS_THREADS
+ help
+ Enable CEC (Consumer Electronics Control) support.
+ Select this if you want XBMC to support HDMI CEC.
+
+comment "libcec needs a toolchain w/ C++, threads"
+ depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
+
+config BR2_PACKAGE_XBMC_LIBMICROHTTPD
+ bool "web server"
+ depends on BR2_TOOLCHAIN_HAS_THREADS
+ select BR2_PACKAGE_LIBMICROHTTPD
+ help
+ Enable webserver feature
+
+comment "libmicrohttpd needs a toolchain w/ threads"
+ depends on !BR2_TOOLCHAIN_HAS_THREADS
+
+config BR2_PACKAGE_XBMC_LIBNFS
+ bool "nfs"
+ select BR2_PACKAGE_LIBNFS
+ depends on BR2_LARGEFILE
+ depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC
+ help
+ Enable NFS server support.
+
+comment "libnfs support requires a toolchain w/ largefile, RPC support"
+ depends on !(BR2_LARGEFILE && BR2_TOOLCHAIN_HAS_NATIVE_RPC)
+
+config BR2_PACKAGE_XBMC_RTMPDUMP
+ bool "rtmp"
+ select BR2_PACKAGE_RTMPDUMP
+ help
+ Enable RTMP input support.
+ Select this if you want to play back rtmp stream.
+
+config BR2_PACKAGE_XBMC_LIBSHAIRPLAY
+ bool "shairport"
+ select BR2_PACKAGE_LIBSHAIRPLAY
+ depends on BR2_INET_IPV6
+ help
+ Enable Shairport support.
+ Select this if you want to stream content from an Apple device.
+
+comment "libshairport support requires a toolchain w/ IPv6 support"
+ depends on !BR2_INET_IPV6
+
+config BR2_PACKAGE_XBMC_LIBSMBCLIENT
+ bool "samba"
+ depends on BR2_TOOLCHAIN_HAS_THREADS
+ depends on BR2_USE_MMU # fork()
+ select BR2_PACKAGE_SAMBA
+ select BR2_PACKAGE_SAMBA_LIBSMBCLIENT
+ help
+ Enable Samba support
+
+comment "libsmbclient needs a toolchain w/ threads"
+ depends on BR2_USE_MMU
+ depends on !BR2_TOOLCHAIN_HAS_THREADS
+
+config BR2_PACKAGE_XBMC_LIBTHEORA
+ bool "theora"
+ select BR2_PACKAGE_LIBTHEORA
+ help
+ Enable Theora input support.
+ Select this if you want to play back OGG/OGV files (Video).
+
+config BR2_PACKAGE_XBMC_LIBUSB
+ bool "usb"
+ depends on BR2_TOOLCHAIN_HAS_THREADS
+ select BR2_PACKAGE_LIBUSB
+ select BR2_PACKAGE_LIBUSB_COMPAT
+ help
+ Enable libusb support.
+
+config BR2_PACKAGE_XBMC_WAVPACK
+ bool "wavpack"
+ select BR2_PACKAGE_WAVPACK
+ help
+ Enable WAV input support.
+ Select this if you want to play back WV files.
+
+endif
diff --git a/package/xbmc/S50xbmc b/package/xbmc/S50xbmc
new file mode 100755
index 0000000..ce51f7e
--- /dev/null
+++ b/package/xbmc/S50xbmc
@@ -0,0 +1,41 @@
+#!/bin/sh
+#
+# Starts XBMC.
+#
+
+BIN_NAME=xbmc.bin
+XBMC=/usr/lib/xbmc/$BIN_NAME
+XBMC_ARGS="--standalone -fs -n"
+PIDFILE=/var/run/xbmc.pid
+
+start() {
+ echo -n "Starting XBMC: "
+ start-stop-daemon -S -q -p $PIDFILE --exec $XBMC -- $XBMC_ARGS
+ [ $? == 0 ] && echo "OK" || echo "FAIL"
+}
+stop() {
+ echo -n "Stopping XBMC: "
+ start-stop-daemon -K -q -p $PIDFILE
+ [ $? == 0 ] && echo "OK" || echo "FAIL"
+}
+restart() {
+ stop
+ start
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart|reload)
+ restart
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart}"
+ exit 1
+esac
+
+exit $?
diff --git a/package/xbmc/xbmc-0001-Fixup-include-path.patch b/package/xbmc/xbmc-0001-Fixup-include-path.patch
new file mode 100644
index 0000000..be99bd6
--- /dev/null
+++ b/package/xbmc/xbmc-0001-Fixup-include-path.patch
@@ -0,0 +1,81 @@
+From 63c255f1f5d68363f49193aceed343e602dc8bdf Mon Sep 17 00:00:00 2001
+From: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
+Date: Thu, 26 Dec 2013 21:17:10 +0100
+Subject: [PATCH] Fixup include path
+
+Patch originally taken from :
+http://repository.timesys.com/buildsources/x/xbmc/xbmc-11.0/xbmc-11.0-fixups.patch
+
+Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
+---
+ lib/enca/configure | 3 ---
+ lib/enca/configure.ac | 3 ---
+ lib/libdvd/libdvdread/misc/dvdread-config.sh | 6 +++---
+ lib/timidity/configure.in | 6 +++---
+ 4 files changed, 6 insertions(+), 12 deletions(-)
+
+diff --git a/lib/enca/configure b/lib/enca/configure
+index c839a51..7af5a09 100644
+--- a/lib/enca/configure
++++ b/lib/enca/configure
+@@ -12011,9 +12011,6 @@ fi
+ if test "$prefix" = "NONE"; then
+ LDFLAGS="$LDFLAGS -L$ac_default_prefix/lib"
+ CPPFLAGS="$CPPFLAGS -I$ac_default_prefix/include"
+-else
+- LDFLAGS="$LDFLAGS -L$prefix/lib"
+- CPPFLAGS="$CPPFLAGS -I$prefix/include"
+ fi
+
+
+diff --git a/lib/enca/configure.ac b/lib/enca/configure.ac
+index 41434df..47d5367 100644
+--- a/lib/enca/configure.ac
++++ b/lib/enca/configure.ac
+@@ -100,9 +100,6 @@ dnl Dirty path hack. Helps some people with badly set up search paths.
+ if test "$prefix" = "NONE"; then
+ LDFLAGS="$LDFLAGS -L$ac_default_prefix/lib"
+ CPPFLAGS="$CPPFLAGS -I$ac_default_prefix/include"
+-else
+- LDFLAGS="$LDFLAGS -L$prefix/lib"
+- CPPFLAGS="$CPPFLAGS -I$prefix/include"
+ fi
+
+ dnl Checks for libraries.
+diff --git a/lib/libdvd/libdvdread/misc/dvdread-config.sh b/lib/libdvd/libdvdread/misc/dvdread-config.sh
+index e170c7e..25ee893 100644
+--- a/lib/libdvd/libdvdread/misc/dvdread-config.sh
++++ b/lib/libdvd/libdvdread/misc/dvdread-config.sh
+@@ -48,9 +48,9 @@ if test "$echo_prefix" = "yes"; then
+ fi
+
+ if test "$echo_cflags" = "yes"; then
+- echo -I$prefix/include $extracflags
++ echo $extracflags
+ fi
+
+ if test "$echo_libs" = "yes"; then
+- echo -L$libdir $dvdreadlib
+-fi
++ echo $dvdreadlib
++fi
+diff --git a/lib/timidity/configure.in b/lib/timidity/configure.in
+index 9f2835b..733470a 100644
+--- a/lib/timidity/configure.in
++++ b/lib/timidity/configure.in
+@@ -100,9 +100,9 @@ done
+
+ # add $prefix if specified.
+ if test "x$prefix" != xNONE -a "x$prefix" != "x$ac_default_prefix" -a "x$prefix" != "x/usr"; then
+- LDFLAGS="-L$prefix/lib $LDFLAGS"
+- SHLDFLAGS="-L$prefix/lib $SHLDFLAGS"
+- CPPFLAGS="-I$prefix/include $CPPFLAGS"
++ LDFLAGS="$LDFLAGS"
++ SHLDFLAGS="$SHLDFLAGS"
++ CPPFLAGS="$CPPFLAGS"
+ fi
+
+ dnl add --with-includes, --with-libraries
+--
+1.8.5.2
+
diff --git a/package/xbmc/xbmc-0002-RaspberryPi-Default-Settings.patch b/package/xbmc/xbmc-0002-RaspberryPi-Default-Settings.patch
new file mode 100644
index 0000000..43960e6
--- /dev/null
+++ b/package/xbmc/xbmc-0002-RaspberryPi-Default-Settings.patch
@@ -0,0 +1,168 @@
+From 2541772a3ed71402a620466feb6a337b40f08880 Mon Sep 17 00:00:00 2001
+From: Maxime Hadjinlian <maximeh.hadjinlian@gmail.com>
+Date: Sat, 15 Dec 2012 23:41:06 +0100
+Subject: [PATCH] RaspberryPi Default Settings
+
+Add some default settings if the target platform is the RaspberryPi.
+Avoid the fact that the user _MUST_ have an advandcedsettings.xml to be able
+to use XBMC properly.
+
+Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
+---
+ xbmc/settings/AdvancedSettings.cpp | 31 +++++++++++++++++++++++++++
+ xbmc/settings/GUISettings.cpp | 8 +++----
+ xbmc/settings/GUIWindowSettingsCategory.cpp | 4 ++--
+ 3 files changed, 37 insertions(+), 6 deletions(-)
+
+diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp
+index 2cbbf98..42ccabd 100644
+--- a/xbmc/settings/AdvancedSettings.cpp
++++ b/xbmc/settings/AdvancedSettings.cpp
+@@ -72,7 +72,11 @@ void CAdvancedSettings::Initialize()
+ m_karaokeAlwaysEmptyOnCdgs = 1;
+ m_karaokeUseSongSpecificBackground = 0;
+
++ #if defined(TARGET_RASPBERRY_PI)
++ m_audioDefaultPlayer = "omxplayer";
++ #else
+ m_audioDefaultPlayer = "paplayer";
++ #endif
+ m_audioPlayCountMinimumPercent = 90.0f;
+ m_audioHost = "default";
+
+@@ -93,8 +97,14 @@ void CAdvancedSettings::Initialize()
+ m_videoBlackBarColour = 0;
+ m_videoPPFFmpegDeint = "linblenddeint";
+ m_videoPPFFmpegPostProc = "ha:128:7,va,dr";
++
++ #if defined(TARGET_RASPBERRY_PI)
++ m_videoDefaultPlayer = "omxplayer";
++ m_videoDefaultDVDPlayer = "omxplayer";
++ #else
+ m_videoDefaultPlayer = "dvdplayer";
+ m_videoDefaultDVDPlayer = "dvdplayer";
++ #endif
+ m_videoIgnoreSecondsAtStart = 3*60;
+ m_videoIgnorePercentAtEnd = 8.0f;
+ m_videoPlayCountMinimumPercent = 90.0f;
+@@ -287,7 +297,11 @@ void CAdvancedSettings::Initialize()
+ m_alwaysOnTop = false;
+ #endif
+
++ #if defined(TARGET_RASPBERRY_PI)
++ m_bgInfoLoaderMaxThreads = 2;
++ #else
+ m_bgInfoLoaderMaxThreads = 5;
++ #endif
+
+ m_iPVRTimeCorrection = 0;
+ m_iPVRInfoToggleInterval = 3000;
+@@ -299,7 +313,12 @@ void CAdvancedSettings::Initialize()
+
+ m_measureRefreshrate = false;
+
++ #if defined(TARGET_RASPBERRY_PI)
++ m_cacheMemBufferSize = 1024 * 1024 * 10;
++ #else
+ m_cacheMemBufferSize = 1024 * 1024 * 20;
++ #endif
++
+ m_addonPackageFolderSize = 200;
+
+ m_jsonOutputCompact = true;
+@@ -509,11 +528,17 @@ void CAdvancedSettings::ParseSettingsFile(const CStdString &file)
+ RefreshOverride override = {0};
+
+ float fps;
++ #if defined(TARGET_RASPBERRY_PI)
++ fps = 23.976;
++ override.fpsmin = fps - 0.01f;
++ override.fpsmax = fps + 0.01f;
++ #else
+ if (XMLUtils::GetFloat(pRefreshOverride, "fps", fps))
+ {
+ override.fpsmin = fps - 0.01f;
+ override.fpsmax = fps + 0.01f;
+ }
++ #endif
+
+ float fpsmin, fpsmax;
+ if (XMLUtils::GetFloat(pRefreshOverride, "fpsmin", fpsmin) &&
+@@ -524,11 +549,17 @@ void CAdvancedSettings::ParseSettingsFile(const CStdString &file)
+ }
+
+ float refresh;
++ #if defined(TARGET_RASPBERRY_PI)
++ refresh = 24.0;
++ override.refreshmin = refresh - 0.01f;
++ override.refreshmax = refresh + 0.01f;
++ #else
+ if (XMLUtils::GetFloat(pRefreshOverride, "refresh", refresh))
+ {
+ override.refreshmin = refresh - 0.01f;
+ override.refreshmax = refresh + 0.01f;
+ }
++ #endif
+
+ float refreshmin, refreshmax;
+ if (XMLUtils::GetFloat(pRefreshOverride, "refreshmin", refreshmin) &&
+diff --git a/xbmc/settings/GUISettings.cpp b/xbmc/settings/GUISettings.cpp
+index c1820a7..c00fb18 100644
+--- a/xbmc/settings/GUISettings.cpp
++++ b/xbmc/settings/GUISettings.cpp
+@@ -537,11 +537,11 @@ void CGUISettings::Initialize()
+ AddInt(NULL, "input.appleremotesequencetime", 13603, 500, 50, 50, 1000, SPIN_CONTROL_INT_PLUS, MASK_MS, TEXT_OFF);
+ AddSeparator(in, "input.sep1");
+ #endif
+- AddBool(in, "input.remoteaskeyboard", 21449, false);
++ AddBool(in, "input.remoteaskeyboard", 21449, true);
+ #if defined(TARGET_DARWIN_IOS)
+ AddBool(NULL, "input.enablemouse", 21369, true);
+ #else
+- AddBool(in, "input.enablemouse", 21369, true);
++ AddBool(in, "input.enablemouse", 21369, false);
+ #endif
+ #if defined(HAS_SDL_JOYSTICK)
+ AddBool(in, "input.enablejoystick", 35100, true);
+@@ -831,7 +831,7 @@ void CGUISettings::Initialize()
+
+ #ifdef HAS_WEB_SERVER
+ CSettingsCategory* srvWeb = AddCategory(SETTINGS_SERVICE, "webserver", 33101);
+- AddBool(srvWeb, "services.webserver", 263, false);
++ AddBool(srvWeb, "services.webserver", 263, true);
+ AddString(srvWeb,"services.webserverport", 730, CUtil::CanBindPrivileged()?"80":"8080", EDIT_CONTROL_NUMBER_INPUT, false, 730);
+ AddString(srvWeb,"services.webserverusername",1048, "xbmc", EDIT_CONTROL_INPUT);
+ AddString(srvWeb,"services.webserverpassword",733, "", EDIT_CONTROL_HIDDEN_INPUT, true, 733);
+@@ -881,7 +881,7 @@ void CGUISettings::Initialize()
+ AddInt(laf, "lookandfeel.startupwindow",512,1, WINDOW_HOME, 1, WINDOW_PYTHON_END, SPIN_CONTROL_TEXT);
+ AddString(laf, "lookandfeel.soundskin",15108,"SKINDEFAULT", SPIN_CONTROL_TEXT);
+ AddSeparator(laf, "lookandfeel.sep2");
+- AddBool(laf, "lookandfeel.enablerssfeeds",13305, true);
++ AddBool(laf, "lookandfeel.enablerssfeeds",13305, false);
+ AddString(laf, "lookandfeel.rssedit", 21450, "", BUTTON_CONTROL_STANDARD);
+
+ CSettingsCategory* loc = AddCategory(SETTINGS_APPEARANCE, "locale", 14090);
+diff --git a/xbmc/settings/GUIWindowSettingsCategory.cpp b/xbmc/settings/GUIWindowSettingsCategory.cpp
+index b4cee69..a9bcb7a 100644
+--- a/xbmc/settings/GUIWindowSettingsCategory.cpp
++++ b/xbmc/settings/GUIWindowSettingsCategory.cpp
+@@ -1271,7 +1271,7 @@ void CGUIWindowSettingsCategory::OnSettingChanged(CBaseSettingControl *pSettingC
+ if (!g_application.StartWebServer())
+ {
+ CGUIDialogOK::ShowAndGetInput(g_localizeStrings.Get(33101), "", g_localizeStrings.Get(33100), "");
+- g_guiSettings.SetBool("services.webserver", false);
++ g_guiSettings.SetBool("services.webserver", true);
+ }
+ }
+ else if (strSetting.Equals("services.webserverusername") || strSetting.Equals("services.webserverpassword"))
+@@ -1292,7 +1292,7 @@ void CGUIWindowSettingsCategory::OnSettingChanged(CBaseSettingControl *pSettingC
+ else
+ {
+ g_application.StopAirplayServer(true);
+- g_guiSettings.SetBool("services.airplay", false);
++ g_guiSettings.SetBool("services.airplay", true);
+ CZeroconf::GetInstance()->Stop();
+ }
+ #endif
+--
+1.7.10.4
diff --git a/package/xbmc/xbmc.mk b/package/xbmc/xbmc.mk
new file mode 100644
index 0000000..d05c2f5
--- /dev/null
+++ b/package/xbmc/xbmc.mk
@@ -0,0 +1,163 @@
+################################################################################
+#
+# xbmc
+#
+################################################################################
+
+XBMC_VERSION = 12.3-Frodo
+XBMC_SITE = $(call github,xbmc,xbmc,$(XBMC_VERSION))
+XBMC_LICENSE = GPLv2
+XBMC_LICENSE_FILES = LICENSE.GPL
+XBMC_DEPENDENCIES = host-gperf host-lzo host-sdl_image host-swig
+XBMC_DEPENDENCIES += boost bzip2 expat flac fontconfig freetype jasper jpeg \
+ libass libcdio libcurl libfribidi libgcrypt libmad libmodplug libmpeg2 \
+ libogg libplist libpng libsamplerate libungif libvorbis libxml2 lzo ncurses \
+ openssl pcre python readline sqlite taglib tiff tinyxml yajl zlib
+
+XBMC_CONF_ENV = \
+ PYTHON_VERSION="$(PYTHON_VERSION_MAJOR)" \
+ PYTHON_LDFLAGS="-lpython$(PYTHON_VERSION_MAJOR) -lpthread -ldl -lutil -lm" \
+ PYTHON_CPPFLAGS="-I$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR)" \
+ PYTHON_SITE_PKG="$(STAGING_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages" \
+ PYTHON_NOVERSIONCHECK="no-check" \
+ TEXTUREPACKER_NATIVE_ROOT="$(HOST_DIR)/usr"
+
+XBMC_CONF_OPT += \
+ --disable-alsa \
+ --disable-crystalhd \
+ --disable-debug \
+ --disable-dvdcss \
+ --disable-gl \
+ --disable-hal \
+ --disable-joystick \
+ --disable-mysql \
+ --disable-openmax \
+ --disable-optical-drive \
+ --disable-projectm \
+ --disable-pulse \
+ --disable-sdl \
+ --disable-ssh \
+ --disable-vaapi \
+ --disable-vdpau \
+ --disable-vtbdecoder \
+ --disable-x11 \
+ --disable-xrandr \
+ --enable-gles \
+ --enable-optimizations
+
+ifeq ($(BR2_PACKAGE_RPI_USERLAND),y)
+XBMC_DEPENDENCIES += rpi-userland
+XBMC_CONF_OPT += --with-platform=raspberry-pi --enable-player=omxplayer
+XBMC_CONF_ENV += INCLUDES="-I$(STAGING_DIR)/usr/include/interface/vcos/pthreads \
+ -I$(STAGING_DIR)/usr/include/interface/vmcs_host/linux"
+endif
+
+ifeq ($(BR2_PACKAGE_DBUS),y)
+XBMC_DEPENDENCIES += dbus
+endif
+
+ifeq ($(BR2_PACKAGE_XBMC_LIBUSB),y)
+XBMC_DEPENDENCIES += libusb-compat
+XBMC_CONF_OPT += --enable-libusb
+else
+XBMC_CONF_OPT += --disable-libusb
+endif
+
+ifeq ($(BR2_PACKAGE_XBMC_LIBMICROHTTPD),y)
+XBMC_DEPENDENCIES += libmicrohttpd
+XBMC_CONF_OPT += --enable-webserver
+else
+XBMC_CONF_OPT += --disable-webserver
+endif
+
+ifeq ($(BR2_PACKAGE_XBMC_LIBSMBCLIENT),y)
+XBMC_DEPENDENCIES += samba
+XBMC_CONF_OPT += --enable-samba
+else
+XBMC_CONF_OPT += --disable-samba
+endif
+
+ifeq ($(BR2_PACKAGE_XBMC_LIBNFS),y)
+XBMC_DEPENDENCIES += libnfs
+XBMC_CONF_OPT += --enable-nfs
+else
+XBMC_CONF_OPT += --disable-nfs
+endif
+
+ifeq ($(BR2_PACKAGE_XBMC_RTMPDUMP),y)
+XBMC_DEPENDENCIES += rtmpdump
+XBMC_CONF_OPT += --enable-rtmp
+else
+XBMC_CONF_OPT += --disable-rtmp
+endif
+
+ifeq ($(BR2_PACKAGE_XBMC_LIBBLURAY),y)
+XBMC_DEPENDENCIES += libbluray
+XBMC_CONF_OPT += --enable-libbluray
+else
+XBMC_CONF_OPT += --disable-libbluray
+endif
+
+ifeq ($(BR2_PACKAGE_XBMC_LIBSHAIRPLAY),y)
+XBMC_DEPENDENCIES += libshairplay
+XBMC_CONF_OPT += --enable-airplay
+else
+XBMC_CONF_OPT += --disable-airplay
+endif
+
+ifeq ($(BR2_PACKAGE_XBMC_AVAHI),y)
+XBMC_DEPENDENCIES += avahi
+XBMC_CONF_OPT += --enable-avahi
+else
+XBMC_CONF_OPT += --disable-avahi
+endif
+
+ifeq ($(BR2_PACKAGE_XBMC_LIBCEC),y)
+XBMC_DEPENDENCIES += libcec
+XBMC_CONF_OPT += --enable-libcec
+else
+XBMC_CONF_OPT += --disable-libcec
+endif
+
+ifeq ($(BR2_PACKAGE_XBMC_WAVPACK),y)
+XBMC_DEPENDENCIES += wavpack
+endif
+
+# Add HOST_DIR to PATH for codegenerator.mk to find swig
+define XBMC_BOOTSTRAP
+ cd $(@D) && PATH=$(HOST_PATH) ./bootstrap
+endef
+XBMC_PRE_CONFIGURE_HOOKS += XBMC_BOOTSTRAP
+
+define XBMC_CLEAN_UNUSED_ADDONS
+ rm -Rf $(TARGET_DIR)/usr/share/xbmc/addons/screensaver.rsxs.plasma
+ rm -Rf $(TARGET_DIR)/usr/share/xbmc/addons/visualization.milkdrop
+ rm -Rf $(TARGET_DIR)/usr/share/xbmc/addons/visualization.projectm
+ rm -Rf $(TARGET_DIR)/usr/share/xbmc/addons/visualization.itunes
+endef
+XBMC_POST_INSTALL_TARGET_HOOKS += XBMC_CLEAN_UNUSED_ADDONS
+
+define XBMC_CLEAN_CONFLUENCE_SKIN
+ find $(TARGET_DIR)/usr/share/xbmc/addons/skin.confluence/media -name *.png -delete
+ find $(TARGET_DIR)/usr/share/xbmc/addons/skin.confluence/media -name *.jpg -delete
+endef
+XBMC_POST_INSTALL_TARGET_HOOKS += XBMC_CLEAN_CONFLUENCE_SKIN
+
+define XBMC_INSTALL_INIT_SYSV
+ [ -f $(TARGET_DIR)/etc/init.d/S50xbmc ] || \
+ $(INSTALL) -D -m 755 package/xbmc/S50xbmc \
+ $(TARGET_DIR)/etc/init.d/S50xbmc
+endef
+
+define XBMC_INSTALL_INIT_SYSTEMD
+ [ -f $(TARGET_DIR)/etc/systemd/system/xbmc.service ] || \
+ $(INSTALL) -D -m 644 package/xbmc/xbmc.service \
+ $(TARGET_DIR)/etc/systemd/system/xbmc.service
+
+ mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
+
+ ln -fs ../xbmc.service \
+ $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/xbmc.service
+endef
+
+$(eval $(autotools-package))
diff --git a/package/xbmc/xbmc.service b/package/xbmc/xbmc.service
new file mode 100644
index 0000000..3fe5895
--- /dev/null
+++ b/package/xbmc/xbmc.service
@@ -0,0 +1,12 @@
+[Unit]
+Description = XBMC media center
+After = network.target
+
+[Service]
+Type = simple
+ExecStart = /usr/lib/xbmc/xbmc.bin --standalone -fs -n
+Restart = on-failure
+
+[Install]
+WantedBy = multi-user.target
+
--
1.8.5.3
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH v8] xbmc: new package
2014-02-23 12:29 [Buildroot] [PATCH v8] xbmc: new package Maxime Hadjinlian
@ 2014-03-01 16:17 ` Martin Bark
2014-03-03 18:09 ` Yann E. MORIN
2014-03-19 23:57 ` Yann E. MORIN
2 siblings, 0 replies; 6+ messages in thread
From: Martin Bark @ 2014-03-01 16:17 UTC (permalink / raw)
To: buildroot
Maxime,
I tested out this patch. It all build fine for me and i was able to run
xbmc on the raspberry pi. I used the yatse android app to control xmbc
and i was able to watch some youtube videos with no issue :)
I have a few comments below.
On 23/02/14 12:29, Maxime Hadjinlian wrote:
-- snip --
> diff --git a/package/xbmc/S50xbmc b/package/xbmc/S50xbmc
> new file mode 100755
> index 0000000..ce51f7e
> --- /dev/null
> +++ b/package/xbmc/S50xbmc
> @@ -0,0 +1,41 @@
> +#!/bin/sh
> +#
> +# Starts XBMC.
> +#
> +
> +BIN_NAME=xbmc.bin
> +XBMC=/usr/lib/xbmc/$BIN_NAME
> +XBMC_ARGS="--standalone -fs -n"
> +PIDFILE=/var/run/xbmc.pid
> +
> +start() {
> + echo -n "Starting XBMC: "
> + start-stop-daemon -S -q -p $PIDFILE --exec $XBMC -- $XBMC_ARGS
I had to add -b to the start-stop-daemon options to background xbmc.bin
otherwise the startup halted on this script. Also i added -m so
start-stop-daemon would create the pid file. Without the -m option the
stop command fails because the pid file does not exist.
> + [ $? == 0 ] && echo "OK" || echo "FAIL"
> +}
> +stop() {
> + echo -n "Stopping XBMC: "
> + start-stop-daemon -K -q -p $PIDFILE
> + [ $? == 0 ] && echo "OK" || echo "FAIL"
> +}
> +restart() {
> + stop
> + start
> +}
> +
> +case "$1" in
> + start)
> + start
> + ;;
> + stop)
> + stop
> + ;;
> + restart|reload)
> + restart
> + ;;
> + *)
> + echo "Usage: $0 {start|stop|restart}"
> + exit 1
> +esac
> +
> +exit $?
-- snip --
> diff --git a/package/xbmc/xbmc-0002-RaspberryPi-Default-Settings.patch b/package/xbmc/xbmc-0002-RaspberryPi-Default-Settings.patch
> new file mode 100644
> index 0000000..43960e6
> --- /dev/null
> +++ b/package/xbmc/xbmc-0002-RaspberryPi-Default-Settings.patch
> @@ -0,0 +1,168 @@
> +From 2541772a3ed71402a620466feb6a337b40f08880 Mon Sep 17 00:00:00 2001
> +From: Maxime Hadjinlian <maximeh.hadjinlian@gmail.com>
> +Date: Sat, 15 Dec 2012 23:41:06 +0100
> +Subject: [PATCH] RaspberryPi Default Settings
> +
> +Add some default settings if the target platform is the RaspberryPi.
> +Avoid the fact that the user _MUST_ have an advandcedsettings.xml to be able
> +to use XBMC properly.
> +
> +Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
I thought you were going to remove this patch and instead include a
default advandcedsettings.xml for the raspberry pi.
> +---
> + xbmc/settings/AdvancedSettings.cpp | 31 +++++++++++++++++++++++++++
> + xbmc/settings/GUISettings.cpp | 8 +++----
> + xbmc/settings/GUIWindowSettingsCategory.cpp | 4 ++--
> + 3 files changed, 37 insertions(+), 6 deletions(-)
> +
> +diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp
> +index 2cbbf98..42ccabd 100644
> +--- a/xbmc/settings/AdvancedSettings.cpp
> ++++ b/xbmc/settings/AdvancedSettings.cpp
> +@@ -72,7 +72,11 @@ void CAdvancedSettings::Initialize()
> + m_karaokeAlwaysEmptyOnCdgs = 1;
> + m_karaokeUseSongSpecificBackground = 0;
> +
> ++ #if defined(TARGET_RASPBERRY_PI)
> ++ m_audioDefaultPlayer = "omxplayer";
> ++ #else
> + m_audioDefaultPlayer = "paplayer";
> ++ #endif
> + m_audioPlayCountMinimumPercent = 90.0f;
> + m_audioHost = "default";
> +
> +@@ -93,8 +97,14 @@ void CAdvancedSettings::Initialize()
> + m_videoBlackBarColour = 0;
> + m_videoPPFFmpegDeint = "linblenddeint";
> + m_videoPPFFmpegPostProc = "ha:128:7,va,dr";
> ++
> ++ #if defined(TARGET_RASPBERRY_PI)
> ++ m_videoDefaultPlayer = "omxplayer";
> ++ m_videoDefaultDVDPlayer = "omxplayer";
> ++ #else
> + m_videoDefaultPlayer = "dvdplayer";
> + m_videoDefaultDVDPlayer = "dvdplayer";
> ++ #endif
> + m_videoIgnoreSecondsAtStart = 3*60;
> + m_videoIgnorePercentAtEnd = 8.0f;
> + m_videoPlayCountMinimumPercent = 90.0f;
> +@@ -287,7 +297,11 @@ void CAdvancedSettings::Initialize()
> + m_alwaysOnTop = false;
> + #endif
> +
> ++ #if defined(TARGET_RASPBERRY_PI)
> ++ m_bgInfoLoaderMaxThreads = 2;
> ++ #else
> + m_bgInfoLoaderMaxThreads = 5;
> ++ #endif
> +
> + m_iPVRTimeCorrection = 0;
> + m_iPVRInfoToggleInterval = 3000;
> +@@ -299,7 +313,12 @@ void CAdvancedSettings::Initialize()
> +
> + m_measureRefreshrate = false;
> +
> ++ #if defined(TARGET_RASPBERRY_PI)
> ++ m_cacheMemBufferSize = 1024 * 1024 * 10;
> ++ #else
> + m_cacheMemBufferSize = 1024 * 1024 * 20;
> ++ #endif
> ++
> + m_addonPackageFolderSize = 200;
> +
> + m_jsonOutputCompact = true;
> +@@ -509,11 +528,17 @@ void CAdvancedSettings::ParseSettingsFile(const CStdString &file)
> + RefreshOverride override = {0};
> +
> + float fps;
> ++ #if defined(TARGET_RASPBERRY_PI)
> ++ fps = 23.976;
> ++ override.fpsmin = fps - 0.01f;
> ++ override.fpsmax = fps + 0.01f;
> ++ #else
> + if (XMLUtils::GetFloat(pRefreshOverride, "fps", fps))
> + {
> + override.fpsmin = fps - 0.01f;
> + override.fpsmax = fps + 0.01f;
> + }
> ++ #endif
> +
> + float fpsmin, fpsmax;
> + if (XMLUtils::GetFloat(pRefreshOverride, "fpsmin", fpsmin) &&
> +@@ -524,11 +549,17 @@ void CAdvancedSettings::ParseSettingsFile(const CStdString &file)
> + }
> +
> + float refresh;
> ++ #if defined(TARGET_RASPBERRY_PI)
> ++ refresh = 24.0;
> ++ override.refreshmin = refresh - 0.01f;
> ++ override.refreshmax = refresh + 0.01f;
> ++ #else
> + if (XMLUtils::GetFloat(pRefreshOverride, "refresh", refresh))
> + {
> + override.refreshmin = refresh - 0.01f;
> + override.refreshmax = refresh + 0.01f;
> + }
> ++ #endif
> +
> + float refreshmin, refreshmax;
> + if (XMLUtils::GetFloat(pRefreshOverride, "refreshmin", refreshmin) &&
> +diff --git a/xbmc/settings/GUISettings.cpp b/xbmc/settings/GUISettings.cpp
> +index c1820a7..c00fb18 100644
> +--- a/xbmc/settings/GUISettings.cpp
> ++++ b/xbmc/settings/GUISettings.cpp
> +@@ -537,11 +537,11 @@ void CGUISettings::Initialize()
> + AddInt(NULL, "input.appleremotesequencetime", 13603, 500, 50, 50, 1000, SPIN_CONTROL_INT_PLUS, MASK_MS, TEXT_OFF);
> + AddSeparator(in, "input.sep1");
> + #endif
> +- AddBool(in, "input.remoteaskeyboard", 21449, false);
> ++ AddBool(in, "input.remoteaskeyboard", 21449, true);
> + #if defined(TARGET_DARWIN_IOS)
> + AddBool(NULL, "input.enablemouse", 21369, true);
> + #else
> +- AddBool(in, "input.enablemouse", 21369, true);
> ++ AddBool(in, "input.enablemouse", 21369, false);
> + #endif
> + #if defined(HAS_SDL_JOYSTICK)
> + AddBool(in, "input.enablejoystick", 35100, true);
> +@@ -831,7 +831,7 @@ void CGUISettings::Initialize()
> +
> + #ifdef HAS_WEB_SERVER
> + CSettingsCategory* srvWeb = AddCategory(SETTINGS_SERVICE, "webserver", 33101);
> +- AddBool(srvWeb, "services.webserver", 263, false);
> ++ AddBool(srvWeb, "services.webserver", 263, true);
> + AddString(srvWeb,"services.webserverport", 730, CUtil::CanBindPrivileged()?"80":"8080", EDIT_CONTROL_NUMBER_INPUT, false, 730);
> + AddString(srvWeb,"services.webserverusername",1048, "xbmc", EDIT_CONTROL_INPUT);
> + AddString(srvWeb,"services.webserverpassword",733, "", EDIT_CONTROL_HIDDEN_INPUT, true, 733);
> +@@ -881,7 +881,7 @@ void CGUISettings::Initialize()
> + AddInt(laf, "lookandfeel.startupwindow",512,1, WINDOW_HOME, 1, WINDOW_PYTHON_END, SPIN_CONTROL_TEXT);
> + AddString(laf, "lookandfeel.soundskin",15108,"SKINDEFAULT", SPIN_CONTROL_TEXT);
> + AddSeparator(laf, "lookandfeel.sep2");
> +- AddBool(laf, "lookandfeel.enablerssfeeds",13305, true);
> ++ AddBool(laf, "lookandfeel.enablerssfeeds",13305, false);
> + AddString(laf, "lookandfeel.rssedit", 21450, "", BUTTON_CONTROL_STANDARD);
> +
> + CSettingsCategory* loc = AddCategory(SETTINGS_APPEARANCE, "locale", 14090);
> +diff --git a/xbmc/settings/GUIWindowSettingsCategory.cpp b/xbmc/settings/GUIWindowSettingsCategory.cpp
> +index b4cee69..a9bcb7a 100644
> +--- a/xbmc/settings/GUIWindowSettingsCategory.cpp
> ++++ b/xbmc/settings/GUIWindowSettingsCategory.cpp
> +@@ -1271,7 +1271,7 @@ void CGUIWindowSettingsCategory::OnSettingChanged(CBaseSettingControl *pSettingC
> + if (!g_application.StartWebServer())
> + {
> + CGUIDialogOK::ShowAndGetInput(g_localizeStrings.Get(33101), "", g_localizeStrings.Get(33100), "");
> +- g_guiSettings.SetBool("services.webserver", false);
> ++ g_guiSettings.SetBool("services.webserver", true);
> + }
> + }
> + else if (strSetting.Equals("services.webserverusername") || strSetting.Equals("services.webserverpassword"))
> +@@ -1292,7 +1292,7 @@ void CGUIWindowSettingsCategory::OnSettingChanged(CBaseSettingControl *pSettingC
> + else
> + {
> + g_application.StopAirplayServer(true);
> +- g_guiSettings.SetBool("services.airplay", false);
> ++ g_guiSettings.SetBool("services.airplay", true);
> + CZeroconf::GetInstance()->Stop();
> + }
> + #endif
> +--
> +1.7.10.4
-- snip --
Thanks
Martin
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH v8] xbmc: new package
2014-02-23 12:29 [Buildroot] [PATCH v8] xbmc: new package Maxime Hadjinlian
2014-03-01 16:17 ` Martin Bark
@ 2014-03-03 18:09 ` Yann E. MORIN
2014-03-19 23:57 ` Yann E. MORIN
2 siblings, 0 replies; 6+ messages in thread
From: Yann E. MORIN @ 2014-03-03 18:09 UTC (permalink / raw)
To: buildroot
Maxime, All,
On 2014-02-23 13:29 +0100, Maxime Hadjinlian spake thusly:
> XBMC is an award-winning free and open source (GPL) software media player and
> entertainment hub for digital media.
[--SNIP--]
> diff --git a/package/xbmc/Config.in b/package/xbmc/Config.in
> new file mode 100644
> index 0000000..c38f82b
> --- /dev/null
> +++ b/package/xbmc/Config.in
> @@ -0,0 +1,191 @@
[--SNIP--]
> +menuconfig BR2_PACKAGE_XBMC
> + bool "xbmc"
[--SNIP--]
> + depends on BR2_TOOLCHAIN_USES_GLIBC && BR2_INSTALL_LIBSTDCPP
[--SNIP--]
> + depends on BR2_PACKAGE_HAS_OPENGL_EGL || BR2_PACKAGE_HAS_OPENGL_ES
> +config BR2_PACKAGE_XBMC_AVAHI
> + bool "avahi"
> + # libdaemon uses fork()
> + depends on BR2_USE_MMU
> + depends on BR2_TOOLCHAIN_HAS_THREADS
Are those two 'depends' really needed? XBMC depends on glibc, which
always has threads, and is only available for architectures with an MMU.
(Note: as discussed with Gustavo on IRC, glibc is not marked 'depends on
MMU', but should be. Patch in the pipe...)
So:
- no depends on MMU, THREADS, IPv6, LARGEFILES
- no comment stating so
Ditto for all the options, of course...
[--SNIP--]
> +config BR2_PACKAGE_XBMC_LIBNFS
> + bool "nfs"
> + select BR2_PACKAGE_LIBNFS
> + depends on BR2_LARGEFILE
> + depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC
Does it work with libtirpc?
If not, could it be easily made to?
[--SNIP--]
> diff --git a/package/xbmc/S50xbmc b/package/xbmc/S50xbmc
> new file mode 100755
> index 0000000..ce51f7e
> --- /dev/null
> +++ b/package/xbmc/S50xbmc
> @@ -0,0 +1,41 @@
> +#!/bin/sh
> +#
> +# Starts XBMC.
> +#
> +
> +BIN_NAME=xbmc.bin
> +XBMC=/usr/lib/xbmc/$BIN_NAME
> +XBMC_ARGS="--standalone -fs -n"
> +PIDFILE=/var/run/xbmc.pid
If here you'd add something like:
[ -f /etc/defaults/xbmc ] && . /etc/defaults/xbmc
Then you'd be able to provide a /etc/defaults/xbmc that, for the RPi,
would contain:
export LD_PRELOAD=/usr/lib/libcoffi.so
And install that in the if-rpi block below.
> +start() {
> + echo -n "Starting XBMC: "
> + start-stop-daemon -S -q -p $PIDFILE --exec $XBMC -- $XBMC_ARGS
Don't forget the comment from Martin Bark about going to background and
writing the PID file.
> +exit $?
Unneeded, that's always the behaviour of a shell script.
[--SNIP two patches--]
> diff --git a/package/xbmc/xbmc.mk b/package/xbmc/xbmc.mk
> new file mode 100644
> index 0000000..d05c2f5
> --- /dev/null
> +++ b/package/xbmc/xbmc.mk
> @@ -0,0 +1,163 @@
> +################################################################################
> +#
> +# xbmc
> +#
> +################################################################################
> +
> +XBMC_VERSION = 12.3-Frodo
> +XBMC_SITE = $(call github,xbmc,xbmc,$(XBMC_VERSION))
> +XBMC_LICENSE = GPLv2
> +XBMC_LICENSE_FILES = LICENSE.GPL
> +XBMC_DEPENDENCIES = host-gperf host-lzo host-sdl_image host-swig
> +XBMC_DEPENDENCIES += boost bzip2 expat flac fontconfig freetype jasper jpeg \
> + libass libcdio libcurl libfribidi libgcrypt libmad libmodplug libmpeg2 \
> + libogg libplist libpng libsamplerate libungif libvorbis libxml2 lzo ncurses \
> + openssl pcre python readline sqlite taglib tiff tinyxml yajl zlib
> +
> +XBMC_CONF_ENV = \
> + PYTHON_VERSION="$(PYTHON_VERSION_MAJOR)" \
> + PYTHON_LDFLAGS="-lpython$(PYTHON_VERSION_MAJOR) -lpthread -ldl -lutil -lm" \
> + PYTHON_CPPFLAGS="-I$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR)" \
> + PYTHON_SITE_PKG="$(STAGING_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages" \
> + PYTHON_NOVERSIONCHECK="no-check" \
> + TEXTUREPACKER_NATIVE_ROOT="$(HOST_DIR)/usr"
> +
> +XBMC_CONF_OPT += \
> + --disable-alsa \
> + --disable-crystalhd \
> + --disable-debug \
> + --disable-dvdcss \
> + --disable-gl \
> + --disable-hal \
> + --disable-joystick \
> + --disable-mysql \
> + --disable-openmax \
> + --disable-optical-drive \
> + --disable-projectm \
> + --disable-pulse \
> + --disable-sdl \
> + --disable-ssh \
> + --disable-vaapi \
> + --disable-vdpau \
> + --disable-vtbdecoder \
> + --disable-x11 \
> + --disable-xrandr \
Do you plan on sending a follow-up patch to add support for the
currently-disabled options (alsa, dvdcss, hal...), or is it
set-in-stone?
> + --enable-gles \
> + --enable-optimizations
> +
> +ifeq ($(BR2_PACKAGE_RPI_USERLAND),y)
> +XBMC_DEPENDENCIES += rpi-userland
> +XBMC_CONF_OPT += --with-platform=raspberry-pi --enable-player=omxplayer
> +XBMC_CONF_ENV += INCLUDES="-I$(STAGING_DIR)/usr/include/interface/vcos/pthreads \
> + -I$(STAGING_DIR)/usr/include/interface/vmcs_host/linux"
Here, create/append to /etc/defaults/xbmc to use libcoffi.so.
Or as part of a new if-libcoffi block, maybe.
> +# Add HOST_DIR to PATH for codegenerator.mk to find swig
> +define XBMC_BOOTSTRAP
> + cd $(@D) && PATH=$(HOST_PATH) ./bootstrap
Be prepared to adapt when Samuel's PATH rework is applied. ;-)
> +endef
> +XBMC_PRE_CONFIGURE_HOOKS += XBMC_BOOTSTRAP
> +
> +define XBMC_CLEAN_UNUSED_ADDONS
> + rm -Rf $(TARGET_DIR)/usr/share/xbmc/addons/screensaver.rsxs.plasma
> + rm -Rf $(TARGET_DIR)/usr/share/xbmc/addons/visualization.milkdrop
> + rm -Rf $(TARGET_DIR)/usr/share/xbmc/addons/visualization.projectm
> + rm -Rf $(TARGET_DIR)/usr/share/xbmc/addons/visualization.itunes
> +endef
> +XBMC_POST_INSTALL_TARGET_HOOKS += XBMC_CLEAN_UNUSED_ADDONS
Why do you forcibly disable those add-ons? Can it be a config option?
> +define XBMC_CLEAN_CONFLUENCE_SKIN
> + find $(TARGET_DIR)/usr/share/xbmc/addons/skin.confluence/media -name *.png -delete
> + find $(TARGET_DIR)/usr/share/xbmc/addons/skin.confluence/media -name *.jpg -delete
> +endef
> +XBMC_POST_INSTALL_TARGET_HOOKS += XBMC_CLEAN_CONFLUENCE_SKIN
Are they not needed at all?
[--SNIP--]
> diff --git a/package/xbmc/xbmc.service b/package/xbmc/xbmc.service
> new file mode 100644
> index 0000000..3fe5895
> --- /dev/null
> +++ b/package/xbmc/xbmc.service
> @@ -0,0 +1,12 @@
Of course, for systemd, you'd have to use a different way to pass use of
libcoffi.so. Is it possible to add extra env in a unit file? :-/
> +[Unit]
> +Description = XBMC media center
> +After = network.target
> +
> +[Service]
> +Type = simple
> +ExecStart = /usr/lib/xbmc/xbmc.bin --standalone -fs -n
> +Restart = on-failure
> +
> +[Install]
> +WantedBy = multi-user.target
> +
No trailing line if not needed.
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH v8] xbmc: new package
2014-02-23 12:29 [Buildroot] [PATCH v8] xbmc: new package Maxime Hadjinlian
2014-03-01 16:17 ` Martin Bark
2014-03-03 18:09 ` Yann E. MORIN
@ 2014-03-19 23:57 ` Yann E. MORIN
2014-03-20 8:25 ` Maxime Hadjinlian
2 siblings, 1 reply; 6+ messages in thread
From: Yann E. MORIN @ 2014-03-19 23:57 UTC (permalink / raw)
To: buildroot
Maxime, All,
On 2014-02-23 13:29 +0100, Maxime Hadjinlian spake thusly:
> XBMC is an award-winning free and open source (GPL) software media player and
> entertainment hub for digital media.
Are you still working on this?
If that can help you, I've started accumulating a few of the suggested
changes in a branch in my tree:
git://gitorious.org/buildroot/buildroot.git yem/xbmc
091d9b6 xbmc: new package
6547d40 package/xbmc: background XBMC and store PID in startup script
296d6b8 package/xbmc: cleanup dependencies
I've made separate patches so we can keep track of the changes on top of
your initial patch, but they should of course all be eventually folded in
a single patch before final submission (or you can do it now in your tree
if you want; just keep the SoB tags, please.)
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH v8] xbmc: new package
2014-03-19 23:57 ` Yann E. MORIN
@ 2014-03-20 8:25 ` Maxime Hadjinlian
2014-03-20 17:38 ` Yann E. MORIN
0 siblings, 1 reply; 6+ messages in thread
From: Maxime Hadjinlian @ 2014-03-20 8:25 UTC (permalink / raw)
To: buildroot
Hi Yann, all
On Thu, Mar 20, 2014 at 12:57 AM, Yann E. MORIN <yann.morin.1998@free.fr> wrote:
> Maxime, All,
>
> On 2014-02-23 13:29 +0100, Maxime Hadjinlian spake thusly:
>> XBMC is an award-winning free and open source (GPL) software media player and
>> entertainment hub for digital media.
>
> Are you still working on this?
Yup, I am truly sorry with the lack of communication. I have been
under an ocean of work and as such have really no energy left to hack
(and my wife would literally murder me at this point).
*BUT* I was thinking of working on this either during my lunch hour or
friday night since I have the whole evening to myself.
>
> If that can help you, I've started accumulating a few of the suggested
> changes in a branch in my tree:
> git://gitorious.org/buildroot/buildroot.git yem/xbmc
>
> 091d9b6 xbmc: new package
> 6547d40 package/xbmc: background XBMC and store PID in startup script
> 296d6b8 package/xbmc: cleanup dependencies
>
> I've made separate patches so we can keep track of the changes on top of
> your initial patch, but they should of course all be eventually folded in
> a single patch before final submission (or you can do it now in your tree
> if you want; just keep the SoB tags, please.)
Oh shiny ! I'll have a look at them and merge them. I had already
cleanup the dependency but I'll look at your patch to check if I
didn't forgot anything.
From my point of view, I have left to do :
- The removal of the patch regarding the RPi specific settings
- Add them thought and advancedsettings.xml which will be
installed with XBMC if we are building for an RPi.
Have I missed anything ?
>
> Regards,
> Yann E. MORIN.
>
> --
> .-----------------.--------------------.------------------.--------------------.
> | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
> | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
> | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
> | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
> '------------------------------^-------^------------------^--------------------'
Again sorry for the lack of communication and sudden disappearance.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH v8] xbmc: new package
2014-03-20 8:25 ` Maxime Hadjinlian
@ 2014-03-20 17:38 ` Yann E. MORIN
0 siblings, 0 replies; 6+ messages in thread
From: Yann E. MORIN @ 2014-03-20 17:38 UTC (permalink / raw)
To: buildroot
Maxime, All,
On 2014-03-20 09:25 +0100, Maxime Hadjinlian spake thusly:
> On Thu, Mar 20, 2014 at 12:57 AM, Yann E. MORIN <yann.morin.1998@free.fr> wrote:
> > On 2014-02-23 13:29 +0100, Maxime Hadjinlian spake thusly:
> >> XBMC is an award-winning free and open source (GPL) software media player and
> >> entertainment hub for digital media.
> >
> > Are you still working on this?
> Yup, I am truly sorry with the lack of communication. I have been
> under an ocean of work and as such have really no energy left to hack
> (and my wife would literally murder me at this point).
Hey, no problem. We all have real lives to deal with. ;-)
> *BUT* I was thinking of working on this either during my lunch hour or
> friday night since I have the whole evening to myself.
Do not feel like this should be a burden on your shoulders. Take it
along when you can and want. Doing something because you feel you have
to is the best way to get burnt.
> > If that can help you, I've started accumulating a few of the suggested
> > changes in a branch in my tree:
> > git://gitorious.org/buildroot/buildroot.git yem/xbmc
[--SNIP--]
> From my point of view, I have left to do :
> - The removal of the patch regarding the RPi specific settings
> - Add them thought and advancedsettings.xml which will be
> installed with XBMC if we are building for an RPi.
>
> Have I missed anything ?
No, this is basically the review you had so far.
I can see improvements, but that can easily go in followup patches.
> Again sorry for the lack of communication and sudden disappearance.
No problem! Just ensure you enjoy doing that, and not feel compelled to.
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2014-03-20 17:38 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-02-23 12:29 [Buildroot] [PATCH v8] xbmc: new package Maxime Hadjinlian
2014-03-01 16:17 ` Martin Bark
2014-03-03 18:09 ` Yann E. MORIN
2014-03-19 23:57 ` Yann E. MORIN
2014-03-20 8:25 ` Maxime Hadjinlian
2014-03-20 17:38 ` Yann E. MORIN
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.