All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v7 0/4] Introducing XBMC
@ 2014-02-17 23:37 Maxime Hadjinlian
  2014-02-17 23:37 ` [Buildroot] [PATCH v7 1/4] sdl: add host version Maxime Hadjinlian
                   ` (4 more replies)
  0 siblings, 5 replies; 21+ messages in thread
From: Maxime Hadjinlian @ 2014-02-17 23:37 UTC (permalink / raw)
  To: buildroot

Here we go again with a new round.
Again most of the changes are located within the XBMC patch.

Maxime Hadjinlian (4):
  sdl: add host version
  sdl_image: add host version
  infra: Introduce BR2_HOST_NEEDS_JAVA
  xbmc: new package

 Config.in                                          |   5 +
 package/Config.in                                  |   1 +
 package/sdl/sdl.mk                                 |   4 +-
 package/sdl_image/sdl_image.mk                     |  11 ++
 package/xbmc/Config.in                             | 165 ++++++++++++++++++++
 package/xbmc/S50xbmc                               |  41 +++++
 package/xbmc/xbmc-0001-Fixup-include-path.patch    |  81 ++++++++++
 .../xbmc-0002-RaspberryPi-Default-Settings.patch   | 168 +++++++++++++++++++++
 package/xbmc/xbmc.mk                               | 149 ++++++++++++++++++
 package/xbmc/xbmc.service                          |  12 ++
 support/dependencies/dependencies.sh               |   8 +
 11 files changed, 644 insertions(+), 1 deletion(-)
 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

--
1.8.5.3

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Buildroot] [PATCH v7 1/4] sdl: add host version
  2014-02-17 23:37 [Buildroot] [PATCH v7 0/4] Introducing XBMC Maxime Hadjinlian
@ 2014-02-17 23:37 ` Maxime Hadjinlian
  2014-02-18 16:13   ` Thomas Petazzoni
  2014-02-19 15:12   ` Peter Korsgaard
  2014-02-17 23:37 ` [Buildroot] [PATCH v7 2/4] sdl_image: " Maxime Hadjinlian
                   ` (3 subsequent siblings)
  4 siblings, 2 replies; 21+ messages in thread
From: Maxime Hadjinlian @ 2014-02-17 23:37 UTC (permalink / raw)
  To: buildroot

Host version is needed to build xbmc

Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
Changes v6 -> v7:
  - Add one empty line for clarity
Changes v5 -> v6:
  - None
Changes v4 -> v5:
  - None
Changes v3 -> v4:
  - None
Changes v2 -> v3:
  - None
Changes v1 -> v2:
  - None
---
 package/sdl/sdl.mk | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/package/sdl/sdl.mk b/package/sdl/sdl.mk
index ba5fbca..bc48d35 100644
--- a/package/sdl/sdl.mk
+++ b/package/sdl/sdl.mk
@@ -18,8 +18,9 @@ define SDL_RUN_AUTOGEN
 endef
 
 SDL_POST_PATCH_HOOKS += SDL_RUN_AUTOGEN
-SDL_DEPENDENCIES += host-automake host-autoconf host-libtool
+HOST_SDL_POST_PATCH_HOOKS += SDL_RUN_AUTOGEN
 
+SDL_DEPENDENCIES += host-automake host-autoconf host-libtool
 
 ifeq ($(BR2_PACKAGE_SDL_FBCON),y)
 SDL_CONF_OPT += --enable-video-fbcon=yes
@@ -80,3 +81,4 @@ endef
 SDL_POST_INSTALL_STAGING_HOOKS += SDL_FIXUP_SDL_CONFIG
 
 $(eval $(autotools-package))
+$(eval $(host-autotools-package))
-- 
1.8.5.3

^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [Buildroot] [PATCH v7 2/4] sdl_image: add host version
  2014-02-17 23:37 [Buildroot] [PATCH v7 0/4] Introducing XBMC Maxime Hadjinlian
  2014-02-17 23:37 ` [Buildroot] [PATCH v7 1/4] sdl: add host version Maxime Hadjinlian
@ 2014-02-17 23:37 ` Maxime Hadjinlian
  2014-02-18 16:11   ` Thomas Petazzoni
  2014-02-19 15:14   ` Peter Korsgaard
  2014-02-17 23:37 ` [Buildroot] [PATCH v7 3/4] infra: Introduce BR2_HOST_NEEDS_JAVA Maxime Hadjinlian
                   ` (2 subsequent siblings)
  4 siblings, 2 replies; 21+ messages in thread
From: Maxime Hadjinlian @ 2014-02-17 23:37 UTC (permalink / raw)
  To: buildroot

Host version is needed to build xbmc

Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
Changes v6 -> v7:
  - None
Changes v5 -> v6:
  - None
Changes v4 -> v5:
  - None
Changes v3 -> v4:
  - None
Changes v2 -> v3:
  - None
Changes v1 -> v2:
  - None
---
 package/sdl_image/sdl_image.mk | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/package/sdl_image/sdl_image.mk b/package/sdl_image/sdl_image.mk
index ba9751d..05b9a1f 100644
--- a/package/sdl_image/sdl_image.mk
+++ b/package/sdl_image/sdl_image.mk
@@ -38,4 +38,15 @@ SDL_IMAGE_DEPENDENCIES = sdl \
 	$(if $(BR2_PACKAGE_SDL_IMAGE_TIFF),tiff) \
 	$(if $(BR2_PACKAGE_SDL_IMAGE_WEBP),webp)
 
+HOST_SDL_IMAGE_CONF_OPT = --with-sdl-prefix=$(HOST_DIR)/usr \
+                --with-sdl-exec-prefix=$(HOST_DIR)/usr \
+                --disable-sdltest \
+                --disable-static \
+                --disable-jpg-shared \
+                --disable-png-shared \
+                --disable-tif-shared \
+
+HOST_SDL_IMAGE_DEPENDENCIES = host-libjpeg host-libpng host-sdl
+
 $(eval $(autotools-package))
+$(eval $(host-autotools-package))
-- 
1.8.5.3

^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [Buildroot] [PATCH v7 3/4] infra: Introduce BR2_HOST_NEEDS_JAVA
  2014-02-17 23:37 [Buildroot] [PATCH v7 0/4] Introducing XBMC Maxime Hadjinlian
  2014-02-17 23:37 ` [Buildroot] [PATCH v7 1/4] sdl: add host version Maxime Hadjinlian
  2014-02-17 23:37 ` [Buildroot] [PATCH v7 2/4] sdl_image: " Maxime Hadjinlian
@ 2014-02-17 23:37 ` Maxime Hadjinlian
  2014-02-18 16:18   ` Thomas Petazzoni
  2014-02-19 15:19   ` Peter Korsgaard
  2014-02-17 23:37 ` [Buildroot] [PATCH v7 4/4] xbmc: new package Maxime Hadjinlian
  2014-02-18 16:57 ` [Buildroot] [PATCH v7 0/4] Introducing XBMC Martin Bark
  4 siblings, 2 replies; 21+ messages in thread
From: Maxime Hadjinlian @ 2014-02-17 23:37 UTC (permalink / raw)
  To: buildroot

XBMC needs Java on the host in order to build, because it  uses a
code-generator which is build in two phases:
In the first phase SWIG is used to parse C++ header files that define the API.
SWIG outputs an XML file that contains a complete description of the structure
of the API.
In the second phase, the XML file is ingested by a Groovy (Java) program that
then creates C++ code that forms the bridge to the scripting language (Python).

The second phase is why we need java on the host.

You can learn more at the XBMC's wiki:
http://wiki.xbmc.org/index.php?title=Codegeneration#How_it_works

In order to check that, this patch introduce this mechanism in
dependencies.sh
It also defines the variable in Config.in

Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
---
Changes v6 -> v7:
  - Fixes old use of BUILDROOT_CONFIG instead of BR2_CONFIG
  - Add definition of the variable to Config.in
Changes v5 -> v6:
  - Remove useless loop (Thomas Petazzoni)
  - Thanks to Martin Bark idea, change this patch to have a non package
    specific variable.
Changes v1 -> v5:
  - Patch non existant before
---
 Config.in                            | 5 +++++
 support/dependencies/dependencies.sh | 8 ++++++++
 2 files changed, 13 insertions(+)

diff --git a/Config.in b/Config.in
index bcfefc7..8afd156 100644
--- a/Config.in
+++ b/Config.in
@@ -18,6 +18,11 @@ config BR2_EXTERNAL
 	string
 	option env="BR2_EXTERNAL"
 
+# Hidden boolean selected by packages in need of Java in order to build
+# (example: xbmc)
+config BR2_HOST_NEEDS_JAVA
+	bool
+
 # Hidden boolean selected by pre-built packages for x86, when they
 # need to run on x86-64 machines (example: pre-built external
 # toolchains, binary tools like SAM-BA, etc.).
diff --git a/support/dependencies/dependencies.sh b/support/dependencies/dependencies.sh
index 0e7e1fa..05039ea 100755
--- a/support/dependencies/dependencies.sh
+++ b/support/dependencies/dependencies.sh
@@ -191,6 +191,14 @@ if grep -q ^BR2_PACKAGE_CLASSPATH=y $BR2_CONFIG ; then
 	done
 fi
 
+if grep -q ^BR2_HOST_NEEDS_JAVA=y $BR2_CONFIG ; then
+	if ! which java > /dev/null ; then
+		echo >&2
+		echo "You must install '$prog' on your build machine" >&2
+		exit 1
+	fi
+fi
+
 if grep -q ^BR2_HOSTARCH_NEEDS_IA32_LIBS=y $BR2_CONFIG ; then
 	if test ! -f /lib/ld-linux.so.2 ; then
 		echo
-- 
1.8.5.3

^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [Buildroot] [PATCH v7 4/4] xbmc: new package
  2014-02-17 23:37 [Buildroot] [PATCH v7 0/4] Introducing XBMC Maxime Hadjinlian
                   ` (2 preceding siblings ...)
  2014-02-17 23:37 ` [Buildroot] [PATCH v7 3/4] infra: Introduce BR2_HOST_NEEDS_JAVA Maxime Hadjinlian
@ 2014-02-17 23:37 ` Maxime Hadjinlian
  2014-02-18 16:38   ` Thomas Petazzoni
  2014-02-18 16:57 ` [Buildroot] [PATCH v7 0/4] Introducing XBMC Martin Bark
  4 siblings, 1 reply; 21+ messages in thread
From: Maxime Hadjinlian @ 2014-02-17 23:37 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 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                             | 165 ++++++++++++++++++++
 package/xbmc/S50xbmc                               |  41 +++++
 package/xbmc/xbmc-0001-Fixup-include-path.patch    |  81 ++++++++++
 .../xbmc-0002-RaspberryPi-Default-Settings.patch   | 168 +++++++++++++++++++++
 package/xbmc/xbmc.mk                               | 149 ++++++++++++++++++
 package/xbmc/xbmc.service                          |  12 ++
 7 files changed, 617 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 fca61d6..7d8fd2e 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..23650ed
--- /dev/null
+++ b/package/xbmc/Config.in
@@ -0,0 +1,165 @@
+comment "xbmc requires an OpenGL-capable backend"
+	depends on !(BR2_PACKAGE_HAS_OPENGL_EGL && BR2_PACKAGE_HAS_OPENGL_ES)
+
+# External toolchain are required because of a missing bitdefs.h
+comment "xbmc needs an (e)glibc external toolchain w/ C++, wchar"
+	depends on !(BR2_TOOLCHAIN_USES_GLIBC && BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR) || BR2_TOOLCHAIN_BUILDROOT
+
+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_INSTALL_LIBSTDCPP && BR2_USE_WCHAR && BR2_TOOLCHAIN_USES_GLIBC
+	depends on BR2_PACKAGE_HAS_OPENGL_EGL || BR2_PACKAGE_HAS_OPENGL_ES
+	depends on !BR2_TOOLCHAIN_BUILDROOT
+	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"
+	select BR2_PACKAGE_AVAHI
+	select BR2_PACKAGE_AVAHI_DAEMON
+	help
+	  Enable Avahi support.
+	  Select this if you want XBMC to support Bonjour protocol.
+
+config BR2_PACKAGE_XBMC_DBUS
+	bool "dbus"
+	select BR2_PACKAGE_DBUS
+	help
+	  Enable D-Bus support
+
+config BR2_PACKAGE_XBMC_LIBBLURAY
+	bool "libbluray"
+	select BR2_PACKAGE_LIBBLURAY
+	help
+	  Enable Blu-ray input support.
+	  Select this if you want to play back Blu-ray content.
+
+config BR2_PACKAGE_XBMC_LIBCEC
+	bool "libcec"
+	select BR2_PACKAGE_LIBCEC
+	depends on BR2_INSTALL_LIBSTDCPP
+	depends on BR2_USE_WCHAR
+	help
+	  Enable CEC (Consumer Electronics Control) support.
+	  Select this if you want XBMC to support HDMI CEC.
+
+comment "libcec requires a toolchain w/ C++, wchar support"
+	depends on !(BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR)
+
+config BR2_PACKAGE_XBMC_LIBMICROHTTPD
+	bool "libmicrohttpd"
+	select BR2_PACKAGE_LIBMICROHTTPD
+	help
+	  Enable webserver feature
+
+config BR2_PACKAGE_XBMC_LIBNFS
+	bool "libnfs"
+	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 "librtmp"
+	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 "libshairport"
+	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 "libsmbclient"
+	select BR2_PACKAGE_SAMBA
+	select BR2_PACKAGE_SAMBA_LIBSMBCLIENT
+	help
+	  Enable Samba support
+
+config BR2_PACKAGE_XBMC_LIBTHEORA
+	bool "libtheora"
+	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 "libusb"
+	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..70cd320
--- /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..f6aacc3
--- /dev/null
+++ b/package/xbmc/xbmc.mk
@@ -0,0 +1,149 @@
+################################################################################
+#
+# 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-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)"
+XBMC_CONF_ENV += PYTHON_LDFLAGS="-L$(STAGING_DIR)/usr/lib/ -lpython$(PYTHON_VERSION_MAJOR) -lpthread -ldl -lutil -lm"
+XBMC_CONF_ENV += PYTHON_CPPFLAGS="-I$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR)"
+XBMC_CONF_ENV += PYTHON_SITE_PKG="$(STAGING_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages"
+XBMC_CONF_ENV += PYTHON_NOVERSIONCHECK="no-check"
+XBMC_CONF_ENV += 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
+# TODO: java binary from user's machine is currently used...
+define XBMC_BOOTSTRAP
+	cd $(@D) && PATH="$(HOST_DIR)/usr/bin/:$(PATH)" ./bootstrap
+endef
+
+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
+
+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
+
+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
+
+XBMC_PRE_CONFIGURE_HOOKS += XBMC_BOOTSTRAP
+XBMC_POST_INSTALL_TARGET_HOOKS += XBMC_INSTALL_ETC
+XBMC_POST_INSTALL_TARGET_HOOKS += XBMC_CLEAN_UNUSED_ADDONS
+XBMC_POST_INSTALL_TARGET_HOOKS += XBMC_CLEAN_CONFLUENCE_SKIN
+
+$(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] 21+ messages in thread

* [Buildroot] [PATCH v7 2/4] sdl_image: add host version
  2014-02-17 23:37 ` [Buildroot] [PATCH v7 2/4] sdl_image: " Maxime Hadjinlian
@ 2014-02-18 16:11   ` Thomas Petazzoni
  2014-02-19 15:14     ` Peter Korsgaard
  2014-02-19 15:14   ` Peter Korsgaard
  1 sibling, 1 reply; 21+ messages in thread
From: Thomas Petazzoni @ 2014-02-18 16:11 UTC (permalink / raw)
  To: buildroot

Dear Maxime Hadjinlian,

On Tue, 18 Feb 2014 00:37:11 +0100, Maxime Hadjinlian wrote:

> diff --git a/package/sdl_image/sdl_image.mk b/package/sdl_image/sdl_image.mk
> index ba9751d..05b9a1f 100644
> --- a/package/sdl_image/sdl_image.mk
> +++ b/package/sdl_image/sdl_image.mk
> @@ -38,4 +38,15 @@ SDL_IMAGE_DEPENDENCIES = sdl \
>  	$(if $(BR2_PACKAGE_SDL_IMAGE_TIFF),tiff) \
>  	$(if $(BR2_PACKAGE_SDL_IMAGE_WEBP),webp)
>  
> +HOST_SDL_IMAGE_CONF_OPT = --with-sdl-prefix=$(HOST_DIR)/usr \
> +                --with-sdl-exec-prefix=$(HOST_DIR)/usr \
> +                --disable-sdltest \
> +                --disable-static \
> +                --disable-jpg-shared \
> +                --disable-png-shared \
> +                --disable-tif-shared \

This is nitpicking, but we normally intend this with one tab, do not
have a backslash on the last line, and also intend the first line. So,
something like:

HOST_SDL_IMAGE_CONF_OPT = \
	--with-sdl-prefix=... \
	--foo \
	--bar \
	--baz

Thanks,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Buildroot] [PATCH v7 1/4] sdl: add host version
  2014-02-17 23:37 ` [Buildroot] [PATCH v7 1/4] sdl: add host version Maxime Hadjinlian
@ 2014-02-18 16:13   ` Thomas Petazzoni
  2014-02-18 16:41     ` Maxime Hadjinlian
  2014-02-19 15:12   ` Peter Korsgaard
  1 sibling, 1 reply; 21+ messages in thread
From: Thomas Petazzoni @ 2014-02-18 16:13 UTC (permalink / raw)
  To: buildroot

Dear Maxime Hadjinlian,

On Tue, 18 Feb 2014 00:37:10 +0100, Maxime Hadjinlian wrote:

> diff --git a/package/sdl/sdl.mk b/package/sdl/sdl.mk
> index ba5fbca..bc48d35 100644
> --- a/package/sdl/sdl.mk
> +++ b/package/sdl/sdl.mk
> @@ -18,8 +18,9 @@ define SDL_RUN_AUTOGEN
>  endef
>  
>  SDL_POST_PATCH_HOOKS += SDL_RUN_AUTOGEN
> -SDL_DEPENDENCIES += host-automake host-autoconf host-libtool
> +HOST_SDL_POST_PATCH_HOOKS += SDL_RUN_AUTOGEN

This should be a pre-configure hook, as we discussed recently on the
list.

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Buildroot] [PATCH v7 3/4] infra: Introduce BR2_HOST_NEEDS_JAVA
  2014-02-17 23:37 ` [Buildroot] [PATCH v7 3/4] infra: Introduce BR2_HOST_NEEDS_JAVA Maxime Hadjinlian
@ 2014-02-18 16:18   ` Thomas Petazzoni
  2014-02-18 16:41     ` Maxime Hadjinlian
  2014-02-19 15:19   ` Peter Korsgaard
  1 sibling, 1 reply; 21+ messages in thread
From: Thomas Petazzoni @ 2014-02-18 16:18 UTC (permalink / raw)
  To: buildroot

Dear Maxime Hadjinlian,

On Tue, 18 Feb 2014 00:37:12 +0100, Maxime Hadjinlian wrote:
> XBMC needs Java on the host in order to build, because it  uses a
> code-generator which is build in two phases:
> In the first phase SWIG is used to parse C++ header files that define the API.
> SWIG outputs an XML file that contains a complete description of the structure
> of the API.
> In the second phase, the XML file is ingested by a Groovy (Java) program that
> then creates C++ code that forms the bridge to the scripting language (Python).
> 
> The second phase is why we need java on the host.

People inventing such horrible code generation flows really have a
problem. They should probably talk to M-x doctor.

> +# Hidden boolean selected by packages in need of Java in order to build
> +# (example: xbmc)
> +config BR2_HOST_NEEDS_JAVA
> +	bool

Do we need a kconfig bool for this? We have the same situation for
classpath, and we haven't introduced a specific kconfig bool for it.

Moreover, I am not sure BR2_HOST_NEEDS_JAVA is the right name. It's not
really the host that needs Java, it's the compilation process that
requires a host Java. So BR2_NEEDS_HOST_JAVA is probably more
technically correct.

Thanks,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Buildroot] [PATCH v7 4/4] xbmc: new package
  2014-02-17 23:37 ` [Buildroot] [PATCH v7 4/4] xbmc: new package Maxime Hadjinlian
@ 2014-02-18 16:38   ` Thomas Petazzoni
  2014-02-18 17:02     ` Maxime Hadjinlian
  0 siblings, 1 reply; 21+ messages in thread
From: Thomas Petazzoni @ 2014-02-18 16:38 UTC (permalink / raw)
  To: buildroot

Dear Maxime Hadjinlian,

On Tue, 18 Feb 2014 00:37:13 +0100, Maxime Hadjinlian wrote:

> diff --git a/package/xbmc/Config.in b/package/xbmc/Config.in
> new file mode 100644
> index 0000000..23650ed
> --- /dev/null
> +++ b/package/xbmc/Config.in
> @@ -0,0 +1,165 @@
> +comment "xbmc requires an OpenGL-capable backend"
> +	depends on !(BR2_PACKAGE_HAS_OPENGL_EGL && BR2_PACKAGE_HAS_OPENGL_ES)

I would make the comment more specific:

comment "xbmc requires an OpenGL ES and EGL backend"

> +# External toolchain are required because of a missing bitdefs.h
> +comment "xbmc needs an (e)glibc external toolchain w/ C++, wchar"
> +	depends on !(BR2_TOOLCHAIN_USES_GLIBC && BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR) || BR2_TOOLCHAIN_BUILDROOT

This dependency does not make much sense to me. Your comment mentions
"external toolchain", but it is not reflected by the dependencies.
Moreover, we now have glibc/eglibc support in the internal backend, so
I don't really see how there could be a difference between internal and
external here. Additionally, if the C library is glibc or eglibc, then
you are guaranteed to have wchar support. So if what you need is
eglibc/glibc, then please do:

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

Wow! None of these dependencies are optional?

> +	depends on BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR && BR2_TOOLCHAIN_USES_GLIBC

Please update according to the discussion above.

> +	depends on BR2_PACKAGE_HAS_OPENGL_EGL || BR2_PACKAGE_HAS_OPENGL_ES
> +	depends on !BR2_TOOLCHAIN_BUILDROOT

Ditto.

> +	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"
> +	select BR2_PACKAGE_AVAHI
> +	select BR2_PACKAGE_AVAHI_DAEMON

Missing MMU + thread dependency.

> +	help
> +	  Enable Avahi support.
> +	  Select this if you want XBMC to support Bonjour protocol.
> +
> +config BR2_PACKAGE_XBMC_DBUS
> +	bool "dbus"
> +	select BR2_PACKAGE_DBUS

Missing MMU + thread dependency.

> +	help
> +	  Enable D-Bus support
> +
> +config BR2_PACKAGE_XBMC_LIBBLURAY
> +	bool "libbluray"
> +	select BR2_PACKAGE_LIBBLURAY

Missing thread dependency.

> +	help
> +	  Enable Blu-ray input support.
> +	  Select this if you want to play back Blu-ray content.
> +
> +config BR2_PACKAGE_XBMC_LIBCEC
> +	bool "libcec"
> +	select BR2_PACKAGE_LIBCEC
> +	depends on BR2_INSTALL_LIBSTDCPP
> +	depends on BR2_USE_WCHAR

I think we should chose: either we replicate the toolchain dependencies
of the packages we select (as you're doing here for libcec), or we do
not. For example, in the Avahi example above, you did not replicate the
MMU and thread dependencies of Avahi.

Even though those dependencies are not needed now (because glibc is
only available on MMU-capable platforms, always provides thread
support), they might be needed later on, for example once XBMC becomes
buildable with uClibc. Our policy is therefore to always replicate
those dependencies, though I admit for this package, it's a little bit
annoying because we know that XBMC as a whole will never build on
non-MMU platforms, or without thread support.

Maybe others could comment on this?

> +	help
> +	  Enable CEC (Consumer Electronics Control) support.
> +	  Select this if you want XBMC to support HDMI CEC.
> +
> +comment "libcec requires a toolchain w/ C++, wchar support"
> +	depends on !(BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR)
> +
> +config BR2_PACKAGE_XBMC_LIBMICROHTTPD
> +	bool "libmicrohttpd"

Shouldn't this be named "web server" or something like this? What the
user really cares about is not the name of the library needed to enable
the feature, but rather the feature itself: the fact that this is going
to enable a web server in XBMC, to do something.

I guess the other sub-options should be reviewed in the light of this.

> +	select BR2_PACKAGE_LIBMICROHTTPD

Missing thread dependency.

> +	help
> +	  Enable webserver feature
> +
> +config BR2_PACKAGE_XBMC_LIBNFS
> +	bool "libnfs"
> +	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 "librtmp"
> +	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 "libshairport"
> +	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)

Parenthesis not needed.

> +
> +config BR2_PACKAGE_XBMC_LIBSMBCLIENT
> +	bool "libsmbclient"
> +	select BR2_PACKAGE_SAMBA
> +	select BR2_PACKAGE_SAMBA_LIBSMBCLIENT

Missing MMU and thread dependencies.

> +	help
> +	  Enable Samba support
> +
> +config BR2_PACKAGE_XBMC_LIBTHEORA
> +	bool "libtheora"
> +	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 "libusb"
> +	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..70cd320
> --- /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"

We use tab for indentation in our init scripts usually.

> 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.

Is this patch something that is going to be merged upstream by XBMC ?
If not, I would very much prefer if Buildroot would ship this
advancedsettings.xml, and would install if the target platform is
RasberryPi. This would be more in line with what upstream does, no?

> diff --git a/package/xbmc/xbmc.mk b/package/xbmc/xbmc.mk
> new file mode 100644
> index 0000000..f6aacc3
> --- /dev/null
> +++ b/package/xbmc/xbmc.mk
> @@ -0,0 +1,149 @@
> +################################################################################
> +#
> +# 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-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)"
> +XBMC_CONF_ENV += PYTHON_LDFLAGS="-L$(STAGING_DIR)/usr/lib/ -lpython$(PYTHON_VERSION_MAJOR) -lpthread -ldl -lutil -lm"

Passing -L$(STAGING_DIR)/usr/lib should not be needed, since the
cross compiler looks there by default for libraries.

> +XBMC_CONF_ENV += PYTHON_CPPFLAGS="-I$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR)"
> +XBMC_CONF_ENV += PYTHON_SITE_PKG="$(STAGING_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages"
> +XBMC_CONF_ENV += PYTHON_NOVERSIONCHECK="no-check"
> +XBMC_CONF_ENV += TEXTUREPACKER_NATIVE_ROOT="$(HOST_DIR)/usr"

Only one line:

XBMC_CONF_ENV = \
	PYTHON_VERSION=... \
	PYTHON_LDFLAGS=... \
	... \
	TEXTUREPACKER=...

> +
> +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

We usually do one per line.

> +
> +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
> +# TODO: java binary from user's machine is currently used...

This TODO can be removed I believe, due to your BR2_HOST_NEEDS_JAVA
patch.

> +define XBMC_BOOTSTRAP
> +	cd $(@D) && PATH="$(HOST_DIR)/usr/bin/:$(PATH)" ./bootstrap

PATH=$(HOST_PATH).

> +endef
> +
> +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
> +
> +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
> +
> +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
> +
> +XBMC_PRE_CONFIGURE_HOOKS += XBMC_BOOTSTRAP
> +XBMC_POST_INSTALL_TARGET_HOOKS += XBMC_INSTALL_ETC

XBMC_INSTALL_ETC no longer exists it seems.

> +XBMC_POST_INSTALL_TARGET_HOOKS += XBMC_CLEAN_UNUSED_ADDONS
> +XBMC_POST_INSTALL_TARGET_HOOKS += XBMC_CLEAN_CONFLUENCE_SKIN

I'd prefer to have those hook registrations near each of the hook
declarations, i.e:

define HOOK1

endef

FOOBAR_POST_INSTALL_TARGET_HOOKS += HOOK1

define HOOK2

endef

FOOBAR_POST_INSTALL_TARGET_HOOKS += HOOK2

Thanks a lot for the great work! The XBMC package is certainly not an
easy one, but it will be a very welcome addition in Buildroot.

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Buildroot] [PATCH v7 3/4] infra: Introduce BR2_HOST_NEEDS_JAVA
  2014-02-18 16:18   ` Thomas Petazzoni
@ 2014-02-18 16:41     ` Maxime Hadjinlian
  2014-02-18 16:44       ` Thomas Petazzoni
  0 siblings, 1 reply; 21+ messages in thread
From: Maxime Hadjinlian @ 2014-02-18 16:41 UTC (permalink / raw)
  To: buildroot

Hi Thomas, all
On Tue, Feb 18, 2014 at 5:18 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Dear Maxime Hadjinlian,
>
> On Tue, 18 Feb 2014 00:37:12 +0100, Maxime Hadjinlian wrote:
>> XBMC needs Java on the host in order to build, because it  uses a
>> code-generator which is build in two phases:
>> In the first phase SWIG is used to parse C++ header files that define the API.
>> SWIG outputs an XML file that contains a complete description of the structure
>> of the API.
>> In the second phase, the XML file is ingested by a Groovy (Java) program that
>> then creates C++ code that forms the bridge to the scripting language (Python).
>>
>> The second phase is why we need java on the host.
>
> People inventing such horrible code generation flows really have a
> problem. They should probably talk to M-x doctor.
What can I say ? :)
>
>> +# Hidden boolean selected by packages in need of Java in order to build
>> +# (example: xbmc)
>> +config BR2_HOST_NEEDS_JAVA
>> +     bool
>
> Do we need a kconfig bool for this? We have the same situation for
> classpath, and we haven't introduced a specific kconfig bool for it.
Yes, I had two patches:
  - One to introduce kconfig bool option for JAVAC and JAR
  - The second to make classpath uses them and remove the specific in
dependencies.sh

It seems cleaner and if another package has the same needs, it's already there.
>
> Moreover, I am not sure BR2_HOST_NEEDS_JAVA is the right name. It's not
> really the host that needs Java, it's the compilation process that
> requires a host Java. So BR2_NEEDS_HOST_JAVA is probably more
> technically correct.
True, I'll fix that.
>
> Thanks,
>
> Thomas
Thanks
> --
> Thomas Petazzoni, CTO, Free Electrons
> Embedded Linux, Kernel and Android engineering
> http://free-electrons.com

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Buildroot] [PATCH v7 1/4] sdl: add host version
  2014-02-18 16:13   ` Thomas Petazzoni
@ 2014-02-18 16:41     ` Maxime Hadjinlian
  0 siblings, 0 replies; 21+ messages in thread
From: Maxime Hadjinlian @ 2014-02-18 16:41 UTC (permalink / raw)
  To: buildroot

On Tue, Feb 18, 2014 at 5:13 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Dear Maxime Hadjinlian,
>
> On Tue, 18 Feb 2014 00:37:10 +0100, Maxime Hadjinlian wrote:
>
>> diff --git a/package/sdl/sdl.mk b/package/sdl/sdl.mk
>> index ba5fbca..bc48d35 100644
>> --- a/package/sdl/sdl.mk
>> +++ b/package/sdl/sdl.mk
>> @@ -18,8 +18,9 @@ define SDL_RUN_AUTOGEN
>>  endef
>>
>>  SDL_POST_PATCH_HOOKS += SDL_RUN_AUTOGEN
>> -SDL_DEPENDENCIES += host-automake host-autoconf host-libtool
>> +HOST_SDL_POST_PATCH_HOOKS += SDL_RUN_AUTOGEN
>
> This should be a pre-configure hook, as we discussed recently on the
> list.
Argh. Forgot to change this...will do !
>
> Thomas
> --
> Thomas Petazzoni, CTO, Free Electrons
> Embedded Linux, Kernel and Android engineering
> http://free-electrons.com

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Buildroot] [PATCH v7 3/4] infra: Introduce BR2_HOST_NEEDS_JAVA
  2014-02-18 16:41     ` Maxime Hadjinlian
@ 2014-02-18 16:44       ` Thomas Petazzoni
  0 siblings, 0 replies; 21+ messages in thread
From: Thomas Petazzoni @ 2014-02-18 16:44 UTC (permalink / raw)
  To: buildroot

Dear Maxime Hadjinlian,

On Tue, 18 Feb 2014 17:41:17 +0100, Maxime Hadjinlian wrote:

> >> +# Hidden boolean selected by packages in need of Java in order to build
> >> +# (example: xbmc)
> >> +config BR2_HOST_NEEDS_JAVA
> >> +     bool
> >
> > Do we need a kconfig bool for this? We have the same situation for
> > classpath, and we haven't introduced a specific kconfig bool for it.
> Yes, I had two patches:
>   - One to introduce kconfig bool option for JAVAC and JAR
>   - The second to make classpath uses them and remove the specific in
> dependencies.sh
> 
> It seems cleaner and if another package has the same needs, it's already there.

Right, but when it's needed for just one package, it's maybe not needed
to have a generic solution. When it starts to be needed by a few
packages, then it is time to refactor things and have a generic
solution such as the one you propose.

But oh well, since you already wrote the code, I'm fine with it.

> > Moreover, I am not sure BR2_HOST_NEEDS_JAVA is the right name. It's not
> > really the host that needs Java, it's the compilation process that
> > requires a host Java. So BR2_NEEDS_HOST_JAVA is probably more
> > technically correct.
> True, I'll fix that.

Cool, thanks.

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Buildroot] [PATCH v7 0/4] Introducing XBMC
  2014-02-17 23:37 [Buildroot] [PATCH v7 0/4] Introducing XBMC Maxime Hadjinlian
                   ` (3 preceding siblings ...)
  2014-02-17 23:37 ` [Buildroot] [PATCH v7 4/4] xbmc: new package Maxime Hadjinlian
@ 2014-02-18 16:57 ` Martin Bark
  2014-02-18 17:03   ` Maxime Hadjinlian
  4 siblings, 1 reply; 21+ messages in thread
From: Martin Bark @ 2014-02-18 16:57 UTC (permalink / raw)
  To: buildroot

Maxime,

I retested this v7 patch set using this minimal defconfig

BR2_arm=y
BR2_arm1176jzf_s=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_PACKAGE_XBMC=y
BR2_PACKAGE_RPI_USERLAND=y

and i can confirm it now builds (once i add host-gperf to xbmc.mk).  I 
also tested enabling all the xbmc options and that builds too.  I have 
not tested it runs on the raspberry pi yet.

Thanks

On 17/02/14 23:37, Maxime Hadjinlian wrote:
> Here we go again with a new round.
> Again most of the changes are located within the XBMC patch.
>
> Maxime Hadjinlian (4):
>    sdl: add host version
>    sdl_image: add host version
>    infra: Introduce BR2_HOST_NEEDS_JAVA
>    xbmc: new package
>
>   Config.in                                          |   5 +
>   package/Config.in                                  |   1 +
>   package/sdl/sdl.mk                                 |   4 +-
>   package/sdl_image/sdl_image.mk                     |  11 ++
>   package/xbmc/Config.in                             | 165 ++++++++++++++++++++
>   package/xbmc/S50xbmc                               |  41 +++++
>   package/xbmc/xbmc-0001-Fixup-include-path.patch    |  81 ++++++++++
>   .../xbmc-0002-RaspberryPi-Default-Settings.patch   | 168 +++++++++++++++++++++
>   package/xbmc/xbmc.mk                               | 149 ++++++++++++++++++
>   package/xbmc/xbmc.service                          |  12 ++
>   support/dependencies/dependencies.sh               |   8 +
>   11 files changed, 644 insertions(+), 1 deletion(-)
>   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
>
> --
> 1.8.5.3
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
>

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Buildroot] [PATCH v7 4/4] xbmc: new package
  2014-02-18 16:38   ` Thomas Petazzoni
@ 2014-02-18 17:02     ` Maxime Hadjinlian
  2014-02-18 18:30       ` Martin Bark
  0 siblings, 1 reply; 21+ messages in thread
From: Maxime Hadjinlian @ 2014-02-18 17:02 UTC (permalink / raw)
  To: buildroot

Hi Thomas, all
On Tue, Feb 18, 2014 at 5:38 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Dear Maxime Hadjinlian,
>
> On Tue, 18 Feb 2014 00:37:13 +0100, Maxime Hadjinlian wrote:
>
>> diff --git a/package/xbmc/Config.in b/package/xbmc/Config.in
>> new file mode 100644
>> index 0000000..23650ed
>> --- /dev/null
>> +++ b/package/xbmc/Config.in
>> @@ -0,0 +1,165 @@
>> +comment "xbmc requires an OpenGL-capable backend"
>> +     depends on !(BR2_PACKAGE_HAS_OPENGL_EGL && BR2_PACKAGE_HAS_OPENGL_ES)
>
> I would make the comment more specific:
>
> comment "xbmc requires an OpenGL ES and EGL backend"
>
>> +# External toolchain are required because of a missing bitdefs.h
>> +comment "xbmc needs an (e)glibc external toolchain w/ C++, wchar"
>> +     depends on !(BR2_TOOLCHAIN_USES_GLIBC && BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR) || BR2_TOOLCHAIN_BUILDROOT
>
> This dependency does not make much sense to me. Your comment mentions
> "external toolchain", but it is not reflected by the dependencies.
> Moreover, we now have glibc/eglibc support in the internal backend, so
> I don't really see how there could be a difference between internal and
> external here. Additionally, if the C library is glibc or eglibc, then
> you are guaranteed to have wchar support. So if what you need is
> eglibc/glibc, then please do:
>
> comment "xbmc needs an (e)glibc toolchain w/ C++"
>         depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_INSTALL_LIBSTDCPP
>
The problem I had with internal toolchain, {X}libc was that, the
bitdefs.h is missing, and XBMC needs it.
I'll look at it another time as maybe my tests were not thorough enough.

>> +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
>
> Wow! None of these dependencies are optional?
Nop, but keep in mind that XBMC is a full featured media center, it
does picture, video, streaming, and so on...
Also, I have voluntarily omitted some of the optional dependency in
order to add them little by little and have an "easier" first patch.
>
>> +     depends on BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR && BR2_TOOLCHAIN_USES_GLIBC
>
> Please update according to the discussion above.
>
>> +     depends on BR2_PACKAGE_HAS_OPENGL_EGL || BR2_PACKAGE_HAS_OPENGL_ES
>> +     depends on !BR2_TOOLCHAIN_BUILDROOT
>
> Ditto.
>
>> +     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"
>> +     select BR2_PACKAGE_AVAHI
>> +     select BR2_PACKAGE_AVAHI_DAEMON
>
> Missing MMU + thread dependency.
>
>> +     help
>> +       Enable Avahi support.
>> +       Select this if you want XBMC to support Bonjour protocol.
>> +
>> +config BR2_PACKAGE_XBMC_DBUS
>> +     bool "dbus"
>> +     select BR2_PACKAGE_DBUS
>
> Missing MMU + thread dependency.
>
>> +     help
>> +       Enable D-Bus support
>> +
>> +config BR2_PACKAGE_XBMC_LIBBLURAY
>> +     bool "libbluray"
>> +     select BR2_PACKAGE_LIBBLURAY
>
> Missing thread dependency.
>
>> +     help
>> +       Enable Blu-ray input support.
>> +       Select this if you want to play back Blu-ray content.
>> +
>> +config BR2_PACKAGE_XBMC_LIBCEC
>> +     bool "libcec"
>> +     select BR2_PACKAGE_LIBCEC
>> +     depends on BR2_INSTALL_LIBSTDCPP
>> +     depends on BR2_USE_WCHAR
>
> I think we should chose: either we replicate the toolchain dependencies
> of the packages we select (as you're doing here for libcec), or we do
> not. For example, in the Avahi example above, you did not replicate the
> MMU and thread dependencies of Avahi.
>
> Even though those dependencies are not needed now (because glibc is
> only available on MMU-capable platforms, always provides thread
> support), they might be needed later on, for example once XBMC becomes
> buildable with uClibc. Our policy is therefore to always replicate
> those dependencies, though I admit for this package, it's a little bit
> annoying because we know that XBMC as a whole will never build on
> non-MMU platforms, or without thread support.
>
Well.. They could always be specified, it doesn't really hurt, does it ?
> Maybe others could comment on this?
>
>> +     help
>> +       Enable CEC (Consumer Electronics Control) support.
>> +       Select this if you want XBMC to support HDMI CEC.
>> +
>> +comment "libcec requires a toolchain w/ C++, wchar support"
>> +     depends on !(BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR)
>> +
>> +config BR2_PACKAGE_XBMC_LIBMICROHTTPD
>> +     bool "libmicrohttpd"
>
> Shouldn't this be named "web server" or something like this? What the
> user really cares about is not the name of the library needed to enable
> the feature, but rather the feature itself: the fact that this is going
> to enable a web server in XBMC, to do something.
>
> I guess the other sub-options should be reviewed in the light of this.
I fully agree, the current name are not user friendly at all.
>
>> +     select BR2_PACKAGE_LIBMICROHTTPD
>
> Missing thread dependency.
>
>> +     help
>> +       Enable webserver feature
>> +
>> +config BR2_PACKAGE_XBMC_LIBNFS
>> +     bool "libnfs"
>> +     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 "librtmp"
>> +     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 "libshairport"
>> +     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)
>
> Parenthesis not needed.
>
>> +
>> +config BR2_PACKAGE_XBMC_LIBSMBCLIENT
>> +     bool "libsmbclient"
>> +     select BR2_PACKAGE_SAMBA
>> +     select BR2_PACKAGE_SAMBA_LIBSMBCLIENT
>
> Missing MMU and thread dependencies.
>
>> +     help
>> +       Enable Samba support
>> +
>> +config BR2_PACKAGE_XBMC_LIBTHEORA
>> +     bool "libtheora"
>> +     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 "libusb"
>> +     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..70cd320
>> --- /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"
>
> We use tab for indentation in our init scripts usually.
>
>> 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.
>
> Is this patch something that is going to be merged upstream by XBMC ?
> If not, I would very much prefer if Buildroot would ship this
> advancedsettings.xml, and would install if the target platform is
> RasberryPi. This would be more in line with what upstream does, no?
It will never be merged mainline. We can ship the xml file, that's
what I did at first but I thought it would not be well welcomed, but
if it's the preferred way, even better :)
>
>> diff --git a/package/xbmc/xbmc.mk b/package/xbmc/xbmc.mk
>> new file mode 100644
>> index 0000000..f6aacc3
>> --- /dev/null
>> +++ b/package/xbmc/xbmc.mk
>> @@ -0,0 +1,149 @@
>> +################################################################################
>> +#
>> +# 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-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)"
>> +XBMC_CONF_ENV += PYTHON_LDFLAGS="-L$(STAGING_DIR)/usr/lib/ -lpython$(PYTHON_VERSION_MAJOR) -lpthread -ldl -lutil -lm"
>
> Passing -L$(STAGING_DIR)/usr/lib should not be needed, since the
> cross compiler looks there by default for libraries.
>
>> +XBMC_CONF_ENV += PYTHON_CPPFLAGS="-I$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR)"
>> +XBMC_CONF_ENV += PYTHON_SITE_PKG="$(STAGING_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages"
>> +XBMC_CONF_ENV += PYTHON_NOVERSIONCHECK="no-check"
>> +XBMC_CONF_ENV += TEXTUREPACKER_NATIVE_ROOT="$(HOST_DIR)/usr"
>
> Only one line:
>
> XBMC_CONF_ENV = \
>         PYTHON_VERSION=... \
>         PYTHON_LDFLAGS=... \
>         ... \
>         TEXTUREPACKER=...
>
>> +
>> +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
>
> We usually do one per line.
>
>> +
>> +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
>> +# TODO: java binary from user's machine is currently used...
>
> This TODO can be removed I believe, due to your BR2_HOST_NEEDS_JAVA
> patch.
>
>> +define XBMC_BOOTSTRAP
>> +     cd $(@D) && PATH="$(HOST_DIR)/usr/bin/:$(PATH)" ./bootstrap
>
> PATH=$(HOST_PATH).
>
>> +endef
>> +
>> +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
>> +
>> +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
>> +
>> +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
>> +
>> +XBMC_PRE_CONFIGURE_HOOKS += XBMC_BOOTSTRAP
>> +XBMC_POST_INSTALL_TARGET_HOOKS += XBMC_INSTALL_ETC
>
> XBMC_INSTALL_ETC no longer exists it seems.
>
>> +XBMC_POST_INSTALL_TARGET_HOOKS += XBMC_CLEAN_UNUSED_ADDONS
>> +XBMC_POST_INSTALL_TARGET_HOOKS += XBMC_CLEAN_CONFLUENCE_SKIN
>
> I'd prefer to have those hook registrations near each of the hook
> declarations, i.e:
>
> define HOOK1
>
> endef
>
> FOOBAR_POST_INSTALL_TARGET_HOOKS += HOOK1
>
> define HOOK2
>
> endef
>
> FOOBAR_POST_INSTALL_TARGET_HOOKS += HOOK2
>
> Thanks a lot for the great work! The XBMC package is certainly not an
> easy one, but it will be a very welcome addition in Buildroot.
Thank you for the lengthy review, I will fix what you commented on and
go for another round.
Can't wait to have it merged :).
>
> Thomas
> --
> Thomas Petazzoni, CTO, Free Electrons
> Embedded Linux, Kernel and Android engineering
> http://free-electrons.com

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Buildroot] [PATCH v7 0/4] Introducing XBMC
  2014-02-18 16:57 ` [Buildroot] [PATCH v7 0/4] Introducing XBMC Martin Bark
@ 2014-02-18 17:03   ` Maxime Hadjinlian
  0 siblings, 0 replies; 21+ messages in thread
From: Maxime Hadjinlian @ 2014-02-18 17:03 UTC (permalink / raw)
  To: buildroot

On Tue, Feb 18, 2014 at 5:57 PM, Martin Bark <martin@barkynet.com> wrote:
> Maxime,
>
> I retested this v7 patch set using this minimal defconfig
>
> BR2_arm=y
> BR2_arm1176jzf_s=y
> BR2_TOOLCHAIN_EXTERNAL=y
> BR2_PACKAGE_XBMC=y
> BR2_PACKAGE_RPI_USERLAND=y
>
> and i can confirm it now builds (once i add host-gperf to xbmc.mk).  I also
> tested enabling all the xbmc options and that builds too.  I have not tested
> it runs on the raspberry pi yet.
Nice to know, thanks for your tests :)
I did the same test myself, maybe I should change then so we find more problems.
>
> Thanks
>
>
> On 17/02/14 23:37, Maxime Hadjinlian wrote:
>>
>> Here we go again with a new round.
>> Again most of the changes are located within the XBMC patch.
>>
>> Maxime Hadjinlian (4):
>>    sdl: add host version
>>    sdl_image: add host version
>>    infra: Introduce BR2_HOST_NEEDS_JAVA
>>    xbmc: new package
>>
>>   Config.in                                          |   5 +
>>   package/Config.in                                  |   1 +
>>   package/sdl/sdl.mk                                 |   4 +-
>>   package/sdl_image/sdl_image.mk                     |  11 ++
>>   package/xbmc/Config.in                             | 165
>> ++++++++++++++++++++
>>   package/xbmc/S50xbmc                               |  41 +++++
>>   package/xbmc/xbmc-0001-Fixup-include-path.patch    |  81 ++++++++++
>>   .../xbmc-0002-RaspberryPi-Default-Settings.patch   | 168
>> +++++++++++++++++++++
>>   package/xbmc/xbmc.mk                               | 149
>> ++++++++++++++++++
>>   package/xbmc/xbmc.service                          |  12 ++
>>   support/dependencies/dependencies.sh               |   8 +
>>   11 files changed, 644 insertions(+), 1 deletion(-)
>>   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
>>
>> --
>> 1.8.5.3
>>
>> _______________________________________________
>> buildroot mailing list
>> buildroot at busybox.net
>> http://lists.busybox.net/mailman/listinfo/buildroot
>>
>

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Buildroot] [PATCH v7 4/4] xbmc: new package
  2014-02-18 17:02     ` Maxime Hadjinlian
@ 2014-02-18 18:30       ` Martin Bark
  2014-02-19  0:14         ` Maxime Hadjinlian
  0 siblings, 1 reply; 21+ messages in thread
From: Martin Bark @ 2014-02-18 18:30 UTC (permalink / raw)
  To: buildroot

Maxime, Thomas,

On 18/02/14 17:02, Maxime Hadjinlian wrote:
> Hi Thomas, all
> On Tue, Feb 18, 2014 at 5:38 PM, Thomas Petazzoni
> <thomas.petazzoni@free-electrons.com> wrote:
>> Dear Maxime Hadjinlian,
>>
>> On Tue, 18 Feb 2014 00:37:13 +0100, Maxime Hadjinlian wrote:
>>
>>> diff --git a/package/xbmc/Config.in b/package/xbmc/Config.in
>>> new file mode 100644
>>> index 0000000..23650ed
>>> --- /dev/null
>>> +++ b/package/xbmc/Config.in
>>> @@ -0,0 +1,165 @@
>>> +comment "xbmc requires an OpenGL-capable backend"
>>> +     depends on !(BR2_PACKAGE_HAS_OPENGL_EGL && BR2_PACKAGE_HAS_OPENGL_ES)
>>
>> I would make the comment more specific:
>>
>> comment "xbmc requires an OpenGL ES and EGL backend"
>>
>>> +# External toolchain are required because of a missing bitdefs.h
>>> +comment "xbmc needs an (e)glibc external toolchain w/ C++, wchar"
>>> +     depends on !(BR2_TOOLCHAIN_USES_GLIBC && BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR) || BR2_TOOLCHAIN_BUILDROOT
>>
>> This dependency does not make much sense to me. Your comment mentions
>> "external toolchain", but it is not reflected by the dependencies.
>> Moreover, we now have glibc/eglibc support in the internal backend, so
>> I don't really see how there could be a difference between internal and
>> external here. Additionally, if the C library is glibc or eglibc, then
>> you are guaranteed to have wchar support. So if what you need is
>> eglibc/glibc, then please do:
>>
>> comment "xbmc needs an (e)glibc toolchain w/ C++"
>>          depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_INSTALL_LIBSTDCPP
>>
> The problem I had with internal toolchain, {X}libc was that, the
> bitdefs.h is missing, and XBMC needs it.
> I'll look at it another time as maybe my tests were not thorough enough.
>

locally i tried this change and the following defconfig

BR2_arm=y
BR2_arm1176jzf_s=y
BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_PACKAGE_XBMC=y
BR2_PACKAGE_RPI_USERLAND=y

and it all built ok.  I also tried with eglibc and it build ok too.

Thanks

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Buildroot] [PATCH v7 4/4] xbmc: new package
  2014-02-18 18:30       ` Martin Bark
@ 2014-02-19  0:14         ` Maxime Hadjinlian
  0 siblings, 0 replies; 21+ messages in thread
From: Maxime Hadjinlian @ 2014-02-19  0:14 UTC (permalink / raw)
  To: buildroot

Hi Martin, all
On Tue, Feb 18, 2014 at 7:30 PM, Martin Bark <martin@barkynet.com> wrote:
> Maxime, Thomas,
>
>
> On 18/02/14 17:02, Maxime Hadjinlian wrote:
>>
>> Hi Thomas, all
>> On Tue, Feb 18, 2014 at 5:38 PM, Thomas Petazzoni
>> <thomas.petazzoni@free-electrons.com> wrote:
>>>
>>> Dear Maxime Hadjinlian,
>>>
>>> On Tue, 18 Feb 2014 00:37:13 +0100, Maxime Hadjinlian wrote:
>>>
>>>> diff --git a/package/xbmc/Config.in b/package/xbmc/Config.in
>>>> new file mode 100644
>>>> index 0000000..23650ed
>>>> --- /dev/null
>>>> +++ b/package/xbmc/Config.in
>>>> @@ -0,0 +1,165 @@
>>>> +comment "xbmc requires an OpenGL-capable backend"
>>>> +     depends on !(BR2_PACKAGE_HAS_OPENGL_EGL &&
>>>> BR2_PACKAGE_HAS_OPENGL_ES)
>>>
>>>
>>> I would make the comment more specific:
>>>
>>> comment "xbmc requires an OpenGL ES and EGL backend"
>>>
>>>> +# External toolchain are required because of a missing bitdefs.h
>>>> +comment "xbmc needs an (e)glibc external toolchain w/ C++, wchar"
>>>> +     depends on !(BR2_TOOLCHAIN_USES_GLIBC && BR2_INSTALL_LIBSTDCPP &&
>>>> BR2_USE_WCHAR) || BR2_TOOLCHAIN_BUILDROOT
>>>
>>>
>>> This dependency does not make much sense to me. Your comment mentions
>>> "external toolchain", but it is not reflected by the dependencies.
>>> Moreover, we now have glibc/eglibc support in the internal backend, so
>>> I don't really see how there could be a difference between internal and
>>> external here. Additionally, if the C library is glibc or eglibc, then
>>> you are guaranteed to have wchar support. So if what you need is
>>> eglibc/glibc, then please do:
>>>
>>> comment "xbmc needs an (e)glibc toolchain w/ C++"
>>>          depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_INSTALL_LIBSTDCPP
>>>
>> The problem I had with internal toolchain, {X}libc was that, the
>> bitdefs.h is missing, and XBMC needs it.
>> I'll look at it another time as maybe my tests were not thorough enough.
>>
>
> locally i tried this change and the following defconfig
>
> BR2_arm=y
> BR2_arm1176jzf_s=y
> BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
> BR2_TOOLCHAIN_BUILDROOT_CXX=y
> BR2_PACKAGE_XBMC=y
> BR2_PACKAGE_RPI_USERLAND=y
>
> and it all built ok.  I also tried with eglibc and it build ok too.
>
> Thanks
That's really nice to know. I'll do some tests on my own. But it would
mean I could lift the restriction on using external toolchain to only
using one with glibc/eglibc, when Gotham is ready we could lift this
restriction altogether !
Thanks a lot for testing this !

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Buildroot] [PATCH v7 1/4] sdl: add host version
  2014-02-17 23:37 ` [Buildroot] [PATCH v7 1/4] sdl: add host version Maxime Hadjinlian
  2014-02-18 16:13   ` Thomas Petazzoni
@ 2014-02-19 15:12   ` Peter Korsgaard
  1 sibling, 0 replies; 21+ messages in thread
From: Peter Korsgaard @ 2014-02-19 15:12 UTC (permalink / raw)
  To: buildroot

>>>>> "Maxime" == Maxime Hadjinlian <maxime.hadjinlian@gmail.com> writes:

 > Host version is needed to build xbmc
 > Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
 > Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
 > ---
 > Changes v6 -> v7:
 >   - Add one empty line for clarity
 > Changes v5 -> v6:
 >   - None
 > Changes v4 -> v5:
 >   - None
 > Changes v3 -> v4:
 >   - None
 > Changes v2 -> v3:
 >   - None
 > Changes v1 -> v2:
 >   - None
 > ---
 >  package/sdl/sdl.mk | 4 +++-
 >  1 file changed, 3 insertions(+), 1 deletion(-)

 > diff --git a/package/sdl/sdl.mk b/package/sdl/sdl.mk
 > index ba5fbca..bc48d35 100644
 > --- a/package/sdl/sdl.mk
 > +++ b/package/sdl/sdl.mk
 > @@ -18,8 +18,9 @@ define SDL_RUN_AUTOGEN
 >  endef
 
 >  SDL_POST_PATCH_HOOKS += SDL_RUN_AUTOGEN
 > -SDL_DEPENDENCIES += host-automake host-autoconf host-libtool
 > +HOST_SDL_POST_PATCH_HOOKS += SDL_RUN_AUTOGEN
 
Committed to next with this fixed up to use PRE_CONFIGURE_HOOKS instead,
thanks.

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Buildroot] [PATCH v7 2/4] sdl_image: add host version
  2014-02-18 16:11   ` Thomas Petazzoni
@ 2014-02-19 15:14     ` Peter Korsgaard
  0 siblings, 0 replies; 21+ messages in thread
From: Peter Korsgaard @ 2014-02-19 15:14 UTC (permalink / raw)
  To: buildroot

>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@free-electrons.com> writes:

 > Dear Maxime Hadjinlian,
 > On Tue, 18 Feb 2014 00:37:11 +0100, Maxime Hadjinlian wrote:

 >> diff --git a/package/sdl_image/sdl_image.mk b/package/sdl_image/sdl_image.mk
 >> index ba9751d..05b9a1f 100644
 >> --- a/package/sdl_image/sdl_image.mk
 >> +++ b/package/sdl_image/sdl_image.mk
 >> @@ -38,4 +38,15 @@ SDL_IMAGE_DEPENDENCIES = sdl \
 >> $(if $(BR2_PACKAGE_SDL_IMAGE_TIFF),tiff) \
 >> $(if $(BR2_PACKAGE_SDL_IMAGE_WEBP),webp)
 >> 
 >> +HOST_SDL_IMAGE_CONF_OPT = --with-sdl-prefix=$(HOST_DIR)/usr \
 >> +                --with-sdl-exec-prefix=$(HOST_DIR)/usr \
 >> +                --disable-sdltest \
 >> +                --disable-static \
 >> +                --disable-jpg-shared \
 >> +                --disable-png-shared \
 >> +                --disable-tif-shared \

 > This is nitpicking, but we normally intend this with one tab, do not
 > have a backslash on the last line, and also intend the first line. So,
 > something like:

 > HOST_SDL_IMAGE_CONF_OPT = \
 > 	--with-sdl-prefix=... \
 > 	--foo \
 > 	--bar \
 > 	--baz

True, but this atleast matches what is done just above for the target
version. With that being said, a followup patch to cleanup both would be
nice.

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Buildroot] [PATCH v7 2/4] sdl_image: add host version
  2014-02-17 23:37 ` [Buildroot] [PATCH v7 2/4] sdl_image: " Maxime Hadjinlian
  2014-02-18 16:11   ` Thomas Petazzoni
@ 2014-02-19 15:14   ` Peter Korsgaard
  1 sibling, 0 replies; 21+ messages in thread
From: Peter Korsgaard @ 2014-02-19 15:14 UTC (permalink / raw)
  To: buildroot

>>>>> "Maxime" == Maxime Hadjinlian <maxime.hadjinlian@gmail.com> writes:

 > Host version is needed to build xbmc
 > Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
 > Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

Committed to next, thanks.

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Buildroot] [PATCH v7 3/4] infra: Introduce BR2_HOST_NEEDS_JAVA
  2014-02-17 23:37 ` [Buildroot] [PATCH v7 3/4] infra: Introduce BR2_HOST_NEEDS_JAVA Maxime Hadjinlian
  2014-02-18 16:18   ` Thomas Petazzoni
@ 2014-02-19 15:19   ` Peter Korsgaard
  1 sibling, 0 replies; 21+ messages in thread
From: Peter Korsgaard @ 2014-02-19 15:19 UTC (permalink / raw)
  To: buildroot

>>>>> "Maxime" == Maxime Hadjinlian <maxime.hadjinlian@gmail.com> writes:

 > XBMC needs Java on the host in order to build, because it  uses a
 > code-generator which is build in two phases:
 > In the first phase SWIG is used to parse C++ header files that define the API.
 > SWIG outputs an XML file that contains a complete description of the structure
 > of the API.
 > In the second phase, the XML file is ingested by a Groovy (Java) program that
 > then creates C++ code that forms the bridge to the scripting language (Python).

 > The second phase is why we need java on the host.

 > You can learn more at the XBMC's wiki:
 > http://wiki.xbmc.org/index.php?title=Codegeneration#How_it_works

 > In order to check that, this patch introduce this mechanism in
 > dependencies.sh
 > It also defines the variable in Config.in

The commit message is wrapped kind of strange.

 > +++ b/support/dependencies/dependencies.sh
 > @@ -191,6 +191,14 @@ if grep -q ^BR2_PACKAGE_CLASSPATH=y $BR2_CONFIG ; then
 >  	done
 >  fi
 
 > +if grep -q ^BR2_HOST_NEEDS_JAVA=y $BR2_CONFIG ; then
 > +	if ! which java > /dev/null ; then
 > +		echo >&2
 > +		echo "You must install '$prog' on your build machine" >&2

And it should use 'java' instead of '$prog' here.

Committed to next with that fixed, thanks.

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2014-02-19 15:19 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-02-17 23:37 [Buildroot] [PATCH v7 0/4] Introducing XBMC Maxime Hadjinlian
2014-02-17 23:37 ` [Buildroot] [PATCH v7 1/4] sdl: add host version Maxime Hadjinlian
2014-02-18 16:13   ` Thomas Petazzoni
2014-02-18 16:41     ` Maxime Hadjinlian
2014-02-19 15:12   ` Peter Korsgaard
2014-02-17 23:37 ` [Buildroot] [PATCH v7 2/4] sdl_image: " Maxime Hadjinlian
2014-02-18 16:11   ` Thomas Petazzoni
2014-02-19 15:14     ` Peter Korsgaard
2014-02-19 15:14   ` Peter Korsgaard
2014-02-17 23:37 ` [Buildroot] [PATCH v7 3/4] infra: Introduce BR2_HOST_NEEDS_JAVA Maxime Hadjinlian
2014-02-18 16:18   ` Thomas Petazzoni
2014-02-18 16:41     ` Maxime Hadjinlian
2014-02-18 16:44       ` Thomas Petazzoni
2014-02-19 15:19   ` Peter Korsgaard
2014-02-17 23:37 ` [Buildroot] [PATCH v7 4/4] xbmc: new package Maxime Hadjinlian
2014-02-18 16:38   ` Thomas Petazzoni
2014-02-18 17:02     ` Maxime Hadjinlian
2014-02-18 18:30       ` Martin Bark
2014-02-19  0:14         ` Maxime Hadjinlian
2014-02-18 16:57 ` [Buildroot] [PATCH v7 0/4] Introducing XBMC Martin Bark
2014-02-18 17:03   ` Maxime Hadjinlian

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.