Skip to contentSkip to conversation

Introducing XBMC

PATCH Superseded Maxime Hadjinlian 4 participants 21 messages Feb 17, 2014 – Feb 19, 2014

lore
Share & tools
lore
#0 lore raw

v7 cover Introducing XBMC

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

#1 lore raw

PATCH v7 1/4 sdl: add host version

Host version is needed to build xbmc

---
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(-)
package/sdl/sdl.mk +3 -1
index ba5fbca..bc48d35 100644
@@ -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))
Signature · 1 line
1.8.5.3
#2 lore raw

PATCH v7 1/4 sdl: add host version

Dear Maxime Hadjinlian,

package/sdl/sdl.mk define SDL_RUN_AUTOGEN · line 21

Quoted 10 lines · Maxime Hadjinlian
package/sdl/sdl.mk +1 -1
index ba5fbca..bc48d35 100644
@@ -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

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#3 lore raw

PATCH v7 1/4 sdl: add host version

Quoted 11 lines · Thomas Petazzoni

Dear Maxime Hadjinlian,

Quoted 7 lines · Maxime Hadjinlian
package/sdl/sdl.mk +0 -0
index ba5fbca..bc48d35 100644
@@ -18,8 +18,9 @@ define SDL_RUN_AUTOGEN
 endef
 
Quoted 6 lines

package/sdl/sdl.mk define SDL_RUN_AUTOGEN · line 21

Quoted 3 lines
package/sdl/sdl.mk +1 -1
 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 !

Quoted 6 lines

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

#4 lore raw

PATCH v7 1/4 sdl: add host version

In reply to Maxime Hadjinlian
Quoted 27 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Maxime" == Maxime Hadjinlian <[email protected]> writes:

Host version is needed to build xbmc

---
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(-)
package/sdl/sdl.mk +0 -0
index ba5fbca..bc48d35 100644

package/sdl/sdl.mk define SDL_RUN_AUTOGEN · line 21

Quoted 5 lines
package/sdl/sdl.mk +1 -1
@@ -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.

Signature · 1 line
Bye, Peter Korsgaard
#5 lore raw

PATCH v7 2/4 sdl_image: add host version

In reply to Maxime Hadjinlian

Host version is needed to build xbmc

---
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(+)
package/sdl_image/sdl_image.mk +11 -0
index ba9751d..05b9a1f 100644
@@ -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))
Signature · 1 line
1.8.5.3
#6 lore raw

PATCH v7 2/4 sdl_image: add host version

Dear Maxime Hadjinlian,

Quoted 5 lines · Maxime Hadjinlian
package/sdl_image/sdl_image.mk +0 -0
index ba9751d..05b9a1f 100644

package/sdl_image/sdl_image.mk SDL_IMAGE_DEPENDENCIES = sdl \ · line 47

Quoted 10 lines
package/sdl_image/sdl_image.mk +7 -0
@@ -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

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#7 lore raw

PATCH v7 2/4 sdl_image: add host version

Quoted 25 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Thomas" == Thomas Petazzoni <[email protected]> writes:

Dear Maxime Hadjinlian,

Quoted 5 lines · Maxime Hadjinlian
package/sdl_image/sdl_image.mk +0 -0
index ba9751d..05b9a1f 100644

package/sdl_image/sdl_image.mk SDL_IMAGE_DEPENDENCIES = sdl \ · line 47

Quoted 10 lines
package/sdl_image/sdl_image.mk +7 -0
@@ -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:

Quoted 5 lines
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.

Signature · 1 line
Bye, Peter Korsgaard
#9 lore raw

PATCH v7 3/4 infra: Introduce BR2_HOST_NEEDS_JAVA

In reply to Maxime Hadjinlian

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

---
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(+)
Config.in +5 -0
index bcfefc7..8afd156 100644
@@ -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.).
support/dependencies/dependencies.sh +8 -0
index 0e7e1fa..05039ea 100755
@@ -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
Signature · 1 line
1.8.5.3
#10 lore raw

PATCH v7 3/4 infra: Introduce BR2_HOST_NEEDS_JAVA

Dear Maxime Hadjinlian,

Quoted 9 lines · Maxime Hadjinlian

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.

Config.in config BR2_EXTERNAL · line 24

Quoted 4 lines
Config.in +4 -0
+# 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

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#11 lore raw

PATCH v7 3/4 infra: Introduce BR2_HOST_NEEDS_JAVA

Hi Thomas, all

Quoted 11 lines · Thomas Petazzoni

Dear Maxime Hadjinlian,

Quoted 8 lines · Maxime Hadjinlian

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

Quoted 4 lines
Quoted 1 line

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 ? :)

Quoted 8 lines

Config.in config BR2_EXTERNAL · line 24

Quoted 5 lines
Config.in +4 -0
+# 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.

Quoted 5 lines

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.

Quoted 4 lines

Thanks,

Thomas

Thanks

Quoted 4 lines

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

#12 lore raw

PATCH v7 3/4 infra: Introduce BR2_HOST_NEEDS_JAVA

Dear Maxime Hadjinlian,

Quoted 7 lines · Maxime Hadjinlian
Quoted 7 lines

Config.in config BR2_EXTERNAL · line 24

Quoted 4 lines
Config.in +4 -0
+# 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.

Quoted 6 lines

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.

Quoted 5 lines
Quoted 4 lines

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

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#13 lore raw

PATCH v7 3/4 infra: Introduce BR2_HOST_NEEDS_JAVA

In reply to Maxime Hadjinlian
Quoted 10 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Maxime" == Maxime Hadjinlian <[email protected]> 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).

Quoted 8 lines

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.

support/dependencies/dependencies.sh if grep -q ^BR2_PACKAGE_CLASSPATH=y $BR2_CONFIG ; then · line 197

Quoted 9 lines

+++ b/support/dependencies/dependencies.sh

support/dependencies/dependencies.sh +4 -0
@@ -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.

Signature · 1 line
Bye, Peter Korsgaard
#14 lore raw

PATCH v7 4/4 xbmc: new package

In reply to Maxime Hadjinlian

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 <[email protected]>

---
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
package/Config.in +1 -0
index fca61d6..7d8fd2e 100644
@@ -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
 
package/xbmc/Config.in new file +165 -0

165 lines not on this page · raw message

package/xbmc/S50xbmc new file +41 -0

41 lines not on this page · raw message

package/xbmc/xbmc-0001-Fixup-include-path.patch new file +81 -0

81 lines not on this page · raw message

package/xbmc/xbmc-0002-RaspberryPi-Default-Settings.patch new file +168 -0

168 lines not on this page · raw message

package/xbmc/xbmc.mk new file +149 -0

149 lines not on this page · raw message

package/xbmc/xbmc.service new file +12 -0
new file mode 100644
index 0000000..3fe5895
@@ -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
+
Signature · 1 line
1.8.5.3
#15 lore raw

PATCH v7 4/4 xbmc: new package

Dear Maxime Hadjinlian,

package/xbmc/Config.in line 2

Quoted 8 lines · Maxime Hadjinlian
package/xbmc/Config.in new file +2 -0
new file mode 100644
index 0000000..23650ed
@@ -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"

package/xbmc/Config.in line 6

Quoted 3 lines
package/xbmc/Config.in new file +3 -0
+# 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
Quoted 39 lines
package/xbmc/Config.in new file +39 -0
+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

package/xbmc/Config.in line 56

Quoted 10 lines
package/xbmc/Config.in new file +10 -0
+	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?

package/xbmc/Config.in line 57

Quoted 1 line
package/xbmc/Config.in new file +1 -0
+	depends on BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR && BR2_TOOLCHAIN_USES_GLIBC

Please update according to the discussion above.

package/xbmc/Config.in line 59

Quoted 2 lines
package/xbmc/Config.in new file +2 -0
+	depends on BR2_PACKAGE_HAS_OPENGL_EGL || BR2_PACKAGE_HAS_OPENGL_ES
+	depends on !BR2_TOOLCHAIN_BUILDROOT

Ditto.

package/xbmc/Config.in line 71

Quoted 12 lines
package/xbmc/Config.in new file +12 -0
+	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.

package/xbmc/Config.in line 78

Quoted 7 lines
package/xbmc/Config.in new file +7 -0
+	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.

package/xbmc/Config.in line 84

Quoted 6 lines
package/xbmc/Config.in new file +6 -0
+	help
+	  Enable D-Bus support
+
+config BR2_PACKAGE_XBMC_LIBBLURAY
+	bool "libbluray"
+	select BR2_PACKAGE_LIBBLURAY

Missing thread dependency.

package/xbmc/Config.in line 93

Quoted 9 lines
package/xbmc/Config.in new file +9 -0
+	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?

package/xbmc/Config.in line 102

Quoted 9 lines
package/xbmc/Config.in new file +9 -0
+	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.

package/xbmc/Config.in line 103

Quoted 1 line
package/xbmc/Config.in new file +1 -0
+	select BR2_PACKAGE_LIBMICROHTTPD

Missing thread dependency.

Quoted 21 lines
package/xbmc/Config.in new file +21 -0
+	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.
+

package/xbmc/Config.in line 134

Quoted 10 lines
package/xbmc/Config.in new file +10 -0
+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.

package/xbmc/Config.in line 139

Quoted 5 lines
package/xbmc/Config.in new file +5 -0
+
+config BR2_PACKAGE_XBMC_LIBSMBCLIENT
+	bool "libsmbclient"
+	select BR2_PACKAGE_SAMBA
+	select BR2_PACKAGE_SAMBA_LIBSMBCLIENT

Missing MMU and thread dependencies.

Quoted 36 lines
package/xbmc/Config.in new file +26 -0
+	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
package/xbmc/S50xbmc new file +4 -0
new file mode 100755
index 0000000..70cd320
@@ -0,0 +1,41 @@
+#!/bin/sh
+#
+# Starts XBMC.
+#

package/xbmc/S50xbmc line 14

Quoted 10 lines
package/xbmc/S50xbmc new file +10 -0
+
+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.

Quoted 6 lines
package/xbmc/xbmc-0002-RaspberryPi-Default-Settings.patch new file +0 -0
new file mode 100644
index 0000000..43960e6

package/xbmc/xbmc-0002-RaspberryPi-Default-Settings.patch line 8

Quoted 8 lines
package/xbmc/xbmc-0002-RaspberryPi-Default-Settings.patch new file +8 -0
@@ -0,0 +1,168 @@
+From 2541772a3ed71402a620466feb6a337b40f08880 Mon Sep 17 00:00:00 2001
+From: Maxime Hadjinlian <[email protected]>
+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?

Quoted 14 lines
package/xbmc/xbmc.mk new file +8 -0
new file mode 100644
index 0000000..f6aacc3
@@ -0,0 +1,149 @@
+################################################################################
+#
+# xbmc
+#
+################################################################################
+
+XBMC_VERSION = 12.3-Frodo
+XBMC_SITE = $(call github,xbmc,xbmc,$(XBMC_VERSION))

package/xbmc/xbmc.mk line 18

Quoted 10 lines
package/xbmc/xbmc.mk new file +10 -0
+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.

package/xbmc/xbmc.mk line 22

Quoted 4 lines
package/xbmc/xbmc.mk new file +4 -0
+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=...

package/xbmc/xbmc.mk line 29

Quoted 7 lines
package/xbmc/xbmc.mk new file +7 -0
+
+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.

Quoted 71 lines
package/xbmc/xbmc.mk new file +71 -0
+
+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

package/xbmc/xbmc.mk line 110

Quoted 10 lines
package/xbmc/xbmc.mk new file +10 -0
+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.

package/xbmc/xbmc.mk line 112

Quoted 2 lines
package/xbmc/xbmc.mk new file +2 -0
+define XBMC_BOOTSTRAP
+	cd $(@D) && PATH="$(HOST_DIR)/usr/bin/:$(PATH)" ./bootstrap

PATH=$(HOST_PATH).

Quoted 23 lines
package/xbmc/xbmc.mk new file +23 -0
+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 \

package/xbmc/xbmc.mk line 145

Quoted 10 lines
package/xbmc/xbmc.mk new file +10 -0
+		$(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.

package/xbmc/xbmc.mk line 147

Quoted 2 lines
package/xbmc/xbmc.mk new file +2 -0
+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

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#16 lore raw

PATCH v7 4/4 xbmc: new package

Hi Thomas, all

Quoted 29 lines · Thomas Petazzoni

Dear Maxime Hadjinlian,

package/xbmc/Config.in line 2

Quoted 8 lines · Maxime Hadjinlian
package/xbmc/Config.in new file +2 -0
new file mode 100644
index 0000000..23650ed
@@ -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"

package/xbmc/Config.in line 6

Quoted 3 lines
package/xbmc/Config.in new file +3 -0
+# 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:

Quoted 3 lines

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.

Quoted 50 lines
Quoted 39 lines
package/xbmc/Config.in new file +39 -0
+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

package/xbmc/Config.in line 56

Quoted 10 lines
package/xbmc/Config.in new file +10 -0
+     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
Quoted 1 line

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.

Quoted 59 lines

package/xbmc/Config.in line 57

Quoted 2 lines
package/xbmc/Config.in new file +1 -0
+     depends on BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR && BR2_TOOLCHAIN_USES_GLIBC

Please update according to the discussion above.

package/xbmc/Config.in line 59

Quoted 2 lines
package/xbmc/Config.in new file +2 -0
+     depends on BR2_PACKAGE_HAS_OPENGL_EGL || BR2_PACKAGE_HAS_OPENGL_ES
+     depends on !BR2_TOOLCHAIN_BUILDROOT

Ditto.

package/xbmc/Config.in line 71

Quoted 12 lines
package/xbmc/Config.in new file +12 -0
+     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.

package/xbmc/Config.in line 78

Quoted 7 lines
package/xbmc/Config.in new file +7 -0
+     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.

package/xbmc/Config.in line 84

Quoted 6 lines
package/xbmc/Config.in new file +6 -0
+     help
+       Enable D-Bus support
+
+config BR2_PACKAGE_XBMC_LIBBLURAY
+     bool "libbluray"
+     select BR2_PACKAGE_LIBBLURAY

Missing thread dependency.

package/xbmc/Config.in line 93

Quoted 9 lines
package/xbmc/Config.in new file +9 -0
+     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.

Quoted 8 lines

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 ?

Quoted 17 lines

Maybe others could comment on this?

package/xbmc/Config.in line 102

Quoted 9 lines
package/xbmc/Config.in new file +9 -0
+     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.

Quoted 1 line

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.

Quoted 107 lines

package/xbmc/Config.in line 103

Quoted 2 lines
package/xbmc/Config.in new file +1 -0
+     select BR2_PACKAGE_LIBMICROHTTPD

Missing thread dependency.

Quoted 21 lines
package/xbmc/Config.in new file +21 -0
+     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.
+

package/xbmc/Config.in line 134

Quoted 10 lines
package/xbmc/Config.in new file +10 -0
+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.

package/xbmc/Config.in line 139

Quoted 5 lines
package/xbmc/Config.in new file +5 -0
+
+config BR2_PACKAGE_XBMC_LIBSMBCLIENT
+     bool "libsmbclient"
+     select BR2_PACKAGE_SAMBA
+     select BR2_PACKAGE_SAMBA_LIBSMBCLIENT

Missing MMU and thread dependencies.

Quoted 36 lines
package/xbmc/Config.in new file +26 -0
+     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
package/xbmc/S50xbmc new file +4 -0
new file mode 100755
index 0000000..70cd320
@@ -0,0 +1,41 @@
+#!/bin/sh
+#
+# Starts XBMC.
+#

package/xbmc/S50xbmc line 14

Quoted 10 lines
package/xbmc/S50xbmc new file +10 -0
+
+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.

Quoted 11 lines
package/xbmc/xbmc-0002-RaspberryPi-Default-Settings.patch new file +5 -0
new file mode 100644
index 0000000..43960e6
@@ -0,0 +1,168 @@
+From 2541772a3ed71402a620466feb6a337b40f08880 Mon Sep 17 00:00:00 2001
+From: Maxime Hadjinlian <[email protected]>
+Date: Sat, 15 Dec 2012 23:41:06 +0100
+Subject: [PATCH] RaspberryPi Default Settings
+
Quoted 8 lines

package/xbmc/xbmc-0002-RaspberryPi-Default-Settings.patch line 8

Quoted 3 lines
package/xbmc/xbmc-0002-RaspberryPi-Default-Settings.patch new file +3 -0
+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 :)

Quoted 190 lines
Quoted 15 lines
package/xbmc/xbmc.mk new file +8 -0
new file mode 100644
index 0000000..f6aacc3
@@ -0,0 +1,149 @@
+################################################################################
+#
+# xbmc
+#
+################################################################################
+
+XBMC_VERSION = 12.3-Frodo
+XBMC_SITE = $(call github,xbmc,xbmc,$(XBMC_VERSION))

package/xbmc/xbmc.mk line 18

Quoted 10 lines
package/xbmc/xbmc.mk new file +10 -0
+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.

package/xbmc/xbmc.mk line 22

Quoted 4 lines
package/xbmc/xbmc.mk new file +4 -0
+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=...

package/xbmc/xbmc.mk line 29

Quoted 7 lines
package/xbmc/xbmc.mk new file +7 -0
+
+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.

Quoted 71 lines
package/xbmc/xbmc.mk new file +71 -0
+
+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

package/xbmc/xbmc.mk line 110

Quoted 10 lines
package/xbmc/xbmc.mk new file +10 -0
+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.

package/xbmc/xbmc.mk line 112

Quoted 2 lines
package/xbmc/xbmc.mk new file +2 -0
+define XBMC_BOOTSTRAP
+     cd $(@D) && PATH="$(HOST_DIR)/usr/bin/:$(PATH)" ./bootstrap

PATH=$(HOST_PATH).

Quoted 23 lines
package/xbmc/xbmc.mk new file +23 -0
+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 \

package/xbmc/xbmc.mk line 145

Quoted 10 lines
package/xbmc/xbmc.mk new file +10 -0
+             $(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.

package/xbmc/xbmc.mk line 147

Quoted 2 lines
package/xbmc/xbmc.mk new file +2 -0
+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

Quoted 8 lines

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

Quoted 6 lines

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

#17 lore raw

PATCH v7 4/4 xbmc: new package

Maxime, Thomas,

Quoted 32 lines · Maxime Hadjinlian

Hi Thomas, all

Quoted 29 lines · Thomas Petazzoni

Dear Maxime Hadjinlian,

package/xbmc/Config.in line 2

Quoted 8 lines · Maxime Hadjinlian
package/xbmc/Config.in new file +2 -0
new file mode 100644
index 0000000..23650ed
@@ -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"

package/xbmc/Config.in line 6

Quoted 3 lines
package/xbmc/Config.in new file +3 -0
+# 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:

Quoted 7 lines
Quoted 3 lines

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

#18 lore raw

PATCH v7 4/4 xbmc: new package

Hi Martin, all

Quoted 59 lines · Martin Bark

Maxime, Thomas,

Quoted 38 lines · Maxime Hadjinlian

Hi Thomas, all

Quoted 34 lines · Thomas Petazzoni

Dear Maxime Hadjinlian,

Quoted 9 lines · Maxime Hadjinlian
package/xbmc/Config.in new file +2 -0
new file mode 100644
index 0000000..23650ed
@@ -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"

Quoted 4 lines
package/xbmc/Config.in new file +3 -0
+# 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:

Quoted 7 lines
Quoted 3 lines

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

Quoted 3 lines

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 !

#19 lore raw

v7 cover Introducing XBMC

In reply to Maxime Hadjinlian

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

Quoted 36 lines · Maxime Hadjinlian

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

#20 lore raw

v7 cover Introducing XBMC

Quoted 10 lines · Martin Bark

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

Quoted 3 lines

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.

Quoted 47 lines

Thanks

Quoted 41 lines · Maxime Hadjinlian

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